Skip to content

Rolling horizons not immediately releasing Gurobi license after each window finishes solving #755

Description

@measrainsey

Version Checks

  • This bug exists on the latest release of Open-TYNDP.
  • This bug exists on the current master branch of Open-TYNDP.
  • This bug does NOT exist in the upstream master branch of PyPSA-Eur (therefore, the bug is likely Open-TYNDP specific).

Affected Component/Workflow

  • I have labeled this bug report with the affected component(s) using GitHub labels (e.g., SB, CBA, documentation, etc.).

Change Classification

Standard

Security & Data Risk Check

  • This bug touches or exposes confidential data.
  • This bug adds or changes external data sources, download URLs, APIs, services, credentials, or tokens.
  • This bug could affect data integrity or reproducibility of published results.

Risk Level of Fix

N/A

Bug Description

There's an issue where if using Gurobi in the CBA workflow as the solver of choice for the rolling horizon solves, after one rolling horizon is done, the Gurobi license is not immediately released in the environment. After the first rolling horizon is successfully done solving, a new rolling horizon (either for the same project or, if running multiple projects, another project's rolling horizon) would try to access the same license. This is not allowed (at least not on the same node), so then the solve fails.

Actual Behavior

This is the logger from a single project's solve:

[Fri Jun 19 12:20:33 2026]
localrule solve_cba_network:
    input: resources/tyndp/NT/cba/networks/project_t4_2030.nc
    output: results/tyndp/NT/cba/networks/project_t4_2030.nc
    log: results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log, results/tyndp/NT/logs/cba/projects/project_t4_2030_memory.log, results/tyndp/NT/logs/cba/projects/project_t4_2030_python.log
    jobid: 0
    reason: Forced execution
    wildcards: run=NT, cba_project=t4, planning_horizons=2030
    resources: mem_mb=40000, mem_mib=38147, disk_mb=8000, disk_mib=7630, tmpdir=/scratch/local, runtime=60, partition=big
getfattr: Removing leading '/' from absolute path names
INFO:pypsa.network.io:New version 1.2.3 available! (Current: 1.2.1)
INFO:pypsa.network.io:Imported network 'PyPSA-Eur (tyndp)' has buses, carriers, generators, global_constraints, links, loads, shapes, storage_units, stores, sub_networks
INFO:scripts.solve_network:Add load shedding for all carriers.
WARNING:pypsa.network.io:The following generators are already defined and will be skipped (use overwrite=True to overwrite): AL H2 load shedding, AT H2 load shedding, BA H2 load shedding, BE H2 load shedding, BG H2 load shedding, CH H2 load shedding, CY H2 load shedding, CZ H2 load shedding, DE H2 load shedding, DK H2 load shedding, EE H2 load shedding, ES H2 load shedding, FI H2 load shedding, FR H2 load shedding, GB H2 load shedding, GR H2 load shedding, HR H2 load shedding, HU H2 load shedding, IE H2 load shedding, IT H2 load shedding, LT H2 load shedding, LU H2 load shedding, LV H2 load shedding, ME H2 load shedding, MK H2 load shedding, MT H2 load shedding, NL H2 load shedding, NO H2 load shedding, PL H2 load shedding, PT H2 load shedding, RO H2 load shedding, RS H2 load shedding, SE H2 load shedding, SI H2 load shedding, SK H2 load shedding, IBIT H2 load shedding, IBFI H2 load shedding
WARNING:pypsa.network.io:The following generators are already defined and will be skipped (use overwrite=True to overwrite): AL00 load shedding, AT00 load shedding, BA00 load shedding, BE00 load shedding, BG00 load shedding, CH00 load shedding, CY00 load shedding, CZ00 load shedding, DE00 load shedding, DKE1 load shedding, DKW1 load shedding, EE00 load shedding, ES00 load shedding, FI00 load shedding, FR00 load shedding, FR15 load shedding, GB00 load shedding, GBNI load shedding, GR00 load shedding, GR03 load shedding, HR00 load shedding, HU00 load shedding, IE00 load shedding, ITCA load shedding, ITCN load shedding, ITCS load shedding, ITN1 load shedding, ITS1 load shedding, ITSA load shedding, ITSI load shedding, LT00 load shedding, LUB1 load shedding, LUF1 load shedding, LUG1 load shedding, LUV1 load shedding, LV00 load shedding, ME00 load shedding, MK00 load shedding, MT00 load shedding, NL00 load shedding, NOM1 load shedding, NON1 load shedding, NOS0 load shedding, PL00 load shedding, PT00 load shedding, RO00 load shedding, RS00 load shedding, SE01 load shedding, SE02 load shedding, SE03 load shedding, SE04 load shedding, SI00 load shedding, SK00 load shedding, ITCO load shedding, ITVI load shedding
WARNING:scripts.add_electricity:tech_colors for carriers ['none'] not defined in config.

  0%|          | 0/53 [00:00<?, ?it/s]INFO:__main__:Optimizing network for snapshot horizon [2009-01-01 00:00:00:2009-01-07 23:00:00] (1/53).
/scratch/htc-panfs/mmeng/open-tyndp/.pixi/envs/open-tyndp/lib/python3.12/site-packages/pypsa/optimization/optimize.py:566: FutureWarning: Passing an int for `transmission_losses` is deprecated and will be removed in PyPSA 2.0. Explicitly pass {'mode': 'tangents', 'segments': 2} (current behavior) or use the new secant-based losses via `transmission_losses=True`.
  m = n.optimize.create_model(
INFO:linopy.model: Solve problem using Gurobi solver
INFO:linopy.model:Solver logs written to `results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log`.
INFO:linopy.model:Solver options:
 - threads: 32
 - method: 1
 - NodeMethod: 1
 - Seed: 123
 - AggFill: 0
 - PreDual: 0
 - FeasibilityTol: 1e-06
 - OptimalityTol: 1e-06
 - ScaleFlag: -1
Set parameter WLSAccessID
Set parameter WLSSecret
Set parameter LicenseID to value 2464355
WLS license 2464355 - registered to Open Energy Transition GmbH
Warning for adding constraints: zero or small (< 1e-13) coefficients, ignored
Set parameter Threads to value 32
Set parameter Method to value 1
Set parameter NodeMethod to value 1
Set parameter Seed to value 123
Set parameter AggFill to value 0
Set parameter PreDual to value 0
Set parameter FeasibilityTol to value 1e-06
Set parameter OptimalityTol to value 1e-06
Set parameter ScaleFlag to value -1
Set parameter LogFile to value "/scratch/htc-panfs/mmeng/open-tyndp/results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log"
Gurobi Optimizer version 13.0.2 build v13.0.2rc1 (linux64 - "Debian GNU/Linux 13 (trixie)")

CPU model: AMD EPYC 7542 32-Core Processor, instruction set [SSE2|AVX|AVX2]
Thread count: 64 physical cores, 128 logical processors, using up to 8 threads

Non-default parameters:
Method  1
NodeMethod  1
AggFill  0
PreDual  0
Seed  123
Threads  32

WLS license 2464355 - registered to Open Energy Transition GmbH
Optimize a model with 783062 rows, 397320 columns and 1391514 nonzeros (Min)
Model fingerprint: 0xc7fce7a4
Model has 360528 linear objective coefficients
Coefficient statistics:
  Matrix range     [1e-02, 1e+00]
  Objective range  [9e-03, 1e+05]
  Bounds range     [3e+00, 2e+03]
  RHS range        [1e-02, 2e+09]
Warning: Model contains large rhs
         Consider reformulating model or setting NumericFocus parameter
         to avoid numerical issues.

Presolve time: 0.80s
Presolved: 30773 rows, 227643 columns, 383073 nonzeros

Iteration    Objective       Primal Inf.    Dual Inf.      Time
       0    6.5506517e+09   2.839106e+07   0.000000e+00      1s

Extra simplex iterations after uncrush: 168
   55807    1.2026253e+10   0.000000e+00   0.000000e+00      3s

Solved in 55807 iterations and 3.11 seconds (3.13 work units)
Optimal objective  1.202625323e+10
Warning: environment still referenced so free is deferred (Continue to use WLS)
INFO:linopy.constants: Optimization successful: 
Status: ok
Termination condition: optimal
Solution: 397320 primals, 783062 duals
Objective: 1.20e+10
Solver model: available
Solver message: 2


  2%|| 1/53 [00:29<25:09, 29.04s/it]INFO:__main__:Optimizing network for snapshot horizon [2009-01-07 23:00:00:2009-01-14 22:00:00] (2/53).
WARNING:pypsa.optimization.constraints:Stores ['AT00 battery', 'BE00 battery', 'BG00 battery', 'DE00 battery', 'DKW1 battery', 'ES00 battery', 'GB00 battery', 'GBNI battery', 'GR00 battery', 'HU00 battery', 'ITCA battery', 'ITN1 battery', 'ITSA battery', 'ITSI battery', 'LT00 battery', 'LUG1 battery', 'LV00 battery', 'NL00 battery', 'RO00 battery', 'SE01 battery', 'SE02 battery', 'SE03 battery', 'SE04 battery', 'SK00 battery']: Cyclic energy level constraint overrules initial value setting. User-defined e_initial will be ignored.
/scratch/htc-panfs/mmeng/open-tyndp/.pixi/envs/open-tyndp/lib/python3.12/site-packages/pypsa/optimization/optimize.py:566: FutureWarning: Passing an int for `transmission_losses` is deprecated and will be removed in PyPSA 2.0. Explicitly pass {'mode': 'tangents', 'segments': 2} (current behavior) or use the new secant-based losses via `transmission_losses=True`.
  m = n.optimize.create_model(
INFO:linopy.model: Solve problem using Gurobi solver
INFO:linopy.model:Solver logs written to `results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log`.
INFO:linopy.model:Solver options:
 - threads: 32
 - method: 1
 - NodeMethod: 1
 - Seed: 123
 - AggFill: 0
 - PreDual: 0
 - FeasibilityTol: 1e-06
 - OptimalityTol: 1e-06
 - ScaleFlag: -1
Set parameter WLSAccessID
Set parameter WLSSecret
Set parameter LicenseID to value 2464355
WLS license 2464355 - registered to Open Energy Transition GmbH

  2%|| 1/53 [00:33<28:46, 33.20s/it]
ERROR:root:Uncaught exception
Traceback (most recent call last):
  File "/scratch/htc-panfs/mmeng/open-tyndp/.snakemake/scripts/tmpna845r9j.solve_cba_network.py", line 340, in <module>
    solve_network(
  File "/scratch/htc-panfs/mmeng/open-tyndp/.snakemake/scripts/tmpna845r9j.solve_cba_network.py", line 281, in solve_network
    status, condition = optimize_with_rolling_horizon(n, **all_kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/scratch/htc-panfs/mmeng/open-tyndp/.snakemake/scripts/tmpna845r9j.solve_cba_network.py", line 182, in optimize_with_rolling_horizon
    status, condition = n.optimize(sns, **kwargs)  # type: ignore
                        ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/scratch/htc-panfs/mmeng/open-tyndp/.pixi/envs/open-tyndp/lib/python3.12/site-packages/pypsa/optimization/optimize.py", line 581, in __call__
    status, condition = m.solve(
                        ^^^^^^^^
  File "/scratch/htc-panfs/mmeng/open-tyndp/.pixi/envs/open-tyndp/lib/python3.12/site-packages/linopy/model.py", line 1403, in solve
    result = solver.solve_problem_from_model(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/scratch/htc-panfs/mmeng/open-tyndp/.pixi/envs/open-tyndp/lib/python3.12/site-packages/linopy/solvers.py", line 1088, in solve_problem_from_model
    env_ = stack.enter_context(gurobipy.Env())
                               ^^^^^^^^^^^^^^
  File "src/gurobipy/env.pxi", line 112, in gurobipy._core.Env.__init__
gurobipy._exception.GurobiError: Single-use license. Another Gurobi process with pid 4064723 running.
RuleException:
CalledProcessError in file "/scratch/htc-panfs/mmeng/open-tyndp/rules/cba.smk", line 427:
Command 'set -euo pipefail;  /scratch/htc-panfs/mmeng/open-tyndp/.pixi/envs/open-tyndp/bin/python3.12 /scratch/htc-panfs/mmeng/open-tyndp/.snakemake/scripts/tmpna845r9j.solve_cba_network.py' returned non-zero exit status 1.
[Fri Jun 19 12:21:18 2026]
Error in rule solve_cba_network:
    message: None
    jobid: 0
    input: resources/tyndp/NT/cba/networks/project_t4_2030.nc
    output: results/tyndp/NT/cba/networks/project_t4_2030.nc
    log: results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log, results/tyndp/NT/logs/cba/projects/project_t4_2030_memory.log, results/tyndp/NT/logs/cba/projects/project_t4_2030_python.log (check log file(s) for error details)
Shutting down, this might take some time.
Exiting because a job execution failed. Look below for error messages
[Fri Jun 19 12:21:18 2026]
Error in rule solve_cba_network:
    message: None
    jobid: 0
    input: resources/tyndp/NT/cba/networks/project_t4_2030.nc
    output: results/tyndp/NT/cba/networks/project_t4_2030.nc
    log: results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log, results/tyndp/NT/logs/cba/projects/project_t4_2030_memory.log, results/tyndp/NT/logs/cba/projects/project_t4_2030_python.log (check log file(s) for error details)
Storing output in storage.
WorkflowError:
At least one job did not complete successfully.

Expected Behavior

Instead, the logger should look something more like this:

[Fri Jun 19 12:28:59 2026]
localrule solve_cba_network:
    input: resources/tyndp/NT/cba/networks/project_t4_2030.nc
    output: results/tyndp/NT/cba/networks/project_t4_2030.nc
    log: results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log, results/tyndp/NT/logs/cba/projects/project_t4_2030_memory.log, results/tyndp/NT/logs/cba/projects/project_t4_2030_python.log
    jobid: 0
    reason: Forced execution
    wildcards: run=NT, cba_project=t4, planning_horizons=2030
    resources: mem_mb=80000, mem_mib=76294, disk_mb=8000, disk_mib=7630, tmpdir=/scratch/local, runtime=180, partition=big
getfattr: Removing leading '/' from absolute path names
INFO:pypsa.network.io:New version 1.2.3 available! (Current: 1.2.1)
INFO:pypsa.network.io:Imported network 'PyPSA-Eur (tyndp)' has buses, carriers, generators, global_constraints, links, loads, shapes, storage_units, stores, sub_networks
INFO:scripts.solve_network:Add load shedding for all carriers.
WARNING:pypsa.network.io:The following generators are already defined and will be skipped (use overwrite=True to overwrite): AL H2 load shedding, AT H2 load shedding, BA H2 load shedding, BE H2 load shedding, BG H2 load shedding, CH H2 load shedding, CY H2 load shedding, CZ H2 load shedding, DE H2 load shedding, DK H2 load shedding, EE H2 load shedding, ES H2 load shedding, FI H2 load shedding, FR H2 load shedding, GB H2 load shedding, GR H2 load shedding, HR H2 load shedding, HU H2 load shedding, IE H2 load shedding, IT H2 load shedding, LT H2 load shedding, LU H2 load shedding, LV H2 load shedding, ME H2 load shedding, MK H2 load shedding, MT H2 load shedding, NL H2 load shedding, NO H2 load shedding, PL H2 load shedding, PT H2 load shedding, RO H2 load shedding, RS H2 load shedding, SE H2 load shedding, SI H2 load shedding, SK H2 load shedding, IBIT H2 load shedding, IBFI H2 load shedding
WARNING:pypsa.network.io:The following generators are already defined and will be skipped (use overwrite=True to overwrite): AL00 load shedding, AT00 load shedding, BA00 load shedding, BE00 load shedding, BG00 load shedding, CH00 load shedding, CY00 load shedding, CZ00 load shedding, DE00 load shedding, DKE1 load shedding, DKW1 load shedding, EE00 load shedding, ES00 load shedding, FI00 load shedding, FR00 load shedding, FR15 load shedding, GB00 load shedding, GBNI load shedding, GR00 load shedding, GR03 load shedding, HR00 load shedding, HU00 load shedding, IE00 load shedding, ITCA load shedding, ITCN load shedding, ITCS load shedding, ITN1 load shedding, ITS1 load shedding, ITSA load shedding, ITSI load shedding, LT00 load shedding, LUB1 load shedding, LUF1 load shedding, LUG1 load shedding, LUV1 load shedding, LV00 load shedding, ME00 load shedding, MK00 load shedding, MT00 load shedding, NL00 load shedding, NOM1 load shedding, NON1 load shedding, NOS0 load shedding, PL00 load shedding, PT00 load shedding, RO00 load shedding, RS00 load shedding, SE01 load shedding, SE02 load shedding, SE03 load shedding, SE04 load shedding, SI00 load shedding, SK00 load shedding, ITCO load shedding, ITVI load shedding
WARNING:scripts.add_electricity:tech_colors for carriers ['none'] not defined in config.

  0%|          | 0/53 [00:00<?, ?it/s]INFO:__main__:Optimizing network for snapshot horizon [2009-01-01 00:00:00:2009-01-07 23:00:00] (1/53).
/scratch/htc-panfs/mmeng/open-tyndp/.pixi/envs/open-tyndp/lib/python3.12/site-packages/pypsa/optimization/optimize.py:566: FutureWarning: Passing an int for `transmission_losses` is deprecated and will be removed in PyPSA 2.0. Explicitly pass {'mode': 'tangents', 'segments': 2} (current behavior) or use the new secant-based losses via `transmission_losses=True`.
  m = n.optimize.create_model(
INFO:linopy.model: Solve problem using Gurobi solver
INFO:linopy.model:Solver logs written to `results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log`.
INFO:linopy.model:Solver options:
 - threads: 32
 - method: 1
 - NodeMethod: 1
 - Seed: 123
 - AggFill: 0
 - PreDual: 0
 - FeasibilityTol: 1e-06
 - OptimalityTol: 1e-06
 - ScaleFlag: -1
Set parameter WLSAccessID
Set parameter WLSSecret
Set parameter LicenseID to value 2464355
WLS license 2464355 - registered to Open Energy Transition GmbH
Warning for adding constraints: zero or small (< 1e-13) coefficients, ignored
Set parameter Threads to value 32
Set parameter Method to value 1
Set parameter NodeMethod to value 1
Set parameter Seed to value 123
Set parameter AggFill to value 0
Set parameter PreDual to value 0
Set parameter FeasibilityTol to value 1e-06
Set parameter OptimalityTol to value 1e-06
Set parameter ScaleFlag to value -1
Set parameter LogFile to value "/scratch/htc-panfs/mmeng/open-tyndp/results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log"
Gurobi Optimizer version 13.0.2 build v13.0.2rc1 (linux64 - "Debian GNU/Linux 13 (trixie)")

CPU model: Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz, instruction set [SSE2|AVX|AVX2|AVX512]
Thread count: 64 physical cores, 128 logical processors, using up to 8 threads

Non-default parameters:
Method  1
NodeMethod  1
AggFill  0
PreDual  0
Seed  123
Threads  32

WLS license 2464355 - registered to Open Energy Transition GmbH
Optimize a model with 783062 rows, 397320 columns and 1391514 nonzeros (Min)
Model fingerprint: 0xc7fce7a4
Model has 360528 linear objective coefficients
Coefficient statistics:
  Matrix range     [1e-02, 1e+00]
  Objective range  [9e-03, 1e+05]
  Bounds range     [3e+00, 2e+03]
  RHS range        [1e-02, 2e+09]
Warning: Model contains large rhs
         Consider reformulating model or setting NumericFocus parameter
         to avoid numerical issues.

Presolve time: 2.39s
Presolved: 30773 rows, 227643 columns, 383073 nonzeros

Iteration    Objective       Primal Inf.    Dual Inf.      Time
       0    6.5506517e+09   2.839106e+07   0.000000e+00      3s
   25844    1.1135405e+10   2.085439e+07   0.000000e+00      5s

Extra simplex iterations after uncrush: 168
   55807    1.2026253e+10   0.000000e+00   0.000000e+00     10s

Solved in 55807 iterations and 9.80 seconds (3.13 work units)
Optimal objective  1.202625323e+10
Warning: environment still referenced so free is deferred (Continue to use WLS)
INFO:linopy.constants: Optimization successful: 
Status: ok
Termination condition: optimal
Solution: 397320 primals, 783062 duals
Objective: 1.20e+10
Solver model: available
Solver message: 2


  2%|▏         | 1/53 [01:43<1:29:38, 103.42s/it]INFO:__main__:Optimizing network for snapshot horizon [2009-01-07 23:00:00:2009-01-14 22:00:00] (2/53).
WARNING:pypsa.optimization.constraints:Stores ['AT00 battery', 'BE00 battery', 'BG00 battery', 'DE00 battery', 'DKW1 battery', 'ES00 battery', 'GB00 battery', 'GBNI battery', 'GR00 battery', 'HU00 battery', 'ITCA battery', 'ITN1 battery', 'ITSA battery', 'ITSI battery', 'LT00 battery', 'LUG1 battery', 'LV00 battery', 'NL00 battery', 'RO00 battery', 'SE01 battery', 'SE02 battery', 'SE03 battery', 'SE04 battery', 'SK00 battery']: Cyclic energy level constraint overrules initial value setting. User-defined e_initial will be ignored.
/scratch/htc-panfs/mmeng/open-tyndp/.pixi/envs/open-tyndp/lib/python3.12/site-packages/pypsa/optimization/optimize.py:566: FutureWarning: Passing an int for `transmission_losses` is deprecated and will be removed in PyPSA 2.0. Explicitly pass {'mode': 'tangents', 'segments': 2} (current behavior) or use the new secant-based losses via `transmission_losses=True`.
  m = n.optimize.create_model(
INFO:linopy.model: Solve problem using Gurobi solver
INFO:linopy.model:Solver logs written to `results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log`.
INFO:linopy.model:Solver options:
 - threads: 32
 - method: 1
 - NodeMethod: 1
 - Seed: 123
 - AggFill: 0
 - PreDual: 0
 - FeasibilityTol: 1e-06
 - OptimalityTol: 1e-06
 - ScaleFlag: -1
Set parameter WLSAccessID
Set parameter WLSSecret
Set parameter LicenseID to value 2464355
WLS license 2464355 - registered to Open Energy Transition GmbH
Warning for adding constraints: zero or small (< 1e-13) coefficients, ignored
Set parameter Threads to value 32
Set parameter Method to value 1
Set parameter NodeMethod to value 1
Set parameter Seed to value 123
Set parameter AggFill to value 0
Set parameter PreDual to value 0
Set parameter FeasibilityTol to value 1e-06
Set parameter OptimalityTol to value 1e-06
Set parameter ScaleFlag to value -1
Set parameter LogFile to value "/scratch/htc-panfs/mmeng/open-tyndp/results/tyndp/NT/logs/cba/projects/project_t4_2030_solver.log"
Gurobi Optimizer version 13.0.2 build v13.0.2rc1 (linux64 - "Debian GNU/Linux 13 (trixie)")

CPU model: Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz, instruction set [SSE2|AVX|AVX2|AVX512]
Thread count: 64 physical cores, 128 logical processors, using up to 8 threads

Non-default parameters:
Method  1
NodeMethod  1
AggFill  0
PreDual  0
Seed  123
Threads  32

WLS license 2464355 - registered to Open Energy Transition GmbH
Optimize a model with 783098 rows, 397320 columns and 1391514 nonzeros (Min)
Model fingerprint: 0xd9598b46
Model has 360528 linear objective coefficients
Coefficient statistics:
  Matrix range     [1e-02, 1e+00]
  Objective range  [9e-03, 1e+05]
  Bounds range     [2e+00, 7e+03]
  RHS range        [6e-03, 2e+09]
Warning: Model contains large rhs
         Consider reformulating model or setting NumericFocus parameter
         to avoid numerical issues.

Presolve time: 2.47s
Presolved: 31101 rows, 228336 columns, 384028 nonzeros

Iteration    Objective       Primal Inf.    Dual Inf.      Time
       0    6.3455365e+09   2.919759e+07   0.000000e+00      3s
   30689    1.1344649e+10   9.389194e+06   0.000000e+00      5s

Extra simplex iterations after uncrush: 203
   54152    1.1775352e+10   0.000000e+00   0.000000e+00      9s

Solved in 54152 iterations and 8.60 seconds (2.79 work units)
Optimal objective  1.177535153e+10
Warning: environment still referenced so free is deferred (Continue to use WLS)
INFO:linopy.constants: Optimization successful: 
Status: ok
Termination condition: optimal
Solution: 397320 primals, 783098 duals
Objective: 1.18e+10
Solver model: available
Solver message: 2

Steps to Reproduce

I think I generally run into this issue more on ZIB.

Make sure the config settings are set so that the CBA rolling horizon solves use Gurobi as the solver:

cba:
  solving:
    options:
      include_objective_constant: false
    partition: big
    mem_mb: 40000
    runtime: 2h

    solver:
      name: gurobi
      options: gurobi-simplex

    solver_options:
      gurobi-simplex:
        FeasibilityTol: 1.0e-06
        OptimalityTol: 1.0e-06

Other settings I generally use are running NT, for 1H resolution, on a single project to test (e.g., t4).

Then run something like snakemake --profile profiles/slurm -call cba --configfile config/config.tyndp.yaml config/config.zib.yaml.

Environment Information

No response

Metadata

Metadata

Assignees

Labels

CBACost Benefit Analysis

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions