粒子群算法学习报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

粒子群算法

粒子群算法是模拟鸟群的飞行觅食的行为,通过鸟之间的集体协作使群体的达到最优。经管每个个体的行为准则是很简单的,但总体组合起来的行为是很复杂的。这个算法基于群体迭代,群体在解空间中追随最优粒子进行搜索。其优势在于简单容易实现,与此同时优有非常深刻的智能背景,即符合科学研究,又特别适合工程应用。

一 基本粒子群算法

在粒子群算法中,每一个个体都是一个“粒子”,同时每一个粒子都有可能代表着一个最优解。例如:在一个D 维的目标搜索空间中,每个粒子就可以看成空间内的一个点。设群体由m 个粒子组成。M 也被称为群体规模,m 的值过大会影响算法的运行速度和收敛性。

设zi=(zi1,zi2,…ziD)为第i 个粒子的空间位置,根据适应度函数计算出zi 当前的适应度,即可衡量粒子位置的优劣;vi=(vi1,vi2,…viD )表示i 粒子在D 维空间内的飞行速度;pi=(pi1,pi2,…piD )表示i 粒子到目前为止搜索到的最优解;pg=(pg1,pg2,…pgD )表示整个群体到目前为止搜索到的最优解。 每次迭代,粒子根据下面的公式更新速度:

()()112211k k k id id id id gd id k k k id id id v v c r p z c r p z z z rv ω++=+-+-=+ 其中,i=1,2,…,m ,d=1,2,…D ,k 是迭代次数,r1和r2为[0,1]之间的随机数;w 是保持原来速度的系数,所以叫做惯性权重;c1粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫“认知”。通常设置为2。c2是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为2。r 是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设置为1。 粒子群算法的流程

开始

选择阈值ε和最大迭代次数:Nmax

初始化粒子位置zi=(zi1,zi2,…,ziD ),i=1,2,…,m

测量每个粒子的适应度fitness

pi=fitness

根据fitness=min (fitness1,fitness2,…,fitness m )找出最优解pg ;

K=0

1 K →k+1

根据速度更新公式更新vi

根据位置更新公式更新zi

测量zi 的适应度,表示为fitness i

更新pi 和pg

如果k

结束

简化流程图为

二粒子群算法的应用

粒子群算法作为新型的群体智能算法,自从提出之后,由于其概念简明,实现方便。在短期内迅速被应用到了计算研究的各个领域,同时由于其能很好的解决复杂组合优化问题,也被广泛应用与工程设计与优化电力系统,机器人控制,交通运输,通讯,计算机,工业生产以及生物医学和电磁学等领域。

在工程设计与优化方面,粒子群算法也被应用于神经网络进化,模糊神经元网络规则提取,电路设计,数字滤波器设计,半导体器件,布局优化,控制器参数优化以及系统辨识与状态评估等。

(1)电力系统领域

粒子群算法被用于实现电能优化电压控制,提高电站可靠性以及电容器优化配置问题等。

(2)计算机领域

粒子群算法被用于任务分配,模式识别,图像处理以及数据挖掘等方面。(3)生物医学领域

粒子群算法被用于生物医学图像配准或图像数据的集合排列,基因分类等问题。

(4)机器人控制

在机器人控制中,粒子群算法被用于机器人震动抑制轨迹规划以及动态规划问题。

三粒子群算法Matlab实例

此例子为计算一个40个十维的粒子在空间任意的移动,得到在每个位置里fitness的值,经过1000次迭代得到求得到的最小值。

fitness函数

function result=fitness(x,D)

sum=0;

for i=1:D

sum=sum+x(i)^2;

end

result=sum;

主函数

clear all;

clc;

format long;

c1=1.4962;

c2=1.4962;

w=0.7298;

MaxDT=1000;

D=10;

N=40;

eps=10^(-6);

for i=1:N

for j=1:D

x(i,j)=randn;

v(i,j)=randn;

end

end

for i=1:N

p(i)=fitness(x(i,:),D);

y(i,:)=x(i,:);

end

pg=x(1,:);

for i=2:N

if fitness(x(i,:),D)

pg=x(i,:);

end

end

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)=fitness(x(i,:),D);

y(i,:)=x(i,:);

end

if p(i)

pg=y(i,:);

end

end

pbest(t) =fitness(pg,D); end

Solution=pg' ;

Rwsult=fitness(pg,D);

相关文档
最新文档