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
Пример #4
0
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))