我很难设法如何建模约束。我正在尝试解决运输问题,其中一个限制因素如下:
t[s[i]] >= t[i] + travelTime (i, s[i])
其中t是访问节点i的时间,s是节点i的后继变量(t和s是变量)。
我还有旅行时间矩阵:
int time = travelTime(int origin, int destination)
定义节点对之间的传播时间。 我已将约束定义如下:
for (int i : set){
IloIntExpr expr = model.linearIntExpr();
expr = model.sum(model.element(t, s[i]), model.prod(t[i], -1));
IloIntExpr next = model.element(range(0, nbNodes), s[i]);
model.addGe(expr, travelTime(i, next));
}
***范围函数生成[0,1, ... ,nbNodes]
和[size(s) = size(t) = nbNodes]
现在问题是next
正在返回IloIntExpr
,我希望int
将其传递给travelTime(int, int)
,而且IloIntExpr
也不会施法者int
。
什么可以解决我的问题。
我非常感谢这方面的任何帮助。