⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pso.html

📁 pso 的一个演示源码
💻 HTML
字号:
<html xmlns:mwsh="http://www.mathworks.com/namespace/mcode/v1/syntaxhighlight.dtd">   <head>      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">         <!--This HTML is auto-generated from an M-file.To make changes, update the M-file and republish this document.      -->      <title>Tunning of PID controller using Particle Swarm Optimization</title>      <meta name="generator" content="MATLAB 7.2">      <meta name="date" content="2008-06-11">      <meta name="m-file" content="PSO"><style>body {  background-color: white;  margin:10px;}h1 {  color: #990000;   font-size: x-large;}h2 {  color: #990000;  font-size: medium;}/* Make the text shrink to fit narrow windows, but not stretch too far in wide windows.  On Gecko-based browsers, the shrink-to-fit doesn't work. */ p,h1,h2,div.content div {  /* for MATLAB's browser */  width: 600px;  /* for Mozilla, but the "width" tag overrides it anyway */  max-width: 600px;  /* for IE */  width:expression(document.body.clientWidth > 620 ? "600px": "auto" );}pre.codeinput {  background: #EEEEEE;  padding: 10px;}@media print {  pre.codeinput {word-wrap:break-word; width:100%;}} span.keyword {color: #0000FF}span.comment {color: #228B22}span.string {color: #A020F0}span.untermstring {color: #B20000}span.syscmd {color: #B28C00}pre.codeoutput {  color: #666666;  padding: 10px;}pre.error {  color: red;}p.footer {  text-align: right;  font-size: xx-small;  font-weight: lighter;  font-style: italic;  color: gray;}  </style></head>   <body>      <div class="content">         <h1>Tunning of PID controller using Particle Swarm Optimization</h1>         <introduction>            <p>Author: Wael Mansour (<a href="mailto:wael192@yahoo.com">wael192@yahoo.com</a>)            </p>            <p>MSc Student, Electrical Enginering Dept, Faculty of Engineering Cairo University, Egypt</p>         </introduction>         <h2>Contents</h2>         <div>            <ul>               <li><a href="#1">Initialization</a></li>               <li><a href="#2">Main Loop</a></li>            </ul>         </div>         <h2>Initialization<a name="1"></a></h2><pre class="codeinput">clearclcn = 50;           <span class="comment">% Size of the swarm " no of birds "</span>bird_setp  =50;   <span class="comment">% Maximum number of "birds steps"</span>dim = 2;          <span class="comment">% Dimension of the problem</span>c2 =1.2;          <span class="comment">% PSO parameter C1</span>c1 = 0.12;        <span class="comment">% PSO parameter C2</span>w =0.9;           <span class="comment">% pso momentum or inertia</span>fitness=0*ones(n,bird_setp);                                       <span class="comment">%-----------------------------%</span>                                       <span class="comment">%    initialize the parameter %</span>                                       <span class="comment">%-----------------------------%</span>R1 = rand(dim, n);R2 = rand(dim, n);current_fitness =0*ones(n,1);                                 <span class="comment">%------------------------------------------------%</span>                                 <span class="comment">% Initializing swarm and velocities and position %</span>                                 <span class="comment">%------------------------------------------------%</span>current_position = 10*(rand(dim, n)-.5);velocity = .3*randn(dim, n) ;local_best_position  = current_position ;                                 <span class="comment">%-------------------------------------------%</span>                                 <span class="comment">%     Evaluate initial population           %</span>                                 <span class="comment">%-------------------------------------------%</span><span class="keyword">for</span> i = 1:n    current_fitness(i) = tracklsq(current_position(:,i));<span class="keyword">end</span>local_best_fitness  = current_fitness ;[global_best_fitness,g] = min(local_best_fitness) ;<span class="keyword">for</span> i=1:n    globl_best_position(:,i) = local_best_position(:,g) ;<span class="keyword">end</span>                                               <span class="comment">%-------------------%</span>                                               <span class="comment">%  VELOCITY UPDATE  %</span>                                               <span class="comment">%-------------------%</span>velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position));                                               <span class="comment">%------------------%</span>                                               <span class="comment">%   SWARMUPDATE    %</span>                                               <span class="comment">%------------------%</span>current_position = current_position + velocity ;                                               <span class="comment">%------------------------%</span>                                               <span class="comment">%  evaluate anew swarm   %</span>                                               <span class="comment">%------------------------%</span></pre><img vspace="5" hspace="5" src="PSO_01.png"> <h2>Main Loop<a name="2"></a></h2><pre class="codeinput">iter = 0 ;        <span class="comment">% Iterations&#8217;counter</span><span class="keyword">while</span>  ( iter &lt; bird_setp )iter = iter + 1;<span class="keyword">for</span> i = 1:n,current_fitness(i) = tracklsq(current_position(:,i)) ;<span class="keyword">end</span><span class="keyword">for</span> i = 1 : n        <span class="keyword">if</span> current_fitness(i) &lt; local_best_fitness(i)           local_best_fitness(i)  = current_fitness(i);           local_best_position(:,i) = current_position(:,i)   ;        <span class="keyword">end</span> <span class="keyword">end</span> [current_global_best_fitness,g] = min(local_best_fitness);<span class="keyword">if</span> current_global_best_fitness &lt; global_best_fitness   global_best_fitness = current_global_best_fitness;    <span class="keyword">for</span> i=1:n        globl_best_position(:,i) = local_best_position(:,g);    <span class="keyword">end</span><span class="keyword">end</span> velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); current_position = current_position + velocity; sprintf(<span class="string">'The value of interation iter %3.0f '</span>, iter );<span class="keyword">end</span> <span class="comment">% end of while loop its mean the end of all step that the birds move it</span>            xx=fitness(:,50);            [Y,I] = min(xx);            current_position(:,I)<span class="comment">%</span></pre><pre class="codeoutput">ans =    0.9399    0.5610</pre><img vspace="5" hspace="5" src="PSO_02.png"> <p class="footer"><br>            Published with MATLAB&reg; 7.2<br></p>      </div>      <!--##### SOURCE BEGIN #####%% 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);

                                       %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH-%
                                       %    initialize the parameter %
                                       %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH-%
                                       
R1 = rand(dim, n);
R2 = rand(dim, n);
current_fitness =0*ones(n,1);

                                 %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH%
                                 % Initializing swarm and velocities and position %
                                 %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH%
                                 
current_position = 10*(rand(dim, n)-.5);
velocity = .3*randn(dim, n) ;
local_best_position  = current_position ;


                                 %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH-%
                                 %     Evaluate initial population           %           
                                 %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH-%

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
                                               %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH-%
                                               %  VELOCITY UPDATE  %
                                               %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH-%

velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position));

                                               %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH%
                                               %   SWARMUPDATE    %
                                               %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH%
                                               
            
current_position = current_position + velocity ;

                                               %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH%
                                               %  evaluate anew swarm   %
                                               %REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH%
                                               

%% Main Loop
iter = 0 ;        % Iterations鈥檆ounter
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)

               


    

%          
         ##### SOURCE END #####-->   </body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -