簡體   English   中英

Gekko:使用先前定義的變量

[英]Gekko: Using previous defined variables

這是我第一次嘗試使用 Gekko 優化。

我的問題是:

有 100 美元,我必須決定分配多少(百分比)用於購買或儲蓄。 存1美元的利潤是15美元,買入的利潤是12美元。 我必須考慮分配用於儲蓄的金額的 5%,因此結果如下:

x_save: % saving
factor = 0.05 </pre>
save_quantity = min(x_save * 1.05, 100)

我在 Gekko 上寫這篇文章的嘗試如下:

m = GEKKO()
m.options.SOLVER = 3
### Initialize variables
x_save     = m.Var(value=0  , lb=0  , ub=60,  integer=True)

money = 100
saving_return = 15
buying_return = 12
factor = 1.05

save_quantity = m.min2(x_save * factor, 100) * money
buy_quantity = money - save_quantity 

m.Obj(-(save_quantity * saving_return + buy_quantity * buying_return))
m.solve(disp=False)

我有這樣的錯誤 (-(((i7) (15))+(((100-(100-i6))) (12))))

請問,有人可以幫我嗎? 我不知道我是否以正確的方式寫我的問題

save_quantity使用上限約束,而不是m.min2() function。 另外,方程式應該是m.Equation(save_quantity==x_save/100 * factor * money)而不是m.Equation(save_quantity==x_save * factor * money)嗎?

from gekko import GEKKO
m = GEKKO()
m.options.SOLVER = 1

x_save = m.Var(value=0, lb=0, ub=60, integer=True)

money = 100
saving_return = 15
buying_return = 12
factor = 1.05

save_quantity = m.Var(ub=100)
m.Equation(save_quantity==x_save/100 * factor * money)
buy_quantity = money - save_quantity 

m.Maximize(save_quantity * saving_return \
           + buy_quantity * buying_return)
m.solve(disp=False)

print(x_save.value[0])
print(save_quantity.value[0])

解決方案是:

x_save = 60.0
save_quantity = 63.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM