XPRBgetsol
XPRBgetsol |
Purpose
Synopsis
double XPRBgetsol(XPRBvar var);
Argument
var
|
Reference to a variable.
|
Return value
Primal solution value for the variable, 0 in case of an error.
Example
XPRBprob expl2; XPRBvar x1; double solval; ... expl2 = XPRBnewprob("example2"); x1 = XPRBnewvar(expl2, XPRB_UI, "abc3", 1, 100); XPRBlpoptimize(expl2, ""); solval = XPRBgetsol(x1);
The example retrieves the LP solution value for the variable
x1.
Further information
1. This function returns the current solution value for a variable. The user may wish to test first whether this variable is part of the problem, for instance by checking that the column number is non-negative.
If this function is called after completion of a global search and an integer solution has been found (that is, if function XPRBgetmipstat returns values XPRB_MIP_SOLUTION or XPRB_MIP_OPTIMAL), it returns the value of the best integer solution. If no integer solution is available after a global search this function outputs a warning and returns 0. In all other cases it returns the solution value in the last LP that has been solved. If this function is used during the execution of an optimization process (for instance in Optimizer library callback functions) it needs to be preceded by a call to XPRBsync with the flag XPRB_XPRS_SOL.
If this function is called after completion of a global search and an integer solution has been found (that is, if function XPRBgetmipstat returns values XPRB_MIP_SOLUTION or XPRB_MIP_OPTIMAL), it returns the value of the best integer solution. If no integer solution is available after a global search this function outputs a warning and returns 0. In all other cases it returns the solution value in the last LP that has been solved. If this function is used during the execution of an optimization process (for instance in Optimizer library callback functions) it needs to be preceded by a call to XPRBsync with the flag XPRB_XPRS_SOL.
2. Note that ``integer solution'' means ``solution within the integer feasibility limits'', that means for any comparison of solution values the current Optimizer tolerance settings have to be taken into account. So care must be taken when handling the solution values of integer variables. For example, you cannot simply treat the value as an integer, because a value such as 0.999998, may well be truncated to zero. Instead, you must make sure you round the value to the nearest integer.
Related topics