def test_comp_creation_with_factory_method(): d = Domain("d", "", ["R", "G"]) v1 = Variable("v1", d) v2 = Variable("v2", d) c1 = constraint_from_str("c1", "10 if v1 == v2 else 0", [v1, v2]) graph = build_computation_graph(None, constraints=[c1], variables=[v1, v2]) comp_node = graph.computation("c1") algo_def = AlgorithmDef.build_with_default_param("maxsum") comp_def = ComputationDef(comp_node, algo_def) comp = build_computation(comp_def) assert comp is not None assert comp.name == "c1" assert comp.factor == c1 comp_node = graph.computation("v1") algo_def = AlgorithmDef.build_with_default_param("maxsum") comp_def = ComputationDef(comp_node, algo_def) comp = build_computation(comp_def) assert comp is not None assert comp.name == "v1" assert comp.variable.name == "v1" assert comp.factors == ["c1"]
def test_density_two_var_one_factor(): dcop = DCOP('test', 'min') d1 = Domain('d1', '--', [1, 2, 3]) v1 = Variable('v1', d1) v2 = Variable('v2', d1) dcop += 'c1', '0.5 * v1 + v2', [v1, v2] g = build_computation_graph(dcop) assert g.density() == 4 / 6
def test_one_var_one_factor(): dcop = DCOP('test', 'min') d1 = Domain('d1', '--', [1, 2, 3]) v1 = Variable('v1', d1) dcop += 'c1', '0.5 * v1', [v1] g = build_computation_graph(dcop) assert len(g.links) == 1 assert len(g.nodes) == 2
def test_api_distribute_dsa_adhoc(): from pydcop.computations_graph import factor_graph from pydcop.distribution import adhoc from pydcop.algorithms import dsa dcop = dcop_graphcoloring_3() agents = create_agents('a', [1, 2, 3], capacity=100) dcop._agents_def = agents cg = factor_graph.build_computation_graph(dcop) dist = adhoc.distribute(cg, dcop.agents.values(), computation_memory=dsa.computation_memory, communication_load=dsa.communication_load) assert dist.is_hosted(['v1', 'v2', 'v3'])
def test_api_distribute_maxsum_ilp_compref(): from pydcop.computations_graph import factor_graph from pydcop.distribution import ilp_compref from pydcop.algorithms import maxsum dcop = dcop_graphcoloring_3() agents = create_agents('a', range(1, 4), capacity=100) dcop._agents_def = agents cg = factor_graph.build_computation_graph(dcop) dist = ilp_compref.distribute(cg, dcop.agents.values(), computation_memory=maxsum.computation_memory, communication_load=maxsum.communication_load) assert dist.is_hosted(['v1', 'v2', 'v3'])
def test_api_distribute_dsa_oneagent(): from pydcop.computations_graph import factor_graph from pydcop.distribution import oneagent from pydcop.algorithms import dsa dcop = dcop_graphcoloring_3() # 5 constraints and 3 variable => 8 computations : we need 8 agents agents = create_agents('a', range(1, 9), capacity=100) dcop._agents_def = agents cg = factor_graph.build_computation_graph(dcop) dist = oneagent.distribute(cg, dcop.agents.values(), computation_memory=dsa.computation_memory, communication_load=dsa.communication_load) assert dist.is_hosted( ['v1', 'v2', 'v3', 'cost_1', 'cost_2', 'cost_3', 'c2', 'c1']) for agt in agents: assert len(dist.computations_hosted(agt)) == 1
type: intention function: 1 if v1 == v2 else 0 diff_2_3: type: intention function: 1 if v3 == v2 else 0 agents: a1: capacity: 100 a2: capacity: 100 a3: capacity: 100 a4: capacity: 100 a5: capacity: 100 """ dcop = load_dcop(dcop_yaml) cg = build_computation_graph(dcop) mapping = distribute(cg, dcop.agents) agents = deploy_on_local_agents(cg, mapping) results, _, _ = synchronous_single_run(agents) print("FINISHED ! " + str(results))