32 lines
960 B
Python
32 lines
960 B
Python
"""Toy example to demonstrate CatOpt bridge usage for a two-asset NovaPlan setup."""
|
|
from __future__ import annotations
|
|
import time
|
|
|
|
from nova_plan.planner import LocalProblem
|
|
from nova_plan.contracts import PlanDelta
|
|
from nova_plan.catopt_bridge import to_object, delta_to_morphism
|
|
|
|
|
|
def demo_two_asset_catopt_bridge():
|
|
# Asset 1: local problem for agent A
|
|
lp1 = LocalProblem(
|
|
id="asset-A",
|
|
objective=lambda v, s: sum(v.values()) + sum(s.values()),
|
|
variables={"x": 1.0},
|
|
constraints={},
|
|
)
|
|
obj1 = to_object(lp1)
|
|
|
|
# Create a delta from asset-A to global objective
|
|
delta = {"x": 0.25}
|
|
d = PlanDelta(agent_id=lp1.id, delta=delta, timestamp=time.time())
|
|
morph = delta_to_morphism(d, source=lp1.id, target="global", contract_id="toy-contract")
|
|
|
|
return obj1, morph
|
|
|
|
|
|
if __name__ == "__main__":
|
|
obj, morph = demo_two_asset_catopt_bridge()
|
|
print("Object:", obj)
|
|
print("Morphism:", morph)
|