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)
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']""" )
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
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"]""" )
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()
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()
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)
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