如何最大化 Python Gekko 中的 objective 函数?
How to maximize an objective function in Python Gekko?
我试图在我的优化问题中实现利润最大化。当我使用 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 最大化 objective 函数,以便最优解是 profit=10
?我的问题中有多个 objective。有一些我想最小化(公用事业、饲料 material、运营费用)和其他我想最大化(利润、生产)。
您可以在 objective 函数上加上负号以实现最大化。
m.Obj(-profit**2)
Python GEKKO starting in version 0.2.4 as shown in the GEKKO Change Log 中提供了两个新函数 m.Maximize()
和 m.Minimize()
。除了公认的答案 m.Obj(-profit**2)
之外,另一个最大化利润的选择是使用:
m.Maximize(profit**2)
如果您的所有项都以货币单位表示,那么您可以最小化和最大化以进行最佳权衡以提高整体盈利能力,而无需使用平方 objective。
m.Maximize(revenue)
m.Minimize(operating_cost)
m.Minimize(feed_cost)
m.Minimize(utility_cost)
Python GEKKO 将所有 objective 项合并为一个值:
minimize (-revenue + operating_cost + feed_cost + utility_cost)
您可以在使用 m.options.OBJFCNVAL
成功 m.solve()
后检索最终的 objective 函数值。报告的值是最小化形式。如果你需要报告最大形式,那么你可以将objective函数结果乘以-1
。
print(-m.options.OBJFCNVAL)
我试图在我的优化问题中实现利润最大化。当我使用 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 最大化 objective 函数,以便最优解是 profit=10
?我的问题中有多个 objective。有一些我想最小化(公用事业、饲料 material、运营费用)和其他我想最大化(利润、生产)。
您可以在 objective 函数上加上负号以实现最大化。
m.Obj(-profit**2)
Python GEKKO starting in version 0.2.4 as shown in the GEKKO Change Log 中提供了两个新函数 m.Maximize()
和 m.Minimize()
。除了公认的答案 m.Obj(-profit**2)
之外,另一个最大化利润的选择是使用:
m.Maximize(profit**2)
如果您的所有项都以货币单位表示,那么您可以最小化和最大化以进行最佳权衡以提高整体盈利能力,而无需使用平方 objective。
m.Maximize(revenue)
m.Minimize(operating_cost)
m.Minimize(feed_cost)
m.Minimize(utility_cost)
Python GEKKO 将所有 objective 项合并为一个值:
minimize (-revenue + operating_cost + feed_cost + utility_cost)
您可以在使用 m.options.OBJFCNVAL
成功 m.solve()
后检索最终的 objective 函数值。报告的值是最小化形式。如果你需要报告最大形式,那么你可以将objective函数结果乘以-1
。
print(-m.options.OBJFCNVAL)