0
我正在使用一個Steiner樹的變體,用於使用CPLEX的非有向圖。處理有向圖中的循環的多維決策變量
在我的解決方案,該圖表示爲一個有向圖,以及我的desicion變量(稱爲Yuijv)中的一個控制所述路徑的方向上,所以:
Yuijv = 1,如果邊緣(i,j)在從u到v的方向U→i→j→V的一條路徑中使用。
Yuijv = 0 else。
這裏是Yuijv如何申報(和一些輔助代碼):
//structure
tuple edge {
int i; //node
int j; //node
}
tuple path {
int u;
edge e;
int v;
}
setof(path) paths= {<i,<k,l>,j> | i,j in nodes : i!=j, <k,l> in edges: k!=l};
//decicion variable
dvar boolean Yuijv[paths];
但是當我用它來與這個sintax訪問值:
Yuijv[u,<j,v>,v] = 0;
我得到這個錯誤:
Can't use type int for <u:int,a:<i:int,j:int>,v:int>.
在官方文檔,並且在這個網站中,我找不到這個問題的幫助,而且我真的讚賞了一些,或者可能是建議重新定義這個變量的實現。
感謝您的建議。
sum( in aristas)yuijv [u,,v]> = xi [u] + xi [v] -1; –
忘掉最後一條評論,我無法抹去它。 我上面給出的例子實際上是發明的,所以我可以在這裏發佈它,而不用解釋所有內容,並且使它更易於閱讀。 我的一個實際限制,這有錯誤,它是: _sum(在邊緣)Yuijv [U,,V]> = XI [U] + XI [V] -1; _ 哪裏_xi_是另一變量desicion。 CPLEX優化工具包(ide)突出顯示_Yuijv [u,,v] ._ 中的第一個_u_並顯示提示:「不能對使用int類型, j:int>,v:int>。「 感謝您的回答! –