Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/29/08 04:42 PM

    Originally posted by: SystemAdmin


    [feifaph said:]

    Hi,

    when I solve the attached minimization MIP with CPLEX 10.2.0, I get -189, while 11.0.1 produces only -188, but still claims "Integer optimal solution". Is this a bug in CPLEX 11.0.1?

    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/29/08 10:19 PM

    Originally posted by: SystemAdmin


    [oussedik said:]

    Hi,

    This is probably related to the mip gap tolerance, the default value of the mip gap tolerance is 1e-4 which means that CPLEX will stop (and provide an optimal solution) when an integer feasible solution is within 0.01% of optimality.

    As CPLEX 10 and 11 take different paths to the solutions, it can happen to have such differences in objective values, you can set the mip gap tolerance to a tighter value 1e-5 or 1e-6 for instance and then you should get the same optimal objective value.

    Sofiane
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/29/08 11:05 PM

    Originally posted by: SystemAdmin


    [feifaph said:]

    [quote author=Sofiane link=topic=648.msg1972#msg1972 date=1225304349]
    This is probably related to the mip gap tolerance, the default value of the mip gap tolerance is 1e-4 which means that CPLEX will stop (and provide an optimal solution) when an integer feasible solution is within 0.01% of optimality.

    As CPLEX 10 and 11 take different paths to the solutions, it can happen to have such differences in objective values, you can set the mip gap tolerance to a tighter value 1e-5 or 1e-6 for instance and then you should get the same optimal objective value.


    Thanks for your reply. This does not seem to be the problem, I tried with "set mip tolerances mipgap 1e-6" and even "set mip tolerances mipgap 0" (which seems to be legal), and I still get -188 with CPLEX 11. Any other ideas?
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/30/08 03:32 PM

    Originally posted by: SystemAdmin


    [oussedik said:]

    Hi,

    I just tried your file with CPLEX 11.0.1, 11.1 and 11.2 and I get the correct answer: -189.

    Are you using any non default parameter settings for both 10.2 and 11 tests? If this persists, you can send your lp file and the associated logs + info on the platform you're using to the ILOG support.

    Sofiane

    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/30/08 05:50 PM

    Originally posted by: SystemAdmin


    [feifaph said:]

    Hi,

    this is weird. I'm not using any nonstandard settings... I've attached a log file. This is on an AMD64 Linux machine. Maybe it is platform specific? I can reproduce it on two different computers (with the same software), so it's not a hardware problem...

    Unfortunately, I don't know how to contact the support, it seems you need some kind of password, and I'm only a user at a university site...

    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/30/08 07:10 PM

    Originally posted by: SystemAdmin


    [prubin said:]

    You ran this in the interactive optimizer without making any parameter settings (i.e., you cranked up the optimizer, read the LP file and executed the mipopt command and nothing else)?

    I matched the true optimum in CPLEX 9.1 and 11.0, the former on AMD Athlon and the latter on an Intel dual core CPU, both 32 bit versions of CPLEX.  I noticed in your log that (a) you get a different solution to the root LP (same objective value but more integer infeasibilities than I get) and (b) your log shows some sort of restart.  I've not seen CPLEX do a restart on its own like that before, but then I haven't had 11.0 very long, and it might be tied to solution pools.  The difference in the LP relaxation solution isn't entirely shocking; if the relaxation has multiple optima, it's a bit random which one you get, particularly changing platforms.

    I'm going to forward your log and mine to someone at ILOG and see if they have any ideas.

    /Paul

    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/30/08 07:47 PM

    Originally posted by: SystemAdmin


    [feifaph said:]

    [quote author=prubin link=topic=648.msg1983#msg1983 date=1225379413]
    You ran this in the interactive optimizer without making any parameter settings (i.e., you cranked up the optimizer, read the LP file and executed the mipopt command and nothing else)?

    Yes. I have a 64-bit version of CPLEX 11.0.1, so maybe that explains why we get different results.

    #CPLEXOptimizers
    #DecisionOptimization


  • 8.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/30/08 09:20 PM

    Originally posted by: SystemAdmin


    [oussedik said:]


    Looking at your log file, presolve is repeated, please double check (I know you already did it ...) that you're not using any parameters.

    As Paul said, use CPLEX from command line, read tmp.lp then mipopt. You can even use "set def" before mipopt to ensure you're using defaults. You can also do a test with "set pre rep 0" to ensure that repeating presolve is off. I did a test with 11.0.1 on a 64 bit windows and get -189.

    Sofiane


    #CPLEXOptimizers
    #DecisionOptimization


  • 9.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/30/08 10:44 PM

    Originally posted by: SystemAdmin


    [feifaph said:]

    Hi,

    "set def" doesn't change anything, but "set pre rep 0" gives me the correct -189. The default for "pre rep" is "-1 = automatic". Is that a non-standard default? I didn't change it, but maybe whoever installed CPLEX did (where can I check this?).

    Anyway, is it to be expected that repeating presolving gives me a nonoptimal result? I can see it changing things that depend on small numerical differences, but there are no large coefficients here anywhere (largest is 22...).
    #CPLEXOptimizers
    #DecisionOptimization


  • 10.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 10/31/08 01:55 AM

    Originally posted by: SystemAdmin


    [EdKlotz said:]

    "set def" doesn't change anything, but "set pre rep 0" gives me the correct -189. The default for "pre rep" is "-1 = automatic". Is that a non-standard default? I didn't change it, but maybe whoever installed CPLEX did (where can I check this?).

    Anyway, is it to be expected that repeating presolving gives me a nonoptimal result? I can see it changing things that depend on small numerical differences, but there are no large coefficients here anywhere (largest is 22...).

    The default for the repeat presolve parameter is automatic, which allows CPLEX to decide whether to reapply presolve.  So, CPLEX by default probably decided to reapply presolve.

    Repeating presolve should not affect your results.  However, since repeat presolve operates on cuts that CPLEX derives as well as the original constraints in the model, the cuts might create some small numerical value that is just large enough to cause the repeated presolve to deduce a variable fixing or coefficient reduction that cuts of the solution with objective of -189 that CPLEX could otherwise find.

    So, that could explain the behavior you see, but I'd like to investigate this further rather than
    just assume it.  So far AMD64 appears to be the only platform on which this reproduces.

    I'll let you know what I find.  In the meantime, you can either run it with the repeat presolve turned off, or upgrade to CPLEX 11.2, which does not exhibit this behavior on the same operating system. 
    #CPLEXOptimizers
    #DecisionOptimization


  • 11.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 11/19/08 09:33 PM

    Originally posted by: SystemAdmin


    [EdKlotz said:]

    The default for the repeat presolve parameter is automatic, which allows CPLEX to decide whether to reapply presolve.  So, CPLEX by default probably decided to reapply presolve.

    Repeating presolve should not affect your results.  However, since repeat presolve operates on cuts that CPLEX derives as well as the original constraints in the model, the cuts might create some small numerical value that is just large enough to cause the repeated presolve to deduce a variable fixing or coefficient reduction that cuts of the solution with objective of -189 that CPLEX could otherwise find.

    So, that could explain the behavior you see, but I'd like to investigate this further rather than
    just assume it.  So far AMD64 appears to be the only platform on which this reproduces.

    I'll let you know what I find.  In the meantime, you can either run it with the repeat presolve turned off, or upgrade to CPLEX 11.2, which does not exhibit this behavior on the same operating system. 

    I took a closer look.  Repeat presolve did not handle this properly in CPLEX 11.0 and 11.1.  It has already been fixed in 11.2.  So, reiterating my previous post,
    turning off repeat presolve with 11.0 or 11.1 provides a robust workaround, but
    using 11.2 not only doesn't exhibit the behavior, but corrects the problem.
    #CPLEXOptimizers
    #DecisionOptimization


  • 12.  Re: Different integer optimal solution with CPLEX 10.2.0 and 11.0.1

    Posted 04/30/09 09:37 PM

    Originally posted by: SystemAdmin


    [ocueva said:]

    Hello I am working in an Optimization model for supply chain management. I got this message instead of the objective function, I want to get the number. How can I do it? I already check the tolerance but I am sure what to do with it.

    Message:

    // solution (integer optimal, tolerance)

    than you
    #CPLEXOptimizers
    #DecisionOptimization