def it_stops_sampling_when_the_new_equilibria_are_all_similar(self):
     Nash.replicator_dynamics = lambda g, mix, iters, converge_threshold: \
             array([0.110001, 0.899999]) if list(mix) == [0.11, 0.89] else array([0.9999, 0.0001])
     matrix = create_observation_matrix()
     evaluator = EquilibriumCompareEvaluator(0.05)
     evaluator.old_equilibria = [array([0.11, 0.89]), array([1.0, 0.0])]
     assert evaluator.continue_sampling(matrix) == False
 def it_requests_further_sampling_when_new_equilibria_are_found(self):
     Nash.replicator_dynamics = lambda g, mix, iters, converge_threshold: \
             array([0.1, 0.9]) if mix is array([0.11, 0.89]) else array([0.999, 0.001])
     matrix = create_observation_matrix()
     evaluator = EquilibriumCompareEvaluator(0.05)
     evaluator.old_equilibria = [array([0.11, 0.89])]
     assert evaluator.continue_sampling(matrix) == True
     for eq in evaluator.old_equilibria:
         assert [[0.1, 0.9], [0.999, 0.001]].count(list(eq)) == 1
 def it_requests_further_sampling_when_there_is_data_but_no_old_equilibria(self):
     Nash.replicator_dynamics = lambda g, mix, iters, converge_threshold: array([0.1, 0.9])
     matrix = create_observation_matrix()
     evaluator = EquilibriumCompareEvaluator(0.01)
     assert evaluator.continue_sampling(matrix) == True
     assert_array_almost_equal(evaluator.old_equilibria[0], array([0.1, 0.9]))
 def it_requests_further_sampling_when_the_new_equilibrium_is_distant(self):
     Nash.replicator_dynamics = lambda g, mix, iters, converge_threshold: array([0.1, 0.9])
     matrix = create_observation_matrix()
     evaluator = EquilibriumCompareEvaluator(0.01)
     evaluator.old_equilibria = [array([0.5, 0.5])]
     assert evaluator.continue_sampling(matrix) == True
 def it_requests_further_sampling_when_given_an_empty_matrix(self):
     evaluator = EquilibriumCompareEvaluator(0.01)
     assert evaluator.continue_sampling(ObservationMatrix())