matlab粒子加速器仿真,粒子群算法优化PID参数 仿真不出结果 程序如下
用的是《MATLAB智能算法30個(gè)案例分析》中的程序
1.文件名為PSO_PID.m
function z = PSO_PID(x)
assignin('base','Kp',x(1));? ?? ?? ?? ?? ?? ? % 粒子群依次賦值給Kp? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???這部分運(yùn)行結(jié)果> PSO_PID
assignin('base','Ki',x(2));? ?? ?? ?? ?? ?? ?? ?% 粒子群依次賦值給Ki? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?Error using PSO_PID (line 2)
assignin('base','Kd',x(3));? ?? ?? ?? ?? ?? ? % 粒子群依次賦值給Kd? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? Not enough input arguments.
[ y_out] = sim('PID_Model', [0, 20]); % 使用命令行運(yùn)行控制系統(tǒng)模塊
z = y_out(end, 1);? ?? ?? ?? ?? ?? ?? ?? ?? ? % 返回性能指標(biāo)
2.文件名為Optm1_PSO_PID.m
%% 清空環(huán)境clearclc
%% 參數(shù)設(shè)置w = 0.6;? ?? ?% 慣性因子c1 = 2;? ?? ? % 加速常數(shù)c2 = 2;? ?? ? % 加速常數(shù)
Dim = 3;? ?? ?? ?? ?% 維數(shù)SwarmSize = 100;? ? % 粒子群規(guī)模ObjFun = @PSO_PID;??% 待優(yōu)化函數(shù)句柄
MaxIter = 100;? ?? ?% 最大迭代次數(shù)??MinFit = 0.1;? ?? ? % 最小適應(yīng)值
Vmax = 1;Vmin = -1;Ub = [300 300 300];Lb = [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,:));? ?? ?? ?? ?? ?? ?? ?? ? % 粒子群的適應(yīng)值end
%% 個(gè)體極值和群體極值[bestf bestindex]=min(fSwarm);zbest=Swarm(bestindex,:);? ?% 全局最佳gbest=Swarm;? ?? ?? ?? ?? ? % 個(gè)體最佳fgbest=fSwarm;? ?? ?? ?? ???% 個(gè)體最佳適應(yīng)值fzbest=bestf;? ?? ?? ?? ?? ?% 全局最佳適應(yīng)值
%% 迭代尋優(yōu)iter = 0;y_fitness = zeros(1,MaxIter);? ?% 預(yù)先產(chǎn)生4個(gè)空矩陣K_p = zeros(1,MaxIter);? ?? ?? ?K_i = zeros(1,MaxIter);K_d = 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,:)Ub(k), Swarm(j,k)=Ub(k); end? ?? ?? ?? ?if Swarm(j,k)
figure(2)? ?? ?% 繪制PID控制器參數(shù)變化曲線plot(K_p)hold onplot(K_i,'k','LineWidth',3)plot(K_d,'--r')title('Kp、Ki、Kd 優(yōu)化曲線','fontsize',18);xlabel('迭代次數(shù)','fontsize',18);ylabel('參數(shù)值','fontsize',18);set(gca,'Fontsize',18);legend('Kp','Ki','Kd',1);
2014-4-12 22:10 上傳
仿真模型 文件名為PID_Model
總結(jié)
以上是生活随笔為你收集整理的matlab粒子加速器仿真,粒子群算法优化PID参数 仿真不出结果 程序如下的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux临时启动进程命令,Linux常
- 下一篇: 电脑如何进入bios模式_华硕笔记本电脑