我在CPLEX OPL中實現了兩階段方法。設置聲明中的CPLEX OPL錯誤
我想創建一個包含在我的初始階段獲得的變量的單一值的集合。爲了初始化我的第二階段,我創建了一個getValue(X)來恢復索引在i,j,k中的布爾變量的最優值。後來,在索引「j」和「k」的雙循環內,我試圖沿着i維聲明「X」的單位值的集合「S」。
不過,我不能作出正確的一組聲明......我一直在使用已經嘗試過:
var S = {i | i in I : X[i][j][k] == 1};
int S = {i | i in I : X[i][j][k] == 1};
{int} S = {i | i in I : X[i][j][k] == 1};
但我總是得到錯誤:「非法使用保留關鍵字的」。我知道我的集合聲明不好,但不知道如何聲明它,以便讓我的集合S包含X [i] [j] [k] == 1的I的值。
您能否提供一些幫助? 最好的問候
感謝您的幫助@AlexFleischer!我是CPLEX OPL的新手,你能幫我理解代碼嗎?首先初始化範圍I,J和K(爲什麼只有兩個元素?我多一點,比如nI,nJ和nK)。稍後,將X定義爲一個二進制數,每當i = j = k = 1時取一個整數值,否則爲零。對?但是X值是作爲第一階段模型的最優值給予我的。我怎麼能將你的主張擴展到每維度的nI,nJ和nK元素? – Jacko