最近在寫全球漁業經濟模型的程式時,一直碰到這個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的朋友們有所幫助。

創作者介紹
創作者 鴨子的德意志奇幻旅程 的頭像
鴨子

鴨子的德意志奇幻旅程

鴨子 發表在 痞客邦 留言(0) 人氣( 63 )