我收到此错误,“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 ;
}
令人困惑;我不知道问题是什么。有谁知道解决方案?
答案 0 :(得分:0)
CPLEX不支持日志,但CP可以处理。 你能加
吗?using CP;
在模特的开头? 问候
答案 1 :(得分:0)
你应该有不同的循环名称,即sum(k in k)
应该用另一个名称替换第一个k,因为你已经将第二个k声明为一个范围。例如:sum(l in k)