微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scipy 通过 dual_annealing 优化给出错误

如何解决Scipy 通过 dual_annealing 优化给出错误

我正在尝试对下面的函数 func 进行全局最小化(通过 scipy dual_annealing),但收到错误消息。请找到下面的代码 -
目标 - 找到 xy 的值以找到 func 的全局最小值
P.S. - 我看不出 lambda 是如何缺少 'y' 作为位置参数的,而它显然存在。我错过了什么?
代码

import numpy as np
from scipy.optimize import dual_annealing
from scipy import integrate
f=lambda p,x,y : P*x**2 + y
func = lambda x,y : np.sum(x*x - 10*np.cos(2*np.pi*x)) + 10*np.size(x)+ np.sqrt(y) + 
integrate.quad(f,4,args=(0.01,8.0,))[0]
bounds=((-5.12,5.12),(-1.12,1.12))
ret = dual_annealing(func,bounds,seed=1234)
print (ret)

错误 -

Traceback (most recent call last):
File "./prog.py",line 7,in <module>
File "/usr/local/lib/python3.7/dist-packages/scipy/optimize/_dual_annealing.py",line 620,in dual_annealing energy_state.reset(func_wrapper,rand_state,x0)
File "/usr/local/lib/python3.7/dist-packages/scipy/optimize/_dual_annealing.py",line 163 in 
reset self.current_energy = func_wrapper.fun(self.current_location)
File "/usr/local/lib/python3.7/dist-packages/scipy/optimize/_dual_annealing.py",line 363,in 
fun
return self.func(x,*self.args)
TypeError: <lambda>() missing 1 required positional argument: 'y'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。