繁体   English   中英

找到使多变量函数最大化的变量值

[英]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是一个标量变量并且您已经知道yzq的值,您可以这样做:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM