资源简介
用天牛须算法优化PID参数,压缩包里有两文件,一个是Simulink画的PID,一个是天牛须算法,这里对天牛须进行了一点改进,用的是群体天牛须.里面传函我设置的比较简单,可以用复杂的传函跑一跑
代码片段和文件信息
clear all
close all
clc
Dim = 3; % 维数
SwarmSize = 10; % 群规模
MaxIter =100; % 最大迭代次数
MinFit = 0.1; % 最小适应值
d=4;
step=15;
Ub = [200 200 200 ];
Lb = [-100 -100 -100];
%% 初始化
for i=1:SwarmSize
pop(i:)=Ub.*rand(1Dim);
m(i)= BAS_PID(pop(i:));
% m(i)= BAS_PID(pop(i:));
end
% %% 个体极值和群体极值
[bestfbestindex]=min(m);
zbest=pop(bestindex:); % 最佳
fzbest=bestf; % 全局最佳适应值
iter = 0;
y_fitness = zeros(1MaxIter); % 预先产生4个空矩阵
K_p1 = zeros(1MaxIter);
K_i1 = zeros(1MaxIter);
K_d1 = zeros(1MaxIter);
% K_p2 = zeros(1MaxIter);
% K_i2 = zeros(1MaxIter);
% K_d2 = zeros(1MaxIter);
for t=1:MaxIter
t
for i=1:SwarmSize
dir=rand(1Dim);
b=dir./(norm(dir));
xl(i:)=pop(i:)-d.*b;
fl(i)= BAS_PID(xl(i:));
xr(i:)=pop(i:)+d.*b;
fr(i)= BAS_PID(xr(i:));
pop(i:)=pop(i:)-step.*b.*sign(fr(i)-fl(i));
% for k=1:Dim
% if pop(ik)>Ub(k) pop(ik)=Ub(k); end
% if pop(ik)
% end
mm(i)= BAS_PID(pop(i:));
end
[aaabbb]=sort(mm);
zmm=aaa(1);
ccc=bbb(1);
bestxx=pop(ccc:);
step=step*0.98 +0.1;
d=0.99*d+0.01;
if zmm<= fzbest
fzbest=zmm;
zbest=bestxx;
end
fzbest
iter = iter+1; % 迭代次数更新
y_fitness(1iter) = fzbest; % 为绘图做准备
K_p1(1iter) = bestxx(1);
K_i1(1iter) = bestxx(2);
K_d1(1iter) = bestxx(3);
end
%% 绘图输出%%
figure(1)
hold on
plot(y_fitness‘k-‘‘LineWidth‘1.5)
title(‘The ITAE ‘‘fontsize‘14);
xlabel(‘iterations ‘‘fontsize‘14);
ylabel(‘ITAE‘‘fontsize‘14);
set(gca‘Fontsize‘14);
figure(2)% 绘制PID控制器参数变化曲线
hold on
title(‘Kp1 Ki1 Kd2 variation curve‘‘fontsize‘14);
plot(K_p1‘r‘‘LineWidth‘1.5)
plot(K_d1‘b‘‘LineWidth‘1.5)
plot(K_i1‘k‘‘LineWidth‘1.5)
xlabel(‘iterations‘‘fontsize‘18);
ylabel(‘value‘‘fontsize‘18);
legend(‘Kp1‘‘Ki1‘‘Kd1‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2140 2020-06-24 10:13 BAS-PID\BAS.m
文件 174 2019-12-01 13:39 BAS-PID\BAS_PID.m
文件 45797 2020-05-12 16:27 BAS-PID\PID_Model.mdl
文件 4592 2020-06-24 10:17 BAS-PID\PID_Model.slxc
文件 392 2020-06-24 10:17 BAS-PID\slprj\sim\varcache\PID_Model\checksumOfCache.mat
文件 312 2020-06-24 10:17 BAS-PID\slprj\sim\varcache\PID_Model\tmwinternal\simuli
文件 1352 2020-06-24 10:17 BAS-PID\slprj\sim\varcache\PID_Model\varInfo.mat
目录 0 2020-06-24 10:17 BAS-PID\slprj\sim\varcache\PID_Model\tmwinternal
目录 0 2020-06-24 10:17 BAS-PID\slprj\sim\varcache\PID_Model
目录 0 2020-06-24 10:17 BAS-PID\slprj\sim\varcache
目录 0 2020-06-24 10:17 BAS-PID\slprj\sim
目录 0 2020-06-24 10:17 BAS-PID\slprj
目录 0 2020-06-24 10:17 BAS-PID
----------- --------- ---------- ----- ----
54759 13
- 上一篇:倒立摆MATLAB程序
- 下一篇:灰色预测模型代码
相关资源
-
Fuzzysimuli
nk有关模糊PID问题概述-自适 - 粒子群算法优化pid源码 matlab仿真.ra
- 自动控制原理课程设计2019.rar
- 基于matlabGUI的小车倒立摆pid控制
- 小车倒立摆系统的控制及GUI动画演示
- 论文研究-电加热模糊PID控制及仿真研
- 基于Matlab行人检测系统
- 基于卡尔曼滤波的PID控制
- AI Superpowers 英文版 mobi
- 刘金琨-先进PID控制及MATLAB 仿真
- 《先进PID控制MATLAB仿真第3版》程序代
- 先进PID控制及其MATLAB仿真(刘金锟)
- 模糊PID在热水锅炉温度控制系统中的
- 先进PID控制及其MATLAB仿真 与配套源码
- 先进PID控制及其MATLAB仿真(附带)
- 多种PID控制算法-matlab 实现
- pid控制倒立摆
- 基于模糊PID的麦克纳姆轮移动平台的
- 薛定宇教授 ctrllab工具箱3.0
- PID控制及其MATLAB仿真--详细.ppt
- 神经网络PID设计完整版
- 《先进PID控制MATLAB仿真第3版》仿真程
- 基于PID的恒温控制系统设计
- zw_qq_15023225-7501331-S函数的BP神经网络
- 基于DSP的数字PID控制 DC-DC变换器的设
- 各种PID算法
-
二级倒立摆_simuli
nk.rar - 无刷直流电机基于模糊PID的速度控制
- 主动悬架LQG控制与模糊PID控制的比较
- 基于模糊PID控制无刷直流电动机调速
评论
共有 条评论