
粒子群算法优化模糊pi.docx
7页精选优质文档-----倾情为你奉上本文选取常见的二阶惯性加纯滞后环节,传递函数为: 在这里, PID参数取为本设计中的模糊控制器采用两输入(e, ec),三输出(P,I,D)的形式来调整PID参数e的论域为[-3,3],ec的论域为[-3,3]推理机使用,表示{负大,负中,负小,零,正小,正中,正大}为了可以调节尽可能多的系统,此控制器选定在负边界处和正边界处分别选用平滑连续的Z型隶属度函数和S型隶属度函数,在中间部分采用灵敏度较强的三角形隶属度函数规则表如下图所示:(1)主程序:clearclc%% 参数设置w = 0.6; % 惯性因子 c1 = 1.414; % 加速常数c2 = 1.623; % 加速常数Dim = 5; % 维数SwarmSize = 100; % 粒子群规模ObjFun = @PSO_PID; % 待优化函数句柄MaxIter = 100; % 最大迭代次数 MinFit = 0.01; % 最小适应值Vmax = 2;Vmin =-2;Ub = [20 50 1 1 1];Lb = [0 0 0 0 0];%% 粒子群初始化 Range = ones(SwarmSize,1)*(Ub-Lb); Swarm = rand(SwarmSize,Dim).*Range + ones(SwarmSize,1)*Lb; % 初始化粒子群 VStep = rand(SwarmSize,Dim)*(Vmax-Vmin) + Vmin; % 初始化速度 fSwarm = zeros(SwarmSize,1);for i=1:SwarmSize fSwarm(i,:) = feval(ObjFun,Swarm(i,:)); % 粒子群的适应值end%% 个体极值和群体极值[bestf,bestindex]=min(fSwarm);zbest=Swarm(bestindex,:); % 全局最佳gbest=Swarm; % 个体最佳fgbest=fSwarm; % 个体最佳适应值fzbest=bestf; % 全局最佳适应值%% 迭代寻优iter = 0;y_fitness = zeros(1,MaxIter); % 预先产生4个空矩阵K_p = zeros(1,MaxIter); K_i = zeros(1,MaxIter);K_d = zeros(1,MaxIter);e= zeros(1,MaxIter);ec = zeros(1,MaxIter);while( (iter < MaxIter) && (fzbest > MinFit) ) for j=1:SwarmSize % 速度更新 VStep(j,:) = w*VStep(j,:) + c1*rand*(gbest(j,:) - Swarm(j,:)) + c2*rand*(zbest - Swarm(j,:)); if VStep(j,:)>Vmax, VStep(j,:)=Vmax; end if VStep(j,:) 实验结论:本次设计使用的是pid,粒子群算法模糊pid,粒子群算法模糊smith pid相结合,仿真波形如下图所示黄色的是pid波形,红色的是粒子群算法模糊pid,蓝色的是粒子群算法模糊smith pid从图中明显的可以看出加入粒子群算法模糊控制后波形超调量减少,调节时间缩短;在加入smith后波形有了明显的改善专心---专注---专业。
