Skip to content

Improve Recursive Dynamic Mode #1016

@Wegatriespython

Description

@Wegatriespython

What is this about?

The current implementation of recursive dynamic mode lacks a dedicated test to specify its intended behaviour relative to the default perfect-foresight implementation. The mode is implemented in message_ix/model/MESSAGE/model_solve.gms, while existing emission-bound coverage is in message_ix/tests/test_feature_bound_emission.py.

One key issue for mainline policy scenarios is the treatment of cumulative emission bounds. The cumulative constraint itself is defined in message_ix/model/MESSAGE/model_core.gms as EMISSION_CONSTRAINT. Since recursive dynamic mode has no explicit anticipation rule for periods outside the rolling window, a cumulative constraint can leave early periods under-constrained while later periods face the remaining budget more acutely.

Given that recursive dynamic mode is explicitly a move away from the strong assumption of perfect foresight, a Hotelling-based anticipation rule may not be in the spirit of this use case. However, it can also be argued that emission constraints are more anticipable than many other parameter trajectories.

It would be best not to implement anticipation logic, whether heuristic or rule-based, directly in the GAMS layer, where the choice is less transparent and harder to test. Ideally this logic would live behind an explicit Python-facing API, with selectable anticipation rules for cumulative emission bounds and related use cases.

Metadata

Metadata

Labels

discussDiscussion, design, and planninggamsRelated to the GAMS core formulation

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