Description
Enable soft budget constraints that penalize (not forbid) investments exceeding a threshold.
Current Behavior
- Revoletion accepts
investmentmax per scenario as a hard cap
- Investments cannot exceed this value
Proposed Behavior
- User provides optional
investment_soft_cap and soft_cap_penalty in config
- Investments above soft cap incur penalty in objective:
penalty * (investment - soft_cap)
- Hard cap (
investmentmax) remains enforced by Revoletion
Implementation Notes
- Add to objective function:
soft_cap_penalty * max(0, total_investment - soft_cap)
- Requires auxiliary variable + constraint to linearize the max(0, x) term
- Penalty is cost per unit of overage (e.g., €/MW or €/€ invested)
Open Questions
- Soft cap per-technology, per-stage, or total?
- Linear penalty or quadratic (increasing marginal penalty)?
- Should penalty be stage-dependent (harder to exceed in later stages)?
Description
Enable soft budget constraints that penalize (not forbid) investments exceeding a threshold.
Current Behavior
investmentmaxper scenario as a hard capProposed Behavior
investment_soft_capandsoft_cap_penaltyin configpenalty * (investment - soft_cap)investmentmax) remains enforced by RevoletionImplementation Notes
soft_cap_penalty * max(0, total_investment - soft_cap)Open Questions