gnubg python scripting: gnubg.findbestmove ()

Lassen Sie gnubg den besten Zug berechnen!

Dies ist die Position des regulären Treffens von Akasaka eines Tages. Ich war 4-0 / 5p Crawford in Rot. Wie bewegt man die blaue 54? IMG_20160717_131509.jpg

board

Geben Sie zunächst die Platzierung des Prüfers in der Tupelliste an. Es scheint, dass Sie die Anzahl der Steine an jedem Punkt der Reihe nach eingeben sollten. Der 25. Punkt scheint die Anzahl der Prüfer an der Bar zu sein.

In [1]: board = ((0, 0, 0, 2, 2, 3, 2, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
   ...:  (0, 0, 0, 0, 0, 5, 2, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0))

cubeinfo

Geben Sie die Länge des Spiels, die Punktzahl und an, ob es sich um Crawford handelt oder nicht. Ich kenne "gammonprice" nicht, also setze ich es vorerst auf 0.

In [2]: cubeinfo = {'beavers': 0,
   ...:  'bgv': 0,
   ...:  'crawford': 1,
   ...:  'cube': 1,
   ...:  'cubeowner': -1,
   ...:  'gammonprice': ((0.0, 0.0), (0.0, 0.0)),
   ...:  'jacoby': 0,
   ...:  'matchto': 5,
   ...:  'move': 0,
   ...:  'score': (0, 4)}

Es gibt eine Methode namens "calcgammonprice", mit der Sie den Schinkenpreis berechnen können.

In [3]: cubeinfo = gnubg.calcgammonprice(cubeinfo)

In [4]: cubeinfo
Out[4]: 
{'beavers': 0,
 'bgv': 0,
 'crawford': 1,
 'cube': 1,
 'cubeowner': -1,
 'gammonprice': ((0.06355762481689453, 1.1390838623046875), (0.0, 0.0)),
 'jacoby': 0,
 'matchto': 5,
 'move': 0,
 'score': (0, 4)}

posinfo

Geben Sie die Rolle und die Runde an.

In [5]: posinfo = {'dice': (5, 4), 'doubled': 0, 'gamestate': 1, 'resigned': 0, 'turn': 0}

gnubgid

Ich werde es später verwenden, also werde ich etwas namens "gnubgid" machen.

In [6]: gnubgid = gnubg.gnubgid(board, cubeinfo, posinfo)

In [7]: gnubgid
Out[7]: u'2G4cAwTg2wkAKw:sIGyAAAAIAAE'

Wenn Sie "gnubgid" mit dem Befehl "set gnubgid" angeben, befinden Sie sich in der Phase, die Sie bisher festgelegt haben.

In [8]: gnubg.command('set gnubgid 2G4cAwTg2wkAKw:sIGyAAAAIAAE')
The dice have been set to 5 and 4.
 GNU Backgammon  Position ID: 4HPwATDgc/ABMA
                 Match ID   : sIGyAAAAIAAE
 +12-11-10--9--8--7-------6--5--4--3--2--1-+     O: gnubg
 | X           O    |   | O              X |0 Punkte
 | X           O    |   | O              X |Wirf den Würfel 54
 | X           O    |   | O                |     
 | X                |   | O                |     
 | X                |   | O                |    
^|                  |BAR|                  |5-Punkte-Match(Würfel: 1)
 | O                |   | X                |    
 | O                |   | X                |     
 | O           X    |   | X                |     
 | O           X    |   | X              O |     
 | O           X    |   | X              O |4 Punkte
 +13-14-15-16-17-18------19-20-21-22-23-24-+     X: mkisono

 GNU Backgammon  Position ID: 2G4cAwTg2wkAKw
                 Match ID   : sIGyAAAAIAAE
 +12-11-10--9--8--7-------6--5--4--3--2--1-+     O: gnubg
 | X     O     O  O |   | O     X          |0 Punkte
 | X           O  O |   | O                |Wirf den Würfel 54
 |             O    |   | O                |     
 |                  |   | O                |     
 |                  |   | O                |    
^|                  |BAR|                  |5-Punkte-Match(Würfel: 1)
 |                  |   |                  |    
 |                  |   |                  |     
 |       X          |   | X                |     
 |       X        X |   | X  X  X  O       |     
 |       X        X |   | X  X  X  O  O  O |4 Punkte
 +13-14-15-16-17-18------19-20-21-22-23-24-+     X: mkisono

Setting GNUbg ID 2G4cAwTg2wkAKw:sIGyAAAAIAAE

findbestmove

Lassen Sie uns endlich den besten Zug herausfinden!

In [9]: gnubg.findbestmove()
Out[9]: (10, 5, 8, 4)

10/5, 8/4 * Das stimmt. Ich kann keinen anderen guten Schachzug wie diesen finden. Blots sind auf der Innenseite verstreut, aber wenn Sie hier rot treffen und den zweiten Anker nehmen, sieht es aus wie ein Rückspiel.

Sie können den Befehl "Hinweis" verwenden, um weitere Informationen zu erhalten.

In [10]: gnubg.hint()
Out[10]: 
{'gnubgid': u'2G4cAwTg2wkAKw:sIGyAAAAIAAE',
 'hint': [{'context': {'cubeful': 1,
    'deterministic': 1,
    'noise': 0.0,
    'plies': 2,
    'prune': 1},
   'details': {'probs': (0.28211891651153564,
     0.03484905883669853,
     0.001164137851446867,
     0.38557541370391846,
     0.0413915291428566),
    'score': -0.4322209358215332},
   'eqdiff': 0.0,
   'equity': -0.4322209358215332,
   'move': '10/5 8/4*',
   'movenum': 1,
   'type': 'eval'},
  {'context': {'cubeful': 1,
    'deterministic': 1,
    'noise': 0.0,
    'plies': 2,
    'prune': 1},
   'details': {'probs': (0.2639846205711365,
     0.03448880836367607,
     0.0010329540818929672,
     0.41944432258605957,
     0.05380573496222496),
    'score': -0.46866169571876526},
   'eqdiff': -0.036440759897232056,
   'equity': -0.46866169571876526,
   'move': '8/4* 8/3',
   'movenum': 2,
   'type': 'eval'},

Artikel bisher

Recommended Posts

gnubg python scripting: gnubg.findbestmove ()
Gnubg Python Scripting
gnubg python scripting: gnubg.match ()
gnubg python scripting: Threads setzen
Python