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

📄 pso.html

📁 粒子群进化算法
💻 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>Particle Swarm Optimization Simulation</title>      <meta name="generator" content="MATLAB 7.2">      <meta name="date" content="2006-06-26">      <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>Particle Swarm Optimization Simulation</h1>         <introduction>            <p>Simulates the movements of a swarm to minimize the objective function</p>            <p><img vspace="5" hspace="5" src="PSO_eq76379.png"> </p>            <p>The swarm matrix is</p>            <p>swarm(index, [location, velocity, best position, best value], [x, y components or the value component])</p>            <p>Author: Wesam ELSHAMY (<a href="mailto:wesamelshamy@yahoo.com">wesamelshamy@yahoo.com</a>)            </p>         </introduction>         <h2>Contents</h2>         <div>            <ul>               <li><a href="#1">Initialization</a></li>               <li><a href="#2">Iterations</a></li>            </ul>         </div>         <h2>Initialization<a name="1"></a></h2>         <p>Parameters</p><pre class="codeinput">clearclciterations = 30;inertia = 1.0;correction_factor = 2.0;swarm_size = 49;<span class="comment">% ---- initial swarm position -----</span>index = 1;<span class="keyword">for</span> i = 1 : 7    <span class="keyword">for</span> j = 1 : 7        swarm(index, 1, 1) = i;        swarm(index, 1, 2) = j;        index = index + 1;    <span class="keyword">end</span><span class="keyword">end</span>swarm(:, 4, 1) = 1000;          <span class="comment">% best value so far</span>swarm(:, 2, :) = 0;             <span class="comment">% initial velocity</span></pre><h2>Iterations<a name="2"></a></h2><pre class="codeinput"><span class="keyword">for</span> iter = 1 : iterations    <span class="comment">%-- evaluating position &amp; quality ---</span>    <span class="keyword">for</span> i = 1 : swarm_size        swarm(i, 1, 1) = swarm(i, 1, 1) + swarm(i, 2, 1)/1.3;     <span class="comment">%update x position</span>        swarm(i, 1, 2) = swarm(i, 1, 2) + swarm(i, 2, 2)/1.3;     <span class="comment">%update y position</span>        x = swarm(i, 1, 1);        y = swarm(i, 1, 2);        val = (x - 15)^2 + (y - 20)^2;          <span class="comment">% fitness evaluation (you may replace this objective function with any function having a global minima)</span>        <span class="keyword">if</span> val &lt; swarm(i, 4, 1)                 <span class="comment">% if new position is better</span>            swarm(i, 3, 1) = swarm(i, 1, 1);    <span class="comment">% update best x,</span>            swarm(i, 3, 2) = swarm(i, 1, 2);    <span class="comment">% best y postions</span>            swarm(i, 4, 1) = val;               <span class="comment">% and best value</span>        <span class="keyword">end</span>    <span class="keyword">end</span>    [temp, gbest] = min(swarm(:, 4, 1));        <span class="comment">% global best position</span>    <span class="comment">%--- updating velocity vectors</span>    <span class="keyword">for</span> i = 1 : swarm_size        swarm(i, 2, 1) = rand*inertia*swarm(i, 2, 1) + correction_factor*rand*(swarm(i, 3, 1) - swarm(i, 1, 1)) + correction_factor*rand*(swarm(gbest, 3, 1) - swarm(i, 1, 1));   <span class="comment">%x velocity component</span>        swarm(i, 2, 2) = rand*inertia*swarm(i, 2, 2) + correction_factor*rand*(swarm(i, 3, 2) - swarm(i, 1, 2)) + correction_factor*rand*(swarm(gbest, 3, 2) - swarm(i, 1, 2));   <span class="comment">%y velocity component</span>    <span class="keyword">end</span>    <span class="comment">%% Plotting the swarm</span>    clf    plot(swarm(:, 1, 1), swarm(:, 1, 2), <span class="string">'x'</span>)   <span class="comment">% drawing swarm movements</span>    axis([-2 30 -2 30]);pause(.2)<span class="keyword">end</span></pre><img vspace="5" hspace="5" src="PSO_01.png"> <p class="footer"><br>            Published with MATLAB&reg; 7.2<br></p>      </div>      <!--##### SOURCE BEGIN #####%% Particle Swarm Optimization Simulation
% Simulates the movements of a swarm to minimize the objective function
% 
% $$ \left( x-15 \right) ^{2}+ \left( y-20 \right) ^{2} = 0$$
% 
% The swarm matrix is  
%
% swarm(index, [location, velocity, best position, best
% value], [x, y components or the value component])
%
% Author: Wesam ELSHAMY (wesamelshamy@yahoo.com)

%%


%% Initialization
% Parameters
clear
clc
iterations = 30;
inertia = 1.0;
correction_factor = 2.0;
swarm_size = 49;

% REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH initial swarm position REPLACE_WITH_DASH_DASHREPLACE_WITH_DASH_DASH-
index = 1;
for i = 1 : 7
    for j = 1 : 7
        swarm(index, 1, 1) = i;
        swarm(index, 1, 2) = j;
        index = index + 1;
    end
end

swarm(:, 4, 1) = 1000;          % best value so far
swarm(:, 2, :) = 0;             % initial velocity

%% Iterations
for iter = 1 : iterations
    
    %REPLACE_WITH_DASH_DASH evaluating position & quality REPLACE_WITH_DASH_DASH-
    for i = 1 : swarm_size
        swarm(i, 1, 1) = swarm(i, 1, 1) + swarm(i, 2, 1)/1.3;     %update x position
        swarm(i, 1, 2) = swarm(i, 1, 2) + swarm(i, 2, 2)/1.3;     %update y position
        x = swarm(i, 1, 1);
        y = swarm(i, 1, 2);
        
        val = (x - 15)^2 + (y - 20)^2;          % fitness evaluation (you may replace this objective function with any function having a global minima)
        
        if val < swarm(i, 4, 1)                 % if new position is better
            swarm(i, 3, 1) = swarm(i, 1, 1);    % update best x,
            swarm(i, 3, 2) = swarm(i, 1, 2);    % best y postions
            swarm(i, 4, 1) = val;               % and best value
        end
    end

    [temp, gbest] = min(swarm(:, 4, 1));        % global best position
    
    %REPLACE_WITH_DASH_DASH- updating velocity vectors
    for i = 1 : swarm_size
        swarm(i, 2, 1) = rand*inertia*swarm(i, 2, 1) + correction_factor*rand*(swarm(i, 3, 1) - swarm(i, 1, 1)) + correction_factor*rand*(swarm(gbest, 3, 1) - swarm(i, 1, 1));   %x velocity component
        swarm(i, 2, 2) = rand*inertia*swarm(i, 2, 2) + correction_factor*rand*(swarm(i, 3, 2) - swarm(i, 1, 2)) + correction_factor*rand*(swarm(gbest, 3, 2) - swarm(i, 1, 2));   %y velocity component
    end
    
    %% Plotting the swarm
    clf    
    plot(swarm(:, 1, 1), swarm(:, 1, 2), 'x')   % drawing swarm movements
    axis([-2 30 -2 30]);
pause(.2)
end##### SOURCE END #####-->   </body></html>

⌨️ 快捷键说明

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