60010

Interpretation of GAP in CPLEX

Question:

This is a part of the engine-log output that I get from a small-scale mixed integer linear optimization problem that I solved in CPLEX 12.7.0

Nodes Cuts/ Node Left Objective IInf Best Integer Best Bound ItCnt Gap 0 0 280.0338 78 280.0338 72 0 0 428.8558 28 Cuts: 89 137 0 0 429.5221 34 Cuts: 2 142 0 0 429.7745 34 MIRcuts: 2 143 * 0+ 0 460.9166 429.7745 6.76% 0 2 429.7745 34 460.9166 429.8666 143 6.74% Elapsed time = 0.49 sec. (31.07 ticks, tree = 0.01 MB, solutions = 1) * 35 8 integral 0 438.1448 435.6381 211 0.57% Cover cuts applied: 17 Implied bound cuts applied: 10 Flow cuts applied: 11 Mixed integer rounding cuts applied: 9 Gomory fractional cuts applied: 24 Root node processing (before b&c): Real time = 0.45 sec. (31.09 ticks) Sequential b&c: Real time = 0.08 sec. (20.80 ticks) ------------ Total (root+branch&cut) = 0.53 sec. (51.89 ticks)

What I understand from this, is that the best integer solution (for the objective function) found has the value of 438.1448, whereas the relaxed solution (non integer values) has the value of 435.6381 as best bound solution.

( 438.1448 / 435.6381 ) - 1 = 0.57% GAP

Does this mean that the solution still has that small gap, however it is proven to be the optimal solution? I had the (maybe wrong) idea that optimality is proven by a 0% gap.

I'm not sure how to interpret it correctly. Thanks for your help in advance.

Answer1:

Yes you are right. The optimality is proven if the upper bound and the lower bound evaluate the same value, i.e. CPLEX could prove an optimality gap of 0%.

Since CPLEX stops with a solution that has a gap of 0.57%, I would assume that you configured an MIP-gap <1%. If you are interested in a solution with proven optimal, you should change the MIPGap parameter to zero. See also <a href="https://www.ibm.com/support/knowledgecenter/en/SS9UKU_12.4.0/com.ibm.cplex.zos.help/Parameters/topics/EpGap.html" rel="nofollow">here</a>.

Recommend

  • casting a floating to decimal in mysql
  • Reorder rows conditional on a string variable
  • Excel VBA Select Case Loop Sub
  • Confusion with Spread in tidyr
  • Unable to Parse XML using LINQ in ASP.Net & C#
  • spawn random images in canvas in javascript
  • How to handle exception using Timer (Thread) class
  • Hive command line Select query time taken incorrect if its not map reduce job in the background
  • Get predicate execution time in seconds
  • Prevent focus to URL bar with CTRL + L
  • Avoid registering duplicate broadcast receivers in Android
  • Excel VBA How to populate a multi-dimensional (3d) array with values from multiple excel ranges?
  • Why doesnt this Java loop in a thread work?
  • Connecting bluetooth device to windows phone 8 application
  • Better Indy for Dephi 2007
  • Runtime.exec() gives Error: Could not find or load main class
  • Best practice to eliminate magic numbers within a member function
  • How to pass solution folder as parameter in command line arguments (for debug)?
  • Time out Error in send mail
  • How to plot large time series (thousands of administration times/doses of a medication)?
  • DateTime.Today for a specific time zone
  • Blackberry 6: how to detect a long click on track pad?
  • VBA Excel, loop through variables
  • Easiest way to get current unix timestamp via XSL
  • How to get data from **Realm database** using **date object**?
  • Possible to “watch” both HAML and SASS at the same time?
  • How to print columns containing value
  • NUnit 3.0 TestCase const custom object arguments
  • xcode don't localize specific strings
  • Create Instant using a negative year
  • Does it make sense to call System.gc() and Thread.sleep() when working on Bitmaps?
  • Is there a way to do normal logging with EureakLog?
  • Alert pop up with LWUIT
  • Get one-time binding to work for ng-if
  • Fetching methods from BroadcastReceiver to update UI
  • How to recover from a Spring Social ExpiredAuthorizationException
  • Does CUDA 5 support STL or THRUST inside the device code?
  • Can Visual Studio XAML designer handle font family names with spaces as a resource?
  • How can I remove ASP.NET Designer.cs files?
  • Are Kotlin's Float, Int etc optimised to built-in types in the JVM? [duplicate]