如何解决从Scipy.optimize中最小化,其中函数具有两个输入向量
我正在学习python和scipy。在我的自学过程中,我尝试使用scipy.optimize
来最小化以下功能> def opti_min(sr1_opt,sr3_opt):
> op = np.sqrt(np.sum(sr1_opt)+np.sum(sr3_opt))
> return op
opt = minimize(opti_min,strip,method = 'nelder-mead')
sr1_opt是一个列表:- [6.536055555554877e-07, 6.668262226847675e-07, 4.935691987513913e-07, 6.422222222223324e-07, 7.493249219562971e-07, 7.812500000001055e-07, 8.513020291362223e-07]
sr3_opt也是一个列表:- [4.127111433753003e-06,4.419413067362789e-06,4.721714700973233e-06]
strip也是用于初始值的列表: 条= [0.0025,0.005]
sr1_opt值计算为(实际值-strip [0])** 2和 列表中每个条目的sr3_opt值计算为(实际值-strip [1])** 2。
因此,所需的输出是将最小化变量“ op”的条带值
我得到的错误是: TypeError:opti_min()缺少1个必需的位置参数:“ sr3_opt”
我想念什么?
更重要的是,如果我希望带材的输出大于零,应该使用哪种方法进行约束最小化? 在此先感谢
解决方法
您可以在文档底部看到一个示例,该示例用于最小化页面底部的两个参数的功能... https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html
在您的情况下,您将opti_min
视为二维变量strip
的函数:
values = [0.12,0.65,...] # whatever your values are
def opti_min(strip,values=values):
# get your lists of edited values
sr1_opt = [(value - strip[0])**2 for value in values]
sr3_opt = [(value - strip[1])**2 for value in values]
# perform your sum
return np.sqrt(np.sum(sr1_opt)+np.sum(sr3_opt))
# init your initial estimate
strip0 = np.array([0.0025,0.005])
res = minimize(opti_min,strip0,method='nelder-mead')
# print result
print(res.x)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。