Decision Optimization

Decision Optimization

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


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

solution status 101

  • 1.  solution status 101

    Posted 03/16/11 08:21 AM

    Originally posted by: anutunab


    Hi,

    In my consecutive Cplex runs, I have realized that the MIP solution is not really optimal although the solution status code is 101. When I decreased the mip gap parameters (absmipgap, mipgap), the model has found the real optimum.
    Then, why the model gives the solution status as 101 instead of 102 (optimal within gap)?
    thanks,

    banu
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: solution status 101

    Posted 03/17/11 04:00 AM

    Originally posted by: SystemAdmin


    Can you please detail the parameter settings you used and maybe even post the offending model here?
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: solution status 101

    Posted 03/18/11 08:48 AM

    Originally posted by: anutunab


    Hi,

    I am solving consecutive models (not an only single model) where I am adding binary variables and constraints at each step. For each single model, I am keeping the optimal status. I have realized that when I decreased the gap values, then the solution to the models with optimal status 101 is changed. The parameter settings I use in MIP model with binary variables:

    status = CPXsetdblparam (env, CPX_PARAM_EPGAP, 1e-09);
    status = CPXsetdblparam (env, CPX_PARAM_EPAGAP, 1e-09);
    status = CPXsetdblparam (env, CPX_PARAM_EPINT, 0);
    status = CPXsetdblparam (env, CPX_PARAM_EPRHS, 1e-09);
    status = CPXsetdblparam (env, CPX_PARAM_EPOPT, 1e-09);
    status = CPXsetintparam (env, CPX_PARAM_PARALLELMODE, -1);
    status = CPXsetintparam (env, CPX_PARAM_THREADS, 0);
    status = CPXsetintparam (env, CPX_PARAM_NODEFILEIND,2);
    status = CPXsetstrparam(env, CPX_PARAM_WORKDIR,".");
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: solution status 101

    Posted 03/22/11 01:57 PM

    Originally posted by: SystemAdmin


    Does the problem persist if you set CPX_PARAM_PARALLELMODE to 1?
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: solution status 101

    Posted 03/23/11 02:05 PM

    Originally posted by: anutunab


    I have also set CPX_PARAM_PARALLELMODE to 1. It did not solve the problem.

    I have attached a MIP problem which I have generated at an iteration of my algorithm where I am using callable library. In order to detect the problem, I have also solved with interactive optimizer of cplex 12.2.0.2 (academic version). I have set my parameter settings in the interactive optimizer such that they are all the same as I did by callable library such that:

    absmipgap=0
    mipgap=0
    mip tolerances integrality=0
    set simplex tolerances feasibility=1e-9
    set simplex tolerances optimality =1e-9

    Both in callable library and interactive optimizer, Cplex gives the solution: z1=3960, z2=3422, z3=4072. Furthermore, it gives the optimal status code 101.But it is not really optimal.Because,in the attached model, if we increase the lower bound for z1 and set z1>=3961 and resolve with the same parameter settings, then it gives us the solution z1=3961, z2=3422, z3=4072 for which the objective function is better than the first one, and it is obvious also feasible to the first model.So, what may be the problem? If we assume the first solution is just optimal within gap, why cplex reports me the status code as 101? Furthermore, which parameter settings are missing to satisfy optimality or feasibility?

    thanks,
    banu
    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: solution status 101

    Posted 04/08/11 03:28 AM

    Originally posted by: SystemAdmin


    I am able to reproduce your issue. Indeed, for the original model (using your parameter settings) I get an "optimal" objective value of 4072.7382. After increasing the lower bound of z1 to 3961, I get the "even more optimal" objective value 4072.7383 (it is a maximization problem).

    Using the 4072.7383 solution as a MIP start for the original model, it gets accepted and then the optimal value of the original model is also 4072.7383.

    It looks like one of the cutting plane separators is cutting off the optimal solution. If you disable cuts, then the correct solution is found also in the original model.

    I will investigate what is going on...
    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: solution status 101

    Posted 04/13/11 02:19 AM

    Originally posted by: anutunab


    Thanks Tobias,

    Before getting your answer, I was able to solve the problem by setting the parameter "mip preprocessing repeatpresolve" to 0.However, now, I have the same problem in a different model and it did not work.

    As you suggest, disabling cuts may work. How can I disable cuts in callable library?

    thanks,

    banu
    #CPLEXOptimizers
    #DecisionOptimization


  • 8.  Re: solution status 101

    Posted 04/13/11 03:01 AM

    Originally posted by: SystemAdmin


    The easiest way to disable all cuts is to set the CUTPASSES parameter to -1.

    You can also disable each cut separator individually by setting the corresponding CPX_PARAM_*CUTS (for example: CPX_PARAM_MIRCUTS) parameter to -1.

    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 9.  Re: solution status 101

    Posted 04/13/11 06:18 AM

    Originally posted by: anutunab


    Thanks,

    Disabling all cuts decreased my solution times significantly, and also eliminated some nonoptimal solutions.

    But, I see there is still the same optimality problem in some models. Is there something left that I can try?

    Thanks,

    Banu
    #CPLEXOptimizers
    #DecisionOptimization


  • 10.  Re: solution status 101

    Posted 04/13/11 07:21 AM

    Originally posted by: SystemAdmin


    Could you please provide an example where disabling cuts does not fix the wrong answer? This would help me in debugging the problem. Until I have found the issue, I cannot give you any advice on how to work-around it. Maybe disabling presolve could help (assuming the issue is a wrong presolve reduction).
    #CPLEXOptimizers
    #DecisionOptimization


  • 11.  Re: solution status 101

    Posted 04/13/11 02:11 PM

    Originally posted by: anutunab


    When I have solved the attached model by using interactive optimizer, it gives the optimal solution by disabling the cuts. But when this model is generated by C++ and then solved by using callable library, it gives nonoptimal solution although I am using the same parameter settings. The only difference is that I am solving models iteratively by adding some rows and columns. The model is generated in the last few iterations of the algorithm.

    Banu
    #CPLEXOptimizers
    #DecisionOptimization


  • 12.  Re: solution status 101

    Posted 04/13/11 03:03 PM

    Originally posted by: SystemAdmin


    Just try again using the .sav file format instead of the .lp format.
    The .sav will produce a bit-wise identical representation of your model in memory. Therefore it should behave identical in the interactive and in your C++ program.

    Nevertheless, it is of course a bug (or a numerical issue) that CPLEX gives a wrong answer to your .lp file.
    Tobias
    #CPLEXOptimizers
    #DecisionOptimization