如何在scipy.optimize中使用带有“变量”常量的函数?

时间:2015-07-02 05:09:08

标签: python optimization scipy

如何在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)

还是有更好的方法吗?

1 个答案:

答案 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']; 解释了这一点;当你想弄清楚如何做某事时,你应养成检查文档的习惯。