带压缩因子的粒子群算法
- 格式:docx
- 大小:17.89 KB
- 文档页数:2
粒子群算法介绍优化问题是工业设计中经常遇到的问题,许多问题最后都可以归结为优化问题. 为了解决各种各样的优化问题,人们提出了许多优化算法,比较著名的有爬山法、遗传算法等.优化问题有两个主要问题:一是要求寻找全局最小点,二是要求有较高的收敛速度. 爬山法精度较高,但是易于陷入局部极小. 遗传算法属于进化算法( Evolutionary Algorithms) 的一种,它通过模仿自然界的选择与遗传的机理来寻找最优解. 遗传算法有三个基本算子:选择、交叉和变异. 但是遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.1995 年Eberhart 博士和kennedy 博士提出了一种新的算法;粒子群优化(Partical Swarm Optimization -PSO) 算法 . 这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性.粒子群优化(Partical Swarm Optimization - PSO) 算法是近年来发展起来的一种新的进化算法( Evolu2tionary Algorithm - EA) .PSO 算法属于进化算法的一种,和遗传算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质. 但是它比遗传算法规则更为简单,它没有遗传算法的“交叉”(Crossover) 和“变异”(Mutation) 操作. 它通过追随当前搜索到的最优值来寻找全局最优 .粒子群算法1. 引言粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),有Eberhart博士和kennedy博士发明。
源于对鸟群捕食的行为研究PSO同遗传算法类似,是一种基于叠代的优化工具。
带压缩因子的粒子群算法在汽包压力控制系统中的应用刘长良;高亚龙【摘要】In this paper, the principle of particle swarm algorithm, describes an improved algorithm which with compression factor of PSO, outlines the working principle of PID controllers, particle swarm optimization method implementation, and examples of the improved algorithm A drum pressure control system, optimize the use of matlab simulation show that the improved optimization algorithm outperforms the basic PSO, there are certain engineering applications in future.%针对基本粒子群算法的原理,阐述了一种改进算法(带压缩因子的粒子群算法),简述了PID控制器的工作原理、粒子群参数优化方法的实现,并举例说明此改进算法在某汽包压力控制系统中的应用,利用matlab 进行仿真优化,证明此改进算法优化的性能优于基本的粒子群优化算法,有很好的工程应用前景.【期刊名称】《计算机系统应用》【年(卷),期】2012(021)001【总页数】4页(P164-167)【关键词】压缩因子;粒子群算法;汽包压力;PID整定【作者】刘长良;高亚龙【作者单位】华北电力大学控制与计算机工程学院,保定071003;华北电力大学控制与计算机工程学院,保定071003【正文语种】中文1 引言粒子群优化算法((Particle Swarm Optimizatio,简称PSO),是1995年由Eberhart博士和Kennedy博士提出的一种基于群体智能理论的演化计算方法,通过种群粒子间的合作与竞争,产生群体智能指导优化搜索。
【背包问题】基于matlab粒⼦群算法求解背包问题【含Matlab源码1343期】⼀、获取代码⽅式获取代码⽅式1:完整代码已上传我的资源:⼆、背包问题简介1【背包问题】背包问题(Knapsack problem)是⼀种组合优化的NP完全问题。
问题描述为:给定⼀组物品,每种物品都有⾃⼰的重量weight和价格value,在限定的总重量内,我们如何选择,才能使得物品的总价格最⾼。
2【0-1背包问题】ai:第i个物品的体积;ci:第i个物品的价值;b:背包的重量限制;背包问题就是在总的体积有限的条件下,追求总价值最⼤的有效资源分配问题。
有界的整数背包问题可转化成等价的0-1背包问题,定义变量三、粒⼦群算法简介1 引⾔⾃然界中的鸟群和鱼群的群体⾏为⼀直是科学家的研究兴趣所在。
⽣物学家Craig Reynolds在1987年提出了⼀个⾮常有影响的鸟群聚集模型,在他的仿真中,每⼀个个体都遵循:避免与邻域个体相撞:匹配邻域个体的速度;飞向鸟群中⼼,且整个群体飞向⽬标。
仿真中仅利⽤上⾯三条简单的规则,就可以⾮常接近地模拟出鸟群飞⾏的现象。
1990年, ⽣物学家Frank Heppner也提出了鸟类模型, 它的不同之处在于:鸟类被吸引飞到栖息地。
在仿真中,⼀开始每⼀只鸟都没有特定的飞⾏⽬标,只是使⽤简单的规则确定⾃⼰的飞⾏⽅向和飞⾏速度,当有⼀只鸟飞到栖息地时,它周围的鸟也会跟着飞向栖息地,最终整个鸟群都会落在栖息地。
1995年, 美国社会⼼理学家James Kennedy和电⽓⼯程师RussellEberhart共同提出了粒⼦群算法(ParticleS warm Optimization,PSO) , 该算法的提出是受对鸟类群体⾏为进⾏建模与仿真的研究结果的启发。
他们的模型和仿真算法主要对Frank Heppner的模型进⾏了修正,以使粒⼦飞向解空间并在最优解处降落。
粒⼦群算法⼀经提出,由于其算法简单,容易实现,⽴刻引起了进化计算领域学者们的⼴泛关注, 形成⼀个研究热点。
摘要在智能领域,大部分问题都可以归结为优化问题。
常用的经典优化算法都对问题有一定的约束条件,如要求优化函数可微等,仿生算法是一种模拟生物智能行为的优化算法,由于其几乎不存在对问题的约束,因此,粒子群优化算法在各种优化问题中得到广泛应用。
本文首先描述了基本粒子群优化算法及其改进算法的基本原理,对比分析粒子群优化算法与其他优化算法的优缺点,并对基本粒子群优化算法参数进行了简要分析。
根据分析结果,研究了一种基于量子的粒子群优化算法。
在标准测试函数的优化上粒子群优化算法与改进算法进行了比较,实验结果表明改进的算法在优化性能明显要优于其它算法。
本文算法应用于支持向量机参数选择的优化问题上也获得了较好的性能。
最后,对本文进行了简单的总结和展望。
关键词:粒子群优化算法最小二乘支持向量机参数优化适应度目录摘要 (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)4.3基于粒子群算法的最小二乘支持向量机的参数优化方法 (23)4.4 仿真 (24)4.4.1仿真设定 (24)4.4.2仿真结果 (24)4.4.3结果分析 (25)5.总结与展望 (26)5.1 总结 (26)5.2展望 (26)致谢 (28)参考文献 (29)Abstract (30)附录 (31)PSO程序 (31)LSSVM程序 (35)1.概述1.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次迭代)最后所有的点都集中在最大值的地方。
粒子群算法(2)----标准的粒子群算法在上一节的叙述中,唯一没有给大家介绍的就是函数的这些随机的点(粒子)是如何运动的,只是说按照一定的公式更新。
这个公式就是粒子群算法中的位置速度更新公式。
下面就介绍这个公式是什么。
在上一节中我们求取函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。
粒子群算法原文及解释粒子群优化算法(Particle Swarm Optimization,PSO)是一种模拟鸟群、鱼群等动物社会行为的优化算法。
通过模拟鸟群、鱼群等动物群体中的个体行为,粒子群优化算法能够有效地求解各种优化问题。
本文将从算法原理、算法流程、参数设置、优化问题、实现方式、改进策略、应用领域和性能评价等方面对粒子群优化算法进行详细的介绍。
一、算法原理粒子群优化算法基于群体智能理论,通过模拟鸟群、鱼群等动物群体中的个体行为来寻找最优解。
每个个体被称为一个粒子,它通过跟踪其自身的最优位置和群体的最优位置来更新自己的速度和位置。
粒子的速度和位置更新公式如下:v[i][j] = w * v[i][j] + c1 * rand() * (pbest[i][j] - x[i][j]) + c2 * rand() * (gbest - x[i][j])x[i][j] = x[i][j] + v[i][j]其中,v[i][j]表示粒子i在第j维上的速度,x[i][j]表示粒子i 在第j维上的位置,pbest[i][j]表示粒子i的个体最优位置,gbest 表示全局最优位置,w表示惯性权重,c1和c2表示加速因子,rand()表示随机函数。
二、算法流程粒子群优化算法的基本流程如下:1. 初始化粒子群,随机生成粒子的初始位置和初始速度。
2. 计算每个粒子的适应度值,记录粒子的个体最优位置和全局最优位置。
3. 根据粒子的适应度值更新粒子的速度和位置。
4. 重复步骤2和步骤3,直到满足终止条件(如达到预设的最大迭代次数或全局最优解的变化小于预设阈值)。
三、参数设置粒子群优化算法的参数包括惯性权重w、加速因子c1和c2等。
这些参数对算法的性能和收敛速度有着重要的影响,需要根据具体问题进行调整和优化。
通常需要通过实验来找到合适的参数设置。
四、优化问题粒子群优化算法适用于求解连续的、离散的优化问题。
对于不同的优化问题,需要根据问题的特性和要求来设计合适的粒子和适应度函数。
一.粒子群优化算法综述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压缩因子限制粒子的飞行速度的,保证算法的有效收敛Clerc等人通过数学计算得到取值0.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,或者最大的函数评估次数,等等。
也可以使用算法求解得到一个可接受的解作为终止条件,或者是当算法在很长一段迭代中没有得到任何改善,则可以终止算法。
1.6.8全局和局部PSO决定算法如何选择两种版本的粒子群优化算法—全局版PSO和局部版PSO,全局版本PSO速度快,不过有时会陷入局部最优;局部版本PSO收敛速度慢一点,不过不容易陷入局部最优。
主程序:
%------基本粒子群优化算法(Particle Swarm Optimization)----------- %------名称:带压缩因子的粒子群优化算法(PSO)
%------作用:求解优化问题
%------说明:全局性,并行性,高效的群体智能算法,提高解的精度
%------初始格式化-------------------------------------------------- clear all;
clc;
format long;
%------给定初始化条件---------------------------------------------- %c1=1.4962; %学习因子1
c1=3;
c2=2;
%c2=1.4962; %学习因子2
w=0.7298; %惯性权重
MaxDT=100; %最大迭代次数
D=6; %搜索空间维数(未知数个数)
N=20; %初始化群体个体数目
eps=10^(-6); %设置精度(在已知最小值时候用)
phi=c1+c2;
if phi<=4
disp('c1与c2的和必须大于4! ');
xm=NaN;
fv=NaN;
return;
end
%------初始化种群的个体(可以在这里限定位置和速度的范围)------------ for i=1:N
for j=1:D
x(i,j)=randn; %随机初始化位置
v(i,j)=randn; %随机初始化速度
end
end
%------先计算各个粒子的适应度,并初始化Pi和Pg---------------------- figure(3)
for i=1:N
P(i)=fitness2(x(i,:));
y(i,:)=x(i,:);
end
Pg=x(N,:); %Pg为全局最优
for i=1:(N-1)
if fitness2(x(i,:))<fitness2(Pg)
Pg=x(i,:);
end
end
%------进入主要循环,按照公式依次迭代,直到满足精度要求------------ for t=1:MaxDT
for i=1:N
ksi=2/abs(2-phi-sqrt(phi^2-4*phi));%ksi为压缩因子
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(Pg-x(i,:));
v(i,:)=ksi*v(i,:);
x(i,:)=x(i,:)+v(i,:);
if fitness2(x(i,:))<P(i)
P(i)=fitness2(x(i,:));
y(i,:)=x(i,:);
end
if P(i)<fitness2(Pg)
Pg=y(i,:);
end
end
Pbest(t)=fitness2(Pg);
end
plot(Pbest)
TempStr=sprintf('c1= %g ,c2=%g',c1,c2);
title(TempStr);
xlabel('迭代次数');
ylabel('适应度值');
%------最后给出计算结果
disp('*************************************************************') disp('函数的全局最优位置为:')
Solution=Pg
disp('最后得到的优化极值为:')
Result=fitness2(Pg)
disp('*************************************************************') 功能函数:
适应度函数源程序(fitness2.m)
function result=fitness2(x)
sum=0;
D=6;
for i=1:D
sum=sum+x(i)^2;
end
result=sum;。