1.一种基于FPGA的全流水粒子群优化算法实现方法,其特征在于,包括以下步骤:
第一步,构建单个种群粒子的流水化处理流程;
第(1)步,描述粒子的处理过程:
为表述方便,记种群规模大小为N,即粒子群数量,种群记为P=(P1,P2,P3,…,PN)T,迭代速度向量记为V=(V1,V2,V3,…,VN)T,种群个体最优值记为Ppbest=(Ppbest1,Ppbest2,...PpbestN)T,种群的全局最优值为Pgbest,对于特定的粒子i在第k次迭代时,其速度和位置的更新过程描述如下等式:
其中,c1,c2是两个常数,取为2;r1,r2是两个范围为[0,1]的随机数;ωk是惯性权重,主要用来平衡算法的局部和全局搜索能力;
其中,1>ωmax>ωmin>0,ωmax,ωmin分别为ω的最大值和最小值,分别取值为0.9和0.4,k为当前迭代次数,K在FPGA实现中记为粒子更新的总次数;
第(2)步,依据更新公式,构建单个粒子硬件流水化实现处理过程。为得到流水化处理结构,首先,Ppbest与Pgbest同时与当前的种群粒子位置P作减法,粒子速度矢量V和位置P做相应的延时处理;然后同时做三个乘法器,位置P作相应延时,将乘法之后的结果依次作二输入加法,所得结果再经范围限制判断之后,输出其中一路作为下一次迭代的粒子速度矢量,另一路则与位置P作加法后得到的结果一齐作为下一次迭代的位置矢量,而位置P在作加法前已作了相应的延时,这样便完成了粒子的位置和速度更新过程;
第二步,获取当前种群中的粒子个体最优值和全局最优值:
这是采用全流水化多相结构来替代并行独立运行的粒子模块的关键步骤,不同的粒子位置P依次在对应的相位通道上排好序,数据的有效输入采用使能信号En进行控制,假设种群大小为N,则Pij表示第j个相位数据通道的第i个数据,种群大小为N时,有1≤j≤N;位置数据P首先通过适应度函数进行值的估计,将输出的一路与Pgbest所对应的估计值进行比较判断,保留最优的Pgbest进行寄存,再在En有效的最后一个时钟周期之后,输出当前迭代种群的全局最优值。而Ppbest则需要用RAM对应的相位通道存储起来,将当前所有粒子对应的Ppbest与RAM特定相位通道存储的Ppbest进行比较并判断后,再保留两者之间较优值作为该粒子当前迭代的个体最优值;
第三步,随机数产生模块的实现:
种群位置和速度初始值以及r1、r2都需要运用到随机数产生模块,本方法中均匀伪随机数模块采用LFSR来产生。其中,在产生伪随机数序列时需要给定初始值,即给定初始01序列,本发明中产生的伪随机数位宽为20;
第四步,连接各个独立模块;
该步骤对上述第一、第二和第三步中的各个独立模块进行连接。种群粒子位置首先通过Ppbest、Pgbest获取模块,输出当前迭代过程中对应的Ppbest和Pgbest值,同时,把经过延时输出后的P,作为位置、速度更新模块的数据进行输入。为了保证整个算法的流水化过程,速度矢量V,r1,r2,ω都需要相应地同时刻输入,这样便可以保证在整个过程中,不同的相位通道数据处理是独立的。
2.根据权利要求1所述的一种基于FPGA的全流水粒子群优化算法实现方法,其特征在于,所述的收敛条件为:
J≤ε(ε为一个极小值)或者迭代次数达到设置值。