获取所有值,而 Gurobi 在 Python 中只有一个可行解
Obtain all value while Gurobi has only one feasible solutions in Python
Gurobi只有一个可行解,如何获取变量的所有值?
例如:
最佳 objective 是 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
请告诉我如何得到你所有的value.Thank!
假设您想枚举一个 MIP 的所有最优解,您可以借助 PoolGap
、PoolSolutions
和 PoolSearchMode
参数来完成。
PoolSolutions
参数决定了求解 MIP 时存储了多少可行解。
PoolGap
参数确定所有存储解决方案的允许间隙。将其设置为 0.0 以仅允许解决方案池中的最佳解决方案。
PoolSearchMode
参数设置MIP树搜索的搜索模式。将其设置为 2
以搜索 n
最佳解决方案,其中 n
只是为 PoolSolutions
. 设置的值
这是一个最小的例子:
import gurobipy as gp
coins = [1, 2, 5, 10, 20, 50, 100, 200]
m = gp.Model()
x = m.addVars(8, vtype='I', name="x")
m.addConstr(sum(coins[i]*x[i] for i in range(8)) == 200)
# Parameters
m.Params.PoolSearchMode = 2
m.Params.PoolSolutions = 10**8
m.Params.PoolGap = 0.0
# Optimize
m.optimize()
# Iterate over all found solutions
for k in range(m.SolCount):
m.Params.SolutionNumber = k
print([var.Xn for var in m.getVars()])
Gurobi只有一个可行解,如何获取变量的所有值? 例如: 最佳 objective 是 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
请告诉我如何得到你所有的value.Thank!
假设您想枚举一个 MIP 的所有最优解,您可以借助 PoolGap
、PoolSolutions
和 PoolSearchMode
参数来完成。
PoolSolutions
参数决定了求解 MIP 时存储了多少可行解。PoolGap
参数确定所有存储解决方案的允许间隙。将其设置为 0.0 以仅允许解决方案池中的最佳解决方案。PoolSearchMode
参数设置MIP树搜索的搜索模式。将其设置为2
以搜索n
最佳解决方案,其中n
只是为PoolSolutions
. 设置的值
这是一个最小的例子:
import gurobipy as gp
coins = [1, 2, 5, 10, 20, 50, 100, 200]
m = gp.Model()
x = m.addVars(8, vtype='I', name="x")
m.addConstr(sum(coins[i]*x[i] for i in range(8)) == 200)
# Parameters
m.Params.PoolSearchMode = 2
m.Params.PoolSolutions = 10**8
m.Params.PoolGap = 0.0
# Optimize
m.optimize()
# Iterate over all found solutions
for k in range(m.SolCount):
m.Params.SolutionNumber = k
print([var.Xn for var in m.getVars()])