使用 scipy.optimize 最大化 objective 函数
Maximize objective function using scipy.optimize
scipy.optimize 模块有 scipy.optimize.minimize 允许找到最小化 objective 函数的值。但是没有scipy.optimize.maximize。为什么?如何使用 SciPy 解决最大化问题?
为了最大化 f
,我们最小化 -f
。一个小例子,最大化正弦函数 f
:
from scipy.optimize import minimize
import numpy as np
f = lambda x: np.sin(x) # function to be MAXIMIZED
res = minimize(lambda x: -f(x), 0)
print('Maximum {} attained at {}'.format(-res.fun, res.x))
打印 "Maximum 1.0 attained at [1.57079632]"。
scipy.optimize 模块有 scipy.optimize.minimize 允许找到最小化 objective 函数的值。但是没有scipy.optimize.maximize。为什么?如何使用 SciPy 解决最大化问题?
为了最大化 f
,我们最小化 -f
。一个小例子,最大化正弦函数 f
:
from scipy.optimize import minimize
import numpy as np
f = lambda x: np.sin(x) # function to be MAXIMIZED
res = minimize(lambda x: -f(x), 0)
print('Maximum {} attained at {}'.format(-res.fun, res.x))
打印 "Maximum 1.0 attained at [1.57079632]"。