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。