如何在Gurobi Python模型中获取各可行解的变量属性?
Gurobi获取解池中不同可行解的变量值
你的代码问题在于获取变量值时使用了X属性——这个属性默认返回当前最优解的变量值,和你设置的SolutionNumber无关。要获取解池中指定编号的可行解的变量值,需要改用Xn属性。
修正后的代码如下:
nSolutions = model.SolCount for e in range(nSolutions): model.setParam(GRB.Param.SolutionNumber, e) obj_val = model.PoolObjVal # 使用Xn属性获取对应解编号的变量y的值 y_value = model.getAttr('Xn', y) # 按需输出或保存结果 print(f"解{e} | 目标值: {obj_val} | 变量y的值: {y_value}")
额外注意事项:
- 求解前需确保解池容量足够存储你需要的解,可通过
model.setParam(GRB.Param.PoolSolutions, 5)设置(数值按需调整)。 PoolObjVal的使用是正确的,它会返回当前SolutionNumber对应的目标值。- 若要获取所有变量的解,可直接调用
model.getAttr('Xn'),无需指定单个变量,返回结果为变量到对应值的字典。
内容的提问来源于stack exchange,提问作者azin rashidi pour
相关产品推荐
相关产品推荐

