Skip to content
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

Change heuristic callback status to UNKNOWN instead of REJECTED #495

Merged
merged 3 commits into from
Jan 2, 2023

Conversation

odow
Copy link
Member

@odow odow commented Jan 1, 2023

Closes #494

@votroto is this what you were after?

@votroto
Copy link

votroto commented Jan 1, 2023

Thanks! Well, possibly...
It's better, but as i understand it, when the "where" parameter is "MIPNODE", interpreting an infinite value as rejection is valid. However, since version 9.5 gurobi now allows users to provide heuristic solutions also during "MIP" and "MIPSOL". Users no longer have to hold onto solutions computed from a feasible solution during MIPSOL (or MIP) until the next MIPNODE comes around, gurobi now does it internally. This is why i belive it is reporting infinity (solution not found) in those cases too -- not because it was rejected, but because it was not even tried yet.

I have a question on their support forum asking for clarification and will report with the result.

@odow
Copy link
Member Author

odow commented Jan 1, 2023

Updated, with a test.

test/MOI/MOI_callbacks.jl Outdated Show resolved Hide resolved
@codecov
Copy link

codecov bot commented Jan 1, 2023

Codecov Report

Base: 89.55% // Head: 89.57% // Increases project coverage by +0.01% 🎉

Coverage data is based on head (1c80e23) compared to base (44101cc).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #495      +/-   ##
==========================================
+ Coverage   89.55%   89.57%   +0.01%     
==========================================
  Files           5        5              
  Lines        2375     2379       +4     
==========================================
+ Hits         2127     2131       +4     
  Misses        248      248              
Impacted Files Coverage Δ
src/MOI_wrapper/MOI_callbacks.jl 97.70% <100.00%> (+0.07%) ⬆️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@odow odow merged commit fc1999a into master Jan 2, 2023
@odow odow deleted the od/cb-heuristic branch January 2, 2023 00:44
@votroto
Copy link

votroto commented Jan 2, 2023

Nice, thank you! You were very quick.
Yes, Gurobi staff confirmed this. Here is the report as promissed:

Your interpretation is right. In the MIP and MIPSOL callback, the processing of the provided solution is delayed until the next possible point in the solution process, while in the MIPNODE callback the solution can be processed immediately. Because the solution is not checked at this point in the MIPSOL and MIP callback, the obj value is infinity. But still, the solution should be used later provided that Gurobi does not find a better solution in the meanwhile.

@odow
Copy link
Member Author

odow commented Jan 2, 2023

Thanks for following up!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

User-provided heuristic solutions incorrectly report being rejected
2 participants