PowerOptLab.jl

PowerOptLab is a research laboratory for four-wire distribution-network decisions when the network state or model is uncertain. Its organizing questions are:

  1. What states and models are compatible with telemetry and metadata?
  2. What safe measurement or intervention would distinguish material alternatives?
  3. What operating decision is justified by the remaining alternatives?

The package builds on the BMOPFTools reference current–voltage OPF engine and reuses its neutral-explicit device physics, per-unit handling, and result extraction through public extension seams.

The complete loop is not implemented yet. Current capabilities provide its foundations as separate, explicit research prototypes; the documentation does not treat proposed model-forensics, active-probing, or global-certification APIs as existing functionality. Start with Concepts for the modelling contracts, then read the Research program for the current boundary and priorities.

Capabilities

Component models

New network elements, stamped via model_hook! / solution_hook!.

CapabilityEntry pointMaturity
Storage / battery with state of chargeStorageDevicepromotion candidate
EV charging (V1G / V2G) with availability & departure energyEVDevicepromotion candidate
Advanced inverter (circuit-aware IBR)AdvancedInverterexperimental
Phase-aware inverter controls (local three-leg laws)SequenceControllerresearch prototype
IVQ battery (current–voltage–charge model)IVQBatteryprototype

Problem specifications

New formulations over the same physics, via the staged build_opf_model / enforce_kcl! / generation_cost / extract_result API.

CapabilityEntry pointDirectionMaturity
Multi-period OPF co-optimising many snapshotssolve_multiperiod_opfforwardpromotion candidate
Legacy WLS state estimationsolve_state_estimationinverseprototype
Constrained NLLS state estimationsolve_sparse_state_estimatorinverseprototype
Parameter estimation (line lengths / taps)solve_parameter_estimationinverseprototype
Inverse Carson reconstruction (compatible overhead constructions)solve_inverse_carsoninverseprototype
Dynamic operating envelopes (active import/export capacity)solve_operating_envelopeforwardresearch prototype
Bilevel PV/tap POC (DiffOpt lower-level response)solve_bilevel_pv_taphierarchicalproof of concept

Bespoke algorithms

Custom solution methods, currently including HELM power flow. See Bespoke algorithms for the method roadmap.

Installation

BMOPFTools is not yet registered. Develop both from local checkouts; automated builds pin BMOPFTools commit 4c0ec8b9c947eea5cd94966f32d2c97f65115b87 (the PowerIO 0.7-compatible snapshot with semantic IBR keys and the public smooth-PWL API):

using Pkg
Pkg.activate(".")
Pkg.develop(path="../BMOPFTools.jl")
Pkg.instantiate()

Everything is SI at the interface (watts, vars, watt-hours, volts); per-unit conditioning inside each solve is handled through the engine's opf_bases(ctx) accessor.

How it fits together

See Concepts for how each capability layers over the BMOPFTools staged API, and Contributing for how to add your own and the promotion path back to the BMOPF spec. Each capability page carries a worked example.