Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
Expand all | Collapse all

Why do I get CPLEX solution status 3 with fixed integers: infeasible problem?

  • 1.  Why do I get CPLEX solution status 3 with fixed integers: infeasible problem?

    Posted 04/17/08 08:21 PM

    Originally posted by: SystemAdmin


    [arunjotshi said:]

    This is with reference to my earlier post "Error Recovering Solution".
    I tried all your suggestions and finally I turned off AMPL Presolve (options presolve 0;) and the issue seemed to have been resolved. But I am trying some other data set and it is still giving me the same issue.
    One thing to note is that specifying "options presolve 0;" to turn off AMPL presolve seems to be working only for the first data set and not for the other. I could tell that because of the following message in the logs (2nd data set):

    Presolve eliminates 0 constraints and 564 variables.
    Adjusted problem:
    54117 variables:
    52300 binary variables
    1817 integer variables
    44739 constraints, all linear; 505340 nonzeros
    1 linear objective; 43655 nonzeros.

    CPLEX 10.1.0: MipThreads=4
    HeurFreq = 10
    timing=1
    timelimit = 1200
    branch=-1
    mipemphasis=1
    treememlim=6000
    mipdisplay=2
    mipgap=0.03
    display=2
    Retaining MIP start values for possible repair.
    MIP Presolve eliminated 24294 rows and 14052 columns.
    MIP Presolve modified 79141 coefficients.
    Reduced MIP has 19305 rows, 38925 columns, and 276468 nonzeros.
    Clique table members: 30717.
    MIP emphasis: integer feasibility.
    Root relaxation solution time =  15.28 sec.

            Nodes                                        Cuts/
      Node  Left    Objective  IInf  Best Integer    Best Node    ItCnt    Gap

          0    0  538546.5770  2871                538546.5770    9796       
                    487015.6429  2504                Cuts:  1411    16347       
                    474841.4063  2580                Cuts:  1367    19049       
                    471216.9956  2452                Cuts:  1010    20915       
    Repair heuristic found nothing.
    Elapsed real time =  64.64 sec. (tree size =  0.01 MB).
        100    85  464483.9180  2336                468842.4511    39827       
        200  187  448981.5980  1551                468842.4511    57472       
        300  297  447962.1768  1219                468842.4511    70067       
        400  386  422323.4610  519                468842.4511    75806       
    *  430+  448                  0  421540.9375  468842.4511    78266  11.22%
    .
    .
    .
    .
    This is the portion of the messages from the second data set.  Note here that AMPL Presolve is still being used.  For the first data set I see that AMPL Presolve is turned off (as it should have been) and hence solved it right.

    It is strange that AMPL Presolve is being turned off based on the problem structure. Am I missing something here.

    Please suggest.


    Thanks,
    Arun.


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Why do I get CPLEX solution status 3 with fixed integers: infeasible problem?

    Posted 04/23/08 05:22 AM

    Originally posted by: SystemAdmin


    [EdKlotz said:]

    > This is with reference to my earlier post "Error Recovering Solution".
    > I tried all your suggestions and finally I turned off AMPL Presolve (options presolve 0;) and
    > the issue seemed to have been resolved. But I am trying some other data set and it is still
    > giving me the same issue.

    If your MIP model is ill conditioned, turning AMPL's presolve off probably just changed the
    path CPLEX took and avoided the source of round off error on the first data set.  But, it
    didn't address the real source of the problem, so it will not consistently resolve the problem.
    That would explain why a subsequent run on a similar dataset resulted in the same trouble
    with the fixed problem. 

    The reason the fixed problem can be infeasible after CPLEX found a feasible integer solution
    is that the fixed problem can differ slightly from the node LP during the MIP optimization that
    gave rise to the associated integer feasible solution.  The fixed problem fixes all discrete objects in your model.  That may be the case for the associated node LP, but it may not;
    a node LP can yield an integer feasible solution without having all discrete objects fixed.
    Sometimes some of the unfixed discrete variables get pushed to discrete values by the node
    LP optimization.  If the model is ill conditioned or numerically unstable, this slight difference can be enough to yield different results.  After all, by definition, ill conditioning means that
    a small change to the problem data can yield a big changes in the computed results. 

    That said, you don't want to assume that a model is ill conditioned; you want to verify it.
    With this in mind, try to assess whether your model has numerical issues.  Does it have
    mixtures of small and large coefficients in the constraints?  If so, try and rescale the
    model or modify the coefficients so that you improve the ratio of largest to smallest constraints without compromising the meaning of the model.  If you are not sure about
    the coefficients in the model, try using the 'writeprob'
    directive in your cplex_options or AMPL's expand command to examine the constraints
    in the model to look for mixtures of large and small coefficients.  The writeprob directive allows you to export an LP, MPS or SAV file that you can examine using interactive CPLEX.

    If you need more information on how to diagnose and correct ill conditioning and numerical
    instability, try starting with

    https://support.ilog.com/public/products/faq.cfm?FAQ=75&Product=CPLEX

    in the publicly available ILOG CPLEX FAQ web site.

    > One thing to note is that specifying "options presolve 0;" to turn off AMPL presolve seems to > be working only for the first data set and not for the other. I could tell that because of the > following message in the logs (2nd data set):
    >
    > Presolve eliminates 0 constraints and 564 variables.
    > Adjusted problem:
    > 54117 variables:
    >  52300 binary variables
    >  1817 integer variables
    > 44739 constraints, all linear; 505340 nonzeros
    > 1 linear objective; 43655 nonzeros.

    As I said above, turning AMPL's presolve off didn't really address the fundamental issue; it
    just changed the path on one instance of your models so that some troublesome behavior was avoided.  I don't think you should worry about this issue much.  However, I believe AMPL's
    presolve always removes fixed variables from the model, regardless of the setting of the presolve option.  CPLEX has a similar behavior itself; it removes fixed variables regardless of the presolve setting because fixed variables can cause numerical trouble for the barrier method.  Since AMPL is a solver independent modeling language, it cannot assess ahead of time which solver or algorithm is in use, so removing explicitly fixed variables is reasonable.  They are essentially data in the model instance anyways.

    Note that in the above presolve statistics, AMPL's presolve removed variables but not
    constraints; this tends to confirm that presolve merely removed fixed variables and nothing
    else. 

    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Why do I get CPLEX solution status 3 with fixed integers: infeasible problem

    Posted 04/23/08 07:51 PM

    Originally posted by: SystemAdmin


    [arunjotshi said:]

    Thanks for the response and the explanation.
    Yes my problem has a mixtures of small and large coefficients in the constraints?  I already rescaled the
    model and modified the rhs values.
    It seems to be working fine for now.
    Thanks again.
    Arun
    #CPLEXOptimizers
    #DecisionOptimization