scipy.optimize,IndexError:标量变量的无效索引

时间:2019-03-04 06:52:38

标签: python scipy

我正在尝试使用nelder-mead方法在多元标量函数上实现scipy.optimmize.minimize。我的函数定义在打印函数中调用时效果很好。当我打开最小化时,它会抛出IndexError。

  <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicBinding" >
      <security mode="Transport"  xdt:Transform="Insert" >
        <transport clientCredentialType="None"/>
      </security>

    </binding>
  </basicHttpBinding>
</bindings>

1 个答案:

答案 0 :(得分:0)

这是因为x_是列表列表:

>>> x_
[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]

因此将x_=[c_,d_]行替换为:

>>> x_ = c_ + d_

您还必须为hamiltonian1xN列表/数组修改Nx1

我能想到的最简单的技巧是:

def hamiltonian(x_):
    N=len(c_)
    if type(x_[0]) == np.array:
        x_ = np.concatenate((x_[0:N], x_[N:]), axis=0)
    return np.sum([(1/n**3.0)*(n-i)*i*(x_[0][(n-i)]*x_[0][i]+x_[1][(n-i)]*x_[1][i])-(1/n**3.0/alpha**2.0)*np.sum([x_[0][(n-i-j)]*x_[0][i]*x_[1][j] for j in range(0,(n-i+1))])  for n in range(1,N) for i in range(0,(n+1))])