最近在寫全球漁業經濟模型的程式時,一直碰到這個error,但是網路上怎麼都找不到答案,所以在此分享一下自己的小筆記。
在gams中,可以設定商品的set,我的set則為我的所有魚種,如:
set FISH /bigfish, midfish, smallfish/;
然後我再設定另一個set,但是不標示這個set中的商品,
set SEA(FISH);
如此一來我們可以稱set FISH為靜態的set,而set SEA在我們使用Yes/No statement時就可以稱為動態的set。
SEA(FISH)=Yes; 時,代表SEA這個set中就包含了FISH這個set中的所有商品,若欲排除其中一項商品時,可以寫作:
SEA("bigfish")=NO;
接著就可以使用只包含midfish跟smallfish的SEA在接下來的參數、變數與方程式中,
但是若是出現了像是我這兩天一直碰到的error $188 Assigning to this set i not allowed. This set have been used in a domain definiftion or is a predefined/onlyread set。
代表你在做YES/NO這個設定之前,不小心在哪裡使用SEA在前面的參數、變數或方程式的domain中,必須要改成使用FISH或其他的subset。
因為『動態的set』是不可以當作domain使用的。
希望對在使用GAMS language的朋友們有所幫助。
全站熱搜
留言列表