我如何在 scipy.optimize 中使用带有 "variable" 常量的函数?

How can i use a function with "variable" constants in scipy.optimize?

如何在 scipy.optimize 函数中使用 "variable" 常量?我正在尝试创建一个迭代优化算法,它在每次优化 运行.

后更新 objective 函数中的某些参数

使用一个非常简单的例子来说明我想做什么:

from scipy import optimize as opt

def f(x, R):
    return R * (x[0]**2 + x[1]**3)

R = 0.1 # initial R value
y = []
y.append([2,2]) # initial point

for i in range(0,10):
    y.append(opt.fmin(f, y[i])) # how can i include 'R' in this line??
    R = some_function_to_update_R(R)

如有任何帮助,我们将不胜感激

编辑:
每次优化时重新声明 objective 函数会有帮助吗?所以让循环看起来像这样?

for i in range(0,10):
    def f_temp(x_temp):
        return f(x_temp,R)
    y.append(opt.fmin(f_temp, y[i]))
    R = some_function_to_update_R(R)

或者有更好的方法吗?

fmin 支持可选的 args 参数,表示要传递给您要优化的函数的附加参数的元组:

y.append(opt.fmin(f, y[i], args=(R,)))

这在 documentation for fmin 中有解释;当你想弄清楚如何做某事时,你应该养成查看文档的习惯。