Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  interpreting MILP solution quality

    Posted 04/25/12 02:07 PM

    Originally posted by: CplexUser1453


    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)?
    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?
    3) What is the definition of a "suspicious base"?
    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?

    Thanks a lot!
    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 2.  Re: interpreting MILP solution quality

    Posted 05/16/12 03:48 PM

    Originally posted by: EdKlotz


    > CplexUser1453 wrote:
    > 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


  • 3.  Re: interpreting MILP solution quality

    Posted 08/03/12 01:57 AM

    Originally posted by: SystemAdmin


    Hi,
    I am currently working on the quality of the solution I find.
    Your presentation has been very helpful though when I compute the kappa coefficient, this one is constantly equal to -1...
    Even though I resolve my problem with only Primal Simplex...
    Can you light me on that point ?
    Thanks a lot.
    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 4.  Re: interpreting MILP solution quality

    Posted 08/03/12 08:20 PM

    Originally posted by: EdKlotz


    > AdriBoillot wrote:
    > Hi,
    > I am currently working on the quality of the solution I find.
    > Your presentation has been very helpful though when I compute the kappa coefficient, this one is constantly equal to -1...
    > Even though I resolve my problem with only Primal Simplex...
    > Can you light me on that point ?
    > Thanks a lot.

    Well, if you are solving the model with primal simplex, you are talking about
    an LP or QP rather than an MILP.

    The smallest condition number possible is essentially 1.0. Condition numbers
    are based the norm of the basis and the norm of the basis inverse. Norms are
    nonnegative, so I would not expect a negative condition number value. Regardless, I would expect that your basis matrix is essentially the
    identity with such small condition numbers. If you examine the basis
    statuses (either by querying them in your program or writing out a basis
    file), I suspect you will see that almost all the slack variables are basic.
    And, this means your final solution is quite well conditioned.

    If you can reproduce the negative condition number in interactive CPLEX, feel
    free to upload the MPS, LP or SAV file that gave that result, and I'll have a
    look.
    #DecisionOptimization
    #OPLusingCPLEXOptimizer