pydcop.distribution.oilp_cgdp

OILP-CGDP : Optimal ILB-based distribution for Computation Graph

This is a generic distribution method, which works for any computation graph (constraint graph, factor graph, etc.).

This method optimizes the distribution for: * hosting costs * communication cost, made of communication load (betwwen two computation)

and route costs (between two agents)

A weighted sum is used to aggregate these two objectives.

Agents’s capacities are used as hard constraints for the distribution.

References

AAMAS 2018

capacity_fonc(agents_def: Iterable[AgentDef]) Callable[[str], float]
Parameters:

agents_def

Returns:

a function that gives the agent’s capacity given it’s name

distribute(computation_graph: ComputationGraph, agentsdef: Iterable[AgentDef], hints: DistributionHints | None = None, computation_memory=None, communication_load=None, timeout=600) Distribution
Parameters:
  • computation_graph

  • agentsdef

  • hints

  • computation_memory

  • communication_load

footprint_fonc(cg: ComputationGraph, computation_memory: Callable[[ComputationNode], float]) Callable[[str], float]
Parameters:
  • cg (ComputationGraph) – the computation graph

  • computation_memory (Callable) –

    a function giving a memory footprint from a computation node and a set of links

    in the computation graph

Returns:

a function that returns the memory footprint of a computation given it’s name

Return type:

Callable

hosting_cost_func(agts_def: Iterable[AgentDef]) Callable[[str, str], float]
Parameters:

agts_def – the AgentsDef

Returns:

a function that returns the hosting cost for agt, comp