Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mathematical optimization 建议ILP解算器的下限_Mathematical Optimization_Cplex_Integer Programming_Pyomo_Coin Or Cbc - Fatal编程技术网

Mathematical optimization 建议ILP解算器的下限

Mathematical optimization 建议ILP解算器的下限,mathematical-optimization,cplex,integer-programming,pyomo,coin-or-cbc,Mathematical Optimization,Cplex,Integer Programming,Pyomo,Coin Or Cbc,我有一个整数线性规划问题,我尝试过的解算器(CPLEX,CBC)需要很长时间才能解决,即使他们很早就找到了最优解。他们只是花了很长时间来充分证明这一点 计算最小化问题的目标值的一个微不足道的下界很容易,但在CPLEX的输出(最佳界列)中,我可以看到它在很长很长一段时间内都不接近。它几乎可以立即找到真正好的解决方案,但它错误地认为最佳解决方案可能更好 现在我不得不承认,我真的不知道这些解算器是如何工作的,但看起来他们在浪费时间试图改善可笑的弱下界,寻找不可能乐观的解。因此,我的问题是: 告诉解算器

我有一个整数线性规划问题,我尝试过的解算器(CPLEX,CBC)需要很长时间才能解决,即使他们很早就找到了最优解。他们只是花了很长时间来充分证明这一点

计算最小化问题的目标值的一个微不足道的下界很容易,但在CPLEX的输出(最佳界列)中,我可以看到它在很长很长一段时间内都不接近。它几乎可以立即找到真正好的解决方案,但它错误地认为最佳解决方案可能更好

现在我不得不承认,我真的不知道这些解算器是如何工作的,但看起来他们在浪费时间试图改善可笑的弱下界,寻找不可能乐观的解。因此,我的问题是:

  • 告诉解算器一个合理的目标下限能帮助它更快地完成吗

  • 如果是,哪些解算器可以接受作为附加输入提供的已知下限

  • 作为一个例子,我粘贴了一个示例运行中CPLEX输出的前几行(这会持续更长的时间,没有进一步改进目标,也没有痛苦地缓慢改进最佳界限):


    我希望我能告诉解算器不要费心寻找目标值低于10的解(因为我可以用更简单的方法证明这一点),尤其是目标值为负值的解(因为在我的模型中甚至不可能)。

    如果你有一个好的下限,从可行解开始,您可以将其作为一个MIP开始提供给CPLEX

    然后,CPLEX将尝试改进该解决方案,并忽略其分支定界算法中的任何分支,该分支定界算法的定界低于该值

    有关更多详细信息,请参见此处:

    (1)您始终可以添加一个约束,使所有低于先验已知边界的解都不可行。我不止一次读到,对于商业解决方案来说,这就足够了,开发人员认为这通常是适得其反的。但也许这对你有帮助(遗憾的是,我无法提供链接;也许谷歌可以在古罗比的邮件列表中找到这个问题)。(3) 根据您取得的成就,您可以调整解算器选项。古罗比选择了MIPFocus。也许你也能做到。例如,为了更好地证明边界,你做了许多切割;更快更好的解决方案的更多启发你是如何找到平凡的下界的?你刚刚放松了完整性约束并解决了(真实的)线性规划吗?@sascha在目标上添加约束没有帮助,但我会研究Gurobi和(3),谢谢。这可能正是我需要的。也请阅读。@RodrigodeAzevedo不,这只是对数据的一些操作,一个比我想解决的更简单的组合问题。但我的目标的非负性已经足够好了:下限的进展需要很长时间才能达到一个微不足道的零,之后不会花太长时间。
            Nodes                                         Cuts/
       Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap
          0     0     -388.6997   178                   -388.6997        9
    *     0+    0                          297.0000     -388.6997        9  230.88%
    *     0+    0                          275.0000     -388.6997        9  241.35%
          0     2     -388.6997   178      275.0000     -387.8106        9  241.02%
    *    20+   20                          185.0000     -307.6363       80  266.29%
    *    30+   30                          135.0000     -307.6363       90  327.88%
    *    30+   30                           94.0000     -307.6363       90  427.27%
    *    60+   60                           90.0000     -307.6363      120  441.82%
    *   160+  126                           77.0000     -307.6363      272  499.53%
    *   200+   93                           12.0000     -307.4836      325     ---
        300   182     -135.2988   107       12.0000     -268.6638      466     ---
       1200   934      -50.6022    85       12.0000     -206.2938     1480     ---
       2197  1755      -96.9612    93       12.0000     -189.8013     2470     ---
       3226  2600       -2.8316    87       12.0000     -179.9669     3480     ---
       4374  3521     -156.2442   110       12.0000     -170.4183     4567     ---
       5490  4421     -128.0871    97       12.0000     -167.3696     5623     ---
       6971  5603     -147.5022   108       12.0000     -162.4180     7055     ---
       8739  6997     -103.5374   113       12.0000     -156.3532     8673     ---