[英]Find the value of a variable that maximizes a multivariable function
我有这样的功能:
def objective(x, y, z, q):
theta1 = f(x, y)
theta2 = f(x, z)
rho = q - (theta1 + theta2)
return rho * x
我想找到最大化目标函数的 x 值,知道 x 必须在两个边界 b1、b2 之间。
我的第一个猜测是从 b1 迭代到 b2 以找到 x 的哪个值最大化目标函数,但我想有更有效的方法可以做到这一点。
在这种情况下,找到使目标函数最大化的 x 值的最有效方法是什么?
我知道我可以使用 scipy.optimize.maximize,但我找不到一种方法来使用它来最大化关于 x 的目标函数。
假设x
是一个标量变量并且您已经知道y
、 z
和q
的值,您可以这样做:
from scipy.optimize import minimize
# bound: b1 <= x <= b2
bounds = [(b1, b2)]
# given values for y, q, and z
y0 = 1.0
z0 = 1.0
q0 = 1.0
# (feasible) initial guess
x0 = (b2 - b1) / 2.0
res = minimize(lambda x: -1.0*objective(x, y0, z0, q0), x0=x0, bounds=bounds)
请注意,最大化函数 obj(x) 等效于最小化 -1.0*obj(x)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.