?? myfirstpao.m
字號:
%------基本粒子群優(yōu)化算法(Particle Swarm Optimization)-----------
%------名稱:基本粒子群優(yōu)化算法(PSO)
%------作用:求解優(yōu)化問題
%------說明:全局性,并行性,高效的群體智能算法
%------作者:孫明杰(dreamsun2001@126.com)
%------單位:中國礦業(yè)大學(xué)理學(xué)院計算數(shù)學(xué)碩2005
%------時間:2006年8月17日 <CopyRight@dReAmsUn>
%------------------------------------------------------------------
%------初始格式化--------------------------------------------------
clear all;
clc;
format long;
%------給定初始化條件----------------------------------------------
c1=1.4962; %學(xué)習(xí)因子1
c2=1.4962; %學(xué)習(xí)因子2
w=0.7298; %慣性權(quán)重
MaxDT=1000; %最大迭代次數(shù)
D=10; %搜索空間維數(shù)(未知數(shù)個數(shù))
N=40; %初始化群體個體數(shù)目
eps=10^(-6); %設(shè)置精度(在已知最小值時候用)
%------初始化種群的個體(可以在這里限定位置和速度的范圍)------------
for i=1:N
for j=1:D
x(i,j)=randn; %隨機(jī)初始化位置
v(i,j)=randn; %隨機(jī)初始化速度
end
end
%------先計算各個粒子的適應(yīng)度,并初始化Pi和Pg----------------------
for i=1:N
p(i)=fitness(x(i,:),D);
y(i,:)=x(i,:);
end
pg=x(1,:); %Pg為全局最優(yōu)
for i=2:N
if fitness(x(i,:),D)<fitness(pg,D)
pg=x(i,:);
end
end
%------進(jìn)入主要循環(huán),按照公式依次迭代,直到滿足精度要求------------
for t=1:MaxDT
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
if fitness(x(i,:),D)<p(i)
p(i)=fitness(x(i,:),D);
y(i,:)=x(i,:);
end
if p(i)<fitness(pg,D)
pg=y(i,:);
end
end
Pbest(t)=fitness(pg,D);
end
%------最后給出計算結(jié)果
disp('*************************************************************')
disp('函數(shù)的全局最優(yōu)位置為:')
Solution=pg'
disp('最后得到的優(yōu)化極值為:')
Result=fitness(pg,D)
disp('*************************************************************')
%------算法結(jié)束---DreamSun GL & HF-----------------------------------
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -