Beispiel #1
0
def test_genius_agents_run_using_hypothesis(init_genius, agent_name1, agent_name2, utils, single_issue
                                            , keep_issue_names, keep_value_names):
    from negmas import convert_genius_domain_from_folder
    src = pkg_resources.resource_filename('negmas', resource_name='tests/data/Laptop')
    dst = pkg_resources.resource_filename('negmas', resource_name='tests/data/LaptopConv1D')
    if single_issue:
        assert convert_genius_domain_from_folder(src_folder_name=src
                                                 , dst_folder_name=dst
                                                 , force_single_issue=True
                                                 , cache_and_discretize_outcomes=True
                                                 , n_discretization=10
                                                 )
        base_folder = dst
    else:
        base_folder = src
    neg, agent_info, issues = load_genius_domain_from_folder(base_folder
                                                             , keep_issue_names=keep_issue_names
                                                             , keep_value_names=keep_value_names)
    if neg is None:
        raise ValueError(f'Failed to lead domain from {base_folder}')
    atlas = GeniusNegotiator(java_class_name=agent_name1,
                             domain_file_name=base_folder + '/Laptop-C-domain.xml'
                             , utility_file_name=base_folder + f'/Laptop-C-prof{utils[0]}.xml'
                             , keep_issue_names=keep_issue_names
                             , keep_value_names=keep_value_names)
    agentx = GeniusNegotiator(java_class_name=agent_name2,
                              domain_file_name=base_folder + '/Laptop-C-domain.xml'
                              , utility_file_name=base_folder + f'/Laptop-C-prof{utils[1]}.xml'
                              , keep_issue_names=keep_issue_names
                              , keep_value_names=keep_value_names
                              )
    neg.add(atlas)
    neg.add(agentx)
Beispiel #2
0
def test_convert_dir_no_names(tmpdir):
    from negmas import convert_genius_domain_from_folder

    dst = tmpdir.mkdir("sub")
    src = pkg_resources.resource_filename("negmas",
                                          resource_name="tests/data/Laptop")
    dst = pkg_resources.resource_filename(
        "negmas", resource_name="tests/data/LaptopConv")

    assert convert_genius_domain_from_folder(
        src_folder_name=src,
        dst_folder_name=dst,
        force_single_issue=True,
        cache_and_discretize_outcomes=True,
        n_discretization=10,
        keep_issue_names=False,
        keep_value_names=False,
        normalize_utilities=True,
    )
    mechanism, agent_info, issues = load_genius_domain_from_folder(dst)
    assert len(issues) == 1
    for k, v in enumerate(issues):
        assert (
            f"{k}:{v}" ==
            """0:0: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26']"""
        )
Beispiel #3
0
 def prepare(self, utils=(1, 1), single_issue=True, keep_issue_names=True,
             keep_value_names=True):
     from negmas import convert_genius_domain_from_folder
     src = pkg_resources.resource_filename('negmas', resource_name='tests/data/Laptop')
     dst = pkg_resources.resource_filename('negmas', resource_name='tests/data/LaptopConv1D')
     if single_issue:
         assert convert_genius_domain_from_folder(src_folder_name=src
                                                  , dst_folder_name=dst
                                                  , force_single_issue=True
                                                  , cache_and_discretize_outcomes=True
                                                  , n_discretization=10
                                                  )
         base_folder = dst
     else:
         base_folder = src
     neg, agent_info, issues = load_genius_domain_from_folder(base_folder
                                                              , keep_issue_names=keep_issue_names
                                                              , keep_value_names=keep_value_names)
     # atlas = GeniusNegotiator.random_negotiator(
     atlas = GeniusNegotiator(java_class_name='agents.anac.y2015.Atlas3.Atlas3',
                              domain_file_name=base_folder + '/Laptop-C-domain.xml'
                              , utility_file_name=base_folder + f'/Laptop-C-prof{utils[0]}.xml'
                              , keep_issue_names=keep_issue_names
                              , keep_value_names=keep_value_names)
     # agentx = GeniusNegotiator.random_negotiator(
     agentx = GeniusNegotiator(java_class_name='agents.anac.y2015.AgentX.AgentX',
                               domain_file_name=base_folder + '/Laptop-C-domain.xml'
                               , utility_file_name=base_folder + f'/Laptop-C-prof{utils[1]}.xml'
                               , keep_issue_names=keep_issue_names
                               , keep_value_names=keep_value_names
                               )
     neg.add(atlas)
     neg.add(agentx)
     return neg
Beispiel #4
0
def test_convert_dir_keep_names(tmpdir):
    from negmas import convert_genius_domain_from_folder

    dst = tmpdir.mkdir("sub")
    src = pkg_resources.resource_filename("negmas",
                                          resource_name="tests/data/Laptop")
    dst = pkg_resources.resource_filename(
        "negmas", resource_name="tests/data/LaptopConv")
    assert convert_genius_domain_from_folder(
        src_folder_name=src,
        dst_folder_name=dst,
        force_single_issue=True,
        cache_and_discretize_outcomes=True,
        n_discretization=10,
        keep_issue_names=True,
        keep_value_names=True,
        normalize_utilities=True,
    )
    mechanism, agent_info, issues = load_genius_domain_from_folder(dst)
    assert len(issues) == 1
    for k, v in enumerate(issues):
        assert (
            f"{k}:{v}" ==
            """0:Laptop-Harddisk-External Monitor: ["Dell+60 Gb+19'' LCD", "Dell+60 Gb+20'' LCD", "Dell+60 Gb+23'' LCD", "Dell+80 Gb+19'' LCD", "Dell+80 Gb+20'' LCD", "Dell+80 Gb+23'' LCD", "Dell+120 Gb+19'' LCD", "Dell+120 Gb+20'' LCD", "Dell+120 Gb+23'' LCD", "Macintosh+60 Gb+19'' LCD", "Macintosh+60 Gb+20'' LCD", "Macintosh+60 Gb+23'' LCD", "Macintosh+80 Gb+19'' LCD", "Macintosh+80 Gb+20'' LCD", "Macintosh+80 Gb+23'' LCD", "Macintosh+120 Gb+19'' LCD", "Macintosh+120 Gb+20'' LCD", "Macintosh+120 Gb+23'' LCD", "HP+60 Gb+19'' LCD", "HP+60 Gb+20'' LCD", "HP+60 Gb+23'' LCD", "HP+80 Gb+19'' LCD", "HP+80 Gb+20'' LCD", "HP+80 Gb+23'' LCD", "HP+120 Gb+19'' LCD", "HP+120 Gb+20'' LCD", "HP+120 Gb+23'' LCD"]"""
        )
Beispiel #5
0
def test_genius_agents_run_using_hypothesis(
    agent_name1,
    agent_name2,
    single_issue,
    keep_issue_names,
    keep_value_names,
):
    from negmas import convert_genius_domain_from_folder

    # TODO remove this limitation.
    if keep_issue_names != keep_value_names:
        return
    src = pkg_resources.resource_filename("negmas",
                                          resource_name="tests/data/Laptop")
    dst = pkg_resources.resource_filename(
        "negmas", resource_name="tests/data/LaptopConv1D")
    if single_issue:
        assert convert_genius_domain_from_folder(
            src_folder_name=src,
            dst_folder_name=dst,
            force_single_issue=True,
            cache_and_discretize_outcomes=True,
            n_discretization=10,
        )
        base_folder = dst
    else:
        base_folder = src
    neg, agent_info, issues = load_genius_domain_from_folder(
        base_folder,
        keep_issue_names=keep_issue_names,
        keep_value_names=keep_value_names,
        time_limit=TIMELIMIT,
        n_steps=None,
    )
    if neg is None:
        raise ValueError(f"Failed to lead domain from {base_folder}")
    a1 = GeniusNegotiator(
        java_class_name=agent_name1,
        ufun=agent_info[0]["ufun"],
        keep_issue_names=keep_issue_names,
        keep_value_names=keep_value_names,
    )
    a2 = GeniusNegotiator(
        java_class_name=agent_name2,
        ufun=agent_info[1]["ufun"],
        keep_issue_names=keep_issue_names,
        keep_value_names=keep_value_names,
    )
    neg._enable_callbacks = True
    neg.add(a1)
    neg.add(a2)
    neg.run()
    GeniusBridge.clean()
Beispiel #6
0
def test_genius_agents_run_using_hypothesis(
    agent_name1,
    agent_name2,
    single_issue,
    keep_issue_names,
    keep_value_names,
):
    from negmas import convert_genius_domain_from_folder

    utils = (1, 2)
    src = pkg_resources.resource_filename("negmas",
                                          resource_name="tests/data/Laptop")
    dst = pkg_resources.resource_filename(
        "negmas", resource_name="tests/data/LaptopConv1D")
    if single_issue:
        assert convert_genius_domain_from_folder(
            src_folder_name=src,
            dst_folder_name=dst,
            force_single_issue=True,
            cache_and_discretize_outcomes=True,
            n_discretization=10,
        )
        base_folder = dst
    else:
        base_folder = src
    neg, agent_info, issues = load_genius_domain_from_folder(
        base_folder,
        keep_issue_names=keep_issue_names,
        keep_value_names=keep_value_names,
        time_limit=5,
    )
    if neg is None:
        raise ValueError(f"Failed to lead domain from {base_folder}")
    a1 = GeniusNegotiator(
        java_class_name=agent_name1,
        domain_file_name=base_folder + "/Laptop-C-domain.xml",
        utility_file_name=base_folder + f"/Laptop-C-prof{utils[0]}.xml",
        keep_issue_names=keep_issue_names,
        keep_value_names=keep_value_names,
    )
    a2 = GeniusNegotiator(
        java_class_name=agent_name2,
        domain_file_name=base_folder + "/Laptop-C-domain.xml",
        utility_file_name=base_folder + f"/Laptop-C-prof{utils[1]}.xml",
        keep_issue_names=keep_issue_names,
        keep_value_names=keep_value_names,
    )
    neg._enable_callbacks = True
    neg.add(a1)
    neg.add(a2)
    neg.run()
Beispiel #7
0
    def test_genius_agent_example(self, init_genius):
        agent_name1 = "agents.anac.y2015.Atlas3.Atlas3"
        agent_name2 = "agents.anac.y2015.Atlas3.Atlas3"
        single_issue = False
        keep_issue_names, keep_value_names = False, False
        utils = (1, 1)

        from negmas import convert_genius_domain_from_folder

        src = pkg_resources.resource_filename(
            "negmas", resource_name="tests/data/Laptop"
        )
        dst = pkg_resources.resource_filename(
            "negmas", resource_name="tests/data/LaptopConv1D"
        )
        if single_issue:
            assert convert_genius_domain_from_folder(
                src_folder_name=src,
                dst_folder_name=dst,
                force_single_issue=True,
                cache_and_discretize_outcomes=True,
                n_discretization=10,
            )
            base_folder = dst
        else:
            base_folder = src
        neg, agent_info, issues = load_genius_domain_from_folder(
            base_folder,
            keep_issue_names=keep_issue_names,
            keep_value_names=keep_value_names,
        )
        # atlas = GeniusNegotiator.random_negotiator(
        atlas = GeniusNegotiator(
            java_class_name=agent_name1,
            domain_file_name=base_folder + "/Laptop-C-domain.xml",
            utility_file_name=base_folder + f"/Laptop-C-prof{utils[0]}.xml",
            keep_issue_names=keep_issue_names,
            keep_value_names=keep_value_names,
        )
        agentx = GeniusNegotiator(
            java_class_name=agent_name2,
            domain_file_name=base_folder + "/Laptop-C-domain.xml",
            utility_file_name=base_folder + f"/Laptop-C-prof{utils[1]}.xml",
            keep_issue_names=keep_issue_names,
            keep_value_names=keep_value_names,
        )
        neg.add(atlas)
        neg.add(agentx)
Beispiel #8
0
    def prepare(
        self,
        utils=(0, 0),
        single_issue=True,
        keep_issue_names=True,
        keep_value_names=True,
    ):
        from negmas import convert_genius_domain_from_folder

        src = pkg_resources.resource_filename(
            "negmas", resource_name="tests/data/Laptop"
        )
        dst = pkg_resources.resource_filename(
            "negmas", resource_name="tests/data/LaptopConv1D"
        )
        if single_issue:
            assert convert_genius_domain_from_folder(
                src_folder_name=src,
                dst_folder_name=dst,
                force_single_issue=True,
                cache_and_discretize_outcomes=True,
                n_discretization=10,
                keep_issue_names=keep_issue_names,
                keep_value_names=keep_value_names,
                normalize_utilities=True,
            )
            base_folder = dst
        else:
            base_folder = src
        neg, agent_info, issues = load_genius_domain_from_folder(
            base_folder,
            normalize_utilities=True,
            keep_issue_names=keep_issue_names,
            keep_value_names=keep_value_names,
        )
        # atlas = GeniusNegotiator.random_negotiator(
        atlas = GeniusNegotiator(
            java_class_name="agents.anac.y2015.Atlas3.Atlas3",
            ufun=agent_info[utils[0]]["ufun"],
        )
        # agentx = GeniusNegotiator.random_negotiator(
        agentx = GeniusNegotiator(
            java_class_name="agents.anac.y2015.AgentX.AgentX",
            ufun=agent_info[utils[1]]["ufun"],
        )
        neg.add(atlas)
        neg.add(agentx)
        return neg