我发现以下示例有关如何对约束进行编码:“对于I中的所有i,所有具有J的j元素的a_ {i,j} * x_ {i,j}的总和<= 5”。 (对不起,我不知道如何用代码正确地编写此代码,这是第一次尝试):
\sum{a_{i,j}*x_{i,j}} <= 5
在Gurobi python中:
m.addConstr(x.prod(a,i,'*') <=5 for i in I)
如果有人可以向我解释这一表达,我将不胜感激!
这是我的理解:
m通常用作存储模型的变量,在程序中,我们将从m = Model()
开始创建一个空模型。
我们用addConstr()
添加一个约束,并且x必须作为变量引入。 x.prod()
方法创建其参数的线性组合。但是,我不知道如何解释这三个参数a, i, '*'
i是for循环的一部分,它从1开始,然后递增1,直到到达I的最后一个元素。 “ *”用作通配符,将仅处理任何元素。但是a, i, '*'
的组合告诉我什么?
答案 0 :(得分:0)
a是一个参数,具有两个索引i,j。 '*'表示所有j。使用'*',就不需要j的“ for循环”,i则不需要“ for循环”。您可以在带有两个“ for循环”的slayt上以显式形式看到它。