← Agora

Distributed Optimisation

Each node is an autonomous agent picking one of k colours (read: a time slot, frequency or channel). Neighbours sharing a colour clash over the resource. No agent sees the whole network; each knows only its own choice and its neighbours'. Yet through purely local moves they drive the global conflict count down: the backbone of decentralised scheduling and allocation. This is a DCOP. Live runs the real Python engine via Pyodide.

The constraint network

Nodes are agents coloured by their current choice; a red edge is an unresolved conflict. Watch agents flip colours round by round until the clashes clear (or settle into a stubborn few).

conflict satisfied just moved
round 0 · 0 conflicts

Convergence

Total conflicts per round. DSA drops fast but can wobble; MGM only ever improves but may stall above zero.

DSA MGM

Live exploration

Switch Mode to Live · Python, then change the resources or the move probability and re-solve. Too few colours and the conflicts can't all clear.

Things to notice

Local moves, global goal

No agent ever sees the whole network or counts the global conflicts; each just reacts to its neighbours. The global objective falls anyway, purely from local self-interest.

How that works

Randomness as a tool

In DSA, if every conflicting agent moved at once they'd chase each other forever. The move probability p breaks that symmetry. Turn it up in Live and watch it thrash.

DSA's coin flip

MGM never backslides

Letting only the biggest-gain agent in each neighbourhood move guarantees conflicts never rise, but the dense network shows it can get stuck a notch above zero.

Local optima

Too few resources

Drop the colour count below what the network needs (Live) and no assignment can satisfy everyone, and the agents fight forever over a genuinely scarce resource.

Scarcity & allocation