2024-04-24 11:59:56 发布
网友
我正在使用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属性。如果在您的案例中保存对变量的引用,如果您创建一个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。
在gurobi python API中,您可以简单地设置变量的vtype属性。如果在您的案例中保存对变量的引用,如果您创建一个varaible
你可以设置它是attribe
您可以在这个较长的示例中看到它的工作原理。
在第一个解中,x是连续的,因此x的最佳值为0.75。在第二个解中,x是二进制的,因此x的最佳值是1.0。
相关问题 更多 >
编程相关推荐