我正在使用gurobi-python界面。无论如何,有没有将连续变量转换为二进制变量。我只是不想转换

m.addVar(lb=0, ub=1, vtype=GRB.CONTINUOUS)




m.addVar(lb=0, ub=1, vtype=GRB.BINARY).


我必须用另一种方式做,不要使用

m.addVar()


感谢您的宝贵意见。

谢谢。

最佳答案

在gurobi python API中,您可以简单地在变量上设置vtype属性。保存对变量的引用很容易如果您创建变量

x = m.addVar(lb=0, ub=1, vtype=GRB.CONTINUOUS)


你可以设置它的属性

x.vtype = GRB.BINARY


您可以在这个更长的示例中看到它的作用。

import gurobipy  as grb
GRB = grb.GRB
m = grb.Model()

x = m.addVar(0.0, 1.0, vtype=GRB.CONTINUOUS)
y = m.addVar(0.0, 1.0, vtype=GRB.CONTINUOUS)
m.update()
# add constraints so that y >= |x - 0.75|
m.addConstr(y >= x-0.75)
m.addConstr(y >= 0.75 - x)
m.setObjective(y)
m.update()
m.optimize()
print x.X
# 0.75
x.vtype=GRB.BINARY
m.optimize()
print x.X
# 1.0


在第一个求解中,x是连续的,因此x的最佳值为0.75。在第二个求解中,x为二进制,因此x的最佳值为1.0。

10-06 01:56