2017-04-07 49 views
0

所以我有以下設置:GAMS定義+ 1

i 1,2,3,...,I 
j 1,2,3,...,J 
k 1,2,3,...,K with k´2,3,4,...,K 

我定義我的設置和我的參數通過GDX-進口通過Excel工作表,所以我可以改變設置以及動態參數,以便用線性規劃模型進行計算研究。

如何用k'定義這種類型的集合,以便像d_kk'(從k到k'的距離)和t_jkk'這樣的參數工作?

請記住,解決方案必須在每個指令的大範圍內工作至少1,...,100。

非常感謝。 乾杯, SAM

+1

請編輯您的問題以顯示[迄今爲止的代碼](http://whathaveyoutried.com)。你至少應該包括一個你遇到問題的代碼大綱(但最好是[mcve]),然後我們可以嘗試幫助解決具體問題。你還應該閱讀[問]。 –

+0

這個問題有點難以閱讀。我認爲你從Excel中得到的是一個集合'k',現在你想要一個集合'k1',它有一個較少的元素(第一個元素被丟棄)。這可以通過set k1(k)來完成。 k1(k)$(ord(k)> 1)= yes';總是用'display k1;'來檢查。由於'k1'是一個動態集合,所以記得聲明'參數d(k,k)'而不是'參數d(k,k1)'。 (在引用'd'時可以使用'd(k,k1)')。 –

回答

0

聽起來像你想要計算集合k中不同點之間的距離。使用別名集和多維集:

Set i /1*I/ 
    j /1*J/ 
    k /1*K/ 
    kk(k,k); 
alias(ka,k); 

kk(k,ka)$(ord(k)<ord(ka))=yes; 

parameter 
    x(k) 'x-koordinate' 
    y(k) 'y-koordinate' 
    d(k,k) 'Distance from k to ka'; 

x(k)=uniform(0,1); 
y(k)=uniform(0,1); 

d(k,ka)$kk(k,ka)=sqrt((x(k)-x(ka))^2+(y(k)-y(ka))^2);