我试图在我的优化问题中实现利润最大化。当我使用Gekko m.Obj
函数时,它总是最小化利润。
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
?我的问题有多个目标。有一些我想要最小化(公用事业,饲料材料,运营费用),而另一些我想最大化(利润,生产)。
发布于 2019-10-26 01:01:36
你可以在你的目标函数上加一个负号来最大化。
m.Obj(-profit**2)
发布于 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)
之外,另一个最大化利润的选项是使用:
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()
之后,您可以检索最终的目标函数值。报告的值是最小化形式的。如果您需要报告最大值,则可以将目标函数结果乘以-1
。
print(-m.options.OBJFCNVAL)
https://stackoverflow.com/questions/58561466
复制相似问题