基于花授粉算法的PID参数整定
基于花授粉算法的PID参数整定百度网盘链接:https://pan.baidu.com/s/1A0KDqbQLDpskYdUi3y2kgw 密码:htpk
具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
clc,clear,close all;
warning off;
format longG;
% 花授粉算法FPA
maxgen = 200; % 迭代次数
sizepop = 20; % 种群数量
nvar = 3; % 3个未知量,kp, ki, kd
popmin = ;popmax = ; % x
% popmin = 0.*ones(1,nvar);popmax = 10.*ones(1,nvar); % x
beta = 1.5; % beta控制常数
pFPA = 0.6; % 0.6-1.0之间
% 初始化种群
for i=1:sizepop
pop(i,:) = popmin + (popmax-popmin).*rand(1, nvar);
fitness(i) = PID_FPA(pop(i,:));
end
% 记录一组最优值
=min(fitness);
zbest=pop(bestindex,:); % 全局最佳
gbest=pop; % 个体最佳
fitnessgbest=fitness; % 个体最佳适应度值
fitnesszbest=bestfitness; % 全局最佳适应度值
% 迭代寻优
for iter=1:maxgen
disp(['当前的迭代次数: ', num2str(iter)])
for j=1:sizepop
% 种群的更新
pop(j,:) = pFPA*( pop(j,:)+rand*(gbest(j,:)-pop(j,:)) )+...
(1-pFPA)*( pop(j,:)+ Levy(beta,nvar).*(zbest - pop(j,:)) );
% x
for kk=1:nvar
if pop(j,kk)>popmax(kk)
pop(j,kk)=popmax(kk);
end
if pop(j,kk)<popmin(kk)
pop(j,kk)=popmin(kk);
end
end
% 适应度更新
fitness(j) = PID_FPA( pop(j,:) );
% 比较个体间比较
if fitness(j)<fitnessgbest(j)
fitnessgbest(j) = fitness(j);
gbest(j,:) = pop(j,:);
end
if fitness(j)<bestfitness
bestfitness = fitness(j);
zbest =pop(j,:);
end
end
fitness_iter(iter) = bestfitness;
end
disp('最优解')
disp(zbest)
fprintf('\n')
figure('color',)
plot(fitness_iter,'ro-','linewidth',2)
% loglog(fitness_iter,'ro-','linewidth',2)
axis tight
grid on
save zbest.mat zbest
4个对应的整定传递函数:
>> ts=0.001;
sys=tf(,)
sys =
1
-----
s + 1
Continuous-time transfer function.
>> sys=tf(,,'ioDelay',0.2)
sys =
1
exp(-0.2*s) * -----
s + 1
Continuous-time transfer function.
>> sys=tf(,)
sys =
1.6
-------------------
s^2 + 2.584 s + 1.6
Continuous-time transfer function.
>> sys=tf(,,'ioDelay',0.1)
sys =
1.6
exp(-0.1*s) * -------------------
s^2 + 2.584 s + 1.6
Continuous-time transfer function. 学习学习,楼主辛苦了
页:
[1]