基于果蝇蛙跳模糊神经网络PID直线同步电机控制方法与流程

文档序号:12689951阅读:来源:国知局

技术特征:

1.一种基于果蝇-蛙跳算法优化模糊神经网络PID的永磁直线同步电机控制方法,其特征在于,控制系统由速度外环和电流内环组成,其中电流环含有id=0控制器和iq控制器,电流环设计为传统的PID调节器,速度环设计为模糊神经网络PID控制器,所述的模糊神经网络PID速度控制器的控制性能好坏直接影响电流环及永磁直线同步电机系统的整体控制性能,利用果蝇-蛙跳算法在线优化模糊神经网络,通过学习训练好的模糊神经网络输出PID控制器的最佳控制参数kp、ki、kd

2.根据权利要求1所述的模糊神经网络PID速度控制器,其特征在于,模糊神经网络PID速度控制器设计分为PID控制器、模糊神经网络、果蝇-蛙跳算法优化三部分,模糊神经网络结构中的隶属度高斯函数均值mij及标准值δij、连接权值ωjk和ωko等可调参数对速度控制器的控制性能有着重要影响,本发明充分利用果蝇优化算法全局搜索能力强、收敛速度快,以及硅跳算法局部深度搜寻能力强的优势,首次将果蝇算法和蛙跳算法进行有机融合,形成果蝇-蛙跳算法来优化模糊神经网络结构参数。

3.根据权利要求2所述的果蝇-蛙跳算法来优化模糊神经网络结构参数,其特征在于,所述的果蝇-蛙跳算法主要优化过程如下:

step1:参数初始化

初始化果蝇群体规模groupsize,果蝇算法最大迭代次数maxnum,蛙跳算法最大迭代次数maxnum1,随机设定果蝇群体初始位置X0、Y0等;

step2:种群初始化

随机设置果蝇个体利用嗅觉搜索食物目标的方向及距离,随机数rand设为果蝇优化迭代步进值,即:

<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>X</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>X</mi> <mo>_</mo> <mi>a</mi> <mi>x</mi> <mi>i</mi> <mi>s</mi> <mo>+</mo> <mi>r</mi> <mi>a</mi> <mi>n</mi> <mi>d</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>Y</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>Y</mi> <mo>_</mo> <mi>a</mi> <mi>x</mi> <mi>i</mi> <mi>s</mi> <mo>+</mo> <mi>r</mi> <mi>a</mi> <mi>n</mi> <mi>d</mi> </mrow> </mtd> </mtr> </mtable> </mfenced>

step3:计算果蝇个体味道浓度

因为不能确定食物的具体位置,所以首先估算果蝇与原点之间的距离hi,然后测算果蝇个体的味道浓度判定值Gi;接着将味道浓度判定值Gi代入味道浓度判别函数Function(也称为适应度函数),计算果蝇个体位置的味道浓度tastei

<mrow> <msub> <mi>h</mi> <mi>i</mi> </msub> <mo>=</mo> <msqrt> <mrow> <msubsup> <mi>X</mi> <mi>i</mi> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>Y</mi> <mi>i</mi> <mn>2</mn> </msubsup> </mrow> </msqrt> </mrow>

<mrow> <msub> <mi>G</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <msub> <mi>h</mi> <mi>i</mi> </msub> </mfrac> </mrow>

tastei=Function(Gi)

step4:寻找且保留全局最大味道浓度的果蝇个体

[besttaste bestindex]=max(tastei)

从群体中寻找味道浓度最佳果蝇个体,记录且保留最高味道浓度值besttaste及其对应X、Y坐标轴值,同时果蝇凭借敏锐的视觉飞向该坐标值位置,形成新的果蝇群聚位置;

<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>t</mi> <mi>a</mi> <mi>s</mi> <mi>t</mi> <mi>e</mi> <mi>b</mi> <mi>e</mi> <mi>s</mi> <mi>t</mi> <mo>=</mo> <mi>b</mi> <mi>e</mi> <mi>s</mi> <mi>t</mi> <mi>t</mi> <mi>a</mi> <mi>s</mi> <mi>t</mi> <mi>e</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>X</mi> <mn>0</mn> </msub> <mo>=</mo> <mi>X</mi> <mrow> <mo>(</mo> <mi>b</mi> <mi>e</mi> <mi>s</mi> <mi>t</mi> <mi>i</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>Y</mi> <mn>0</mn> </msub> <mo>=</mo> <mi>Y</mi> <mrow> <mo>(</mo> <mi>b</mi> <mi>e</mi> <mi>s</mi> <mi>t</mi> <mi>i</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> </mtable> </mfenced>

step5:果蝇迭代寻优:及时判断当前果蝇最佳味道浓度是否优于前次迭代味道浓度,若不是则转至step2重复执行;如果当前味道浓度优于以往迭代的味道浓度,或者迭代次数已满足最大迭代次数maxnum,则果蝇算法结束,转入step6执行;

step6:将组成的新果蝇群中各个体看作青蛙个体,并按适度度从高到低排列;

step7:按蛙跳思想将蛙群划分成m个子群,每个子群均有k只青蛙;

step8:记录保留每个子群内适应度最佳个体Xb和最差青蛙个体Xw,并按下式更新计算每个子群中适应度最差青蛙个体;

Dj=R(Xb-Xw)

Xw(new)=Xw+Dj,||Dj||≤Dmax

公式中,R表示[0,1]区间上的随机数,Dj表示在第j维上移动距离,Dmax代表青蛙位置一次更新改变的最大值;如果Xw(new)的适应值比原来Xw适应值差,则用整个蛙群最优个体Xg替换式中Xb;如果得到的Xw(new)适应值依然没有变好,则随机产生一新解(青蛙)替换原来的解Xw(即最差青蛙);

step9:如果达到蛙跳算法设定的迭代次数maxmum1,则更新输出全局适应值最好的青蛙个体Xg;否则转入step8,重新更新每个子群中适应值最差的青蛙个体;

step10:输出的全局最优青蛙个体Xg便作为模糊神经网络的最优结构参数。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1