在PyOpt库中使用SLSQP解算器时出现TypeError

时间:2017-04-09 22:49:11

标签: python python-2.7 numpy

我在尝试运行优化库pyOpt时遇到了TypeErrors。我尝试运行的代码是给定here的基本示例(我只测试SLSQP解算器)。

我在执行解算器时遇到以下错误

la = numpy.array([max(m,1)], numpy.int) gg = numpy.zeros([la], numpy.float) TypeError: only integer scalar arrays can be converted to a scalar index

我怀疑错误是由于numpy的变化,因为给出了here的答案。如果是这样的话,我有什么选择让图书馆工作?我可以考虑降级numpy,但我不希望对我系统中的其他库进行任何不可预见的更改。

在Ubuntu 14.04上使用Python 2.7和numpy 1.12.1。

1 个答案:

答案 0 :(得分:0)

用lz替换lz [0] - 问题在于你所注意到的numpy版本。

/usr/local/lib/python2.7/dist-packages/pyOpt/pySLSQP/pySLSQP.py

我通过更改行来运行

374     gg = numpy.zeros([la[0]], numpy.float)
377     dg = numpy.zeros([la[0],n+1], numpy.float)
401     w = numpy.zeros([lw[0]], numpy.float)
404     jw = numpy.zeros([ljw[0]], numpy.intc)

我最终在执行期间遇到了错误,这些错误不是python错误,而是在编译代码运行期间遇到的错误,所以我只是转而使用pyGMO2而且我很满意。