【PID优化】基于灰狼算法PID控制器优化设计含Matlab源码
【PID优化】基于灰狼算法PID控制器优化设计含Matlab源码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
PID 控制算法是根据输入和输出的偏差值构成控制偏差量,经过比例积分微分运算输出控制量作用于执行机构。由于其具有原理简单且易于实现等优点,因而在变量喷药领域得到广泛的应用。但是,传统的 PID 控制算法参数( Kp,Ki,Kd ) 整定复杂,且对于非线性系统适应性差,进而影响变量喷药系统的稳定性和控制精度。基于以上问题,将灰狼优化算法与 PID 控制结合,构建灰狼优化 PID 控制算法( GWO-PID) ,应用于变量喷药控制,对 PID 参数进行自适应调整,保证系统工作在较好状态下,达到满意的控制效果。GWO-PID 算法的流程如图 5 所示.
2 部分代码
function
[BestFitness, gbest, zz] = GWO(N, maxgen, X, fitness, lb, ub, dim, fobj)
%%
[bestfitness,
bestindex] = sort(fitness);
gbest
=
X(bestindex(1), :); % 群体最优极值
fitnessgbest
=
bestfitness(1); % 种群最优适应度值
%
初始化alpha, beta和delta_pos
Alpha_pos
=
gbest;
Alpha_score
=
fitnessgbest;
Beta_pos
=
X(bestindex(2), :);
Beta_score
=
bestfitness(2);
Delta_pos
=
X(bestindex(3), :);
Delta_score
=
bestfitness(3);
%%
初始结果显示
disp([’初始位置:’,
num2str(gbest)]);
disp([’初始解:’,
num2str(fitnessgbest)]);
%%
迭代
for
gen = 1:maxgen
%
a = aini-(aini-afin)*exp(gen/maxgen-1); % a从2线性减小到0
%
a = ainitial/(1+exp(mu*gen/maxgen-k));
a
=
2-gen*(2/maxgen); % a从2线性减小到0
%
更新包括omegas在内的种群的位置
for
i = 1:N
S
=
X(i, :);
for
j = 1:dim
r1
=
rand(); % r1是[0,1]中的随机数
r2
=
rand(); % r2是[0,1]中的随机数
A1
=
2*a*r1-a; % 公式(4)
C1
=
2*r2; % 公式(5)
D_alpha
=
abs(C1*Alpha_pos(j)-X(i, j)); % 公式(6)-第一部分
X1
=
Alpha_pos(j)-A1*D_alpha; % 公式 (7)-第一部分
r1
=
rand();
r2
=
rand();
A2
=
2*a*r1-a; % 公式(4)
C2
=
2*r2; % 公式(5)
D_beta
=
abs(C2*Beta_pos(j)-X(i, j)); % 公式(6)-第二部分
X2
=
Beta_pos(j)-A2*D_beta; % 公式 (7)-第二部分
r1
=
rand();
r2
=
rand();
A3
=
2*a*r1-a; % 公式 (4)
C3
=
2*r2; % 公式 (5)
D_delta
=
abs(C3*Delta_pos(j)-X(i, j)); % 公式(6)-第三部分
X3
=
Delta_pos(j)-A3*D_delta; % 公式 (7)-第三部分
X(i,
j)=(X1+X2+X3)/3; % 公式 (8)
end
%
边界处理
X(i,
X(i, :) > ub) = ub;
X(i,
X(i, :) < lb) = lb;
%
判断
fit
=
fobj(X(i, :));
if
fit < fitness(i)
fitness(i)
=
fit;
else
X(i,
:
) = S;
end
end
%
更新
[bestfitness,
bestindex] = sort(fitness);
gbest
=
X(bestindex(1), :); % 群体最优极值
fitnessgbest
=
bestfitness(1); % 种群最优适应度值
%
初始化alpha, beta和delta_pos
Alpha_pos
=
gbest;
Alpha_score
=
fitnessgbest;
Beta_pos
=
X(bestindex(2), :);
Beta_score
=
bestfitness(2);
Delta_pos
=
X(bestindex(3), :);
Delta_score
=
bestfitness(3);
%%
每一代群体最优值存入zz数组
zz(gen)
=
Alpha_score;
gbest
=
Alpha_pos;
%%
显示每代优化结果
display([’At
iteration ’, num2str(gen), ’ the best fitness is ’, num2str(zz(gen))]);
end
BestFitness
=
zz(end);
%%
最终结果显示
disp([’最优位置:’,
num2str(gbest)]);
disp([’最优解:’,
num2str(zz(end))]);
%
%% 绘图
%
figure;
%
plot(zz, ’r’, ’lineWidth’, 2); % 画出迭代图
%
xlabel(’迭代次数’, ’fontsize’, 12);
%
ylabel(’目标函数值’, ’fontsize’, 12);
3 仿真结果
4 参考文献
[1]王新东, 徐艳蕾, 张奇,等. 基于灰狼优化PID控制的变量喷药系统研究[J]. 农机化研究, 2020(5):6.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
