0

我必须在一些线性问题的成本函数中使用绝对值。像这样困扰我的部分

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;  
   }

我正在用 C++ 编写代码,但我不知道如何实现绝对值。x 是整数值。我已经尝试使用 cplex.getValue(x[i][j][t])-cplex.getValue(x[i][j][t-1]) >0 但它无法工作。

4

1 回答 1

1

由于绝对值函数是非线性的(原因在这个数学问题中解释),您需要首先线性化目标函数。

基本上,您需要用一个新变量来表示该总和的每个绝对值项,并优化这些新变量的总和(受一些额外的约束)。该方法在Thomas S. Ferguson的线性规划教科书第 7.2 节中有详细说明。

于 2013-08-31T22:40:04.737 回答