2017-02-14 91 views
2

我試圖找到最佳行爲以實現以下公式的最大回報。程序正在運行,但輸出與輸入相同,這意味着代碼有問題。如何在約束中定義if語句 - GAMS優化

即時通訊嘗試定義價格彈性,我需要在高峯期和低峯時段找到最優價格關稅,這是定義特定的一天中的特定時段。高峯期是16-23點,低峯期是休息時間。我的問題是可以在約束中定義一個if語句嗎? (hdd)> 15()和(ord(hpd)< 23))。 (hdd)$((ord(hpd)< 16)和(ord(hpd)> 22)).. P_H(hpd)= E = PLP;

所有最好的,

回答

0

你幾乎在那裏。如果(美元符號基本上是if),則不需要編寫,而只需要條件本身,如第二個等式中所示。第二個公式應該是而不是

小忌諱,我嘗試使用.VAL的代替ORD(),如ORD變得混亂時,集合不從1開始的Val給你一組元素的數值,假設設置的元素是數字。

Con4(hpd)$(hpd.val>=16 and hpd.val<=22).. P_H(hpd) =E= PHP; 
Con5(hpd)$(hpd.val<16 or hpd.val>22).. P_H(hpd) =E= PLP;