Gurobi,如何将连续变量更改为二进制变量

2024-04-24 11:59:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用gurobi python接口。是否还有将连续变量转换为二进制变量的方法。我只是不想改变

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

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

我必须用另一种方法,而不是用

m.addVar() 

我很感激你的反馈。

谢谢你。


Tags: 方法二进制continuousbinarylbubgrbgurobi
1条回答
网友
1楼 · 发布于 2024-04-24 11:59:56

在gurobi python API中,您可以简单地设置变量的vtype属性。如果在您的案例中保存对变量的引用,如果您创建一个varaible

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。

相关问题 更多 >