0

我收到此错误,“CPLEX(默认)无法提取表达式”,但是当我删除对象函数中的日志函数时,错误已解决。我的代码如下:

range k=1..4;
range n=1..4;
//inputs
float p[n][k]=...;
float M=...;
float B=...;


//variables
dvar boolean w[n];
//objective



maximize  (sum(k in  k) log(sum(n in n)(w[n]*exp((-1*p[n][k]))))) ;

//constraints
subject to
{   
  sum (n in n) w[n]<= 2 ;
}

令人困惑;我不知道问题是什么。有谁知道解决方案?

4

2 回答 2

0

您应该为循环使用不同的名称,即sum(k in k)应该将第一个 k 替换为另一个名称,因为您已经将第二个 k 声明为一个范围。例如:sum(l in k)

于 2017-01-26T02:26:09.857 回答
0

事实上,CPLEX 不支持日志,但 CP 可以处理。可以加吗

using CP;

在您的模型开始时?问候

于 2017-01-03T20:26:42.523 回答