首页 > 解决方案 > CPLEX 中不可用的运算符

问题描述

我在 CPLEX 中的代码中有一个错误:

运算符不适用于 dvar int+[][time] + dexpr float。

int i=...; //set of origins
int j=...; //set of destinations
int t=...;//set of time


//parameters
float al[origins][destinations][time]=...;//Proportion of all utilized vehicles that are dispatched

//variables
dvar int+ o[origins][destinations][time];//numbers of vehicles present at i at beginning of t
dvar int+ l[origins][destinations][time];//numbers of rented vehicles dispatched from i to  j during t
dvar int+ e[origins][destinations][time];//numbers of unutilized vehicles dispatched from  i to j during t

subject to{
constraint:
    forall(i in origins, t in time:(t-1) in time) 
     o[i][t]== o[i][t-1]+ sum (j in destinations, t in time ) al[i][j][t] * e[j][i][t]-  l[i][j][t-1];
}

我该如何解决这个错误?

标签: syntax-errorconstraintscplexopl

解决方案


您的决策变量o被定义为具有 3 个索引,但是,在您的约束中,您只使用两个索引。

还有,我认为

sum (j in destinations, t in time ) al[i][j][t] * e[j][i][t]-  l[i][j][t-1];

应该写成(注意额外的括号)

sum (j in destinations, t in time ) (al[i][j][t] * e[j][i][t]-  l[i][j][t-1]);

推荐阅读