2015-10-20 102 views
0

我試圖在使用ceil()函數的CPLEX中進行約束,但不斷收到「無法提取表達式」錯誤。這是約束:CPLEX:可以在約束中使用ceil()函數嗎?

forall(j in d, k in b, l in r){ 
    ct14: sum(l in r)(ceil((sum(k in b)X1[j][k][l])/3)); <= 10; 
    } 

如果外界評價爲一個腳本,CPLEX可以評估左邊項,但作爲一個約束中,當無法做到這一點。我找不到使用ceil()的約束條件的任何示例,但我認爲這是可行的,而且我的實現有問題。

任何幫助糾正這個錯誤將是偉大的!

回答

1

不,我不認爲這會奏效。您只能在約束中使用一些有限的表達式。您將不得不重構模型以使用其他變量來捕獲每個變量子集的最大值。然後在這些額外的變量上寫下你的約束。

+0

你說得對,爲了做到這一點,我不得不重組模型。謝謝蒂姆! –

相關問題