Skip to content

v0.1.2

Choose a tag to compare

@drewgray drewgray released this 19 Apr 05:18
· 8 commits to main since this release
9927c22

Added

New crates

  • surge-dispatch — unified economic dispatch and unit commitment kernel.
    Typed DispatchModel / DispatchRequest / solve_dispatch API covers DC
    and AC SCED, DC SCUC, time-coupled multi-period dispatch, reliability
    commitment, AC redispatch, and SCED-AC Benders decomposition through one
    request surface with three orthogonal study axes (Formulation × Interval
    Coupling × Commitment Policy). Includes reserve-product modeling, N-1
    security screening (explicit contingencies or iterative screening),
    HVDC co-dispatch, emissions and carbon pricing, and a ledger-first
    DispatchSolution with an exact ObjectiveTerm audit.
  • surge-market — canonical market-formulation layer on top of
    surge-dispatch. Provides standard reserve-product constructors
    (regulation, synchronized, non-synchronized, ramping, reactive
    headroom) and zonal-requirement builders, commitment helpers,
    piecewise offer-curve construction, per-bus load aggregation,
    startup/shutdown trajectory derivation, and time-window translators.
    Adds a typed multi-stage workflow runner (MarketStage,
    MarketWorkflow, solve_market_workflow) with commitment handoff
    and dispatch pinning, the canonical two-stage DC SCUC → AC SCED
    workflow, the AC SCED setup combinator (reactive-reserve filter,
    commitment augmentation, bandable-subset producer pinning, AC warm
    start, Q-bound overrides), and the AC refinement runtime
    (RetryPolicy nested grid of OPF / band / NLP / HVDC attempts with
    feedback providers and commitment probes). Includes the GO Competition
    Challenge 3 format adapter as the reference implementation.

Python

  • New surge.dispatch namespace exposing the canonical dispatch API —
    DispatchRequest, DispatchSolution, study-axis enums, timeline
    helpers, and reserve/market/network configuration builders.
  • New surge.market namespace with MarketConfig, MarketWorkflow,
    WorkflowRunner, run_market_solve, reserve catalog constants,
    penalty-curve builders, AC reconciliation helpers, and
    violation-assessment utilities.
  • New surge.market.go_c3 namespace with a one-call load /
    build_workflow / solve_workflow / export / save recipe for the
    GO C3 adapter.
  • Typed .pyi stubs for dispatch and market namespaces; surge.opf
    namespace module added.
  • New solve_sced binding.

Optimization (surge-opf)

  • AC-OPF Benders subproblem support that produces the optimality cuts
    consumed by surge-dispatch's SCED-AC Benders loop.
  • Canonical reactive-reserve modeling in AC-OPF with per-product
    headroom/footroom constraints and deliverability caps.
  • HVDC co-optimization inside AC-OPF, including converter-terminal Q
    constraints and per-link dispatch bands.
  • Generator P-Q capability curves, piecewise cost epigraph support, and
    improved tap / phase-shifter / switched-shunt / SVC / TCSC handling.
  • Pre-solve model-reduction backend (backends::reduce) that removes
    bound-implied-zero columns and duplicate rows before handing the LP
    to the chosen backend.
  • Canonical MIP gap schedule / progress monitor API so commitment
    solves can target time-varying gap thresholds.
  • Expanded Gurobi and HiGHS backend coverage (MIP callbacks, incumbent
    tracking, Benders-compatible LP resolves); improved COPT backend for
    AC-OPF NLPs.
  • AC-OPF result envelope now carries the full objective-ledger audit,
    and the surge-solve CLI fails closed when the ledger audit fails.

Network Model (surge-network)

  • First-class DispatchableLoad with offer schedules and reserve
    participation.
  • Reserve market primitives: ReserveProduct, ReserveDirection,
    ReserveKind, QualificationRule, EnergyCoupling,
    ZonalReserveRequirement, SystemReserveRequirement.
  • Generator extensions for reserve capability (regulation, spinning,
    non-spinning) and startup tiers keyed by offline hours.
  • Flowgate and interface refinements, penalty-curve types, and power-
    balance penalty configuration.

Shared Solution Types (surge-solution)

  • New economics module defining the exact ObjectiveBucket /
    ObjectiveTerm / ObjectiveLedgerMismatch / SolutionAuditReport
    contracts used by surge-dispatch for ledger-first cost reporting.
  • New ids module with canonical resource-id helpers
    (generator_resource_id, dispatchable_load_resource_id,
    combined_cycle_plant_id, default_machine_id).