Example #1
0
 def test_story_macid_examples(self) -> None:
     prisoners_dilemma()
     battle_of_the_sexes()
     matching_pennies()
     taxi_competition()
     modified_taxi_competition()
     tree_doctor()
     forgetful_movie_star()
     subgame_difference()
     road_example()
     politician()
     umbrella()
     sequential()
     signal()
     triage()
Example #2
0
    def test_get_all_pure_spe(self) -> None:
        macid = taxi_competition()
        all_spe = macid.get_all_pure_spe()
        self.assertTrue(len(all_spe) == 1)
        spe = all_spe[0]
        joint_policy = macid.policy_profile_assignment(spe)
        cpd_d1 = joint_policy['D1']
        cpd_d2 = joint_policy['D2']
        self.assertTrue(np.array_equal(cpd_d1.values, np.array([1, 0])))
        self.assertTrue(
            np.array_equal(cpd_d2.values, np.array([[0, 1], [1, 0]])))

        macid = modified_taxi_competition()
        all_spe = macid.get_all_pure_spe()
        self.assertTrue(len(all_spe) == 2)

        macid = prisoners_dilemma()
        all_spe = macid.get_all_pure_spe()
        self.assertTrue(len(all_spe) == 1)

        macid = battle_of_the_sexes()
        all_spe = macid.get_all_pure_spe()
        self.assertTrue(len(all_spe) == 2)

        macid3 = basic_different_dec_cardinality()
        all_spe = macid3.get_all_pure_spe()
        spe = all_spe[0]
        joint_policy = macid3.policy_profile_assignment(spe)
        cpd_d1 = joint_policy['D1']
        cpd_d2 = joint_policy['D2']
        self.assertTrue(np.array_equal(cpd_d1.values, np.array([0, 1])))
        self.assertTrue(
            np.array_equal(cpd_d2.values, np.array([[0, 0], [1, 0], [0, 1]])))
Example #3
0
 def test_get_valid_order(self) -> None:
     macid = prisoners_dilemma()
     self.assertEqual(macid.get_valid_order(), ['D2', 'D1'])
     rg = RelevanceGraph(macid)
     with self.assertRaises(Exception):
         rg.get_valid_order()
     with self.assertRaises(Exception):
         macid.get_valid_order(['D3'])
Example #4
0
 def test_decs_in_each_maid_subgame(self) -> None:
     macid = prisoners_dilemma()
     self.assertCountEqual(macid.decs_in_each_maid_subgame(),
                           [{'D1', 'D2'}])
     macid = get_basic_subgames()
     self.assertTrue(len(macid.decs_in_each_maid_subgame()) == 4)
     macid = get_basic_subgames3()
     self.assertTrue(len(macid.decs_in_each_maid_subgame()) == 5)
Example #5
0
 def test_relevance_graph(self) -> None:
     example = taxi_competition()
     rg = RelevanceGraph(example)
     self.assertTrue(rg.is_acyclic())
     example2 = prisoners_dilemma()
     rg2 = RelevanceGraph(example2)
     self.assertFalse(rg2.is_acyclic())
     self.assertTrue(len(rg.get_sccs()) == 2)
     self.assertEqual(rg2.get_sccs(), [{'D1', 'D2'}])
Example #6
0
 def test_expected_utility(self) -> None:
     three_node = get_3node_cid()
     five_node = get_5node_cid()
     eu00 = three_node.expected_utility({'D': -1, 'S': -1})
     self.assertEqual(eu00, 1)
     eu10 = three_node.expected_utility({'D': 1, 'S': -1})
     self.assertEqual(eu10, -1)
     eu000 = five_node.expected_utility({'D': 0, 'S1': 0, 'S2': 0})
     self.assertEqual(eu000, 2)
     eu001 = five_node.expected_utility({'D': 0, 'S1': 0, 'S2': 1})
     self.assertEqual(eu001, 1)
     macid_example = prisoners_dilemma()
     eu_agent0 = macid_example.expected_utility({'D1': 'd', 'D2': 'c'}, agent=1)
     self.assertEqual(eu_agent0, 0)
     eu_agent1 = macid_example.expected_utility({'D1': 'd', 'D2': 'c'}, agent=2)
     self.assertEqual(eu_agent1, -3)
Example #7
0
    def test_get_all_pure_ne(self) -> None:
        macid = prisoners_dilemma()
        self.assertEqual(len(macid.get_all_pure_ne()), 1)
        pne = macid.get_all_pure_ne()[0]
        macid.add_cpds(*pne)
        self.assertEqual(macid.expected_utility({}, agent=1), -2)
        self.assertEqual(macid.expected_utility({}, agent=2), -2)

        macid2 = battle_of_the_sexes()
        self.assertEqual(len(macid2.get_all_pure_ne()), 2)

        macid3 = matching_pennies()
        self.assertEqual(len(macid3.get_all_pure_ne()), 0)

        macid4 = two_agents_three_actions()
        self.assertEqual(len(macid4.get_all_pure_ne()), 1)