New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
enable usage of Highs solver #766
Conversation
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Definitely deserves a changelog entry. Maybe even a blog post on flexmeasures.io with these findings above? Of course, a larger problem would be great, but do we have one available, e.g. in simulations? We can also wait for the next project which has one. |
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Does it make sense to ship FM with both solvers installed? (Not sure about their sizes.) Or should this become an installation choice at some point? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice @victorgarcia98, thank you for checking this solver out!
("HiGHS" is the official typography it seems.)
[Columbo] Just one more thing: did you run our test suite against HiGHS? |
Good point, thanks for reminding me to run the test suit. The test
I tried to do A temporal (and dirty) workaround would be to wrap the solve step in a try ... catch block, return Given the status of the implementation and proven there's no apparent speed up (results above), I would consider disregarding the inclusion of this PR into FM. |
I retract from this as the benchmark that @Flix6x run show very interesting results, we should probably pursue using HiGHS. |
Just created an issue in the PYOMO repo to ask for help. |
…eError Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like where this is going :)
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just a few textual changes
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: Victor Garcia Reolid <victor@seita.nl>
Signed-off-by: F.N. Claessen <felix@seita.nl>
Description
This PR adds the possibility to use the solver Highs in FlexMeasures. To do so, you need to set the configuration variable
FLEXMEASURES_LP_SOLVER
toappsi_highs
.In addition, I've run a benchmark to compare Highs agains our current solver by default,
CBC
. The benchmark is running the following command 10 times:The benchmark uses the data from the Toy Tutorial Part II, repeating the pattern for the duration of the tests (12D).
Results
Profile of computing a schedule with Highs (duration=12D)
Profile of computing a schedule with CBC (duration=12D)
Comment
Although the performance is worse in practice, Highs is being used in other projects (without Pyomo) providing interesting improvements:
Moreover, looking at the profile reports, we can see that Pyomo is consuming most of the time building the problem using Highs as it's using a
LegacySolver
, which turns out to be pretty slow. The actual solving time is taking a small fraction of the total computation (10%).Further Improvements
Test with larger/more complex problems and wait for Pyomo to improve the creation of the model.
Related Items
#614