我正在尝试最小化一个函数(以下为w.r.t参数“ a”和“ b”),该函数是根据整数定义的。为此,我使用了Scipy的最小化方法。同样,被积数也将函数作为输入。我的成本函数如下所示:
def cost_func(a,b,func):
return dblquad(integrand,0,C,lambda x1:0,lambda x2:C,args=(func,a,b))[0]
C是一些全局变量。
这里的被积是由
定义的def integrand(x1,x2,func,a,b):
return func(x1,x2,a,b)
函数'integrand'和'cost_func'是理智的(因为它们给出了数字作为输出)。现在到最小化部分:
x0 = [5,5]
result = minimize(cost_func,x0,args=(a,b,func),method=('Nelder-Mead'))
注意:最小化中的'func'可以是任意数量的给定功能集,例如
def func1(x1,x2,a,b):
return some real number
当我调用最小化(对于某些函数)时,我得到了
Traceback (most recent call last):
File "./update.py", line 54, in <module>
minimize(cost_func,x0,args=(a,b,func),method=('Nelder-Mead'))
NameError: name 'a' is not defined
我猜测我没有以正确的方式使用变量,这就是导致我出现问题的原因。我以为这就是最小化失败的原因吗?在这种情况下,当您将一些复杂的参数结构用于多个函数时,是否有良好的经验法则?
非常感谢。