我应该如何管理关于 pyswarms 中数组形状的错误?

问题描述

当我不太了解如何实现 pyswarms 时,我收到了这个错误。 “ValueError:操作数无法与形状一起广播(2003,)(5,)“ 有人可以告诉我如何正确纠正。提前致谢!

import numpy as np
import scipy 
from scipy.interpolate import interp1d
import math as m
import pyswarms as pso
from pyswarms.backend.topology import Pyramid
#loading file
data = np.loadtxt('STAT.txt')
xmax = 2003    
dt = 1.0/32.0           # шаг
tmax = xmax * dt
t = np.linspace(0,tmax,xmax)
wx = data[:,6]/57.3
wy = data[:,7]/57.3
wz = data[:,8]/57.3
theda= data[:,12]#/57.3
gama = data[:,13]#/57.3
Xi = 0.001321/57.3 #theda #  
Yi = 0.002535/57.3 #gama #
interp = scipy.interpolate.interp1d(t,(wx,wy,wz))
# creating function g(y)
def fnc(y):
    #y={'esp_x':1,'esp_y':1,'esp_z':1}
    esp_x=y[0]
    esp_y=y[1]
    esp_z=y[2]
    wx,wz = interp(t)
    g0=(wy+esp_y)*m.sin(Yi) + (wz+esp_z)*m.cos(Yi)
    g1=(wx+esp_x)-m.tan(Xi)*((wy+esp_y)*m.cos(Yi)-(wz+esp_z)*m.sin(Yi))
    return g0,g1

#roots=fsolve(g,[1,1,1])
#time
# Set-up hyperparameters
options = {'c1': 0.5,'c2': 0.3,'w':0.9,'k': (11,15),'p': 1}
# Call instance of PSO
#my_topology = Pyramid(static=False)
#optimizer = pso.single.GeneralOptimizerPSO(n_particles=10,dimensions=2,options=options,topology=my_topology)
optimizer = pso.single.GlobalBestPSO(n_particles=20,dimensions=5,options=options)
# Perform optimization
cost,pos = optimizer.optimize(fnc,iters=10)

错误报告是: 2021-04-14 00:19:56,925 - pyswarms.single.global_best - 信息 - 使用 {'c1': 0.5,'w': 0.9,'p': 1}

pyswarms.single.global_best: 0%| |0/10 pyswarms.single.global_best: 0%| |0/10 回溯(最近一次调用最后一次): 文件“E:\D.Sc\Research Work\Python\PSO2particles\psoFncSolver.py”,第 42 行,在 成本,pos = optimizer.optimize(fnc,iters=10) 文件“C:\Program Files\Python\python39\lib\site-packages\pyswarms\single\global_best.py”,第 209 行,在优化中 self.swarm.current_cost = compute_objective_function(self.swarm,objective_func,pool=pool,**kwargs文件“C:\Program Files\Python\python39\lib\site-packages\pyswarms\backend\operators.py”,第 239 行,在计算目标函数中 返回objective_func(swarm.position,**kwargs) 文件“E:\D.Sc\Research Work\Python\PSO2particles\psoFncSolver.py”,第 29 行,在 fnc g0=(wy+esp_y)*m.sin(Yi) + (wz+esp_z)*m.cos(Yi) ValueError: 操作数无法与形状一起广播 (2003,) (5,)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)