找到多种解决方案

找到多种解决方案

默认情况下,Gurobi MIP求解器将尝试为您的模型手机万博登录找到一个已证明的最佳解决方案。在此过程中,它通常会找到多个次优解决方案,稍后可以检索这些解决方案(使用SolutionNumber参数,XnPoolObjVal属性)。然而,这些解决方案并不是以系统的方式产生的。所找到的解决方案集取决于求解器通过MIP搜索所采用的确切路径。手机万博登录您可以一次性解决一个MIP模型,获得一组有趣的次优解决方案,然后使用不同的参数设置再次解决相同的问题,并只找到一个或一组不同的次优解决方案。

如果您想对如何找到和保留解决方案有更多的控制,Gurobi优化器有许多可用的参数。第一个也是最简单的一个是PoolSolutions,它控制解决方案池的大小。改变这个参数不会影响找到的解决方案的数量——它只是决定保留这些解决方案中的多少。

你可以使用PoolSearchMode参数来控制用于寻找多个解的方法。在其默认设置(0)中,MIP搜索只是为了找到一个最优解决方案。将参数设置为1会导致MIP搜索花费额外的精力来寻找更多的解决方案,但是是以一种非系统的方式,并且不能保证这些解决方案的质量:您将得到更多的解决方案,但不一定是最好的解决方案。将参数设置为2将导致MIP系统地搜索n最好的解决方案。对于这两个非默认设置,PoolSolutions参数为要查找的解的数量设置目标。

如果您只对与找到的最佳解决方案之间存在一定差距的解决方案感兴趣,则可以设置PoolGap参数。不在指定间隙内的解决方案将被丢弃。

获得一个最优优化使用时的返回状态PoolSearchMode = 2表明MIP求解器成功地找到了所需的最佳解的数量手机万博登录,或者证明了模型没有那么多不同的可行解。如果求解器提前手机万博登录终止(例如,由于时间限制),您可以使用PoolObjBound属性来评估所找到的解决方案的质量。在本节后面的部分,您可以找到关于如何做到这一点的更多细节。

在寻找多个解决方案时,需要注意一些微妙之处。例如,找到< span > < / span > n < span >美元< / span >当您具有非零的最佳容忍度时,最佳解决方案可能会有点模棱两可。此外,当模型有连续变量时,是否应该认为两个解不同也不是很明显。我们将在本节后面讨论这些问题。