problem.addcbpreintsol
problem.addcbpreintsol |
Purpose
Declares a user integer solution callback function, called when an integer solution is found by heuristics or during the branch and bound search, but before it is accepted by the Optimizer. This callback function will be called in addition to any integer solution callbacks already added by addcbpreintsol.
Synopsis
problem.addcbpreintsol(callback, data, priority)
(ifreject, newcutoff) = callback(my_prob, my_object, soltype, cutoff)
Arguments
callback
|
The callback function which takes five arguments,
my_prob,
my_object,
isheuristic,
ifreject and
cutoff, and has no return value. This function is called when an integer solution is found, but before the solution is accepted by the Optimizer, allowing the user to reject the solution.
|
||||||||
my_prob
|
The problem passed to the callback function,
callback.
|
||||||||
my_object
|
The user-defined object passed as object when setting up the callback with
addcbpreintsol.
|
||||||||
soltype
|
The type of MIP solution that has been found: Set to 1 if the solution was found using a heuristic. Otherwise, it will be the global feasible solution to the current node of the global search.
|
||||||||
ifreject
|
Set this to 1 if the solution should be rejected.
|
||||||||
cutoff
|
The current
cutoff value.
|
||||||||
newcutoff
|
The new
cutoff value, to be used by the Optimizer if the solution is accepted. The returned
newcutoff value will not be updated if the solution is rejected.
|
||||||||
data
|
A user-defined object to be passed to the callback function,
callback.
|
||||||||
priority
|
An integer that determines the order in which callbacks of this type will be invoked. The callback added with a higher priority will be called before a callback with a lower priority. Set to 0 if not required.
|
Further information
1. If a solution is rejected, the Optimizer will drop the found solution without updating any attributes, including the cutoff value. To change the cutoff value when rejecting a solution, the control
MIPABSCUTOFF should be set instead.
2. When a node solution is rejected (
isheuristic = 0), the node itself will be dropped without further branching.
3. To retrieve the integer solution, use either
problem.getlpsol or
problem.getpresolvesol.
problem.getmipsol will not return the newly found solution because it has not been saved at this point.
Related topics