2017-08-25 32 views
0

GAMS:我想我有一個非常簡單的問題,但是我被卡住了,想知道是否有人可以在這裏幫忙。GAMS:從解決方案中檢索信息

我的模型的簡化版本是這樣的:

set(i,t) ; 
    parameter price 
       D; 
    variable p(i,t) 
      e(i,t); 
    equations 
      Equation1 
obj.. C=sum((i,t), p(i,t)*price); 
Model file /all/ ; 
Solve file minimizing C using MIP ; 
Display C.l; 

P(1,t)和E(I,T)的關係:

Equation1 .. e(i,t)=e=e(i,t-1)+p(i,t)*D 

現在我想要檢索信息從解決方案:讓我說我想知道在什麼te(我,噸)有一個特定的價值,例如 - > e(i,t)= x(i)或以其他方式表述e(i,t = TD)= x(i)找到TD,其中x(i)因此取決於i。有誰知道我可以如何寫入我的GAM模型?要明確我不想改變我的解決方案和我運行的模型;我只想從給出的解決方案中檢索這些信息。

到目前爲止,我嘗試了一些事情,沒有任何工作。我認爲這一定很簡單,任何人都可以幫忙嗎?謝謝!

回答

1

嘗試這樣:

set i /i1*i10/ 
    t /t1*t10/; 
variable e(i,t); 

*some random dummy "solution" 
e.l(i,t) = uniformInt(1,10); 

set find5(i,t) 'find all combinations of i and t for which e.l=5'; 

find5(i,t)$(e.l(i,t)=5) = yes; 

display e.l,find5; 

希望幫助, 盧茨

+0

感謝你的快速反應和這個工作!我已經嘗試了幾次,以便通過有序集合來實現這一點,但是您的響應最終顯示了正確的方式! – ima

+0

只是最後一個問題:在GDX文件中,t的數字出現在答案的旁邊。但是,當顯示或卸載它時,我最終會看到帶有yes和empty單元格的整個圖表。有沒有辦法只導出T的值而不是整個圖? – ima

+0

T是我的例子中的一個集合,所以它實際上沒有任何價值。所以我不完全確定你的意思是什麼「在GDX文件中t的數量出現在答案旁邊」。但是如果一組中只有一個元素並想從中得到一個數字,那麼可能需要檢查這裏的ord運算符: set tt/t1 * t10/ t(tt)/ t5 /; scalar selectedT; (t(tt),ord(tt));其中, display selectedT; – Lutz