cplex c ++中的绝对值

时间:2013-08-29 14:13:32

标签: 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;  
   }

我用c ++编写代码,我不知道如何实现绝对值。 x是整数值。 我试过cplex.getValue(x [i] [j] [t]) - cplex.getValue(x [i] [j] [t-1])&gt; 0但它无法正常工作。

1 个答案:

答案 0 :(得分:1)

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

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