我如何在 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
中有解释;当你想弄清楚如何做某事时,你应该养成查看文档的习惯。
如何在 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
中有解释;当你想弄清楚如何做某事时,你应该养成查看文档的习惯。