コード例 #1
0
def _manually_create_game():
    """Creates the game manually from the spiel building blocks."""
    game_type = pyspiel.GameType(
        "matching_pennies",
        "Matching Pennies",
        pyspiel.GameType.Dynamics.SIMULTANEOUS,
        pyspiel.GameType.ChanceMode.DETERMINISTIC,
        pyspiel.GameType.Information.ONE_SHOT,
        pyspiel.GameType.Utility.ZERO_SUM,
        pyspiel.GameType.RewardModel.TERMINAL,
        2,  # max num players
        2,  # min_num_players
        True,  # provides_information_state
        True,  # provides_information_state_tensor
        False,  # provides_observation
        False,  # provides_observation_tensor
        dict()  # parameter_specification
    )
    game = pyspiel.MatrixGame(
        game_type,
        {},  # game_parameters
        ["Heads", "Tails"],  # row_action_names
        ["Heads", "Tails"],  # col_action_names
        [[-1, 1], [1, -1]],  # row player utilities
        [[1, -1], [-1, 1]]  # col player utilities
    )
    return game
コード例 #2
0
 def test_game_type(self):
   game_type = pyspiel.GameType(
       "matrix_mp", "Matching Pennies", pyspiel.GameType.Dynamics.SIMULTANEOUS,
       pyspiel.GameType.ChanceMode.DETERMINISTIC,
       pyspiel.GameType.Information.PERFECT_INFORMATION,
       pyspiel.GameType.Utility.ZERO_SUM,
       pyspiel.GameType.RewardModel.TERMINAL, 2, 2, True, True, False, False,
       dict())
   self.assertEqual(game_type.chance_mode,
                    pyspiel.GameType.ChanceMode.DETERMINISTIC)
コード例 #3
0
 def get_type(self):
   return pyspiel.GameType(
       short_name="python_tic_tac_toe",
       long_name="Python Tic-Tac-Toe",
       dynamics=pyspiel.GameType.Dynamics.SEQUENTIAL,
       chance_mode=pyspiel.GameType.ChanceMode.DETERMINISTIC,
       information=pyspiel.GameType.Information.PERFECT_INFORMATION,
       utility=pyspiel.GameType.Utility.ZERO_SUM,
       reward_model=pyspiel.GameType.RewardModel.TERMINAL,
       max_num_players=_NUM_PLAYERS,
       min_num_players=_NUM_PLAYERS,
       provides_information_state_string=True,
       provides_information_state_tensor=False,
       provides_observation_string=True,
       provides_observation_tensor=True,
       parameter_specification={},
   )
コード例 #4
0
 def get_type(self):
     return pyspiel.GameType(
         "python_tic_tac_toe",
         "Python Tic-Tac-Toe",
         pyspiel.GameType.Dynamics.SEQUENTIAL,
         pyspiel.GameType.ChanceMode.DETERMINISTIC,
         pyspiel.GameType.Information.PERFECT_INFORMATION,
         pyspiel.GameType.Utility.ZERO_SUM,
         pyspiel.GameType.RewardModel.TERMINAL,
         2,  # max num players
         2,  # min_num_players
         True,  # provides_information_state
         False,  # provides_information_state_tensor
         True,  # provides_observation
         False,  # provides_observation_tensor
         {}  # parameter_specification
     )
コード例 #5
0
  def get_type(self):
    type = self._client.send({'type': 'game_type'})

    # see https://github.com/deepmind/open_spiel/blob/master/open_spiel/spiel.h
    # GameType for the values of these fields
    return pyspiel.GameType(
      short_name = type['short_name'],
      long_name = type['long_name'],
      dynamics = pyspiel.GameType.Dynamics(type['dynamics']),
      chance_mode = pyspiel.GameType.ChanceMode(type['chance_mode']),
      information = pyspiel.GameType.Information(type['information']),
      utility = pyspiel.GameType.Utility(type['utility']),
      reward_model = pyspiel.GameType.RewardModel(type['reward_model']),
      max_num_players = type['max_num_players'],
      min_num_players = type['min_num_players'],
      provides_information_state_string = type['provides_information_state_string'],
      provides_information_state_tensor = type['provides_information_state_tensor'],
      provides_observation_string = type['provides_observation_string'],
      provides_observation_tensor = type['provides_observation_tensor'],
      parameter_specification=type['parameter_specification'])
コード例 #6
0
import numpy as np

import pyspiel

_NUM_PLAYERS = 2
_DEFAULT_PARAMS = {"termination_probability": 0.125}
_PAYOFF = [[5, 0], [10, 1]]

_GAME_TYPE = pyspiel.GameType(
    short_name="python_iterated_prisoners_dilemma",
    long_name="Python Iterated Prisoner's Dilemma",
    dynamics=pyspiel.GameType.Dynamics.SIMULTANEOUS,
    chance_mode=pyspiel.GameType.ChanceMode.EXPLICIT_STOCHASTIC,
    information=pyspiel.GameType.Information.PERFECT_INFORMATION,
    utility=pyspiel.GameType.Utility.GENERAL_SUM,
    reward_model=pyspiel.GameType.RewardModel.REWARDS,
    max_num_players=_NUM_PLAYERS,
    min_num_players=_NUM_PLAYERS,
    provides_information_state_string=False,
    provides_information_state_tensor=False,
    provides_observation_string=False,
    provides_observation_tensor=False,
    provides_factored_observation_string=False,
    parameter_specification=_DEFAULT_PARAMS)
_GAME_INFO = pyspiel.GameInfo(num_distinct_actions=2,
                              max_chance_outcomes=2,
                              num_players=2,
                              min_utility=0.,
                              max_utility=np.inf,
                              utility_sum=0.0,
                              max_game_length=9999)
コード例 #7
0
    # The reward matrix is represented as a string containing a
    # space-separated list of values.
    # Its size defines the number of populations in the mean field game.
    "reward_matrix":
    " ".join(str(v) for v in _DEFAULT_REWARD_MATRIX.flatten()),
    "geometry": _DEFAULT_GEOMETRY
}

_GAME_TYPE = pyspiel.GameType(
    short_name="python_mfg_predator_prey",
    long_name="Python Mean Field Predator Prey",
    dynamics=pyspiel.GameType.Dynamics.MEAN_FIELD,
    chance_mode=pyspiel.GameType.ChanceMode.EXPLICIT_STOCHASTIC,
    information=pyspiel.GameType.Information.PERFECT_INFORMATION,
    utility=pyspiel.GameType.Utility.GENERAL_SUM,
    reward_model=pyspiel.GameType.RewardModel.REWARDS,
    # We cannot pass math.inf here, so we pass a very high integer value.
    max_num_players=1000000000,
    min_num_players=1,
    provides_information_state_string=True,
    provides_information_state_tensor=False,
    provides_observation_string=True,
    provides_observation_tensor=True,
    parameter_specification=_DEFAULT_PARAMS)


def get_param(param_name, params):
    return params.get(param_name, _DEFAULT_PARAMS[param_name])


class MFGPredatorPreyGame(pyspiel.Game):
    """Predator-prey multi-population MFG."""
コード例 #8
0
import pyspiel

_DEFAULT_PARAMS = {
    "max_num_time_step": 10,
    "time_step_length": 0.5,
    "players": -1
}
_GAME_TYPE = pyspiel.GameType(
    short_name="python_dynamic_routing",
    long_name="Python Dynamic Routing Game",
    dynamics=pyspiel.GameType.Dynamics.SIMULTANEOUS,
    chance_mode=pyspiel.GameType.ChanceMode.DETERMINISTIC,
    information=pyspiel.GameType.Information.PERFECT_INFORMATION,
    utility=pyspiel.GameType.Utility.GENERAL_SUM,
    reward_model=pyspiel.GameType.RewardModel.REWARDS,
    max_num_players=100,
    min_num_players=0,
    provides_information_state_string=True,
    provides_information_state_tensor=True,
    provides_observation_string=True,
    provides_observation_tensor=True,
    default_loadable=True,
    provides_factored_observation_string=True,
    parameter_specification=_DEFAULT_PARAMS)


class DynamicRoutingGame(pyspiel.Game):
  """Implementation of dynamic routing game.

  At each simultaneous-move time, each vehicle/player with negative waiting time
  chooses on which successor link they would like to go. When arriving on the
コード例 #9
0
import pyspiel

_DEFAULT_PARAMS = {
    "max_num_time_step": 10,
    "time_step_length": 0.5,
    "players": -1
}
_GAME_TYPE = pyspiel.GameType(
    short_name="python_mfg_dynamic_routing",
    long_name="Python Mean Field Routing Game",
    dynamics=pyspiel.GameType.Dynamics.MEAN_FIELD,
    chance_mode=pyspiel.GameType.ChanceMode.EXPLICIT_STOCHASTIC,
    information=pyspiel.GameType.Information.PERFECT_INFORMATION,
    utility=pyspiel.GameType.Utility.GENERAL_SUM,
    reward_model=pyspiel.GameType.RewardModel.REWARDS,
    max_num_players=1,
    min_num_players=1,
    provides_information_state_string=True,
    provides_information_state_tensor=True,
    provides_observation_string=True,
    provides_observation_tensor=True,
    default_loadable=True,
    provides_factored_observation_string=True,
    parameter_specification=_DEFAULT_PARAMS)

WAITING_TIME_NOT_ASSIGNED = -1


class MeanFieldRoutingGame(pyspiel.Game):
    """Implementation of mean field routing game.
コード例 #10
0
relies on processing and updating states as it goes, e.g. MCTS.
"""

import numpy as np

import pyspiel

_NUM_PLAYERS = 2
_GAME_TYPE = pyspiel.GameType(
    short_name="python_kuhn_poker",
    long_name="Python Kuhn Poker",
    dynamics=pyspiel.GameType.Dynamics.SEQUENTIAL,
    chance_mode=pyspiel.GameType.ChanceMode.EXPLICIT_STOCHASTIC,
    information=pyspiel.GameType.Information.IMPERFECT_INFORMATION,
    utility=pyspiel.GameType.Utility.ZERO_SUM,
    reward_model=pyspiel.GameType.RewardModel.TERMINAL,
    max_num_players=_NUM_PLAYERS,
    min_num_players=_NUM_PLAYERS,
    provides_information_state_string=True,
    provides_information_state_tensor=True,
    provides_observation_string=True,
    provides_observation_tensor=True,
    provides_factored_observation_string=True)
_GAME_INFO = pyspiel.GameInfo(
    num_distinct_actions=2,  # 0 = Pass, 1 = Bet
    max_chance_outcomes=3,  # The deck has 3 cards
    num_players=2,
    min_utility=-2.0,
    max_utility=2.0,
    utility_sum=0.0,
    max_game_length=3)  # e.g. Pass, Bet, Bet
コード例 #11
0
_NUM_PLAYERS = 1
_SIZE = 10
_HORIZON = 10
_NUM_ACTIONS = 3
_NUM_CHANCE = 3
_EPSILON = 10**(-25)
_DEFAULT_PARAMS = {"size": _SIZE, "horizon": _HORIZON}
_GAME_TYPE = pyspiel.GameType(
    short_name="python_mfg_crowd_modelling",
    long_name="Python Mean Field Crowd Modelling",
    dynamics=pyspiel.GameType.Dynamics.MEAN_FIELD,
    chance_mode=pyspiel.GameType.ChanceMode.EXPLICIT_STOCHASTIC,
    information=pyspiel.GameType.Information.PERFECT_INFORMATION,
    utility=pyspiel.GameType.Utility.GENERAL_SUM,
    reward_model=pyspiel.GameType.RewardModel.REWARDS,
    max_num_players=_NUM_PLAYERS,
    min_num_players=_NUM_PLAYERS,
    provides_information_state_string=True,
    provides_information_state_tensor=False,
    provides_observation_string=True,
    provides_observation_tensor=True,
    parameter_specification=_DEFAULT_PARAMS)


class MFGCrowdModellingGame(pyspiel.Game):
    """A Mean Field Crowd Modelling game.


    A game starts by an initial chance node that select the initial state
    of the MFG.
コード例 #12
0
ファイル: castillo_game.py プロジェクト: ebaillie/AIStrat
#_DEFAULT_REGION_REWARDS = [(5,4,1),(7,4,2),(6,4,2),(4,2,1),(4,2,0),(6,3,1),(5,3,1),(4,3,1),(5,3,2)]
#_DEFAULT_PLAYERS = 4
#_DEFAULT_BOARD = 'BCDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
#_DEFAULT_GRANDES = [1,1,1,1]
#_DEFAULT_KING = 1
_DEFAULT_STATE = '{"players":4,"rewards":{{5,4,1},{7,4,2},{6,4,2},{4,2,1},{4,2,0},{6,3,1},{5,3,1},{4,3,1},{5,3,2}},"board":"BBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","grandes":{1,1,1,1},"king":1}'


_GAME_TYPE = pyspiel.GameType(
    short_name="castillo_game",
    long_name="El Grande Castillo Game",
    dynamics=pyspiel.GameType.Dynamics.SEQUENTIAL,
    chance_mode=pyspiel.GameType.ChanceMode.DETERMINISTIC,
    information=pyspiel.GameType.Information.IMPERFECT_INFORMATION, 
    utility=pyspiel.GameType.Utility.GENERAL_SUM,
    reward_model=pyspiel.GameType.RewardModel.TERMINAL,
    max_num_players=_MAX_PLAYERS,
    min_num_players=2,
    provides_information_state_string=False,
    provides_information_state_tensor=True,
    provides_observation_string=False,
    provides_observation_tensor=False,
    provides_factored_observation_string=False)
_GAME_INFO = pyspiel.GameInfo(
    num_distinct_actions=_NUM_REGIONS,
    max_chance_outcomes=0,
    num_players=5,
    min_utility=-10.0,
    max_utility=10.0,
    utility_sum=0.0,
    max_game_length=_MAX_PLAYERS)