Skip to content

Reformulate network_all_tech test scenario to have a unique optimum #328

Description

@jkiviluo

The network_all_tech test scenario has a non-unique LP optimum, so its golden CSVs are not bit-portable across platforms and it fails cross-platform CI.

Symptom: on macOS (both 3.12 and 3.13), tests/test_scenarios.py::test_scenario[network_all_tech] fails on unit__outputNode__dt.csv, column ('dr_shift_demand', 'dr_storage') — e.g. 0.0 vs 30.18 at row 0. The objective is identical; HiGHS simply selects a different, equally-optimal vertex than the Linux-generated golden. The degeneracy comes from the demand-response shift (dr_shift_demand / dr_storage): the timing of shifted demand is free when it carries no cost, so many shift patterns are equally optimal.

Current state: the scenario is skipped via a new skip_reason field in tests/scenarios.yaml (see the network_all_tech entry). The skip_reason mechanism was added to tests/test_scenarios.py::_load_scenarios.

Proposed fix: reformulate the scenario so the optimum is unique, then remove the skip_reason to re-enable it. Options:

  • Add a tiny tie-breaking cost to the demand-response shift (a negligible other_operational_cost / storage-cost on dr_storage) so exactly one shift pattern is optimal.
  • Or pin the demand-response parameters so no genuine timing freedom exists in this scenario.

Acceptance: with the reformulation, test_scenario[network_all_tech] produces identical output on Linux, Windows, and macOS; drop the skip_reason and regenerate the golden.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions