文档视界 最新最全的文档下载
当前位置:文档视界 › 粒子群算法原理及在函数优化中的应用(附程序)

粒子群算法原理及在函数优化中的应用(附程序)

粒子群算法原理及在函数优化中的应用(附程序)
粒子群算法原理及在函数优化中的应用(附程序)

粒子群算法原理及其在函数优化中的应用

1 粒子群优化(PSO )算法基本原理

1.1 标准粒子群算法

假设在一个D 维的目标搜索空间中,有m 个代表问题潜在解的粒子组成一个种群12[,,...,]m =x x x x ,第i 个粒子的信息可用D 维向量表示为

12[,,...,]T i i i iD x x x =x ,其速度为12[,,...,]T i i i iD v v v =v 。算法首先初始化m 个随机粒子,然后通过迭代找到最优解。每一次迭代中,粒子通过跟踪2个极值进行信息交流,一个是第i 个粒子本身找到的最优解,称之为个体极值,即

12[,,...,]T i i i iD p p p =p ;另一个是所有粒子目前找到的最优解,称之为群体极值,即12[,,...,]T g g g gD p p p =p 。粒子在更新上述2个极值后,根据式(1)和式(2)更新自己的速度和位置。

11122()()t t t t t t i i i i g i w c r c r +=+-+-v v p x p x

(1)

11t t t i i i ++=+x x v (2)

式中,t 代表当前迭代次数,12,r r 是在[0,1]之间服从均匀分布的随机数,12

,c c 称为学习因子,分别调节粒子向个体极值和群体极值方向飞行的步长,w 为惯性权重,一般在0.1~0.9之间取值。在标准的PSO 算法中,惯性权重w 被设为常数,通常取0.5w =。在实际应用中,x 需保证在一定的范围内,即x 的每一维的变化范围均为min max [,]X X ,这在函数优化问题中相当于自变量的定义域。

1.2 算法实现步骤

步骤1:表示出PSO 算法中的适应度函数()fitness x ;(编程时最好以函数的形式保存,便于多次调用。)

步骤2:初始化PSO 算法中各个参数(如粒子个数,惯性权重,学习因子,最大迭代次数等),在自变量x 定义域内随机初始化x ,代入()fitness x 求得适应度值,通过比较确定起始个体极值i p 和全局极值g p 。

步骤3:通过循环迭代更新x 、i p 和g p : ①确定惯性权重w 的取值(当w 不是常数时)。

②根据式(1)更新粒子的速度1k i +v ,若速度中的某一维超过了max V ,则取为

max V 。

③根据式(2)更新自变量x ,若x 的取值超过其定义域,则在其定义域内重新

初始化。

④代入()fitness x 求得适应度值,通过比较更新个体极值i p 和全局极值g p 。 步骤4:判断是否满足终止条件(通常设为达到最大迭代次数或达到估计精度要求),若不满足,则转入步骤(3),若满足,则输出估计结果,算法结束。

2 程序实现

2.1 各种测试函数(适应度函数)

测试函数是用来测试算法性能的一些通用函数,下面先给出一些测试函数的三维图(自变量为两维,加上函数值共三维)如图1-图17所示。

-10

10

z2 = x 2-cos(18*x)+y 2-cos(18*y)

图1 测试函数1

-10

10

z4 = 4*x 2-2.1*x 4+x 6/3+x*y-4*y 2+y 4

图2 测试函数2

-10

10

z5 = (y-5.1*x 2/4/π/π+5*x/π-6)2+10*(1-1/8/π)*cos(x)+10

图3 测试函数3

-5

5

z7 = x*exp(-x 2-y 2)

图4 测试函数4

-5

5

z8

图5 测试函数5

-5

5

r=sqrt(x 2+y 2)+eps; z9=sin(r)/r;

图6 测试函数6

-5

5

f6

图7 测试函数7

-10

10

图8 测试函数8

-100

100

图9 测试函数9

10

图10 测试函数10

-10

10

NDparabola

图11 测试函数11

-10

10

f6

图12 测试函数12

-10

10

Rosenbrock

图13 测试函数13

-10

10

图14 测试函数14

-10

10

tripod

图15 测试函数15

-10

10

图16 测试函数16

-10

10

Griewank

图17 测试函数17

2.2 程序实现

首先给出绘制测试函数的程序:

%% 绘图测试函数draw_fitness.m

clear;clc;close all;

%%

[x,y]=meshgrid(-10:0.5:10);

z2 = x.^2-cos(18*x)+y.^2-cos(18*y);

figure(1); surf(x,y,z2); minz2=min(min(z2));title('z2 = x^2-cos(18*x)+y^2-cos(18*y)');

%%

z4 = 4*x.^2-2.1*x.^4+x.^6/3+x.*y-4*y.^2+y.^4;

figure(2); surf(x,y,z4); minz4=min(min(z4));title('z4 = 4*x^2-2.1*x^4+x^6/3+x*y-4*y^2+y^4'); %%

z5 = (y-5.1*x.^2/4/pi/pi+5*x/pi-6).^2+10*(1-1/8/pi)*cos(x)+10;

figure(3); surf(x,y,z5); minz5=min(min(z5));title('z5 =

(y-5.1*x^2/4/\pi/\pi+5*x/\pi-6)^2+10*(1-1/8/\pi)*cos(x)+10');

%%

[x,y]=meshgrid(-5:0.5:5);

z7 = x.*exp(-x.^2-y.^2);

figure(4); surf(x,y,z7); minz7=min(min(z7));title('z7 = x*exp(-x^2-y^2)');

%%

[x,y]=meshgrid(-5:0.25:5);

z8 = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...

- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...

- 1/3*exp(-(x+1).^2 - y.^2);

figure(5); surf(x,y,z8); minz8=min(min(z8)); title('z8 ');

%%

r=sqrt(x.^2+y.^2)+eps; z9=sin(r)./r;

figure(6); surf(x,y,z9); minz9=min(min(z9));title(' r=sqrt(x^2+y^2)+eps; z9=sin(r)/r;');

%%

[x,y]=meshgrid(-5:0.25:5);

num=sin(sqrt(x.^2+y.^2)).^2 - 0.5;

den=(1.0+0.01*(x.^2+y.^2)).^2;

z10=0.5 +num./den;

figure(7); surf(x,y,z10); minz10=min(min(z10));title('f6');

%%

[x,y]=meshgrid(-10:0.5:10);

z12=abs(x)+abs(y)+abs(x).*abs(y);

figure(8); surf(x,y,z12); minz12=min(min(z12));

%%

[x,y]=meshgrid(-100:5:100);

z13=max(abs(x),abs(y));

figure(9); surf(x,y,z13); minz13=min(min(z13));

%%

[x,y]=meshgrid(0:0.5:10);

a=(cos(x)).^4+(cos(y)).^4;

b=-2*((cos(x)).^2.*(cos(y)).^2);

c=sqrt(x.^2+2*y.^2);

z14=-abs((a-b)./c);

figure(10); surf(x,y,z14); minz14=min(min(z14));

%%

[x,y]=meshgrid(-10:0.5:10);

NDparabola=x.^2+y.^2;

figure(11); surf(x,y,NDparabola); title('NDparabola');

%%

[x,y]=meshgrid(-10:0.5:10);

num=sin(sqrt(x.^2+y.^2)).^2 - 0.5;

den=(1.0+0.01*(x.^2+y.^2)).^2;

f6=0.5 +num./den;

figure(12); surf(x,y,f6); title('f6');

%%

Rosenbrock=100*(x.^2 - y).^2 + (1-x).^2;

figure(13); surf(x,y,Rosenbrock); title('Rosenbrock');

%%

[x,y]=meshgrid(-10:0.5:10);

ackley=20 + exp(1) -20*exp(-0.2*sqrt((1/2).*(x.^2+y.^2))) ...

-exp((1/2).*(cos(2*pi*x)+cos(2*pi*y)));

figure(14); surf(x,y,ackley);title('ackley');

%%

[x,y]=meshgrid(-10:0.5:10);

px1=((x) >= 0);

px2=((y) >= 0);

tripod= px2.*(1+px1) + abs(x + 50*px2.*(1-2*px1))+ abs(y + 50*(1-2.*px2)) ;

figure(15); surf(x,y,tripod); title('tripod');

%%

[x,y]=meshgrid(-10:0.5:10);

Rastrigin=(x.^2-10*cos(2*pi*x)+10)+(y.^2-10*cos(2*pi*y)+10);

figure(16); surf(x,y,Rastrigin); title('Rastrigin');

%%

[x,y]=meshgrid(-10:0.3:10);

Griewank=1/4000*(x.^2+y.^2)-cos(x).*cos(y./sqrt(2))+1;

figure(17); surf(x,y,Griewank); title('Griewank');

以上只是绘制测试函数的m文件,其目的在于对测试函数有一个直观的认识。但以上的程序在PSO算法的实现中是用不着的,下面给出几个典型测试函数的代码。需要注意的是,一次只能调用其中一个测试函数。

%% 典型测试函数的调用函数fitness.m

%%

function [out]=NDparabola(in)

out = sum(in.^2, 2);

%%

% function [out]=f6(in)

% x=in(:,1);

% y=in(:,2);

% num=sin(sqrt(x.^2+y.^2)).^2 - 0.5;

% den=(1.0+0.01*(x.^2+y.^2)).^2;

% out=0.5 +num./den;

%%

% function [out]=DeJong_f2(in)

% x= in(:,1);

% y= in(:,2);

% out = 100*(x.^2 - y).^2 + (1-x).^2;

%%

% function [out]=ackley(in)

% % dimension is # of columns of input, x1, x2, ..., xn % n=length(in(1,:));

% x=in;

% e=exp(1);

% out = (20 + e ...

% -20*exp(-0.2*sqrt((1/n).*sum(x.^2,2))) ... % -exp((1/n).*sum(cos(2*pi*x),2)));

% return

%%

% function [out]=tripod(in)

% x1=in(:,1);

% x2=in(:,2);

% px1=((x1) >= 0);

% px2=((x2) >= 0);

% out= ( px2.*(1+px1) ...

% + abs(x1 + 50*px2.*(1-2*px1))...

% + abs(x2 + 50*(1-2.*px2)) );

%%

% function F=Rastrigin(in)

% F=sum(in.^2-10*cos(2*pi*in)+10);

%%

% function y=Griewank(in)

% [row,col]=size(in);

% y1=1/4000*sum(in.^2);

% y2=1;

% for h=1:col

% y2=y2*cos(in(h)/sqrt(h));

% end

% y=y1-y2+1;

下面以测试函数ackley为例,给出基本粒子群算法的程序实现代码:A、主程序(可运行的程序)drawPSO.m:

%基于PSO算法的函数寻优收敛图绘制drawPSO.m

clear;clc;close all; %清除变量,清除命令窗口,关闭所以绘图窗口%%

%函数调用,注意函数fitness前要加@

[gbest,M,xmin,fmin]=PSO(@fitness,5,2,1.5,0.5,50,2);

figure(1); k=1:M; plot(k,gbest,':rp','LineWidth',2); %绘图

title('ackley函数收敛曲线'); %图形标题说明xlabel('迭代次数'),ylabel('适应度函数最小值'); %横纵坐标说明B、PSO算法实现程序PSO.m(核心程序)

下面给出的是基本粒子群算法程序,没有做任何改进,但却很有效。%基本粒子群优化算法函数PSO.m

function [gbest,M,xmin,fmin]=PSO(fitness,N,c1,c2,w,M,D)

% 待优化的目标函数:fitness

% 粒子数目:N

% 学习因子1:c1

% 学习因子2:c2

% 惯性权重:w

% 最大迭代次数:M

% 问题的维数:D

% 目标函数取最小值时的自变量值:xmin

% 目标函数的最小值:fmin

% gbest是一存储了所有目标函数的最小值的向量,结合M便于作出收敛图

format long; %设置数据格式

for i=1:N

for j=1:D

x(i,j)=rand; %随机初始化位置

v(i,j)=rand; %随机初始化速度

end

end

for i=1:N %利用循环初始化每个粒子的适应度

fp(i)=fitness(x(i,:));

xp(i,:)=x(i,:); %每个粒子对应的位置

end

xg=x(1,:); %给全局最优函数值的位置xg赋初值

for i=2:N %通过循环比较找出全局最优函数值的位置xg

if fitness(x(i,:))

xg=x(i,:);

end

end

for t=1:M

for i=1:N

v(i,:)=w*v(i,:)+c1*rand*(xp(i,:)-x(i,:))+c2*rand*(xg-x(i,:)); %更新粒子的速度

x(i,:)=x(i,:)+v(i,:); %更新粒子的位置

if fitness(x(i,:))

fp(i)=fitness(x(i,:));

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

end

if fp(i)

xg=xp(i,:);

end

end

gbest(t)=fitness(xg); %将每个全局最优函数值存储在gbest向量中end

xmin=xg'; %输出最优位置及函数值

fmin=fitness(xg);

C、适应度函数程序fitness.m(需保存为独立的m文件)

%% 适应度函数函数fitness.m

function [out]=ackley(in)

n=length(in(1,:));

x=in; e=exp(1);

out = (20 + e-20*exp(-0.2*sqrt((1/n).*sum(x.^2,2))) ...

-exp((1/n).*sum(cos(2*pi*x),2)));

return

2.3 主程序运行结果

运行主程序drawPSO.m,结果如图18所示。

00.20.40.60.811.21.41.61.82ackley 函数收敛曲线

迭代次数

适应度函数最小值

图18 PSO 函数寻优收敛曲线

(完整word版)基本粒子群算法的原理和matlab程序

基本粒子群算法的原理和matlab程序 作者——niewei120(nuaa) 一、粒子群算法的基本原理 粒子群优化算法源自对鸟群捕食行为的研究,最初由Kennedy和Eberhart提出,是一种通用的启发式搜索技术。一群鸟在区域中随机搜索食物,所有鸟知道自己当前位置离食物多远,那么搜索的最简单有效的策略就是搜寻目前离食物最近的鸟的周围区域。PSO 算法利用这种模型得到启示并应用于解决优化问题。PSO 算法中,每个优化问题的解都是粒子在搜索 空间中的位置,所有的粒子都有一个被优化的目标函数所决定的适应值,粒子还有一个速度值决定它们飞翔的方向和距离,然后粒子群就追随当前的最优粒子在解空间中搜索。 PSO 算法首先在给定的解空间中随机初始化粒子群,待优化问题的变量数决定了解空间的维数。每个粒子有了初始位置与初始速度。然后通过迭代寻优。在每一次迭代中,每个粒子通过跟踪两个“极值”来更新自己在解空间中的空间位置与飞翔速度。第一个极值就是单个粒子本身在迭代过程中找到的最优解粒子,这个粒子叫做个体极值。另一个极值是种群所有粒子在迭代过程中所找到的最优解粒子,这个粒子是全局极值。上述的方法叫全局粒子群算法。如果不用种群所有粒子而只用其中一部分作为该粒子的邻居粒子,那么在所有邻居粒子中的极值就是局部极值,该方法称为局部PSO 算法。 速度、位置的更新方程表示为: 每个粒子自身搜索到的历史最优值p i ,p i=(p i1,p i2,....,p iQ),i=1,2,3,....,n。所有粒子搜索到的最优值p g,p g=(p g1,p g2,....,p gQ),注意这里的p g只有一个。 是保持原来速度的系数,所以叫做惯性权重。 是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫“认知”。通常设置为2。 是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为2。 是[0,1]区间内均匀分布的随机数。 是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设 置为1 。

粒子群优化算法及其参数设置

毕业论文 题目粒子群算法及其参数设置专业信息与计算科学 班级计算061 学号3060811007 学生xx 指导教师徐小平 2016年 I

粒子群优化算法及其参数设置 专业:信息与计算科学 学生: xx 指导教师:徐小平 摘要 粒子群优化是一种新兴的基于群体智能的启发式全局搜索算法,粒子群优化算法通过粒子间的竞争和协作以实现在复杂搜索空间中寻找全局最优点。它具有易理解、易实现、全局搜索能力强等特点,倍受科学与工程领域的广泛关注,已经成为发展最快的智能优化算法之一。论文介绍了粒子群优化算法的基本原理,分析了其特点。论文中围绕粒子群优化算法的原理、特点、参数设置与应用等方面进行全面综述,重点利用单因子方差分析方法,分析了粒群优化算法中的惯性权值,加速因子的设置对算法基本性能的影响,给出算法中的经验参数设置。最后对其未来的研究提出了一些建议及研究方向的展望。 关键词:粒子群优化算法;参数;方差分析;最优解 II

Particle swarm optimization algorithm and its parameter set Speciality: Information and Computing Science Student: Ren Kan Advisor: Xu Xiaoping Abstract Particle swarm optimization is an emerging global based on swarm intelligence heuristic search algorithm, particle swarm optimization algorithm competition and collaboration between particles to achieve in complex search space to find the global optimum. It has easy to understand, easy to achieve, the characteristics of strong global search ability, and has never wide field of science and engineering concern, has become the fastest growing one of the intelligent optimization algorithms. This paper introduces the particle swarm optimization basic principles, and analyzes its features. Paper around the particle swarm optimization principles, characteristics, parameters settings and applications to conduct a thorough review, focusing on a single factor analysis of variance, analysis of the particle swarm optimization algorithm in the inertia weight, acceleration factor setting the basic properties of the algorithm the impact of the experience of the algorithm given parameter setting. Finally, its future researched and prospects are proposed. Key word:Particle swarm optimization; Parameter; Variance analysis; Optimal solution III

(完整word版)基本粒子群算法的原理和matlab程序.doc

基本粒子群算法的原理和matlab 程序 作者—— niewei120 (nuaa) 一、粒子群算法的基本原理 粒子群优化算法源自对鸟群捕食行为的研究,最初由Kennedy 和 Eberhart 提出,是一种通 用的启发式搜索技术。一群鸟在区域中随机搜索食物,所有鸟知道自己当前位置离食物多远, 那么搜索的最简单有效的策略就是搜寻目前离食物最近的鸟的周围区域。PSO 算法利用这种模型得到启示并应用于解决优化问题。PSO 算法中,每个优化问题的解都是粒子在搜索 空间中的位置,所有的粒子都有一个被优化的目标函数所决定的适应值,粒子还有一个速度值决定它们飞翔的方向和距离,然后粒子群就追随当前的最优粒子在解空间中搜索。 PSO 算法首先在给定的解空间中随机初始化粒子群,待优化问题的变量数决定了解空间的维数。每个粒子有了初始位置与初始速度。然后通过迭代寻优。在每一次迭代中,每个粒子通过跟踪两个“极值”来更新自己在解空间中的空间位置与飞翔速度。第一个极值就是单个粒子本身在迭代过程中找到的最优解粒子,这个粒子叫做个体极值。另一个极值是种群所有粒子在迭代过程中所找到的最优解粒子,这个粒子是全局极值。上述的方法叫全局粒子群算法。如果不用种群所有粒子而只用其中一部分作为该粒子的邻居粒子,那么在所有邻居粒子中的极值就是局部极值,该方法称为局部PSO 算法。 速度、位置的更新方程表示为: 每个粒子自身搜索到的历史最优值p i,p i=(p i1 ,p i2 ,....,p iQ ), i=1,2,3,....,n 。所有粒子搜索到的最优值p g, p g=(p g1 ,p g2,....,p gQ ),注意这里的p g只有一个。 是保持原来速度的系数,所以叫做惯性权重。 是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫“认知”。通常设置为 2 。 是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为2。 是[0,1] 区间内均匀分布的随机数。 是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设 置为 1 。

粒子群优化算法介绍及matlab程序

粒子群优化算法(1)—粒子群优化算法简介 PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO中的粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。大家也可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。这个过程我们转化为一个数学问题。寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。该函数的图形如下: 当x=0.9350-0.9450,达到最大值y=1.3706。为了得到该函数的最大值,我们在[0, 4]之间随机的洒一些点,为了演示,我们放置两个点,并且计算这两个点的函数值,同时给这两个点设置在[0, 4]之间的一个速度。下面这些点就会按照一定的公式更改自己的位置,到达新位置后,再计算这两个点的值,然后再按照一定的公式更新自己的位置。直到最后在y=1.3706这个点停止自己的更新。这个过程与粒子群算法作为对照如下: 这两个点就是粒子群算法中的粒子。 该函数的最大值就是鸟群中的食物。 计算两个点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的适应度函数。 更新自己位置的公式就是粒子群算法中的位置速度更新公式。 下面演示一下这个算法运行一次的大概过程: 第一次初始化 第一次更新位置

第二次更新位置 第21次更新 最后的结果(30次迭代) 最后所有的点都集中在最大值的地方。

粒子群优化算法(2)—标准粒子群优化算法 在上一节的叙述中,唯一没有给大家介绍的就是函数的这些随机的点(粒子)是如何运动的,只是说按照一定的公式更新。这个公式就是粒子群算法中的位置速度更新公式。下面就介绍这个公式是什么。在上一节中我们求取函数y=1-cos(3*x)*exp(-x)的在[0, 4]最大值。并在[0,4]之间放置了两个随机的点,这些点的坐标假设为x1=1.5,x2=2.5;这里的点是一个标量,但是我们经常遇到的问题可能是更一般的情况—x 为一个矢量的情况,比如二维z=2*x1+3*x22的情况。这个时候我们的每个粒子均为二维,记粒子P1=(x11,x12),P2=(x21,x22),P3=(x31,x32),......Pn=(xn1,xn2)。这里n 为粒子群群体的规模,也就是这个群中粒子的个数,每个粒子的维数为2。更一般的是粒子的维数为q ,这样在这个种群中有n 个粒子,每个粒子为q 维。 由n 个粒子组成的群体对Q 维(就是每个粒子的维数)空间进行搜索。每个粒子表示为:x i =(x i1,x i2,x i3,...,x iQ ),每个粒子对应的速度可以表示为v i =(v i1,v i2,v i3,....,v iQ ),每个粒子在搜索时要考虑两个因素: 1. 自己搜索到的历史最优值 p i ,p i =(p i1,p i2,....,p iQ ),i=1,2,3,....,n ; 2. 全部粒子搜索到的最优值p g ,p g =(p g1,p g2,....,p gQ ),注意这里的p g 只有一个。 下面给出粒子群算法的位置速度更新公式: 112()()()()k k k k i i i i v v c rand pbest x c rand gbest x ω+=+??-+??-, 11k k k i i i x x av ++=+. 这里有几个重要的参数需要大家记忆,因为在以后的讲解中将会经常用到,它们是: ω是保持原来速度的系数,所以叫做惯性权重。1c 是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫“认知”。通常设置为2。2c 是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为2。()rand 是[0,1]区间内均匀分布的随机数。a 是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设置为1。这样一个标准的粒子群算法就介绍结束了。下图是对整个基本的粒子群的过程给一个简单的图形表示。 判断终止条件可是设置适应值到达一定的数值或者循环一定的次数。 注意:这里的粒子是同时跟踪自己的历史最优值与全局(群体)最优值来改变自己的位置预速度的,所以又叫做全局版本的标准粒子群优化算法。

粒子群算法基本原理

4.1粒子群算法基本原理 粒子群优化算法[45]最原始的工作可以追溯到1987年Reynolds 对鸟群社会系统Boids (Reynolds 对其仿真鸟群系统的命名)的仿真研究 。通常,群体的行为可以由几条简单的规则进行建模,虽然每个个体具有简单的行为规则,但是却群体的行为却是非常的复杂,所以他们在鸟类仿真中,即Boids 系统中采取了下面的三条简单的规则: (1)飞离最近的个体(鸟),避免与其发生碰撞冲突; (2)尽量使自己与周围的鸟保持速度一致; (3)尽量试图向自己认为的群体中心靠近。 虽然只有三条规则,但Boids 系统已经表现出非常逼真的群体聚集行为。但Reynolds 仅仅实现了该仿真,并无实用价值。 1995年Kennedy [46-48]和Eberhart 在Reynolds 等人的研究基础上创造性地提出了粒子群优化算法,应用于连续空间的优化计算中 。Kennedy 和Eberhart 在boids 中加入了一个特定点,定义为食物,每只鸟根据周围鸟的觅食行为来搜寻食物。Kennedy 和Eberhart 的初衷是希望模拟研究鸟群觅食行为,但试验结果却显示这个仿真模型蕴含着很强的优化能力,尤其是在多维空间中的寻优。最初仿真的时候,每只鸟在计算机屏幕上显示为一个点,而“点”在数学领域具有多种意义,于是作者用“粒子(particle )”来称呼每个个体,这样就产生了基本的粒子群优化算法[49]。 假设在一个D 维搜索空间中,有m 个粒子组成一粒子群,其中第i 个粒子的空间位置为123(,,,...,)1,2,...,i i i i iD X x x x x i m ==,它是优化问题的一个潜在解,将它带入优化目标函数可以计算出其相应的适应值,根据适应值可衡量i x 的优劣;第i 个粒子所经历的最好位置称为其个体历史最好位置,记为123(,,,...,)1,2,...,i i i i iD P p p p p i m ==,相应的适应值为个体最好适应值 Fi ;同时,每个粒子还具有各自的飞行速度123(,,,...,)1,2,...,i i i i iD V v v v v i m ==。所有粒子经历过的位置中的最好位置称为全局历史最好位置,记为

粒子群优化算法及其参数设置

附录 程序1 当22111==c c ,5.12212==c c ,2.1=w 。 a)%主函数源程序(main.m ) %------基本粒子群算法 (particle swarm optimization ) %------名称: 基本粒子群算法 %------初始格式化 clear all ; %清除所有变量 clc; %清屏 format long ; %将数据显示为长整形科学计数 %------给定初始条条件------------------ N=40; %3初始化群体个数 D=10; %初始化群体维数 T=100; %初始化群体最迭代次数 c11=2; %学习因子1 c21=2; %学习因子2 c12=1.5; c22=1.5; w=1.2; %惯性权重 eps=10^(-6); %设置精度(在已知最小值的时候用) %------初始化种群个体(限定位置和速度)------------ x=zeros(N,D); v=zeros(N,D); for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------显示群位置----------------------

figure(1) for j=1:D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),'b*');grid on xlabel('粒子') ylabel('初始位置') tInfo=strcat('第',char(j+48),'维'); if(j>9) tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维'); end title(tInfo) end %------显示种群速度 figure(2) for j=1:D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),'b*');grid on xlabel('粒子') ylabel('初始速度') tInfo=strcat('第,char(j+48),'维'); if(j>9) tInfo=strcat('第',char(floor(j/10)+48), char(rem(j,10)+48),'维); end title(tInfo) end figure(3)

粒子群算法(1)----粒子群算法简介

粒子群算法(1)----粒子群算法简介 二、粒子群算法的具体表述 上面罗嗦了半天,那些都是科研工作者写论文的语气,不过,PSO的历史就像上面说的那样。下面通俗的解释PSO算法。 PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO.中的粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。大家也可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。这个过程我们转化为一个数学问题。寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。该函数的图形如下: 当x=0.9350-0.9450,达到最大值y=1.3706。为了得到该函数的最大值,我们在[0,4]之间随机的洒一些点,为了演示,我们放置两个点,并且计算这两个点的函数值,同时给这两个点设置在[0,4]之间的一个速度。下面这些点就会按照一定的公式更改自己的位置,到达新位置后,再计算这两个点的值,然后再按照一定的公式更新自己的位置。直到最后在y=1.3706这个点停止自己的更新。这个过程与粒子群算法作为对照如下: 这两个点就是粒子群算法中的粒子。 该函数的最大值就是鸟群中的食物 计算两个点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的适应度函数。 更新自己位置的一定公式就是粒子群算法中的位置速度更新公式。 下面演示一下这个算法运行一次的大概过程: 第一次初始化

第一次更新位置 第二次更新位置

第21次更新 最后的结果(30次迭代) 最后所有的点都集中在最大值的地方。

粒子群算法

t0=clock; >>citys=[565 575;25 185;345 750;945 685;845 655;880 660;25 230;525 1000;580 1175;650 1130;1605 620;1220 580;1465 200;1530 5;845 680;725 370;145 665;415 635;510 875;560 365;300 465;520 585;480 415;835 625;975 580;1215 245;1320 315;1250 400;660 180;410 250;420 555;575 665;1150 1160;700 580;686 595;685 610;770 610;795 645;475 960;95 260;875 920;700 500;555 815;830 485;1170 65;830 610;605 625;695 360;1340 725;1740 245]; >> n=size(citys,1); >> D=zeros(n,n); >> for i=1:n for j=1:n if i~=j D(i,j)=sqrt(sum(citys(i,:)-citys(j,:).^2)); else D(i,j)=1e-4; end end end >> m=31; >> alpha=1; >> beta=5; >>vol=0.2; >> Q=10;

>>Heu_F=1./D; >> Tau=ones(n,n); >> Table=zeros(m,n); >>iter=1; >>iter_max=100; >>Route_best=zeros(iter_max,n); >>Length_best=zeros(iter_max,1); >>Length_ave=zeros(iter_max,1); >>Limit_iter=0; >> while iter<=iter_max start=zeros(m,1); for i=1:m temp=randperm(n); start(i)=temp(1); end Table(:,1)=start; citys_index=1:n; for i=1:m for j=2:n tabu=Table(i,1:(j-1)); allow_index=~ismember(citys_index,tabu); allow=citys_index(allow_index)

粒子群优化算法及其应用研究【精品文档】(完整版)

摘要 在智能领域,大部分问题都可以归结为优化问题。常用的经典优化算法都对问题有一定的约束条件,如要求优化函数可微等,仿生算法是一种模拟生物智能行为的优化算法,由于其几乎不存在对问题的约束,因此,粒子群优化算法在各种优化问题中得到广泛应用。 本文首先描述了基本粒子群优化算法及其改进算法的基本原理,对比分析粒子群优化算法与其他优化算法的优缺点,并对基本粒子群优化算法参数进行了简要分析。根据分析结果,研究了一种基于量子的粒子群优化算法。在标准测试函数的优化上粒子群优化算法与改进算法进行了比较,实验结果表明改进的算法在优化性能明显要优于其它算法。本文算法应用于支持向量机参数选择的优化问题上也获得了较好的性能。最后,对本文进行了简单的总结和展望。 关键词:粒子群优化算法最小二乘支持向量机参数优化适应度

目录 摘要...................................................................... I 目录....................................................................... II 1.概述. (1) 1.1引言 (1) 1.2研究背景 (1) 1.2.1人工生命计算 (1) 1.2.2 群集智能理论 (2) 1.3算法比较 (2) 1.3.1粒子群算法与遗传算法(GA)比较 (2) 1.3.2粒子群算法与蚁群算法(ACO)比较 (3) 1.4粒子群优化算法的研究现状 (4) 1.4.1理论研究现状 (4) 1.4.2应用研究现状 (5) 1.5粒子群优化算法的应用 (5) 1.5.1神经网络训练 (6) 1.5.2函数优化 (6) 1.5.3其他应用 (6) 1.5.4粒子群优化算法的工程应用概述 (6) 2.粒子群优化算法 (8) 2.1基本粒子群优化算法 (8) 2.1.1基本理论 (8) 2.1.2算法流程 (9) 2.2标准粒子群优化算法 (10) 2.2.1惯性权重 (10) 2.2.2压缩因子 (11) 2.3算法分析 (12) 2.3.1参数分析 (12) 2.3.2粒子群优化算法的特点 (14) 3.粒子群优化算法的改进 (15) 3.1粒子群优化算法存在的问题 (15) 3.2粒子群优化算法的改进分析 (15) 3.3基于量子粒子群优化(QPSO)算法 (17) 3.3.1 QPSO算法的优点 (17) 3.3.2 基于MATLAB的仿真 (18) 3.4 PSO仿真 (19) 3.4.1 标准测试函数 (19) 3.4.2 试验参数设置 (20) 3.5试验结果与分析 (21) 4.粒子群优化算法在支持向量机的参数优化中的应用 (22) 4.1支持向量机 (22) 4.2最小二乘支持向量机原理 (22)

matlab粒子群优化算法举例分析

例 函数∑==10 12 )(i i x x f 对于适应度函数fitness 对其参数w ,1c ,3c 做出不同方式的比较以测试其对函数结果影响。 当22111==c c ,5.12212==c c ,2.1=w 。 (适应函数∑==10 12)(i i x x f ) 程序1 当22111==c c ,5.12212==c c ,2.1=w 。 a)%主函数源程序(main.m ) %------基本粒子群算法 (particle swarm optimization ) %------名称: 基本粒子群算法 %------初始格式化 clear all; %清除所有变量 clc; %清屏 format long; %将数据显示为长整形科学计数 %------给定初始条条件------------------ N=40; %3初始化群体个数 D=10; %初始化群体维数 T=100; %初始化群体最迭代次数 c11=2; %学习因子1 c21=2; %学习因子2 c12=1.5; c22=1.5; w=1.2; %惯性权重 eps=10^(-6); %设置精度(在已知最小值的时候用) %------初始化种群个体(限定位置和速度)------------ x=zeros(N,D); %x 是位置,初始化位置空间(矩阵) v=zeros(N,D); %v 是速度,初始化速度空间(矩阵) for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置,randn 返回一个随机变化的符合正态分布的数 v(i,j)=randn; %随机初始化速度 end end

粒子群算法原理及在函数优化中的应用(附程序)

粒子群算法原理及其在函数优化中的应用 1粒子群优化(PSO)算法基本原理 1.1标准粒子群算法 假设在一个D 维的目标搜索空间中,有 m 个代表问题潜在解的粒子组成一 个种群x [X i ,X 2,...,X m ],第i 个粒子的信息可用D 维向量表示为 X i [X ii , X i2,..., X iD ]T ,其速度为V i [V ii ,V i2,...,V iD ]T 。算法首先初始化m 个随机粒 子,然后通过迭代找到最优解。每一次迭代中,粒子通过跟踪2个极值进行信息 交流,一个是第i 个粒子本身找到的最优解,称之为个体极值,即 P i [P il , P i2,...,厢]丁 ;另一个是所有粒子目前找到的最优解,称之为群体极值, 即P g [P gi ,P g2,..., P gD 「。粒子在更新上述2个极值后,根据式(1)和式(2)更新自 己的速度和位置。 t 1 t t t t t\ V i WV i C 1「1(P i X i ) C 2「2(P g X i ) 式中,t 代表当前迭代次数,「1,「2是在[0,1]之间服从均匀分布的随机数,C 1,C 2 称为学习因子,分别调节粒子向个体极值和群体极值方向飞行的步长, w 为惯性 权重,一般在0.1~0.9之间取值。在标准的PSO 算法中,惯性权重w 被设为常数, 通常取w 0.5。在实际应用中,x 需保证在一定的范围内,即x 的每一维的变化 范围均为[X min ,X max ],这在函数优化问题中相当丁自变量的定义域 1.2算法实现步骤 步骤1:表示出PSO 算法中的适应度函数fitness(x);(编程时最好以函数的 形式保存,便丁多次调用。) 步骤2:初始化PSO 算法中各个参数(如粒子个数,惯性权重,学习因子, 最大迭代次数等),在自变量x 定义域内随机初始化x ,代入fitness(x)求得适应 度值,通过比较确定起始个体极值P i 和全局极值P g 。 步骤3:通过循环迭代更新x 、p i 和p g : ① 确定惯性权重w 的取值(当w 不是常数时)。 ② 根据式(1)更新粒子的速度V :1,若速度中的某一维超过了 V max ,则取为 V max - ③ 根据式(2)更新自变量x ,若x 的取值超过其定义域,则在其定义域内重新 初t 1 X i t t 1 X i V i

粒子群优化算法参数设置

一.粒子群优化算法综述 1.6粒子群优化算法的参数设置 1.6.1粒子群优化算法的参数设置—种群规模N 种群规模N影响着算法的搜索能力和计算量: PSO对种群规模要求不高,一般取20-40就可以达到很好的求解效果,不过对于比较难的问题或者特定类别的问题,粒子数可以取到100或200。 1.6.2粒子的长度D 粒子的长度D由优化问题本身决定,就是问题解的长度。 粒子的范围R由优化问题本身决定,每一维可以设定不同的范围。 1.6.3最大速度Vmax决定粒子每一次的最大移动距离,制约着算法的探索和开发能力 Vmax的每一维一般可以取相应维搜索空间的10%-20%,甚至100% ,也有研究使用将Vmax按照进化代数从大到小递减的设置方案。 1.6.4惯性权重控制着前一速度对当前速度的影响,用于平衡算法的探索和开发能力 一般设置为从0.9线性递减到0.4,也有非线性递减的设置方案; 可以采用模糊控制的方式设定,或者在[0.5, 1.0]之间随机取值; 设为0.729的同时将c1和c2设1.49445,有利于算法的收敛。 1.6.5压缩因子限制粒子的飞行速度的,保证算法的有效收敛 Clerc0.729,同时c1和c2设为2.05 。 1.6.6加速系数c1和c2 加速系数c1和c2代表了粒子向自身极值pBest和全局极值gBest推进的加速权值。 c1和c2通常都等于2.0,代表着对两个引导方向的同等重视,也存在一些c1和c2不相等的设置,但其范围一般都在0和4之间。研究对c1和c2的自适应调整方案对算法性能的增强有重要意义。 1.6.7终止条件 终止条件决定算法运行的结束,由具体的应用和问题本身确定。将最大循环数设定为500,1000,5000,或者最大的函数评估次数,等等。也可以使用算法

粒子群算法基本原理

4.1粒子群算法基本原理 粒子群优化算法昭最原始的工作可以追溯到1987年Reynolds对鸟群社会 系 统Boids (Reyn olds对其仿真鸟群系统的命名)的仿真研究。通常,群体的行 为可以由几条简单的规则进行建模,虽然每个个体具有简单的行为规则,但是却 群体的行为却是非常的复杂,所以他们在鸟类仿真中,即Boids系统中采取了下 面的三条简单的规则: (1 )飞离最近的个体(鸟),避免与其发生碰撞冲突; (2)尽量使自己与周围的鸟保持速度一致; (3)尽量试图向自己认为的群体中心靠近。 虽然只有三条规则,但Boids系统已经表现出非常逼真的群体聚集行为。但Reynolds仅仅实现了该仿真,并无实用价值。 1995 年Kennedy [46-48]和Eberhart在Reynolds等人的研究基础上创造性地提出了粒子群优化算法,应用于连续空间的优化计算中。Kennedy和Eberhart在 boids中加入了一个特定点,定义为食物,每只鸟根据周围鸟的觅食行为来搜寻食物。Kennedy和Eberhart的初衷是希望模拟研究鸟群觅食行为,但试验结果却显示这个仿真模型蕴含着很强的优化能力,尤其是在多维空间中的寻优。最初 仿真的时候,每只鸟在计算机屏幕上显示为一个点,而“点"在数学领域具有多 种意义,于是作者用"粒子(particle )"来称呼每个个体,这样就产生了基本 [49] 的粒子群优化算法。 假设在一个D维搜索空间中,有m个粒子组成一粒子群,其中第i个粒子 的空间位置为X ( x , x ,x,…,x ) i 1,2,..., m,它是优化问题的一个潜在解, i i1 i 2 i 3 iD 将它带入优化目标函数可以计算出其相应的适应值,根据适应值可衡量X的优 i

粒子群优化算法综述

粒子群优化算法 1. 引言 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究 PSO同遗传算法类似,是一种基于迭代的优化工具。系统初始化为一组随机解,通过迭代搜寻最优值。但是并没有遗传算法用的交叉(crossover)以及变异(mutation)。而是粒子在解空间追随最优的粒子进行搜索。详细的步骤以后的章节介绍 同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域 2. 背景: 人工生命 "人工生命"是来研究具有某些生命基本特征的人工系统. 人工生命包括两方面的容 1. 研究如何利用计算技术研究生物现象 2. 研究如何利用生物技术研究计算问题 我们现在关注的是第二部分的容. 现在已经有很多源于生物现象的计算技巧. 例如, 人工神经网络是简化的大脑模型. 遗传算法是模拟基因进化过程的. 现在我们讨论另一种生物系统- 社会系统. 更确切的是, 在由简单个体组成的群落与环境以及个体之间的互动行为. 也可称做"群智能"(swarm intelligence). 这些模拟系统利用局部信息从而可能产生不可预测的群体行为 例如floys 和boids, 他们都用来模拟鱼群和鸟群的运动规律, 主要用于计算机视觉和计算机辅助设计. 在计算智能(computational intelligence)领域有两种基于群智能的算法. 蚁群算法(ant colony optimization)和粒子群算法(particle swarm optimization). 前者是对蚂蚁群落食物采集过程的模拟. 已经成功运用在很多离散优化问题上. 粒子群优化算法(PSO) 也是起源对简单社会系统的模拟. 最初设想是模拟鸟群觅食的过程. 但后来发现PSO是一种很好的优化工具. 3. 算法介绍

粒子群算法和蚁群算法的结合及其在组合优化中的应用e

2007年第2期空间电子技术收稿日期:2006-04-03;收修改稿日期:2006-04-30 粒子群算法和蚁群算法的结合及其在 组合优化中的应用 张长春苏昕易克初 (西安电子科技大学综合业务网国家重点实验室,西安710071) 摘要文章首次提出了一种用于求解组合优化问题的PAAA 算法。该算法有效地 结合了粒子群算法和蚁群算法的优点,先利用粒子群算法的随机性、快速性、全局性得到 初始信息素分布(即粗搜索),再利用蚁群算法的并行性、正反馈性、求解精度高等优点求 精确解(即细搜索)。将文中提出的算法用于经典TSP 问题的求解,仿真结果表明PAAA 算 法兼有两种算法的优点,同时抛弃了各自的缺点。该算法在时间效率上优于蚁群算法,在 求精效率上优于粒子群算法,是综合了两种算法长处的一种新的启发式算法,达到时间性 能和优化性能上的双赢,获得了非常好的效果。 主题词蚁群算法粒子群算法旅行商问题PAAA 0引言 近年来对生物启发式计算(Bio-inspired Computing )的研究,越来越引起众多学者的关注和兴趣,产生了神经网络、遗传算法、模拟退火、粒子群算法、蚁群算法等许多用于解决复杂优化问题的新方法。然而,面对各种问题的特殊性和复杂性,每种算法都表现出了自身的优势和缺陷,都存在时间性能和优化性能不能兼得的矛盾。 粒子群优化(Particie Swarm Optimization ,PSO )算法[1, 2]是由Eberhart 和Kennedy 于1995年提出的一种全局优化算法,该算法源于对鸟群觅食行为的模拟。它的优势在于:(1) 算法简洁,可调参数少,易于实现;(2) 随机初始化种群,具有较强的全局搜索能力,类似于遗传算法;(3)利用评价函数衡量个体的优劣程度,搜索速度快;(4)具有较强的可扩展性。其缺点是:不能充分利用系统中的反馈信息,求解组合优化问题的能力不强。 蚁群算法[3,4](Ant Coiony Optimization ,ACO ) 是由意大利学者M.Dorigo ,V.Maniezzo 和A.Coiorni 于20世纪90年代初提出的一种新型的智能优化算法,已经被应用到TSP 问题[5,6]、二次分配问题、工 件调度问题、图着色问题等许多经典组合优化问题中,取得了很好的效果。它的优点是:(1)采用一种正反馈机制,通过信息素的不断更新,达到最终收敛于最优路径上的目的;(2)是一种分布式的优化方法,易于并行实现;(3)是一种全局优化的方法,不仅可用于求解单目标优化问题,而且可用于求解多目标优化问题;(4)适合于求解离散优化问题;(5)鲁棒性强。但由于在算法的初始阶段信息素匮乏,所以求解速度较慢。 文章将粒子群算法和蚁群算法有机地结合,提出了PAAA 算法。它利用粒子群算法的较强的全局搜索能力生成信息素分布,再利用蚁群算法的正反馈机制求问题的精确解,汲取各自的优势,以达空间电子技术 SPACE ELECTRONIC TECHNOLOGY !"

粒子群算法论文

粒子群算法论文 SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

粒子群算法的寻优算法 摘要:粒子群算法是在仿真生物群体社会活动的基础上,通过模拟群体生物相互协同寻优能力,从而构造出一种新的智能优化算法。这篇文章简要回顾了粒子群算法的发展历史;引入了一个粒子群算法的实例,对其用MATLAB进行编程求解,得出结论。之后还对其中的惯性权重进行了延伸研究,对惯性权重的选择和变化的算法性能进行分析。 关键词:粒子群、寻优、MATLAB、惯性权重 目录:

1.粒子群算法的简介 粒子群算法(Particle Swarm Optimization)是一种新的智能优化算法。谈到它的发展历史,就不得不先介绍下传统的优化算法,正因为传统优化算法自身的一些不足,才有新智能优化算法的兴起,而粒子群算法(PSO)就是在这种情况下发展起来的。 粒子群算法的研究背景 最优化是人们在科学研究、工程技术和经济管理等领域中经常遇到的问题。优化问题研究的主要内容是在解决某个问题时,如何从众多的解决方案中选出最优方案。它可以定义为:在一定的约束条件下,求得一组参数值,使得系统的某项性能指标达到最优(最大或最小)。传统的优化方法是借助于优化问题的不同性质,通常将问题分为线性规划问题、非线性规划问题、整数规划问题和多目标规划问题等。相应的有一些成熟的常规算法,如应用于线性规划问题的单纯形法,应用于非线性规划的牛顿法、共扼梯度法,应用于整数规则的分枝界定法、动态规划等。列举的这些传统的优化算法能够解决现实生活和工程上的很多问题,但工业和科学领域大量实际问题的困难程度正在日益增长,它们大多是根本无法在可接受的时间内找到解的问题。这类优化问题的困难性不仅体现在具有极大的规模,更为重要的是,它们多数是非线性的、动态的、多峰的、具有欺骗性的或者不具有任何导数信息。因此,发展通用性更强、效率更高的优化算法总是需要的。 起源 在自然界中,鸟群运动的主体是离散的,其排列看起来是随机的,但在整体的运动中它们却保持着惊人的同步性,其整体运动形态非常流畅且极富美感。这些呈分布状态的群体所表现出的似乎是有意识的集中控制,一直是许多研究者感兴趣的问题。有研究者对鸟群的运动进行了计算机仿真,他们通过对个体设定简单的运动规则,来模拟鸟群整体的复杂行为。 1986 年 Craig ReynolS 提出了 Boid 模型,用以模拟鸟类聚集飞行的行为,通过对现实世界中这些群体运动的观察,在计算机中复制和重建这些运动轨迹,并对这些运动进行抽象建模,以发现新的运动模式。之后,生物学家Frank Heppner 在此基础上增加了栖息地对鸟吸引的仿真条件,提出了新的鸟群模型。这个新的鸟群模型的关键在于以个体之间的运算操作为基础,这个操作也就是群体行为的同步必须在于个体努力维持自身与邻居之间的距离为最优,为此每个个体必须知道自身位置和邻居的位置信息。这些都表明群体中个体之间信息的社会共享有助于群体的进化。

标准粒子群算法PSO及其Maab程序和常见改进算法

一、粒子群算法概述 粒子群优化算法(PSO)是一种进化计算技术(evolutionarycomputation),1995年由Eberhart博士和kennedy博士提出,源于对鸟群捕食的行为研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。? PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。? PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个”极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。 二、算法原理 粒子群算法采用常数学习因子,及惯性权重,粒子根据如下的公式更新自己的速度和位置。? V ki=ωk V i?1i+c1r1(Q bi?Q k?1i)+c2r2(Q bg?Q k?1i)Q ki=Q k?1i+V ki 三、算法步骤 1、随机初始化种群中各微粒的位置和速度;? 2、评价个粒子的适应度,将各粒子的位置和适应度储存在各微粒的pbest(Q bi)中,将所有pbest中适应度最优的个体的位置和适应度存储在gbest(Q bg)中。? 3、更新粒子的速度和位移。? V ki=ωk V i?1i+c1r1(Q bi?Q k?1i)+c2r2(Q bg?Q k?1i)Q ki=Q k?1i+V ki

标准粒子群优化算法收敛性能分析与参数选择

标准粒子群优化算法收敛性能分析与参数选择1 林川,冯全源 西南交通大学信息科学与技术学院,成都(610031) E-mail :lin_langai@https://www.docsj.com/doc/9f14501217.html, 摘 要:基于离散时间线性动态系统理论,推导了确定性标准粒子群优化(PSO )算法收敛,临界稳定与发散的充分必要条件,并用若干个粒子运动轨迹的仿真结果对理论结果进行了验证。根据理论分析结果,给出了参数选择的指导方法,讨论了随机参数对PSO 算法性能的影响,分析了不同收敛阶段PSO 算法探索与开发能力的平衡问题。同时本文指出,目前较普遍认为的:PSO 算法的惯性权越小则局部搜索能力越强这一观点严格说来并不够准确,在实际中应小心使用。 关键词:粒子群,随机优化,收敛性,参数选择 中图分类号:TP18 粒子群优化(PSO )算法是J. Kennedy 与Eberhart 提出的一种基于群体智能的随机优化方法,它模拟了鸟类或鱼群觅食过程的社会行为[1],已在许多领域获得了广泛应用[2]。PSO 算法的参数设置对算法性能有很大的影响,而这些参数设置又常与待优化问题密切相关。虽然目前已有许多学者通过大量仿真实验对PSO 算法的参数选择进行了研究,但为了更深入地理解PSO 算法并提供参数选择的指导方法,近年来,一些学者开始对PSO 算法的粒子运 动轨迹及其稳定性进行深入的理论分析[3~7], 这些理论研究大部分集中在PSO 算法稳定收敛的充分条件方面。本文利用离散时间线性动态系统理论,从理论上推导了确定性PSO 算法收敛,临界稳定与发散的充分必要条件。根据理论分析结果,给出了PSO 算法参数选择的指导方法,讨论了随机参数对算法性能的影响,分析了PSO 算法获得成功的一些关键因素。本文指出目前较普遍认为的:惯性权越小则PSO 算法的局部搜索能力越强这一观点严格说来并不够准确,它只在一定条件下成立。同时,本文还给出了若干个粒子运动轨迹的仿真结果,对理论分析结果进行了验证。 1.PSO 算法 PSO 算法中的每个粒子代表D 维搜索空间中的一个潜在解,它在搜索空间以一定的速度飞行,这个速度根据它先前的飞行速度,本身及同伴的飞行经验进行动态调整。具体说来,标准PSO 算法中第i 个粒子第d 维的速度与位置按如下的表达式进行更新[8]: ) ()()()()()()()1(21t x p t t x p t t wv t v id gd d id id d id id ?+?+=+φφ (1) )1()()1(++=+t v t x t x id id id (2) 其中,i =1,…, m , d =1,…., D ,m 为种群规模,D 维向量x i (t )与v i (t )分别为粒子i 在t 时刻的位置与速度,p i 为粒子i 曾经历过的个体最优位置,p g 为粒子i 的所有邻域个体曾经历过的全 局历史最优位置。w 为惯性权,)()(111t r c t d d =φ, ) ()(222t r c t d d =φ,c 1,c 2为加速系数,r 1d ,r 2d 为在[0, 1]内均匀分布的随机数。 由于本文主要分析确定性PSO 算法的收敛性能,因此我们将随机变量)(1t d φ,)(2t d φ简化为常数1φ,2φ。为了便于分析,不失一般性,我们将粒子位置与速度的维数从D 维简化为1维[4]。这样,式(1)与式(2)可简化为: 1本课题得到国家自然科学基金(基金号:60371017)的资助。

相关文档
相关文档 最新文档