Skip to content

7.5 custom constraints LHS: PLEXOS vs IASR workbook reconciliation #101

Description

@nick-gorman

PLEXOS vs IASR workbook reconciliation (custom constraints LHS)

Notes on how we reconciled the 7.5 IASR workbook ("Build limits - REZs" tab) with
the PLEXOS constraint formulation in data/plexos/ while building
manually_extracted_template_tables/7.5/custom_constraints_lhs.csv.

The workbook expresses constraints conceptually (e.g. 0.14 * WD area); PLEXOS
expresses them computationally (one row per generator, with the area coefficient).
Where the two diverge, PLEXOS is treated as the authoritative source of
constraint membership
. The workbook narrative is descriptive, while PLEXOS
is the canonical formulation used to build the model. This note records the
patterns we used to map between them.

Conventions adopted across all constraints

  • PLEXOS source-of-truth tables: membership from
    data/plexos/membership.csv; coefficients from
    data/plexos/properties/Constraints_properties.csv. We use the
    ExportGroup_<X> PLEXOS constraint as the workbook's <X> constraint
    equivalent (positive-flow direction). Generators only have positive
    coefficients; batteries appear with paired Generation Coefficient (positive)
    and Load Coefficient (negative) — we represent each battery with one
    storage_output row using the magnitude.

  • PLEXOS authoritative for membership: if PLEXOS includes a generator that
    the workbook narrative omits (e.g. a generator tagged in a different REZ from
    what the constraint description lists), we add it. The workbook description
    appears to be illustrative rather than exhaustive.

  • REZ shorthand: rez_output, <REZ>, k represents "k times all output in
    REZ ". Downstream code is expected to expand this against the workbook's
    Summary Mapping (REZ ID column).

  • Generator name expansion: workbook power-station names (e.g. Loy Yang)
    are expanded to per-unit IASR IDs (LYA1, LYA2, ...) per the Summary
    Mapping table.

  • Generic build-option batteries: PLEXOS uses constraint-scoped names like
    SEVIC1 Battery - 2h, SWQLD1 Battery - 2h, etc. The IASR workbook
    represents the same generic capacity at the sub-region level, e.g.
    SEV Battery - 2h. We map PLEXOS constraint-name batteries to the
    workbook sub-region equivalent (SEVIC1 → SEV, SWQLD1 → SQ, MN1 → CSA,
    SWV1 → WNV, NSA1 → NSA, ...). All three durations (2h/4h/8h) are
    included even when PLEXOS only lists 2h and 8h coefficients — the 4h
    variant is defined as a PLEXOS object, just not coefficient-tagged.

  • Lines: PLEXOS includes both sub-regional (SQ-CQ) and regional
    (NSW1-QLD1) names for the same flow path. We use only the sub-regional
    name to avoid duplication.

  • Skipped: PLEXOS-only synthetic objects: <Constraint>_Linear Augmentation
    and <Constraint>_<Option> Generator-class entries are PLEXOS network-expansion
    modelling objects, not real generators. Excluded.

Per-constraint notes (only where the call wasn't obvious)

NQ1

PLEXOS includes EMERASF1 (Emerald Solar Farm) with coefficient 1, even
though Summary Mapping tags it REZ Q4 (Isaac) — outside the workbook's
NQ1 narrative which lists Q1/Q2/Q3 only. Added per the PLEXOS-authoritative
rule.

CQ1

PLEXOS includes CSPVPS1 (Collinsville SF) and DAYDSF1 (Daydream SF),
both REZ Q10. Workbook narrative for CQ1 lists -CQ-NQ and Q4 only.
Added per PLEXOS-authoritative rule.

SQ1

PLEXOS ExportGroup_SQ1 is the union of the workbook's two SQ1 variants:

  • Base SQ1 terms (-0.5 * SQ-CQ, Q7)
  • "SQ1 (after CQ-SQ Upgrades)" terms (-0.57 * SQ-CQ, 0.15 * WD area,
    0.15 * DD area, 0.15 * NSW-QLD, 0.12 * SD area, 0.27 * BPH)

PLEXOS effectively uses the union with the base RHS (1400 MW) — more
conservative than the workbook's separate-variants treatment. We kept only
the minimal base SQ1 terms in the LHS because the "after upgrades" variant
is option-conditional (RHS rises to 2500 when SQ-CQ Option 5/6 is built).
The workbook's option-conditional structure can't be represented in a flat
RHS table — would need a separate constraint (SQ1_after_CQ-SQ_Upgrades)
with its own LHS row set if we want to model both states.

NSA1

PLEXOS includes:

  • Cultana Solar Farm (Anticipated Solar SA category) and SA Hydrogen Turbine
    (Policy Projects) — both mentioned in the workbook's S5 West description
    but not findable by short IASR ID in Summary Mapping. The PLEXOS object
    names are themselves the IASR IDs.
  • WPWF (Wattle Point Wind Farm) — REZ S4 (Yorke Peninsula), not in NSA1's
    workbook-listed REZs (S5/S7/S8). Added per PLEXOS-authoritative rule
    (similar pattern to NQ1/EMERASF1).
  • NSA1 Battery - 2h/8h → mapped to NSA Battery - 2h/4h/8h.

SEVIC1

PLEXOS extras: Marinus, T-V-MNSP1 (regional duplicates of TAS-SEV link),
SEVIC1 Battery - 2h/8h. Lines ignored as duplicates. Batteries mapped to
SEV Battery - 2h/4h/8h.

SWV1

PLEXOS extras: V-SA (regional duplicate of WNV-SESA), SWV1 Battery - 2h/8h.
Line ignored. Batteries mapped to WNV Battery - 2h/4h/8h (SWV1 covers V5/V9
in WNV sub-region).

MN1

PLEXOS extras: EnergyConnect (regional duplicate of SNSW-CSA — Project
EnergyConnect is the SNSW-CSA interconnector), MN1 Battery - 2h/8h.
Line ignored. Batteries mapped to CSA Battery - 2h/4h/8h.

SWNSW2

PLEXOS extras: EnergyConnect (regional duplicate of SNSW-CSA),
VIC1-NSW1 (regional duplicate of WNV-SNSW). Both ignored as line duplicates.

CNSW1

PLEXOS uses a different naming prefix for Dubbo sub-REZ (DN1) entities:

Workbook IASR ID PLEXOS name
DREZ_SAT_Dubbo DN1_SAT_Dubbo
DREZ_WH_Dubbo DN1_WH_Dubbo
DREZ Dubbo Battery - 2h/4h/8h DN1 Dubbo Battery - 2h/4h/8h

These are the same entities; the workbook uses DREZ_ prefix while PLEXOS uses
the REZ ID DN1_ prefix. All are tagged REZ ID = DN1 in Summary Mapping,
so our existing rez_output, DN1, 1 row covers them via downstream expansion.
No explicit rows added for these. Downstream code interfacing with PLEXOS
needs to know the DREZDN1 alias.

SNW1

PLEXOS name: CNSW-SNW South GPG. The workbook description for SNW1 lists
11 terms, three of which are opaque named groups (CNSW Generators, SNSWGPGSO,
CNSWGPG) without explicit membership documented in the workbook. PLEXOS has
the full membership and coefficients.

PLEXOS for this constraint also encodes time-varying coefficients (multiple
rows per entity with different date_from values). We took only the default
(no date_from) coefficient for each entity — that's the value before any
scheduled change kicks in, and it matches the workbook coefficients where the
two are directly comparable.

Workbook → PLEXOS reconciliation (default coefficients):

Workbook term PLEXOS contents (default)
-0.2 * CNSW-NNSW line CNSW-NNSW at -0.2
0.7 * SNSW-CNSW line SNSW-CNSW at 0.7
-0.33 * CNSW Demand CNSW Node, Load Coefficient -0.33
-0.03213 * SNW Load SNW Node, Load Coefficient -0.03213
0.2 * Bayswater BW01-BW04 at 0.2
0.33 * Mt Piper MP1, MP2 at 0.33 (within the broader 0.33 group)
0.33 * CNSW Generators 77 entries at 0.33 — all CNSW existing/committed gen and storage, plus REZ-tagged new entrants (N0_, N3_, N9_, DN1_, DN3_*) and CNSW-area generic build options (CNSW Battery 1h/2h/4h/8h, CNSW Pumped Hydro 10h/24h/48h, CNSW V2G, CNSW Biomass, CNSW SAT/Battery DR, PV CNSW, etc.)
0.33 * Goulburn River Solar Farm Goulburn River Solar Farm + Goulburn River BESS at 0.33 (within the 0.33 group)
0.51 * SNSWGPGSO Inferred — 4 WOO entries at 0.51 (WOO OCGT Small/Large, WOO CCGT, WOO CCGT with CCS). The workbook label "SNSWGPGSO" suggests SNSW gas, but PLEXOS uses Wollongong-area gas (WOO_*) which is in CNSW sub-region. Either the workbook label is a misnomer or PLEXOS includes different entities than the label implies. Lowest-confidence mapping in this constraint.
0.51 * Tallawarra TALWA1, Tallawarra B at 0.51
0.66 * CNSWGPG CNSW OCGT Small/Large, CNSW CCGT, CNSW CCGT with CCS at 0.66

Notes:

  • The workbook treats Mt Piper, Goulburn River Solar Farm, and CNSW Generators as separate terms but they all share coefficient 0.33 in PLEXOS — they're conceptually "everything in CNSW area at 0.33". The split is workbook narrative only; PLEXOS treats them as one group.
  • Total PLEXOS entries (default-coefficient): 95 LHS rows.
  • Time-varying coefficients in PLEXOS (e.g. Bayswater drops from 0.2 → 0.13 over time): not represented. Worth flagging for any downstream year-aware constraint logic.

WNV1

Workbook terms: -0.81 * WNV-SNSW, 0.73 * Murray, 0.95 * Eildon,
0.81 * West Kiewa, 0.81 * McKay, 0.81 * Bogong, 0.81 * Dartmouth,
0.78 * V7.

PLEXOS reconciliation (default coefficients):

Workbook term PLEXOS contents
-0.81 * WNV-SNSW line VIC1-NSW1 at -0.81 (regional duplicate; renamed to WNV-SNSW)
0.73 * Murray MURRAY01-MURRAY14 (14 units) at 0.73
0.95 * Eildon EILDON1, EILDON2 at 0.95
0.81 * West Kiewa + 0.81 * McKay + 0.81 * Bogong + 0.81 * Dartmouth 13 units at 0.81 (WKIEWA1_1, WKIEWA1_2, WKIEWA2_1, WKIEWA2_2, MCKAY11-MCKAY16, BOGONG1, BOGONG2, DARTM1) — workbook splits into 4 named hydro stations, PLEXOS treats them as one 0.81 group
0.78 * V7 20 entries at 0.78 — V7 sub-rez new entrants (V7_*_Central North VIC, V7 Battery 2h/8h) plus named V7-area gens (MOKOSF1, NUMURSF1, GLRWNSF1, WINTSF1, GLENSF1, GIRGSF, WUNUSF1, Goorambat East SF, Lancaster SF, Barnawartha SF + BESS, Pine Lodge BESS, West Mokoan SF + BESS)

Excluded: 3 PLEXOS Purchaser entries at -0.78 (V7-to-WNV electrolyser
load — V7 to WNV Flexible Electrolyser Purchaser Domestic, V7 to WNV Flexible Electrolyser Purchaser Green Commodities, V7 in WNV Baseload for Electrolyser). Same reason as the hydrogen constraints — ISPyPSA does not
currently model hydrogen electrolyser load.

Total: 50 LHS rows.

SWNSW1

Workbook terms: 9 SW NSW area generators + 4 Broken Hill area generators
(secondary transmission limit), all at coefficient 1.

PLEXOS matches the workbook exactly — 14 entries at coefficient 1, all
existing/committed gens and BESS in the SW NSW + Broken Hill areas
(LIMOSF11, LIMOSF21, SUNRSF1, COLEASF1, FINLYSF1, DARLSF1, HILLSTN1,
DPNTB1, RESS1G, RIVNB2, BROKENH1, BHBG1, STWF1, Silver City Energy Storage).

No discrepancies. 14 LHS rows.

Hydrogen constraints (N9_Hydrogen, Q7_Hydrogen, Q1_Hydrogen, Q4_Hydrogen)

Excluded entirely from the templated tables (constraints, rhs, and lhs).

Reason: ISPyPSA does not currently model hydrogen electrolyser load. PLEXOS
formulates these constraints with negative-coefficient Purchaser-class
electrolyser-load terms that would need a new term type and matching
downstream support to represent faithfully. Worth revisiting if/when
hydrogen demand is added to the model.

SWQLD1

PLEXOS adds:

  • KINGASF1 (Kingaroy SF, WD area, coef 0.14) — not in workbook narrative
  • Hopeland Solar Farm (DD area, coef 0.43) — not in workbook narrative
  • Punch's Creek Renewable Energy Solar Farm (SD area, coef 1) — not in narrative
  • Q8 Battery - 2h/4h/8h (coef 0.43) — workbook-defined REZ Q8 batteries,
    added at the DD area coefficient
  • SWQLD1 Battery - 2h/8h → mapped to SQ Battery - 2h/4h/8h (coef 1)
  • NSW1-QLD1 line — regional duplicate of NSW-QLD, ignored

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions