粒子群优化算法(PSO)
- 格式:pdf
- 大小:140.95 KB
- 文档页数:2
粒⼦群优化算法(PSO)
1、粒⼦群优化算法(Partical Swarm Optimization PSO),粒⼦群中的每⼀个粒⼦都代表⼀个问题的可能解,
通过粒⼦个体的简单⾏为,群体内的信息交互实现问题求解的智能性。
2、粒⼦群算法最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅⾷⾏为的研究。设想这样⼀个场景:⼀群鸟在随机
搜寻⾷物,在这个区域⾥只有⼀块⾷物,所有的鸟都不知道⾷物在哪⾥,但是它们知道当前的位置离⾷物还有多远。最简单有效的策略?寻
找鸟群中离⾷物最近的个体来进⾏搜素。PSO算法就从这种⽣物种群⾏为特性中得到启发并⽤于求解优化问题。
⽤⼀种粒⼦来模拟上述的鸟类个体,每个粒⼦可视为N维搜索空间中的⼀个搜索个体,粒⼦的当前位置即为对应优化问题的⼀个候选解,粒
⼦的飞⾏过程即为该个体的搜索过程.粒⼦的飞⾏速度可根据粒⼦历史最优位置和种群历史最优位置进⾏动态调整.粒⼦仅具有两个属性:
速度和位置,速度代表移动的快慢,位置代表移动的⽅向。每个粒⼦单独搜寻的最优解叫做个体极值,粒⼦群中最优的个体极值作为当前全
局最优解。不断迭代,更新速度和位置。最终得到满⾜终⽌条件的最优解。
3、算法流程如下:
1、初始化
⾸先,我们设置最⼤迭代次数,⽬标函数的⾃变量个数,粒⼦的最⼤速度,位置信息为整个搜索空间,我们在速度区间和搜索空间上随机初
始化速度和位置,设置粒⼦群规模为M,每个粒⼦随机初始化⼀个飞翔速度。
2、 个体极值与全局最优解
定义适应度函数,个体极值为每个粒⼦找到的最优解,从这些最优解找到⼀个全局值,叫做本次全局最优解。与历史全局最优⽐较,进⾏更
新。
3、 更新速度和位置的公式
4、 终⽌条件
(1)达到设定迭代次数;(2)代数之间的差值满⾜最⼩界限
以上就是最基本的⼀个标准PSO算法流程。和其它群智能算法⼀样,PSO算法在优化过程中,种群的多样性和算法的收敛速度之间始终存在
着⽭盾.对标准PSO算法的改进,⽆论是参数的选取、⼩⽣境技术的采⽤或是其他技术与PSO的融合,其⽬的都是希望在加强算法局部搜索
能⼒的同时,保持种群的多样性,防⽌算法在快速收敛的同时出现早熟收敛。
4、
⾸先总结⼀下PSO算法的⼀些优点:(1)它是⼀类不确定算法。不确定性体现了⾃然界⽣物的⽣物机制,并且在求解某些特定问题⽅⾯优
于确定性算法。(2)是⼀类概率型的全局优化算法。⾮确定算法的优点在于算法能有更多机会求解全局最优解。(3)不依赖于优化问题本
⾝的严格数学性质。(4)是⼀种基于多个智能体的仿⽣优化算法。粒⼦群算法中的各个智能体之间通过相互协作来更好的适应环境,表现
出与环境交互的能⼒.(5)具有本质并⾏性。包括内在并⾏性和内含并⾏性。(6)具有突出性。粒⼦群算法总⽬标的完成是在多个智能体
个体⾏为的运动过程中突现出来的。(7)具有⾃组织和进化性以及记忆功能,所有粒⼦都保存优解的相关知识。(8)都具有稳健性。稳健
性是指在不同条件和环境下算法的实⽤性和有效性,但是现在粒⼦群算法的数学理论基础还不够牢固,算法的收敛性还需要讨论。
从中可以看出PSO具有很⼤的发展价值和发展空间,算法能够⽤于多个领域并创造价值,在群智能算法中具有重要的地位,同时也能够在相
关产业创造价值,发挥作⽤。下⾯结合相关产业具体分析⼀下。
计算智能的算法,往往结合⼤数据平台,包括GPU运算,并⾏计算,HPC,多模式结合等⼿段,来完成更加复杂多变的业务需求。
下⾯具体分析在产业中的作⽤(1)模式识别和图像处理。PSO算法已在图像分割、图像配准、图像融合、图像识别、图像压缩和图像合成
等⽅⾯发挥作⽤。(2)神经⽹络训练。PSO算法可完成⼈⼯神经⽹络中的连接权值的训练、结构设计、学习规则调整、特征选择、连接权
值的初始化和规则提取等。但是速度没有梯度下降优化的好,需要较⼤的计算资源。⼀般都算不动。(3)电⼒系统设计,例如:⽇本的Fuji
电⼒公司的研究⼈员将电⼒企业某个著名的RPVC(Reactive Power and Voltage Control)问题简化为函数的最⼩值问题,并使⽤改进的PSO
算法进⾏优化求解。(4)半导体器件综合,半导体器件综合是在给定的搜索空间内根据期望得到的器件特性来得到相应的设计参数。(5)
还有其他的⼀些相关产业。包括⾃动⽬标检测、⽣物信号识别、决策调度、系统识别以及游戏训练等⽅⾯也取得了⼀定的研究成果。
5、
clc
clear
close all
E=0.000001;
maxnum=800;%最⼤迭代次数
narvs=2;%⽬标函数的⾃变量个数
particlesize=50;%粒⼦群规模c1=2;%每个粒⼦的个体学习因⼦,加速度常数
c2=2;%每个粒⼦的社会学习因⼦,加速度常数
w=0.6;%惯性因⼦
vmax=5;%粒⼦的最⼤飞翔速度
v=2*rand(particlesize,narvs);%粒⼦飞翔速度
x=-300+600*rand(particlesize,narvs);%粒⼦所在位置
%定义适应度函数
fitness=inline('(x(1)^2+x(2)^2)/10000','x');
for i=1:particlesize
f(i)=fitness(x(i,:));
end
personalbest_x=x;
personalbest_faval=f;
[globalbest_faval,i]=min(personalbest_faval);
globalbest_x=personalbest_x(i,:);
k=1;
while (k<=maxnum)
for i=1:particlesize
f(i)=fitness(x(i,:));
if f(i) personalbest_faval(i)=f(i); personalbest_x(i,:)=x(i,:); end end [globalbest_faval,i]=min(personalbest_faval); globalbest_x=personalbest_x(i,:); for i=1:particlesize v(i,:)=w*v(i,:)+c1*rand*(personalbest_x(i,:)-x(i,:))... +c2*rand*(globalbest_x-x(i,:)); for j=1:narvs if v(i,j)>vmax v(i,j)=vmax; elseif v(i,j)<-vmax v(i,j)=-vmax; end end x(i,:)=x(i,:)+v(i,:); end ff(k)=globalbest_faval; if globalbest_faval break end % figure(1) % for i= 1:particlesize % plot(x(i,1),x(i,2),'*') % end k=k+1; end xbest=globalbest_x; figure(2) set(gcf,'color','white'); plot(1:length(ff),ff)