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())