XPRSaddcboptnode
XPRSaddcboptnode |
Purpose
Declares an optimal
node
callback function, called during the branch and bound search, after the LP relaxation has been solved for the current node, and after any internal cuts and heuristics have been applied, but before the Optimizer checks if the current node should be branched. This callback function will be called in addition to any callbacks already added by XPRSaddcboptnode.
Synopsis
int XPRS_CC XPRSaddcboptnode(XPRSprob prob, void (XPRS_CC *f_optnode)(XPRSprob my_prob, void *my_object, int *feas), void *object, int priority);
Arguments
prob
|
The current problem.
|
f_optnode
|
The callback function which takes three arguments,
my_prob,
my_object and
feas, and has no return value.
|
my_prob
|
The problem passed to the callback function,
f_optnode.
|
my_object
|
The user-defined object passed as
object when setting up the callback with
XPRSaddcboptnode.
|
feas
|
The feasibility status. If set to a nonzero value by the user, the current node will be declared infeasible.
|
object
|
A user-defined object to be passed to the callback function,
f_optnode.
|
priority
|
An integer that determines the order in which multiple node-optimal callbacks 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.
|
Example
The following prints the optimal objective value of the node LP relaxations:
XPRSaddcboptnode(prob,nodeOptimal,NULL,0); XPRSmipoptimize(prob,"");
The callback function might resemble:
void XPRS_CC nodeOptimal(XPRSprob prob, void *object, int *feas) { int node; double objval; XPRSgetintattrib(prob, XPRS_CURRENTNODE, &node); printf("NodeOptimal: node number %d\n", node); XPRSgetdblattrib(prob, XPRS_LPOBJVAL, &objval); printf("\tObjective function value = %f\n", objval); }
See the example
depthfirst.c in the
examples/optimizer/c folder.
Related topics