How ssossou-liege/microgridspy-expansion works
microgrid-expansion sizes off-grid community microgrids under demand, cost, and resource uncertainty. The main workflow starts with a project or site, builds demand and resource inputs, samples futures and reduces them to a scenario tree, then assembles and solves a capacity-expansion model; a separate branch-and-simulate search certifies a reference-year design against the deployed controller. Post-processing reports costs and KPIs. The graph preserves the UI, demand calibration, resource acquisition, multi-stage planning, and exact-sizing branches. Some subsystem links are documented rather than verified from full source; edges cite the README or indexed excerpts.
Main entry points: generator.py Demand simulation · engine.py Project engine · run.py Plan runner · certify.py Exact sizing
Components 26
Project interface
- Local UI
src/microgrid_expansion/ui/server.py - Project engine
src/microgrid_expansion/ui/engine.py - Project settings
src/microgrid_expansion/settings.py
Community inputs
- Site data
src/microgrid_expansion/sites.py - Demand simulation
src/microgrid_expansion/demand/generator.py - Demand archetypes
src/microgrid_expansion/demand/archetypes.py - Declared uses
src/microgrid_expansion/demand/uses.py - Connection growth
src/microgrid_expansion/demand/connection.py - Demand growth
src/microgrid_expansion/demand/growth.py - ERA5 acquisition
src/microgrid_expansion/resource/era5.py - Climate pathways
src/microgrid_expansion/resource/cmip6.py - PV yield model
src/microgrid_expansion/resource/yield_model.py - Year instance
src/microgrid_expansion/instances.py
Uncertainty planning
- Scenario sampling
src/microgrid_expansion/scenarios/assemble.py - Scenario tree
src/microgrid_expansion/tree/build_tree.py - Tree reduction
src/microgrid_expansion/tree/reduce.py
Sizing and certification
- Plan runner
src/microgrid_expansion/run.py - Expansion model
src/microgrid_expansion/model/build.py - Solver driver
src/microgrid_expansion/solve/driver.py - Exact sizing
src/microgrid_expansion/exact/certify.py - Dispatch simulator
src/microgrid_expansion/exact/simulator.py - Cost lower bound
src/microgrid_expansion/exact/lower_bound.py
Assessment
- Economic appraisal
src/microgrid_expansion/post/appraisal.py - Results reporting
src/microgrid_expansion/post/report.py
Other components
- Planner
- Climate Data Store
Connections 27
- Planner → Local UI: configures study
- Local UI → Project engine: requests sizing
src/microgrid_expansion/ui/server.py - Project engine → Project settings: uses parameters
src/microgrid_expansion/ui/engine.py - Project engine → Plan runner: runs tree plan
src/microgrid_expansion/ui/engine.py - Project engine → Exact sizing: certifies year
src/microgrid_expansion/ui/engine.py - Site data → Demand simulation: supplies community
src/microgrid_expansion/demand/generator.py - Demand simulation → Demand archetypes: uses profiles
src/microgrid_expansion/demand/generator.py - Demand simulation → Declared uses: samples activities
src/microgrid_expansion/demand/generator.py - Demand simulation → Connection growth: uses connection schedule
src/microgrid_expansion/demand/generator.py - Demand simulation → Demand growth: uses growth
src/microgrid_expansion/demand/generator.py - Climate Data Store → ERA5 acquisition: provides weather data
- Site data → ERA5 acquisition: sets request location
data/irradiance/download.py - Site data → Climate pathways: selects site pathway
src/microgrid_expansion/resource/cmip6.py - Year instance → Demand simulation: generates load
src/microgrid_expansion/instances.py - Year instance → PV yield model: loads resource yield
src/microgrid_expansion/instances.py - ERA5 acquisition → PV yield model: supplies irradiance
- Plan runner → Scenario sampling: assembles futures
- Scenario sampling → Scenario tree: provides scenarios
src/microgrid_expansion/tree/build_tree.py - Scenario tree → Tree reduction: reduces ensemble
src/microgrid_expansion/tree/build_tree.py - Plan runner → Expansion model: assembles plan
- Expansion model → Solver driver: solves MILP
- Exact sizing → Cost lower bound: computes lower bound
src/microgrid_expansion/exact/certify.py - Exact sizing → Dispatch simulator: evaluates designs
src/microgrid_expansion/exact/certify.py - Dispatch simulator → Year instance: uses hourly inputs
- Plan runner → Economic appraisal: appraises plan
- Exact sizing → Economic appraisal: appraises certificate
src/microgrid_expansion/exact/certify.py - Economic appraisal → Results reporting: feeds reporting