电弧容量限制

电弧容量限制

我们从一组简单的约束开始。电弧上的流量变量之和必须小于或等于该电弧的容量:

#弧容量约束m.addConstrs((流量总和('*',i,j)<=弧中i,j的容量[i,j],“上限”)

请注意,这条语句使用了本节前面介绍的几个概念。

这里使用的第一个概念是总和方法论,用于在中的变量子集上创建线性表达式图普莱迪克. 特别是,它是对所有商品(包括'*'在第一个字段中)与一对城市之间的边关联J.

这里使用的第二个概念是生成器表达式,它迭代网络中的所有弧。具体来说,声明的这一部分。。。

对于i,j,在弧中
指示我们正在迭代中的每条边. 在每次迭代中,J将使用中元组的相应值填充. 在特定的迭代中,流量总和('*',i,j)将使用这些特定值计算,如下所示容量[i,j].

需要注意的第三点是,我们将结果作为参数传递给addConstrs. 此方法将创建一组Gurobi约束,生成器表达式的每次迭代一个约束。

最后要注意的是,最后一个参数为约束名称提供了基础。这个addConstrs方法将自动为每个约束附加相应的索引。因此,例如,限制从丹佛到波士顿流量的约束的名称为cap[丹佛,波士顿].

请注意,如果您喜欢自己进行循环,则可以通过以下循环获得等效的行为:

对于弧中的i,j:m.addConstr(总和(商品中h的流量[h,i,j])<=容量[i,j],“上限[%s,%s]””%(i,j))