Originally posted by: EdKlotz
>
> Hello
>
> There is a pretty nice article in the documentation on LP solution quality (http://publib.boulder.ibm.com/infocenter/cosinfoc/v12r4/index.jsp?topic=%2Filog.odms.cplex.help%2FCPLEX%2FUser_manual%2Ftopics%2Fuss_solveLP_24.html&resultof=%22solution%20quality%22)
>
> However I have not found anything equivalent on MILP solution quality (info I get by setting KAPPASTATS 2). It seems like numerical difficulties can be pretty devasting to performance so I would like be able to interpret what CPLEX tells me.
>
> If there is a an article in the documentation where I can find interpretation for this information and I have not looked well enough, I would thankful for a link.
>
> If not I have the following questions :
>
>
> MILP objective -2.1989035553e+06 > MILP solution norm |x| (Total, Max) 1.95445e+10 1.68134e+08 > MILP solution error (Ax=b) (Total, Max) 3.90105e+05 8.14760e+03 > MILP x bound error (Total, Max) 0.00000e+00 0.00000e+00 > MILP x integrality error (Total, Max) 1.96296e-06 9.81482e-07 > MILP slack bound error (Total, Max) 8.27493e-08 2.95847e-09 > > Branch-and-cut subproblem optimization: > Max condition number: 1.9347e+12 > Percentage (number) of stable bases: 0.00% (0) > Percentage (number) of suspicious bases: 99.97% (16518157) > Percentage (number) of unstable bases: 0.03% (5044) > Percentage (number) of ill-posed bases: 0.00% (0) > Attention level: 0.010089 >
>
>
> 1) What does the solution norm tell me about the problem (total/max)?
If you have large values, the primary concern is that values in the lower order
decimal places arising from round off error might be large enough to exceed
the optimizer's tolerances, creating inconsistent results and other headaches.
For the output above, I think you are OK, but it's close. Specifically,
the solution quality indicates that the maximum individual x values is on
the order of 1e+8. Given the typical machine precision of 1e-16, that says
you have 16 digits of accuracy, or equivalently that values beyond the 8th
decimal place are likely to come from rounding error. But, since CPLEX uses
default feasibility and optimality tolerances of 1e-6, that should be OK.
But, don't reduce CPLEX's tolerances on this model to 1e-8 or less. Also,
if you can do some simple rescaling of constraints to reduce the solution values
(e.g. measure units in terms of thousands of dollars instead of dollars), that
might help as well.
> 2) What is the difference between total and max solution error? Does it mean that, because of numerical difficulties, my objective function could vary by this amount?
No. The solution error is a vector of residuals on the constraints, i.e.
b - Ax. So, the max solution error is the maximum individual (absolute) residual element in that vector, while the total is the sum of the absolute values of all the elements in that vector.
> 3) What is the definition of a "suspicious base"?
The range of condition numbers for each different basis type in the MIP kappa
features is defined in the parameter reference manual. For example, in
CPLEX > Callable Library Reference Manual > optim.cplex.solutionquality > Macros
we have:
Macro CPX_KAPPA_SUSPICIOUS
Definition file: cpxconst.h
CPX_KAPPA_SUSPICIOUS
Concert Technology enum: KappaSuspicious.
Numeric meaning (double): To access the percentage of numerically suspicious simplex bases (condition number between 1e+7 and 1e+10) among simplex bases encountered during a MIP solve. This feature is available only for simplex-based algorithms when the parameter CPX_PARAM_MIPKAPPASTATS is set and after CPLEX has processed at least one LP-basis during the solve.
> 4) Is there any rule of the thumb what values should each parameter have to have reasonable confidence that numerical instability is not hurting performance?
Your results look OK to me. Bases categorized as suspicious are usually
not a problem unless the model has other issues. Unless your model has some
really huge coefficients, bases with condition numbers in the
1e+7, 1e+10 range typically don't cause trouble. Nothing else in your solution quality
output indicates any serious issues.
You should be more concerned when you see even a small number of ill posed
bases in the MIP kappa output, or a significant percentage of unstable bases.
Summarizing, for ill conditioning and numerical issues, the fundamental question
you need to ask is whether the optimizer tolerances may cause it to make
decisions about the optimization of your model based on round off error.
Once that happens, inconsistent results are likely.
Attached is some power point of a webinar I gave to CPLEX users that provides
some additional information. In particular, slides 9-13 provides more information on why we chose particular values to categorize basis condition
numbers, and slide 35 has some more info on solution quality output.
>
> Thanks a lot!
#DecisionOptimization#OPLusingCPLEXOptimizer