Protocols#
Coordination protocols for vertical and horizontal agent coordination.
Base Classes#
- class heron.protocols.base.Protocol#
Base class for coordination protocols.
- abstractmethod execute(agents: list, **kwargs) dict#
Execute the protocol among agents.
- class heron.protocols.base.CommunicationProtocol#
Protocol with message-based communication support.
- async execute_distributed(agents: list, broker: MessageBroker) dict#
Execute protocol with message passing.
Vertical Protocols#
Protocols for top-down coordination between hierarchy levels.
SetpointProtocol#
- class heron.protocols.vertical.SetpointProtocol#
Direct setpoint control from coordinator to subordinates.
- execute(coordinator, setpoints: dict) dict#
Distribute setpoints to subordinate agents.
- Parameters:
coordinator – Coordinator agent
setpoints – Dict mapping subordinate IDs to setpoint values
Usage:
from heron.protocols.vertical import SetpointProtocol protocol = SetpointProtocol() setpoints = { "device_1": {"p": 1.0, "q": 0.5}, "device_2": {"p": 0.8, "q": 0.3}, } result = protocol.execute(coordinator, setpoints)
PriceSignalProtocol#
- class heron.protocols.vertical.PriceSignalProtocol(initial_price: float = 50.0)#
Market-based coordination via price signals.
- Parameters:
initial_price – Starting price value
- price: float#
Current price signal.
- set_price(price: float)#
Update the price signal.
- execute(coordinator, price: float = None) dict#
Broadcast price to all subordinates.
Usage:
from heron.protocols.vertical import PriceSignalProtocol protocol = PriceSignalProtocol(initial_price=50.0) # System operator sets price based on conditions protocol.set_price(65.0) # High demand period result = protocol.execute(coordinator)
Horizontal Protocols#
Protocols for peer-to-peer coordination between same-level agents.
P2PTradingProtocol#
- class heron.protocols.horizontal.P2PTradingProtocol#
Peer-to-peer energy trading protocol.
- execute(agents: list) dict#
Execute trading round among agents.
- Returns:
Dict with trades and settlement
Usage:
from heron.protocols.horizontal import P2PTradingProtocol protocol = P2PTradingProtocol() result = protocol.execute([agent1, agent2, agent3]) # result = {"trades": [...], "total_volume": 1.5}
ConsensusProtocol#
- class heron.protocols.horizontal.ConsensusProtocol(max_iterations: int = 10, tolerance: float = 0.01)#
Distributed consensus algorithm for agreement.
- Parameters:
max_iterations – Maximum consensus rounds
tolerance – Convergence tolerance
- execute(agents: list) dict#
Run consensus until convergence.
- Returns:
Dict with consensus value and convergence info
Usage:
from heron.protocols.horizontal import ConsensusProtocol protocol = ConsensusProtocol(max_iterations=20, tolerance=0.001) result = protocol.execute(agents) # result = {"consensus_value": 42.5, "iterations": 8, "converged": True}
Protocol Selection Guide#
Protocol |
Direction |
Use Case |
|---|---|---|
SetpointProtocol |
Vertical |
Direct control of subordinate devices |
PriceSignalProtocol |
Vertical |
Market-based incentive coordination |
P2PTradingProtocol |
Horizontal |
Energy/resource trading between peers |
ConsensusProtocol |
Horizontal |
Agreement on shared values/decisions |