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
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)
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={}, )
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 )
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'])
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)
# 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."""
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
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.
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
_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.
#_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)