如何使用 scipy.optimize.minimize() 指定相对于 objective 函数最小化的参数?

How to specify the parameter an objective function is minimized with respect to, using scipy.optimize.minimize()?

假设我有一个 objective 函数 f(a,b,c)。我想找到最小化它的 b 的值,保持 ac 不变,然后尝试 ac 的不同组合,我不喜欢写 f(a,b,c) 作为 g(b)

from scipy.optimize import minimize

def f(a,b,c):
    return((a+1)**2 + b + c/2)

res = minimize(f, x0=1, args=(a,c,),)
print(res.x)

那么我如何指定 bf(a,b,c) 应该相对于最小化的参数?该参数是否必须表示为 x?或者我应该让 b 作为 f 的第一个参数吗?

the documentation 所述,函数的签名应为 fun(x, *args),其中 x 是最小化的参数。所以你可以在你的原始函数周围使用一个小的包装器:

res = minimize(lambda b, a, c: f(a, b, c), x0=1, args=(a, c))