获取所有值,而Gurobi在Python中只有一个可行的解决方案

获取所有值,而Gurobi在Python中只有一个可行的解决方案,python,gurobi,Python,Gurobi,当Gurobi只有一个可行的解决方案时,如何获得变量的所有值? 例如: 最佳目标是5 有四个值可以得出可行的解决方案,如下所示。 [1, 2, 1, 1], [2, 1, 1, 1], [2, 1, 2, 0], [3, 0, 2, 0] 但Gurobi只显示一个值,如下所示: x[0]:3.0 x[1]:0.0 x[2]:2.0 x[3]:0.0 请告诉我如何获得所有的价值。非常感谢 假设要枚举MIP的所有最佳解决方案,可以借助PoolGap、PoolSolutions和PoolSearch

当Gurobi只有一个可行的解决方案时,如何获得变量的所有值? 例如: 最佳目标是5 有四个值可以得出可行的解决方案,如下所示。 [1, 2, 1, 1], [2, 1, 1, 1], [2, 1, 2, 0], [3, 0, 2, 0] 但Gurobi只显示一个值,如下所示:

x[0]:3.0
x[1]:0.0
x[2]:2.0
x[3]:0.0

请告诉我如何获得所有的价值。非常感谢

假设要枚举MIP的所有最佳解决方案,可以借助
PoolGap
PoolSolutions
PoolSearchMode
参数来完成

  • PoolSolutions
    参数确定在求解MIP时存储了多少可行的解决方案
  • PoolGap
    参数确定所有存储溶液的允许间隙。将其设置为0.0以仅允许在解决方案池中使用最佳解决方案
  • PoolSearchMode
    参数设置MIP树搜索的搜索模式。将其设置为
    2
    以搜索
    n
    最佳解决方案,其中
    n
    只是为
    PoolSolutions
    设置的值
下面是一个简单的例子:

将gurobipy导入为gp
硬币=[1,2,5,10,20,50,100,200]
m=gp.Model()
x=m.addVars(8,vtype='I',name=“x”)
m、 addConstr(总和(硬币[i]*x[i]表示范围(8)内的i)==200)
#参数
m、 Params.PoolSearchMode=2
m、 参数PoolSolutions=10**8
m、 Params.PoolGap=0.0
#优化
m、 优化()
#迭代所有找到的解决方案
对于范围内的k(m.SolCount):
m、 参数SolutionNumber=k
打印([var.Xn表示m.getVars()中的var]