我正在使用gurobi-python接口。无论如何将连续变量转换为二进制变量。我只是不想转换
m.addVar(lb=0, ub=1, vtype=GRB.CONTINUOUS)
到
m.addVar(lb=0, ub=1, vtype=GRB.BINARY).
我必须以另一种方式做,而不是使用
m.addVar()
感谢您提供反馈意见。
谢谢。
答案 0 :(得分:2)
在gurobi python API中,您只需在变量上设置vtype属性即可。如果您保存对变量的引用很容易在您的情况下,如果您创建变量
x = m.addVar(lb=0, ub=1, vtype=GRB.CONTINUOUS)
您可以设置它的attribe
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。