首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多元极小化的最小示例

多元极小化的最小示例
EN

Stack Overflow用户
提问于 2019-07-18 23:56:45
回答 1查看 64关注 0票数 0

因此,我正在尝试用不止一个示例来编写一个最小的scipy.optimize.minimize工作示例。

基本上,我的示例适用于一个变量的lambda函数,但是一旦我添加了另一个变量,它就崩溃了。

代码语言:javascript
复制
lamX = lambda x: (x-2)**2
q0X = np.ones(1)
solX = optimize.minimize(lamX, x0=q0X)

lamXY = lambda x,y: (x-2)**2 + y**2
q0XY = np.ones(2)
solXY = optimize.minimize(lamXY, x0=q0XY)

前三行执行时没有出现错误,并给出了正确的结果,但后三行给出了以下错误

代码语言:javascript
复制
    solXY = optimize.minimize(lamXY, x0=q0XY)
  File "/usr/lib/python3/dist-packages/scipy/optimize/_minimize.py", line 444, in minimize
    return _minimize_bfgs(fun, x0, args, jac, callback, **options)
  File "/usr/lib/python3/dist-packages/scipy/optimize/optimize.py", line 913, in _minimize_bfgs
    gfk = myfprime(x0)
  File "/usr/lib/python3/dist-packages/scipy/optimize/optimize.py", line 292, in function_wrapper
    return function(*(wrapper_args + args))
  File "/usr/lib/python3/dist-packages/scipy/optimize/optimize.py", line 688, in approx_fprime
    return _approx_fprime_helper(xk, f, epsilon, args=args)
  File "/usr/lib/python3/dist-packages/scipy/optimize/optimize.py", line 622, in _approx_fprime_helper
    f0 = f(*((xk,) + args))
  File "/usr/lib/python3/dist-packages/scipy/optimize/optimize.py", line 292, in function_wrapper
    return function(*(wrapper_args + args))
TypeError: <lambda>() missing 1 required positional argument: 'y'

谁能给我一个提示,我哪里做错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-19 00:04:37

您的lambda需要为x使用一个类似数组的对象。我用下面的代码让它工作起来:

代码语言:javascript
复制
>>> lamXY = lambda x: (x[0]-2)**2 + x[1]**2
>>> q0XY = np.ones(2)
>>> solXY = optimize.minimize(lamXY, x0=q0XY)
>>> solXY
      fun: 3.865407235741147e-16
 hess_inv: array([[0.75, 0.25],
       [0.25, 0.75]])
      jac: array([-9.04871520e-09, -1.62848344e-08])
  message: 'Optimization terminated successfully.'
     nfev: 12
      nit: 2
     njev: 3
   status: 0
  success: True
        x: array([ 1.99999999e+00, -1.55929978e-08])

虽然这通常不适用于python中的lambda,但看起来scipy希望lambda只有一个输入变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57098497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档