%% 基于PSO算法的PID参数优化
clc
clear all
close all
% 参数设置
w=0.6;
c1=2;
c2=2;
Dim=3; % 维数
SwarmSize=100; % 粒子群规模
MaxIter=100; % 最大迭代次数
MinFit=0.1; % 最小适应度值
Vmax=1; % 粒子速度最大值
Vmin=-1; % 粒子速度最小值
Ub=[50 50 50]; % 变量上限
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,:)=pid_pso(Swarm(i,:));
end
% 个体极值和群体极值
[bestf,bestindex]=min(FSwarm);
zbest=Swarm(bestindex,:); % 全局最佳
fzbest=bestf; % 全局最佳适应度值
gbest=Swarm; % 个体最佳
fgbest=FSwarm; % 个体最佳适应度值
% 迭代寻优
iter=0;
y_fitness=zeros(1,MaxIter); % 预先产生四个空矩阵
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,:)<Vmin
VStep(j,:)=Vmin;
end
% 位置更新
Swarm(j,:)=Swarm(j,:)+VStep(j,:);
for k=1:Dim
if Swarm(j,k)>Ub(k)
Swarm(j,k)=Ub(k);
end
if Swarm(j,k)<Lb(k)
Swarm(j,k)=Lb(k);
end
end
% 适应值
FSwarm(j,:)=pid_pso(Swarm(j,:));
% 个体最优更新
if FSwarm(j)<fgbest(j)
gbest(j,:)=Swarm(j,:);
fgbest(j)=FSwarm(j);
end
% 群体最优更新
if FSwarm(j)<fzbest
zbest=Swarm(j,:);
fzbest=FSwarm(j);
end
end
iter=iter+1;
y_fitness(1,iter)=fzbest;
K_p(1,iter)=zbest(1);
K_i(1,iter)=zbest(2);
K_d(1,iter)=zbest(3);
end
%% 绘图
figure(1)
plot(y_fitness,'LineWidth',2)
title('最优个体适应度值','fontsize',10);
xlabel('迭代次数','fontsize',10);
ylabel('适应值','fontsize',10);
set(gca,'fontsize',10);
grid on
figure(2)
plot(K_p)
hold on
plot(K_i,'k','lineWidth',3)
plot(K_d,'--r')
title('Kp、Ki、Kd 优化曲线','fontsize',10);
xlabel('迭代次数','fontsize',10);
ylabel('参数值','fontsize',10);
set(gca,'Fontsize',10);
legend('Kp','Ki','Kd',1);
grid on
Pso-PID_PID控制_pidpso_粒子群算法pid_粒子群PID_智能算法
版权申诉
5星 · 超过95%的资源 80 浏览量
2021-09-11
10:07:32
上传
评论 1
收藏 3KB ZIP 举报
心梓
- 粉丝: 822
- 资源: 8055
最新资源
- 开源代码分享(31)-计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度
- meta-llama-3-8b-instruct 的 model-00002-of-00004.safetensors 的1/3
- AnyTXT.Searcher.1.3.1168.Win32&Win64.exe
- Redis windows版本的redis安装包和可视化工具客户端、redis存取数据的项目demo
- code1_2
- L999_期末项目.ipynb
- 数字频率计的设计(内含原理图、源代码、实物照片)
- 国密SM4加解密,前后端文件合集
- 基于TypeScript和UmiJS的高校学生报名系统设计源码 - student-sign
- 免费gpt4系列、claude-3、gemini 等模型傻瓜式开箱即用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页