如何在Gurobi中使用约束中的“or”

2024-09-28 13:09:32 发布

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

我使用的是Gurobi,在代码的一部分,我定义了一个可以接受两个不同值的约束。例如1或2。在打击是我实现的一个半代码:

m = Model("mip1")
Edges = tuplelist([(1,2),(1,3),(3,4),(3,5),(3,6),(5,6),(6,7),
                   (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),
                   (1,8),(2,8),(3,8),(4,8),(5,8),(6,8),(7,8),
                   (8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),
                   ])

x = m.addVars(Edges, lb=0.0, ub=1.0, name = "x")

m.setObjective(quicksum(x[w,s] for w,s in Edges), GRB.MAXIMIZE)

m.addConstr(quicksum(x.select(8,'*')) ==1 or 2 , "constraint1")

但我不知道在古罗比的约束中如何定义“或”!在


Tags: 代码nameinformodel定义lbedges
1条回答
网友
1楼 · 发布于 2024-09-28 13:09:32

让我们添加两个二进制变量y_0和y_1:

y = m.addVars(2, vtype=GRB.BINARY, name="y")

现在可以添加两个indicator constraints

^{pr2}$

接下来添加约束

m.addConstr(y[0] + y[1] == 1)

这样可以确保这两个变量中只有一个可以是1,因此总和可以是2或3。在

相关问题 更多 >

    热门问题