这是此问题的后续问题:Interpretation of GAP in CPLEX
我在优化(分钟)问题开始时使用了以下表达式:
execute gapTermination {
cplex.epgap = 0.00; // result at gap of 0%
}
这是引擎日志的一部分:
Nodes Cuts/
Node Left Objective IInf Best Integer Best Bound ItCnt Gap
0 0 560.7929 100 560.7929 115
0 0 742.1396 57 Cuts: 121 214
0 0 744.3119 61 Cuts: 10 226
0 0 747.2193 61 Cuts: 10 233
0 0 747.2797 61 MCF: 1 234
* 0+ 0 916.3811 747.2797 18.45%
0 2 747.2797 61 916.3811 747.2797 234 18.45%
Elapsed time = 0.13 sec. (49.77 ticks, tree = 0.00 MB, solutions = 1)
* 916 755 integral 0 778.9609 753.8931 7249 3.22%
* 4739 1918 integral 0 771.9166 759.5332 25884 1.60%
Cover cuts applied: 5
Implied bound cuts applied: 8
Flow cuts applied: 27
Mixed integer rounding cuts applied: 36
Multi commodity flow cuts applied: 1
Gomory fractional cuts applied: 22
Root node processing (before b&c):
Real time = 0.11 sec. (49.41 ticks)
Parallel b&c, 16 threads:
Real time = 0.38 sec. (202.30 ticks)
Sync time (average) = 0.07 sec.
Wait time (average) = 0.07 sec.
------------
Total (root+branch&cut) = 0.49 sec. (251.71 ticks)
正如您所看到的,"最佳"似乎找到了解决方案,但它仍然有1,60%的差距。
如何解释这个?我的想法是,我找到了最优的整数解(没有单个整数解决方案更好),但是非整数值实现了更好的结果,降低了1.60%(最小化问题)。
如果我的想法是正确的,那么只有当松弛解(通常是非整数)的最优值恰好是整数值时,才能达到0.00%的差距。
如果有人可以帮助我,我真的很感激。提前谢谢。