Indexing 在索引中使用决策变量时,Q1不是凸误差

Indexing 在索引中使用决策变量时,Q1不是凸误差,indexing,cplex,nonlinear-optimization,non-convex,Indexing,Cplex,Nonlinear Optimization,Non Convex,在我的模型中,首先我计算船舶卸货的港口数量 forall(i in 1..N,j in k+1..N) z[i][j]==sum(z in k..N-1)z*dr[i][j][z]; 然后我想用这个数字作为“t”的索引,形式为 t[z[i][j]] 我面临着 错误:5002 q1不是凸的 如何解决这个问题? 嗨,Hessam,欢迎来到Stack Overflow。我对你的问题做了一些修改,使之更具可读性,希望能得到更多的关注。我在标题中加入了这个错误,所以人们知道问题的真正核心是什么。我已

在我的模型中,首先我计算船舶卸货的港口数量

forall(i in 1..N,j in k+1..N)
z[i][j]==sum(z in k..N-1)z*dr[i][j][z];
然后我想用这个数字作为“t”的索引,形式为

t[z[i][j]] 
我面临着

错误:5002 q1不是凸的

如何解决这个问题?


嗨,Hessam,欢迎来到Stack Overflow。我对你的问题做了一些修改,使之更具可读性,希望能得到更多的关注。我在标题中加入了这个错误,所以人们知道问题的真正核心是什么。我已经对你的问题进行了格式化,使代码和错误信息更加突出,使其更具可读性。框顶部有格式按钮,您可以在其中键入问题,最好使用这些按钮使其可读并突出关键信息。您不能在Cplex中将变量用作索引。这只有在使用CP解算器时才允许。谢谢大家,我添加了“使用CP”,它可以解决我的问题。非常感谢@AlexFleischer先生。这将是一个有效的程序。
range r=1..5;

float value[r]=[2,3,4.5,1,0];
dvar int i in 1..5;

maximize sum(k in r) value[k]*(k==i);
subject to
{

}

execute
{
writeln("i=",i);
}