2016-12-28 682 views
0

我得到此錯誤,「CPLEX(默認)無法提取表達式」,但是當我刪除對象函數中的日誌函數時,錯誤得到解決。我的代碼如下:資源t路徑t位置類型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

CPLEX僅限於線性表達式以及一些選定的非線性表達式,如quadratics。我不認爲'log'是受支持的。 – TimChippingtonDerrick

回答

0

事實上,CPLEX不支持日誌,但CP可以處理該日誌。 您能否加入

using CP; 

在模型的開始? 關於

0

您應該爲循環指定不同的名稱,即sum(k in k)應該用另一個名稱替換第一個k,因爲您已經將第二個k聲明爲範圍。例如:sum(l in k)

相關問題