The network expansion templater currently drops two REZ augmentation constraint groups because
their only listed options carry non-numeric capacity values in the IASR workbook (v7.5).
Affected groups
| expansion_id |
Option capacity (forward / reverse) |
SEVIC1 |
"Removes limit" / "" (or similar) |
SWNSW1 |
"Removes limit" / "Non-network augmentation" |
What happens now
_drop_options_with_no_capacity in src/ispypsa/templater/network_expansion.py removes options
whose forward and reverse capacity are both non-numeric. It logs one INFO line per dropped
option.
- Because every option for these two groups is non-numeric, the groups vanish from the options
stream entirely.
- Their cost trajectories remain in the costs stream but are now orphaned (no option to attach to).
_align_option_names_to_options then logs a WARNING and drops those orphaned cost rows.
Modelling consequence
SEVIC1 and SWNSW1 appear in constraints_rhs and would normally gain a translator-side dummy
relaxation generator built from an entry in network_transmission_path_expansion_costs. With no
entry emitted, these two custom constraints cannot be relaxed at a cost in the optimiser —
they become hard caps.
What we think is actually needed
AEMO's "Removes limit" wording implies the option is an all-or-nothing switch — activating it
pays a fixed annualised cost and fully removes the constraint, with no partial-expansion MW to
scale. That's a binary decision variable (option taken or not taken), not a continuous
capacity expansion, and it isn't something the translator currently supports. Implementing this
would require:
- Extending the templater schema to represent non-numeric / binary expansion options without
dropping them.
- Extending the translator to build a binary relaxation formulation (fixed annualised cost × {0, 1}
decision variable) for these rows, rather than the continuous dummy-generator approach used for
numeric constraint-group expansions.
We haven't designed either piece yet. Until then, SEVIC1 and SWNSW1 remain hard caps in the
model.
References
src/ispypsa/templater/network_expansion.py — _drop_options_with_no_capacity,
_align_option_names_to_options
- Open-ISP/project-planning#4 — templater
restructuring plan (skip+log policy, constraint-group ID handling)
The network expansion templater currently drops two REZ augmentation constraint groups because
their only listed options carry non-numeric capacity values in the IASR workbook (v7.5).
Affected groups
SEVIC1"Removes limit"/""(or similar)SWNSW1"Removes limit"/"Non-network augmentation"What happens now
_drop_options_with_no_capacityinsrc/ispypsa/templater/network_expansion.pyremoves optionswhose forward and reverse capacity are both non-numeric. It logs one
INFOline per droppedoption.
stream entirely.
_align_option_names_to_optionsthen logs aWARNINGand drops those orphaned cost rows.Modelling consequence
SEVIC1andSWNSW1appear inconstraints_rhsand would normally gain a translator-side dummyrelaxation generator built from an entry in
network_transmission_path_expansion_costs. With noentry emitted, these two custom constraints cannot be relaxed at a cost in the optimiser —
they become hard caps.
What we think is actually needed
AEMO's
"Removes limit"wording implies the option is an all-or-nothing switch — activating itpays a fixed annualised cost and fully removes the constraint, with no partial-expansion MW to
scale. That's a binary decision variable (option taken or not taken), not a continuous
capacity expansion, and it isn't something the translator currently supports. Implementing this
would require:
dropping them.
decision variable) for these rows, rather than the continuous dummy-generator approach used for
numeric constraint-group expansions.
We haven't designed either piece yet. Until then,
SEVIC1andSWNSW1remain hard caps in themodel.
References
src/ispypsa/templater/network_expansion.py—_drop_options_with_no_capacity,_align_option_names_to_optionsrestructuring plan (skip+log policy, constraint-group ID handling)