-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
An ability to get relative MIP GAP and expose linear solver callbacks API to the .Net #2608
Open
CADBIMDeveloper
wants to merge
10
commits into
google:main
Choose a base branch
from
CADBIMDeveloper:bimca/features/linear-callbacks-improvements
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
An ability to get relative MIP GAP and expose linear solver callbacks API to the .Net #2608
CADBIMDeveloper
wants to merge
10
commits into
google:main
from
CADBIMDeveloper:bimca/features/linear-callbacks-improvements
Conversation
This file contains 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.
Hi!
I added an ability to get relative MIP GAP in the linear solver callback. It is nice to show (1 - relative MIP GAP)*100 to the user as "percentage". He sees that something is happening. So I added MPCallbackContext::GetRelativeMipGap method.
It is also a good opportunity to offer user to select a feasible solution if calculation takes a lot of time. When I played with SCIP solver I noticed, that RunCallback method is invoked several times with the same kMip event, but on some calls the solution either didn't have any variables or the variable values where obviously incorrect. So I introduced MPCallbackContext::HasValidMipSolution method. One another thing was that RunCallback method was invoked several times with the same solution, so I wanted to check if this solution has already been exposed to the caller code. MPCallbackContext::IsNewSolution does this trick.
I also partially expose callbacks API to the .Net world. Now it is read-only and doesn't support adding cuts, constraints or suggesting a solution.
These changes solve my issue #2603
These changes are only for SCIP solver, sorry, my C++ skills are not so good (I took a look at gurobi solver interface and it looks as magic for me :-)) and I don't have Gurobi license to perform tests.