首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python Gekko中最大化目标函数?

如何在Python Gekko中最大化目标函数?
EN

Stack Overflow用户
提问于 2019-10-25 23:26:45
回答 2查看 1.4K关注 0票数 2

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

代码语言:javascript
运行
复制
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。如何使用Python Gekko将目标函数最大化,从而使最优解为profit=10?我的问题有多个目标。有一些我想要最小化(公用事业,饲料材料,运营费用),而另一些我想最大化(利润,生产)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-26 01:01:36

你可以在你的目标函数上加一个负号来最大化。

代码语言:javascript
运行
复制
m.Obj(-profit**2)
票数 4
EN

Stack Overflow用户

发布于 2019-10-28 21:45:32

Python GEKKO starting in version 0.2.4中提供了两个新函数m.Maximize()m.Minimize(),如GEKKO Change Log中所示。除了接受的答案m.Obj(-profit**2)之外,另一个最大化利润的选项是使用:

代码语言:javascript
运行
复制
m.Maximize(profit**2)

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

代码语言:javascript
运行
复制
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()之后,您可以检索最终的目标函数值。报告的值是最小化形式的。如果您需要报告最大值,则可以将目标函数结果乘以-1

代码语言:javascript
运行
复制
print(-m.options.OBJFCNVAL)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58561466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档