Gurobi ILP solver for protocol selection#321
Open
rolph-recto wants to merge 12 commits intomasterfrom
Open
Conversation
Codecov Report
@@ Coverage Diff @@
## master #321 +/- ##
============================================
- Coverage 62.72% 62.70% -0.02%
Complexity 1255 1255
============================================
Files 245 245
Lines 9724 9731 +7
Branches 1449 1450 +1
============================================
+ Hits 6099 6102 +3
- Misses 3359 3362 +3
- Partials 266 267 +1
📣 Codecov can now indicate which changes are the most critical in Pull Requests. Learn more |
Member
|
The Optimus Scala library can apparently interface with Gurobi. Maybe we can use that library, or look into how they interface with Gurobi. |
* master: (147 commits) Bump log4j-core from 2.17.2 to 2.18.0 in /examples (#470) Bump log4j-slf4j-impl from 2.17.2 to 2.18.0 (#465) Bump log4j-core from 2.17.2 to 2.18.0 (#466) Bump log4j-slf4j-impl from 2.17.2 to 2.18.0 in /examples (#469) Bump mkdocs-material from 8.3.8 to 8.3.9 in /docs (#468) Simplify CommitmentDispatchCodeGenerator (#463) Contract changes draft (#460) Cleanup task dependencies in build (#461) Fix name of Main package in CLI (#458) Bump mkdocs-material from 8.3.6 to 8.3.8 in /docs (#457) Bump kotlinx-coroutines-core from 1.6.2 to 1.6.3 (#453) Bump kotlinx-coroutines-core from 1.6.2 to 1.6.3 in /examples (#455) Bump mkdocs-material from 8.3.4 to 8.3.6 in /docs (#456) Bump org.jetbrains.dokka from 1.6.21 to 1.7.0 (#454) Bump plugin.serialization from 1.6.21 to 1.7.0 (#447) Bump jvm from 1.6.21 to 1.7.0 in /examples (#451) Bump multiplatform from 1.6.21 to 1.7.0 (#446) Bump actions/setup-python from 3 to 4 (#444) Bump kotlinpoet from 1.11.0 to 1.12.0 (#445) Bump clikt from 3.4.2 to 3.5.0 (#443) ...
cacay
approved these changes
Jul 6, 2022
Member
cacay
left a comment
There was a problem hiding this comment.
I improved build integration and the logic for dynamically discovering if Gurobi exists.
Open
cacay
requested changes
Jul 9, 2022
Member
cacay
left a comment
There was a problem hiding this comment.
The Gurobi solver finds solutions to impossible problems. We need to fix that before merging.
Also, Gurobi prints a bunch of crap to stdout. That needs to be suppressed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds support for using Gurobi as a solver for protocol selection. Because Gurobi is not on a Maven repository, this change copies JAR files from a local Gurobi installation, whose directory is specified by the
GUROBI_HOMEenvironment variable.Because this creates a dependency on Gurobi being installed on the build machine, I wrote this PR so that it can the toggled on/off during compilation by the
gurobiSolverproperty for thecompilerGradle subproject. By default the Gurobi solver will not be compiled; to turn it on, change theproject.ext.set("gurobiSolver", "false")line oncompiler/build.gradle.ktsfile so thatfalseistrueinstead.In the
clisubproject, I added a command line option to change between thez3andgurobisolvers with--solver. Because the set of protocol selection solvers are not known until runtime, I use the Reflections library to get the set of solvers by reflection.