Gurobi 11.02的一个数值问题

最近在写一个论文,审稿人让我增加一部分的实验内容,验证我启发式的性能。我选择和Gurobi进行对比。
然后在我和Gurobi进行对比的过程中,发现某几个算例的启发式结果竟然比Gurobi的下界(gap=0)还低。
按道理来说,对于一个最小化的问题,上界是不可能比下界还低的,因此我怀疑是我的启发式算法有bug,最开始我是不相信Gurobi会有问题的。

复杂的验证过程以及漫长的Debug中,我发现自己的算法好像并没有什么问题,而且只有一两个算例出现了上述的情况。
接着我发现如果我减少FeasibilityTolOptimalityTol这两个参数(至最小值10e-9)以提升数值精度,那么情况有会有所改善,但是启发式的结果依旧比下界还低。

然后,我使用了一个常见的方法,强制决策变量等于启发式的解,把启发式的结果制作成约束添加进模型中,再求解发现Gurobi的结果竟然和我的启发式一致了,且gap等于0。这就出现了悖论:

  • 在那几个特殊的算例中(增加额外的约束gap=0,不增加约束也是gap=0),最小化问题增加额外的约束竟然使最优目标值更小了。

这让我觉得太离谱了,增加额外约束最好的情况下也只能是和原问题的最优目标值一致。
然后和Gurobi社区的工作人员拉扯了一个月,终于搞清楚了,Gurobi承认有bug,并且只能在下个版本修复了。

在此附上原帖子链接,纪念一下第一次为一个求解器厂商提出实质性bug。

https://support.gurobi.com/hc/en-us/community/posts/27254595262993-Add-additional-constraints-but-the-objective-decreased-in-minimize-problem