Gurobi Python addConstr sum subset from list



我正在尝试创建一个约束,对棋盘的对角线求和。这个想法是每个对角线只能有 1 个,所以变量是二进制的 [0,1]。 有没有办法用列表对变量进行子集化?

我试过了

x.sum(Diag_list)
x.sum([a,b for a,b in Diag_List])

几乎所有其他组合,我都能想到。

如果我这样做x.sum[0,0]我只得到点 (0,0(,但如果你这样做x.sum([0,0])你会得到沿 0 列轴或 0 行轴的任何点。

tuplelist.sum()函数是用于对单个变量进行切片的方便函数。您可以使用 来限制棋盘上车的位置。为了限制女王的位置,你需要使用生成器表达式和quicksum((函数进行更复杂的求和:

m.addConstr(quicksum(x[a,b] for a,b in Diag_List) <= 1)

最新更新