%% Tunning of PID controller using Particle Swarm Optimization
%
%
% Author: Wael Mansour (wael192@yahoo.com)
%
% MSc Student, Electrical Enginering Dept,
% Faculty of Engineering Cairo University, Egypt
%
%% Initialization
clear
clc
n = 50; % Size of the swarm " no of birds "
bird_setp =50; % Maximum number of "birds steps"
dim = 2; % Dimension of the problem
c2 =1.2; % PSO parameter C1
c1 = 0.12; % PSO parameter C2
w =0.9; % pso momentum or inertia
fitness=0*ones(n,bird_setp);
%-----------------------------%
% initialize the parameter %
%-----------------------------%
R1 = rand(dim, n);
R2 = rand(dim, n);
current_fitness =0*ones(n,1);
%------------------------------------------------%
% Initializing swarm and velocities and position %
%------------------------------------------------%
current_position = 10*(rand(dim, n)-.5);
velocity = .3*randn(dim, n) ;
local_best_position = current_position ;
%-------------------------------------------%
% Evaluate initial population %
%-------------------------------------------%
for i = 1:n
current_fitness(i) = tracklsq(current_position(:,i));
end
local_best_fitness = current_fitness ;
[global_best_fitness,g] = min(local_best_fitness) ;
for i=1:n
globl_best_position(:,i) = local_best_position(:,g) ;
end
%-------------------%
% VELOCITY UPDATE %
%-------------------%
velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position));
%------------------%
% SWARMUPDATE %
%------------------%
current_position = current_position + velocity ;
%------------------------%
% evaluate anew swarm %
%------------------------%
%% Main Loop
iter = 0 ; % Iterations�counter
while ( iter < bird_setp )
iter = iter + 1;
for i = 1:n,
current_fitness(i) = tracklsq(current_position(:,i)) ;
end
for i = 1 : n
if current_fitness(i) < local_best_fitness(i)
local_best_fitness(i) = current_fitness(i);
local_best_position(:,i) = current_position(:,i) ;
end
end
[current_global_best_fitness,g] = min(local_best_fitness);
if current_global_best_fitness < global_best_fitness
global_best_fitness = current_global_best_fitness;
for i=1:n
globl_best_position(:,i) = local_best_position(:,g);
end
end
velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position));
current_position = current_position + velocity;
sprintf('The value of interation iter %3.0f ', iter );
end % end of while loop its mean the end of all step that the birds move it
xx=fitness(:,50);
[Y,I] = min(xx);
current_position(:,I)
%
朱moyimi
- 粉丝: 79
- 资源: 1万+
最新资源
- 车辆船只人员检测3-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- 物流数据相关标准清单.xlsx
- python语言kssppxhb爬虫程序代码xQZQ.txt
- python语言kssphb爬虫程序代码QZQ.txt
- python语言kssppxhb爬虫程序代码xQZQ1.txt
- python语言kssp爬虫程序代码ZQ.txt
- python语言kssp爬虫程序代码QZQ.txt
- python语言kssp爬虫程序代码QZQ1.txt
- python语言kuaishoushiping爬虫程序代码QZQ.txt
- Python项目开发流程及其各环节注意事项详解
- 汽车-车联网数据相关标准清单.xlsx
- 车辆船只检测4-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- 基于51单片机的数码管多种波形发生器设计(protues仿真)-毕业设计
- 四足机器人步态控制算法解析与代码实现
- 四足机器人步态控制算法及Python实现
- 四足机器人步态控制算法的技术原理及Python实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈