citygrid-policy-driven-fede.../citygrid/demo/core_demo.py

33 lines
1.4 KiB
Python

from __future__ import annotations
"""Tiny demonstration harness for CityGrid MVP interop."""
from citygrid.adapters.der_controller import DerControllerAdapter
from citygrid.adapters.water_pump_controller import WaterPumpControllerAdapter
from citygrid.bridge.energi_bridge import EnergiBridge
from citygrid import LocalProblem, SharedVariables
from citygrid.registry.registry import GoCRegistry
def run_demo():
der = DerControllerAdapter()
water = WaterPumpControllerAdapter()
lp_der = der.build_local_problem()
lp_water = water.build_local_problem()
# Instantiate a trivial bridge mapping to canonical form
canon_der = EnergiBridge.to_canonical({"id": lp_der.id, "domain": lp_der.domain, "assets": lp_der.assets, "objective": lp_der.objective, "constraints": lp_der.constraints})
canon_water = EnergiBridge.to_canonical({"id": lp_water.id, "domain": lp_water.domain, "assets": lp_water.assets, "objective": lp_water.objective, "constraints": lp_water.constraints})
print("Canonical Der LP:", canon_der)
print("Canonical Water LP:", canon_water)
# Simple registry usage
reg = GoCRegistry()
reg.register_adapter("der-controller-1", ["electricity"], "v0.1", repo=None)
reg.register_adapter("water-pump-1", ["water"], "v0.1", repo=None)
for a in reg.list_adapters():
print("Registered adapter:", a.adapter_id, a.domains)
if __name__ == "__main__":
run_demo()