scipy.optimize.Differential_evolution不会生成可迭代的

时间:2020-06-04 03:06:09

标签: python scipy-optimize differential-evolution

res_DE=differential_evolution(invSortino,bounds=bounds, disp=True)

invSortino的长度为x的可迭代长度,广告返回负标量。

界限由

定义
lb=[1e-03]*data.shape[1]
ub=[.4]*data.shape[1]
bounds=Bounds(lb,ub)

#bounds=[(0,.4)]*data.shape[1]

边界长度正确,(上面方法2)

但可迭代生成的长度为0

print('shapes: ',weights.shape,data.shape)

结果

shapes:  (0,) (951, 65)

这会导致错误

Traceback (most recent call last):
  File "C:\Users\anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py", line 878, in _calculate_population_energies
    parameters_pop[0:nfevs]))
  File "C:\Users\anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py", line 1265, in __call__
    return self.f(x, *self.args)
  File "c:/Users/try.py", line 68, in invSortino
    rets=data*weights
  File "C:\Users\anaconda3\lib\site-packages\pandas\core\ops\__init__.py", line 695, in f
    other = _align_method_FRAME(self, other, axis)
  File "C:\Users\anaconda3\lib\site-packages\pandas\core\ops\__init__.py", line 644, in _align_method_FRAME
    right = to_series(right)
  File "C:\Users\anaconda3\lib\site-packages\pandas\core\ops\__init__.py", line 636, in to_series
    msg.format(req_len=len(left.columns), given_len=len(right))
ValueError: Unable to coerce to Series, **length must be 65: given 0**

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
   line 85, in <module>
    res_DE=differential_evolution(invSortino,bounds=bounds, disp=True)
  File "C:\Users\anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py", line 306, in differential_evolution
    ret = solver.solve()
  File "C:\Users\anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py", line 745, in solve
    self.population[self.feasible]))
  File "C:\Users\anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py", line 883, in _calculate_population_energies
    raise RuntimeError("The map-like callable must be of the"
RuntimeError: The map-like callable must be of the form f(func, iterable), returning a sequence of numbers the same length as 'iterable'

0 个答案:

没有答案
相关问题