script python gnubg: gnubg.findbestmove ()

Laissez gnubg calculer le meilleur coup!

Telle est la position de la réunion régulière d'Akasaka un jour. J'étais 4-0 / 5p Crawford en rouge. Comment déplacez-vous le bleu 54? IMG_20160717_131509.jpg

board

Tout d'abord, spécifiez l'emplacement du vérificateur dans la liste des tuples. Il semble que vous deviez entrer le nombre de contrôleurs à chaque point dans l'ordre. Le 25e élément semble être le nombre de contrôleurs sur la barre.

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

Spécifiez la durée du match, le score et s'il s'agit de Crawford ou non. Je ne connais pas gammonprice, donc je vais le mettre à 0 pour le moment.

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)}

Il existe une méthode appelée «calcgammonprice», vous pouvez donc calculer le prix du gammon.

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

Spécifiez le rouleau et le tour.

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

gnubgid

Je vais l'utiliser plus tard, donc je vais créer quelque chose qui s'appelle gnubgid.

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

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

Si vous spécifiez gnubgid avec la commande set gnubgid, ce sera la phase que vous avez définie jusqu'à présent.

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 point
 | X           O    |   | O              X |Lancer le dé 54
 | X           O    |   | O                |     
 | X                |   | O                |     
 | X                |   | O                |    
^|                  |BAR|                  |Match à 5 points(cube: 1)
 | O                |   | X                |    
 | O                |   | X                |     
 | O           X    |   | X                |     
 | O           X    |   | X              O |     
 | O           X    |   | X              O |4 points
 +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 point
 | X           O  O |   | O                |Lancer le dé 54
 |             O    |   | O                |     
 |                  |   | O                |     
 |                  |   | O                |    
^|                  |BAR|                  |Match à 5 points(cube: 1)
 |                  |   |                  |    
 |                  |   |                  |     
 |       X          |   | X                |     
 |       X        X |   | X  X  X  O       |     
 |       X        X |   | X  X  X  O  O  O |4 points
 +13-14-15-16-17-18------19-20-21-22-23-24-+     X: mkisono

Setting GNUbg ID 2G4cAwTg2wkAKw:sIGyAAAAIAAE

findbestmove

Découvrons enfin le meilleur coup!

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

10/5, 8/4 * C'est vrai. Je ne trouve aucun autre bon coup comme celui-ci. Les taches sont dispersées à l'intérieur, mais si vous frappez en rouge ici et prenez la deuxième ancre, cela ressemblera à une partie arrière.

Vous pouvez utiliser la commande hint pour obtenir plus d'informations.

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'},

Articles jusqu'à présent

Recommended Posts

script python gnubg: gnubg.findbestmove ()
script python gnubg
script python gnubg: gnubg.match ()
script python gnubg: définir les threads
Python