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

arrow
arrow
    全站熱搜

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