Skip to content

MEME 0.1.0-alpha

Pre-release
Pre-release

Choose a tag to compare

@AndreasWillibaldWeber AndreasWillibaldWeber released this 24 Oct 17:08
· 26 commits to main since this release
v0.1.0-alpha
bcc8170

MEME 0.1.0-alpha is the first pre-release of Multi Energy Model Execution: a dependency-free Go service that takes one canonical JSON energy-system model, translates it into the native inputs of PyPSA, Calliope and AdOpT-NET0, optionally runs the solvers, and returns one result bundle through a REST API.

It is an alpha. The REST API and the canonical model may still change between pre-releases. If a payload validates but means something different on one framework than on another, please open an issue with the payload and what each target emitted or solved.

Highlights

  • One model, several frameworks. POST /validate, /convert and /simulate take ?target= as one framework, a comma-separated list or all. Validation is capability-gated: a property the selected target cannot honor is rejected with a pointed message or named in a warning, never silently dropped.
  • Framework versions are targets. Calliope 0.7.0 is calliope (alias calliope-0.7); Calliope 0.6.8 is the calliope-0.6 variant, run only when named. GET /capabilities lists the targets, what all runs, the aliases, the framework version behind each target and the feature matrix.
  • Asynchronous jobs, one bundle. /simulate answers with a job id, /jobs/{id}/status follows the run, and /jobs/{id} returns a zip with the solver results, the emitted inputs, the driver scripts, the log and the submitted config. Sweeps expand into independent runs.
  • A solver environment to go with it. The environment/ image carries PyPSA with HiGHS, both Calliope releases with CBC in separate virtual environments, and AdOpT-NET0 with GLPK; all solvers are free.
  • Build version reporting. meme -version and the version field of GET /healthz tell you which build you are running.

Targets

Target Framework Version In all
pypsa PyPSA 1.2.4 yes
calliope (alias calliope-0.7) Calliope 0.7.0 yes
calliope-0.6 Calliope 0.6.8 by name
adopt-net0 AdOpT-NET0 0.1.10 yes

Getting it

# dry-run service on the host: validates, translates and plans, no solve
go install github.com/enerplanet/meme/cmd/meme@v0.1.0-alpha && meme -addr :8080

# or from a checkout
git clone --branch v0.1.0-alpha https://github.com/enerplanet/meme && cd meme && make run

# real solvers in Docker
make -C environment build ENV=dev && make -C environment run ENV=dev

Documentation: https://enerplanet.github.io/meme (quickstart, configuration, API reference, canonical model, the capability reference per framework, the architecture decisions).

What changed

The full list is in the changelog. Since the July scaffold: the Calliope target moved from 0.7.0.dev7 to the stable 0.7.0 release (#3), Calliope 0.6.8 joined as the calliope-0.6 target (#4), a technology placed at several nodes writes every node's data (#7), operate mode installs import limits and line capacities (#8), an already-annualized cost basis is charged once per year, a PyPSA model without time series is solved over the whole horizon, file-backed time series are rejected at validation, and the test suite gained a CI workflow and cross-framework objective checks.

Known limitations

  • timeseries.source: file is rejected at validation; no target can materialize file-backed series yet.
  • Calliope 0.6 has no indexed parameters, piecewise performance or custom math; the capability matrix in GET /capabilities says what each target honors.
  • AdOpT-NET0 has no database mapping for generic conversion technologies; name a real database technology through native["adopt-net0"].
  • No prebuilt binaries or container images are attached to this release; build from source as above.