Exemple #1
0
 def setUp(self):
     self.virtual_player = VirtualPlayer(1, 0.1, model=Qlearning(),
                                         game_skeleton=pd.DataFrame({'StimulusLeft': [5, 4, 1],
                                                                     'StimulusRight': [6, 3, 2],
                                                                     'LeftReward': [1, -1, 1],
                                                                     'BetterStimulus': [1, 1, 1],
                                                                     'RightReward': [1, 1, -1]}))
Exemple #2
0
def make_plot(dir):
    model = Qlearning()
    rp = RealPlayer(dir, model=model)
    game = GameSession()
    player = VirtualPlayer(10,
                           0.1,
                           game_skeleton=game.game_skeleton,
                           model=model)
    game.play(player=player)
    game._create_result()

    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')

    T = np.arange(-1, 1, 0.1)
    print(T.shape)
    alpha = np.arange(0, 1, 0.05)
    print(alpha.shape)

    X, Y = np.meshgrid(T, alpha)

    zs = np.array([
        rp.log_likelihood_function(list(x))
        for x in zip(np.ravel(X), np.ravel(Y))
    ])
    Z = zs.reshape(X.shape)

    ax.plot_surface(X, Y, Z)

    ax.set_xlabel('T')
    ax.set_ylabel('alpha')
    ax.set_zlabel('log likelihood')
 def test_get_optimized_parameters_for_q_learning(self):
     # given
     self.real_player.model = Qlearning()
     # when
     actual = self.real_player.get_optimized_parameters()
     # then
     self.assertIsInstance(actual, np.ndarray)
     self.assertEqual(len(actual), 2)
 def test_log_likelihood_function_q_learning(self):
     # given
     self.real_player.model = Qlearning()
     parameters = np.array([1, 0.1])
     expected = -1 * (3 * np.log(1 / 2))
     # when
     actual = self.real_player.log_likelihood_function(params=parameters)
     # then
     self.assertEqual(actual, expected)
Exemple #5
0
 def test_q_table_values_q_learning(self):
     # given
     self.real_player.model = Qlearning()
     parameters = np.array([1, 0.1])
     expected = [-0.1, 0, 0.1, 0, 0.1, 0]
     # when
     self.real_player.log_likelihood_function(params=parameters)
     actual = self.real_player.model.Q_table
     # then
     self.assertEqual(actual, expected)
 def test_max_log_likelihood_with_default_starting_points(
         self, mock_minimize):
     # given
     default_start_points = np.array([1, 0.1])
     self.real_player.model = Qlearning()
     # when
     self.real_player.max_log_likelihood()
     # then
     mock_minimize.assert_called_once()
     assert_array_equal(mock_minimize.call_args[1]['x0'],
                        default_start_points)
 def test_max_log_likelihood(self, mock_minimize):
     # given
     start_points = [3, 0.2]
     self.real_player.model = Qlearning()
     # when
     self.real_player.max_log_likelihood(start_points=start_points)
     # then
     mock_minimize.assert_called_once_with(
         self.real_player.log_likelihood_function,
         x0=start_points,
         method='Nelder-Mead')
from scripts.game_session import GameSession
from scripts.models import Qlearning
from scripts.player import VirtualPlayer

if __name__ == '__main__':
    game = GameSession()
    model = Qlearning()
    player = VirtualPlayer(2,
                           0.1,
                           game_skeleton=game.game_skeleton,
                           model=model)
    game.play(player=player)
    game.save_results()
 def test_get_default_optimization_start_points_for_Q_learning(self):
     real_player = RealPlayer(TEST_DATA_PATH, model=Qlearning())
     assert_array_equal(real_player.start_points, np.array([1, 0.1]))
def get_model(model):
    if isinstance(model, RescorlaWagner):
        model = RescorlaWagner()
    else:
        model = Qlearning()
    return model