繁体   English   中英

如何在 Python Gekko 中最大化目标 function?

[英]How to maximize an objective function in Python Gekko?

我试图在我的优化问题中最大化利润。 当我使用 Gekko m.Obj function 时,它总是使利润最小化。

from gekko import GEKKO
m = GEKKO()
profit = m.Var(lb=1,ub=10)
m.Obj(profit**2)
m.solve(disp=False)
print(profit.value)

报告的最佳解决方案是profit=1 如何切换到最大化目标 function 和 Python Gekko 以便最佳解决方案是 Profit profit=10 我的问题有多个目标。 有一些是我想最小化的(公用事业、饲料、运营费用),还有一些是我想最大化的(利润、生产)。

您可以在您的目标 function 上加一个负号以实现最大化。

m.Obj(-profit**2)

从版本 0.2.4 开始,Python GEKKO中提供了两个新函数m.Maximize()m.Minimize() ,如GEKKO 更改日志中所示。 除了公认的答案m.Obj(-profit**2) ,最大化利润的另一个选项是使用:

m.Maximize(profit**2)

如果您拥有以货币单位表示的所有术语,那么您可以最小化和最大化以进行最佳权衡,从而在不使用平方目标的情况下提高整体盈利能力。

m.Maximize(revenue)
m.Minimize(operating_cost)
m.Minimize(feed_cost)
m.Minimize(utility_cost)

Python GEKKO 将所有客观项组合成一个值:

minimize (-revenue + operating_cost + feed_cost + utility_cost)

您可以在使用 m.options.OBJFCNVAL 成功m.solve()后检索最终目标m.options.OBJFCNVAL值。 报告值采用最小化形式。 如果您需要报告最大形式,则可以将目标 function 结果乘以-1

print(-m.options.OBJFCNVAL)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM