Initializing help system before first use

XPRSaddcbpreintsol

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 XPRSaddcbpreintsol.
Synopsis
int XPRS_CC XPRSaddcbpreintsol(XPRSprob prob, void (XPRS_CC *preintsol)(XPRSprob cbprob, void *cbdata, int soltype, int *p_reject, double *p_cutoff), void *data, int priority);
Arguments
prob 
The current problem.
preintsol 
The callback function which takes five arguments, cbprob, cbdata, soltype, p_reject and p_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.
cbprob 
The problem passed to the callback function, preintsol.
cbdata 
The user-defined data passed as data when setting up the callback with XPRSaddcbpreintsol.
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 optimal (and integer feasible) solution to the current node of the tree search.
The continuous relaxation solution to the current node of the tree search, which has been found to be integer feasible.
A MIP solution found by a heuristic.
A MIP solution provided by the user.
A solution resulting from refinement of primal or dual violations of a previous MIP solution.
p_reject 
Set this to 1 if the solution should be rejected.
p_cutoff 
The new cutoff value that the Optimizer will use if the solution is accepted. If the user changes p_cutoff, the new value will be used instead. The cutoff value will not be updated if the solution is rejected.
data 
A user-defined data to be passed to the callback function, preintsol.
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.
Related controls
Integer
Branch and Bound: If the user knows that they are interested only in values of the objective function which are better than some value, this can be assigned to MIPABSCUTOFF. This allows the Optimizer to ignore solving any nodes which may yield worse objective values, saving solution time. When a MIP solution is found a new cut off value is calculated and the value can be obtained from the CURRMIPCUTOFF attribute. The value of CURRMIPCUTOFF is calculated using the MIPRELCUTOFF and MIPADDCUTOFF controls.

Example
See also example tsp.c.
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 ( soltype = 0) is rejected, the node itself will be dropped without further branching.
3. To retrieve the integer solution, use XPRSgetlpsol, XPRSgetpresolvesol or XPRSgetnlpsol. XPRSgetmipsol will not return the newly found solution because it has not been saved at this point.
4. The current node problem can not be modified in this callback - attempting to add cuts, changing bounds and adding branching objects will raise an error. Any such changes should be applied during the optnode callback (ref. XPRSaddcboptnode) when MIPINFEAS is zero.
5. For this callback attribute MIPINFEAS is set to -1 if the solution was found by a heuristic.
Related topics

© 2001-2024 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.