python scipy optimize_scipy.optimize.fminbound:设置参数的界限

我正在尝试使用的fminbound函数优化函数scipy.optimize公司模块。我想设置参数边界以使答案在物理上合理(例如,>0)。在import scipy.optimize as sciopt

import numpy as np

阵列:

^{pr2}$

当我只使用一个参数时,我设法在参数范围内优化线性函数:fp = lambda p, x: x[0]+p*x[1]

e = lambda p, x, y: ((fp(p,x)-y)**2).sum()

pmin = 0.5 # mimimum bound

pmax = 1.5 # maximum bound

popt = sciopt.fminbound(e, pmin, pmax, args=(x,y))

This results in popt = 1.05501927245

但是,当尝试使用多个参数进行优化时,我收到以下错误消息:fp = lambda p, x: p[0]*x[0]+p[1]*x[1]

e = lambda p, x, y: ((fp(p,x)-y)**2).sum()

pmin = np.array([0.5,0.5]) # mimimum bounds

pmax = np.array([1.5,1.5]) # maximum bounds

popt = sciopt.fminbound(e, pmin, pmax, args=(x,y))

Traceback (most recent call last):

File "", line 1, in

File "/usr/lib/python2.7/dist-packages/scipy/optimize/optimize.py", line 949, in fminbound

if x1 > x2:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我试着把e矢量化(np.矢量化)但错误信息保持不变。我知道fminbound需要一个浮点或数组标量作为边界。有没有其他函数可以解决这个问题?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值