PyPSA / linopy

Linear optimization with N-D labeled arrays in Python
https://linopy.readthedocs.io
MIT License
153 stars 40 forks source link

Improve run_gurobi to wait for available token #281

Open tgi-climact opened 2 months ago

tgi-climact commented 2 months ago

When using a Gurobi floating token server license or a web single-use license, a program that calls Gurobi Optimizer must obtain a token from a Gurobi token server before it can solve an optimization model. When no token is available, an exception gurobipy.GurobiError is raised (source : https://support.gurobi.com/hc/en-us/articles/360029879251-How-do-I-check-the-availability-of-floating-license-tokens).

To avoid Gurobi Optimizer throwing an error, I suggest to optionally wait for an available token. This is the purpose of this PR. The waiting time (in seconds) can be configured in the solver options.

Side note : This enables scenarios in PyPSA-Eur.

codecov[bot] commented 2 months ago

Codecov Report

Attention: Patch coverage is 20.00000% with 12 lines in your changes are missing coverage. Please review.

Project coverage is 86.40%. Comparing base (a6f2c3e) to head (59e1aa1).

Files Patch % Lines
linopy/solvers.py 20.00% 10 Missing and 2 partials :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #281 +/- ## ========================================== - Coverage 89.71% 86.40% -3.31% ========================================== Files 16 16 Lines 4024 4024 Branches 941 943 +2 ========================================== - Hits 3610 3477 -133 - Misses 281 421 +140 + Partials 133 126 -7 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

FabianHofmann commented 2 months ago

thanks @tgi-climact, perhaps 60 secs is a bit long?

tgi-climact commented 2 months ago

thanks @tgi-climact, perhaps 60 secs is a bit long?

Depending on the optimisation in progress, it could be very long or very short. I would like to avoid spam on the Gurobi servers. What would be your suggestion?

FabianHofmann commented 2 months ago

Depending on the optimisation in progress, it could be very long or very short. I would like to avoid spam on the Gurobi servers. What would be your suggestion?

okay I see, then the 60 secs make sense I guess.