XPRSaddcbgloballog
XPRSaddcbgloballog |
Purpose
Declares a global log
callback function, called each time the
global log is printed. This callback function will be called in addition to any callbacks already added by XPRSaddcbgloballog.
Synopsis
int XPRS_CC XPRSaddcbgloballog(XPRSprob prob, int (XPRS_CC *f_globallog)(XPRSprob my_prob, void *my_object), void *object, int priority);
Arguments
prob
|
The current problem.
|
f_globallog
|
The callback function which takes two arguments,
my_prob and
my_object, and has an integer return value. This function is called whenever the global log is printed as determined by the
MIPLOG control.
|
my_prob
|
The problem passed to the callback function,
f_globallog.
|
my_object
|
The user-defined object passed as
object when setting up the callback with
XPRSaddcbgloballog.
|
object
|
A user-defined object to be passed to the callback function,
f_globallog.
|
priority
|
An integer that determines the order in which multiple global log 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.
|
Related controls
Integer
Global print flag.
|
Example
The following example prints at each node of the global search the node number and its depth:
XPRSsetintcontrol(prob, XPRS_MIPLOG, 3); XPRSaddcbgloballog(prob, globalLog, NULL, 0); XPRSmipoptimize(prob,"");
The callback function may resemble:
int XPRS_CC globalLog(XPRSprob prob, void *object) { int node, nodedepth; XPRSgetintattrib(prob, XPRS_NODEDEPTH, &nodedepth); XPRSgetintattrib(prob, XPRS_CURRENTNODE, &node); printf("Node %d with depth %d has just been processed\n", node, nodedepth); return 0; }
See the example
depthfirst.c in the
examples/optimizer/c folder.
Further information
If the callback function returns a nonzero value, the global search will be interrupted.
Related topics