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

Incumbent and branching callbacks #16

Closed
joehuchette opened this issue Dec 13, 2013 · 5 comments
Closed

Incumbent and branching callbacks #16

joehuchette opened this issue Dec 13, 2013 · 5 comments

Comments

@joehuchette
Copy link
Member

Talked to Juan Pablo today, and he expressed interest in adding incumbent and branching callbacks at some point. Are these supported in Gurobi/GLPK?

@IainNZ
Copy link
Member

IainNZ commented Dec 13, 2013

No branching callback in Gurobi. Its pretty broken (in the sense you probably shouldn't use it) in CPLEX afaik but does exist.
Incumbent = provide an integer solution given a fractional solution?

@joehuchette
Copy link
Member Author

In CPLEX it allows you to reject integer-feasible solutions before they're set as incumbent. It seems that it's similar to lazy constraints, except that it doesn't actually add the violated constraint to the problem.

@carlobaldassi
Copy link
Member

Branching callbacks are supported in GLPK, the interface has a can_branch query function and a branch_upon directive. The latter also allows to optionally select one of the two branches as the next to be explored.

There is no such functionality as rejecting an integer-feasible solution without adding the constraint. Actually, there is no notion of an integer-feasible solution except for the current best (i.e. the API only allows to work on relaxed solutions; whenever those are checked for integer-feasibility they either substitute the current best or are discarded, and the API does not give the user any way to hook into this process). BTW this is currently my only issue with the generic callback interface in GLPK, which is otherwise complete, since it prevents me to implement getmipsolution other than as giving the current best; any ideas or suggestions appreciated.

@mlubin
Copy link
Member

mlubin commented Dec 15, 2013

CPLEX is the only solver that supports the incumbent callback, so I wouldn't want to put it into MathProgBase. Before we do anything with branching, we should really have a SCIP interface as that is the state-of-the-art in user branching control; it lets you create n-way branches and use other cool techniques. I'm not convinced that the branching callbacks exposed by CPLEX and GLPK are useful enough to be worth the effort to standardize.

Unrelated to MathProgBase though, in JuMP we should make it possible to use a solver-specific callback. Solvers are free to expose callbacks beyond those which are part of MathProgBase.

@mlubin
Copy link
Member

mlubin commented Jun 9, 2017

Closed in favor of #170

@mlubin mlubin closed this as completed Jun 9, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants