如何在scipy.optimize函数中使用“变量”常量?我正在尝试创建一个迭代优化算法,在每次优化运行后更新目标函数中的某些参数。
使用我想做的一个非常简单的例子:
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)
任何帮助将不胜感激
修改
每次优化时重新声明目标函数会有帮助吗?所以让循环看起来像这样吗?
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)
还是有更好的方法吗?
答案 0 :(得分:2)
fmin
支持一个可选的args
参数,表示要传递给您尝试优化的函数的其他参数的元组:
y.append(opt.fmin(f, y[i], args=(R,)))
fmin
为$filters['campaign_id'] = $campaign_id; // string value of campaign id
$campaign = $api->campaigns($filters);
$web_id = $campaign['data'][0]['web_id'];
解释了这一点;当你想弄清楚如何做某事时,你应养成检查文档的习惯。