Ejemplo n.º 1
0
    def dqn_train_keras_rl(self):
        """Implementation of kreras-rl deep q learing."""
        env_name = 'neuron_poker-v0'
        stack = 2000
        env = gym.make(env_name, initial_stacks=stack, funds_plot=self.funds_plot, render=self.render,
                       use_cpp_montecarlo=self.use_cpp_montecarlo)

        np.random.seed(123)
        env.seed(123)
        #        env.add_player(EquityPlayer(name='equity/50/70', min_call_equity=.5, min_bet_equity=.7))
        # env.add_player(RandomPlayer())
        # env.add_player(RandomPlayer())
        # env.add_player(RandomPlayer())
        # env.add_player(PlayerShell(name='keras-rl-1', stack_size=stack), range=0.9)  # shell is used for callback to keras rl
        # env.add_player(PlayerShell(name='keras-rl-2', stack_size=stack), range=0.9)  # shell is used for callback to keras rl
        # env.add_player(PlayerShell(name='keras-rl-3', stack_size=stack), range=0.9)  # shell is used for callback to keras rl
        # env.add_player(PlayerShell(name='keras-rl-4', stack_size=stack), range=0.9)  # shell is used for callback to keras rl
        # env.add_player(PlayerShell(name='keras-rl-5', stack_size=stack), range=0.9)  # shell is used for callback to keras rl
        # env.add_player(PlayerShell(name='keras-rl-6', stack_size=stack), range=0.9)  # shell is used for callback to keras rl
        # env.add_player(PlayerShell(name='keras-rl-7', stack_size=stack), range=0.9)  # shell is used for callback to keras rl
        env.add_player(PlayerShell(name='LJY', stack_size=stack, range=0.33))  # shell is used for callback to keras rl
        # dqn = DQNPlayer(name='DQN-1',stack_size=2000, range=0.9, env=env , load_model=None)
        # env.add_player(dqn)
        env.add_player(RandomPlayer(name='Random-1',range=1))
        # env.add_player(RandomPlayer(name='Random-2',range=1))
        # env.add_player(RandomPlayer(name='Random-3',range=1))
        # env.add_player(RandomPlayer(name='Random-4',range=1))
        # env.add_player(RandomPlayer(name='Random-5',range=1))
        # env.add_player(RandomPlayer(name='Random-6',range=1))
        # env.add_player(RandomPlayer(name='Random-7',range=1))
        # env.add_player(DQNPlayer(name='DQN-2',stack_size=2000, range=0.9, env=env , load_model=None))
        # env.add_player(DQNPlayer(name='DQN-3',stack_size=2000, range=0.9, env=env , load_model=None))
        # env.add_player(DQNPlayer(name='DQN-4',stack_size=2000, range=0.9, env=env , load_model=None))
        # env.add_player(DQNPlayer(name='DQN-5',stack_size=2000, range=0.9, env=env , load_model=None))
        # env.add_player(DQNPlayer(name='DQN-6',stack_size=2000, range=0.9, env=env , load_model=None))
        # env.add_player(DQNPlayer(name='DQN-7',stack_size=2000, range=0.9, env=env , load_model=None))
        # env.add_player(DQNPlayer(name='DQN-8',stack_size=2000, range=0.9, env=env , load_model=None))
        env.reset()
        # print(env.players[0].range)
        # print(env.players[1].range)
        # print(env.players[2].range)
        # print(env.players[3].range)
        # print(env.players[4].range)
        # print(env.players[5].range)
        dqn = DQNPlayer()
        # dqn.initiate_agent(env,load_model='3dqn_vs_3rd')
        dqn.initiate_agent(env)
        dqn.train(ckpt_name='LJY')
Ejemplo n.º 2
0
 def key_press_agents(self):
     """Create an environment with 6 key press agents"""
     env_name = 'neuron_poker-v0'
     stack = 2000
     # num_of_plrs = 6
     env = gym.make(env_name, initial_stacks=stack, render=self.render)
     player = KeyPressAgent(name="LJY",range=0.3)
     env.add_player(player)
     # self.env.add_player(EquityPlayer(name='equity/50/50', min_call_equity=.5, min_bet_equity=-.5))
     env.add_player(RandomPlayer(name='Random-1',range=1))
     # env.add_player(RandomPlayer(name='Random-2',range=1))
     # env.add_player(RandomPlayer(name='Random-3',range=1))
     # env.add_player(RandomPlayer(name='Random-4',range=1))
     # env.add_player(RandomPlayer(name='Random-5',range=1))
     # self.env.add_player(PlayerShell(name='dqn001', stack_size=stack))
     # self.env.add_player(PlayerShell(name='dqn002', stack_size=stack))
     # self.env.add_player(PlayerShell(name='dqn003', stack_size=stack))
     # self.env.add_player(PlayerShell(name='dqn004', stack_size=stack))
     # self.env.add_player(PlayerShell(name='dqn005', stack_size=stack))
     env.reset()
Ejemplo n.º 3
0
    def dqn_agent(self, mode):
        my_import = __import__('agents.'+self.agent, fromlist=['Player'])
        player = getattr(my_import, 'Player')

        env_path = 'env'
        if self.env_name != 'v0':
            env_path += '_' + self.env_name

        shell_import = __import__(
            'gym_env.' + env_path, fromlist=['PlayerShell'])
        PlayerShell_import = getattr(shell_import, 'PlayerShell')

        env_name = 'neuron_poker-' + self.env_name
        self.env = gym.make(env_name, initial_stacks=self.stack, funds_plot=self.funds_plot, render=self.render,
                            use_cpp_montecarlo=self.use_cpp_montecarlo)
        np.random.seed(42)
        self.env.seed(42)

        count = 1

        for player_type in self.players:
            if player_type == 0:
                self.env.add_player(RandomPlayer(env_path))
            elif type(player_type) == tuple and len(player_type) == 2:
                self.env.add_player(EquityPlayer(name='equity_' + str(count), env=env_path,
                                                 min_call_equity=player_type[0], min_bet_equity=player_type[1]))
                count += 1

        self.env.add_player(PlayerShell_import(
            name='keras-rl', stack_size=self.stack))

        self.env.reset()

        if mode == 'train':
            dqn = player()
            dqn.initiate_agent(self.env)
            dqn.train(env_name=self.model_name)
        elif mode == 'play':
            dqn = player(load_model=self.model_name, env=self.env)
            dqn.play(nb_episodes=self.num_episodes, render=self.render)
Ejemplo n.º 4
0
    def ai_vs_random(self, ai_num):
        """
        Created by Xue Hongyan
        Create an environment with provided number of ai players and random players
        """
        env_name = 'neuron_poker-v0'
        stack = 500
        num_of_plrs = 6
        self.env = gym.make(env_name, initial_stacks=stack, render=self.render)
        player_pool = []
        for _ in range(ai_num):
            player = Custom_AI(env=self.env)
            player_pool.append(player)
        for _ in range(num_of_plrs - ai_num):
            player = RandomPlayer()
            player_pool.append(player)

        random.shuffle(player_pool)
        for player in player_pool:
            self.env.add_player(player)

        self.env.reset()