Visual c++ 绝对值,单位为cplex c++;

Visual c++ 绝对值,单位为cplex c++;,visual-c++,absolute,cplex,Visual C++,Absolute,Cplex,我必须在一些线性问题的代价函数中使用绝对值。 让我如此烦恼的部分 for (t=0;t<T;t++) for (i=0;i<I; i++){ for (j=1;j<J; j++) Sum += |x[i][j][t]-x[i][j][t-1]|*L/2; Sum += |x[i][0][t]-x[i][0][t-1]|*V/2; } 对于(t=0;t由于绝对值函数是非线性的(原因已在讨论中解释),您需要首先将目标函数

我必须在一些线性问题的代价函数中使用绝对值。 让我如此烦恼的部分

for (t=0;t<T;t++)  
   for (i=0;i<I; i++){  
     for (j=1;j<J; j++) 
       Sum += |x[i][j][t]-x[i][j][t-1]|*L/2;
     Sum += |x[i][0][t]-x[i][0][t-1]|*V/2;  
   }

对于(t=0;t由于绝对值函数是非线性的(原因已在讨论中解释),您需要首先将目标函数线性化


基本上,您需要用一个新变量表示该总和的每个绝对值项,并优化这些新变量的总和(受一些附加约束)。托马斯·S·弗格森(Thomas S.Ferguson)教科书的第7.2节详细解释了该方法。

x的类型是什么?此外,您的代码非常糟糕-当t从0开始时,您试图访问索引t-1。