使用 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]"。