【粒子群算法Matlab仿真定制】:
QQ:491052175
1. 粒子群算法的发展趋势
粒子群算法,又称粒子群优化算法(Particle swarm opyimization, PSO),是近年来新发展起来的进化算法。该算法和模拟退火算法相似,同样从随机解出发,通过迭代以寻求最优解,它也通过适应度来评价解的品质,其优点是比遗传算法更为简单,没有遗传算法的“交叉”和“变异”操作,它通过追随当前搜索到的最优值达到全局最优的目的。目前,粒子群算法的发展趋势如下:
(1)粒子群优化算法的改进。粒子群优化算法主要应用在解决空间按函数的优化问题和单目标优化问题上,主要研究方向是将粒子群优化算法应用于离散空间优化问题和多目标优化问题。但其不足之处在于如何充分结合其他进化类算法来发挥其自身优势仍是值得研究的重点。
(2)粒子群优化算法的理论分析。粒子群优化算法提出的时间不长,数学分析很不成熟,存在较多不完善和未涉及的问题,对算法运行行为、收敛性、计算复杂性的分析较少。因此,如何知道参数的选择和设计,如何设计适应值函数,如何提高算法在解空间搜索的效率算法收敛以及对算法模型本身的研究都需要在理论上进行更深入的研究等等,都是粒子群优化算法的研究方向。
(3)粒子群算法的生物学基础。如何根据群体提进行行为完善算法,将群体智能引入算法中,借鉴生物群体进行规划和进化的智能型也是学者关注的问题。
(4)粒子群优化算法与其他进化类算法的比较研究。与其他进化算法的融合,如何将其他进化算法的优点和粒子群优化算法相结合,构造出有特色有实用价值的混合算法是当前算法改进的一个重要方向。
(5)粒子群优化算法的应用。算法的有效性必须在应用中才能体现出来,广泛开拓粒子群优化算法的应用领域,也将对深入研究该算法有着重要的意义。
2. 粒子群算法的研究内容
粒子群算法是一非常简单而又能够有效优化各种函数的算法。从某种程度上说,此算法介于遗传算法和进化规划之间。此算法非常依赖于随机过程,这也是和进化规划的相似之处,算法种朝全局最优和局部最优靠近的调整非常类似于遗传算法中的交叉算子。其主要研究内容有:(1)寻找全局最优点;(2)有较高的收敛速度。
3. 粒子群算法的特点
粒子群算法的本质是随机搜索算法,是一种新兴的智能优化技术,是群体智能中的一个新的分支,也是对简单社会系统的模拟。该算法能以较大的概率收敛于全局最优解。实践证明,它适合在动态、多目标优化环境中寻找,有着更快的计算速度和更好的全局搜索能力。具体特点有:
(1)PSO是基于群体智能理论的优化算法,通过群体中粒子间的合作于竞争产生的群体智能指导优化搜索。与进化算法比较,PSO是一种更为高效的并行搜索算法。
(2)PSO与GA有很多共同之处,两者均是随机初始化种群,使用适应值来评价个体的优劣程度和进行一定的随即搜索。但PSO是根据自己的速度来决定搜索,没有GA的明显交叉和编译,保留了基于种群的全局搜索策略,但采用了简单的速度-位移模型,避免了复杂的遗传操作。
(3)由于每个粒子在算法结束时仍保持着其个体极值。因此,若将PSO用于调度和决策问题时,可以给出多种有意义的选择方案。而基本遗传算法在结束时,只能得到最后一代个体的信息,前面迭代的信息未被保留。
(4) PSO特有的记忆使其可以动态地跟踪当前的搜索情况并调整其搜索策略。
(5)PSO有良好的机制来有效地平衡搜索过程的多样性和方向性。
(6)在收敛的情况下,由于所有的粒子都向最优解的方向飞去,所以粒子趋于同一化(失去了多样性)使得后期收敛速度明显变慢,以致算法收敛到一定精度后无法继续优化,因此许多学者都致力于提高PSO算法的性能。
(7)PSO算法对种群大小不十分敏感,即种群数目下降时,性能下降不是很大。
4. 粒子群算法的应用
粒子群算法主要作为求解复杂系统优化问题的通用框架,因其不依赖于问题的具体领域,有着很强的适应性,因此被广泛用于很多学科。主要应用领域有:
(1)约束优化。随问题的增多,约束优化问题的搜索空间也急剧变换,有时在目前的计算机上用枚举法很难甚至不可能求出其精确最优解。粒子群算法是解决该类问题的最佳工具之一。实践证明,粒子群算法对于约束优化中的规划,离散空间组合问题的求解非常有效。(2)函数优化。(3)机器人智能控制。机器人是一类复杂的难以精确建模的人工系统,而粒子群算法可用于此类机器人群搜索,如机器人的控制与协调,移动机器人路径规划,因此PSO是该领域较为重要的应用。(4)电力系统领域。 PSO在电力系统方面的配电网扩展规划、检修计划、机组组合等。随着粒子群优化理论研究的深入,PSO还将在电力市场竞价交易等其他领域发挥巨大的应用潜力。(5)工程设计问题。在建立数学模型上,很难精确求解,即使简化后可求解,但因简化得到的结果与实际有较大误差。而PSO已经在解决复杂调度问题上极其的有效,如电路及滤波设计、神经网络训练、控制器设计与优化、任务分配等。(6)生物医学领域。如根据PSO提出的自适应多峰生物测定融合算法,医学成像等的广泛应用。(7)通信领域。包括路由选择及移动通信基站布置优化,在顺序码分多址链接方式(DC-CDMA)通信系统中使用粒子群算法,可获得可移植的有力算法并提供并行处理能力。比传统先前的算法有了显著的优越性,还可以应用到天线阵列控制和偏振模色散补偿等方面。(8)交通领域。在物流配送供应领域中要求以最少的车辆数,最小的车辆总行程来完成货物的配送任务;在交通控制领域,城市交通问题是困扰城市发展和制约城市经济建设的重要因素。
5. 基本粒子群算法
5.1 算法基本原理
PSO从这种模型种得到启示并用于解决优化问题。
5.2 算法构成要素
1. 粒子群的编码方法
基本粒子群算法使用固定长度的二进制符号串来表示群体中的个体,其等位基因是由二值符号集{0,1}组成的。初始群体种各个个体的基因值可用均匀发分布的随机数来生成。
2. 个体适应度评价
通过确定局部最优迭代达到全局最优收敛,得出结果。
3. 基本粒子群算法的运行参数
整个粒子群算法包含了7个运行参数需要设定。包含以下:
(1)r:粒子群算法的种子数,对粒子群算法中的种子数值可以随机生成,也可以固定为一个初始值,能够涵盖目标函数的范围内。
(2)m:粒子群群体大小,即群体中所含个体的数量,一般取20~100。在变量比较多的时候可以取100以上较大的数。
(3)max_d:一般以最大迭代次数以最小误差的要求满足的。粒子群算法的最大迭代次数也是终止条件数。
(4)r1,r2: 两个在[0,1]之间变化的加速度权重系数随机产生
(5)c1,c2: 加速度数,取随机2左右的值
(6)w:惯性权重产生的。
(7),
:一个粒子的速度和位移数值,用粒子群算法迭代出每一组数据
5.3 算法参数设置
PSO算法一个最大的优点是不需要调节太多的参数,但是算法中少数几个参数却直接影响着算法的性能以及收敛性。目前,PSO算法的理论研究尚处于初始阶段,所以算法的参数设置在很大程度上还依赖于经验。
5.4 算法基本流程
基本粒子群算法的流程图如下图所示,其具体过程包含如下:
(1)初始化粒子,包括随机位置和速度;
(2)计算粒子的适应度值
(3)寻找个体极值(Pbest)和群体极值(Gbest);
(4)在迭代过程中,粒子根据个体极值和群体极值来更新其自身的速度和位置;
(5)再次计算粒子的适应度值
(6)对于解空间里每个粒子,将其适应度值与其最好位置 pbest作比较,如果较好,则取代之前的pbest值;
(7)对每个粒子,将其适应度值与最好位置 gbest作比较。如果更好,则取代先前的gbest值;
(8)判断是否达到终止条件,若满足,则结束循环;若未达到结束条件则转Step4;
6. 粒子群算法的改进
6.1 权重改进的粒子群算法
6.1.1 随机权重法
随机权重法的原理是将标准PSO算法的惯性权值w设定为随机数,这种处理优势如下:
(1) 当粒子在起始阶段就接近最好点,随机产生的w可能为相对较小的值,由此可以加快算法的收敛速度。
(2) 克服w线性递减造成的算法不能收敛到最好点的局限
惯性权重的修改公式为
其中,N(0,1)表示标准状态分布的随机数
随机权重法的计算步骤如下:
1.随机设置各个粒子的速度和位置
2.评价每个粒子的适应度,将粒子的位置和适应度值存储在粒子的个体极值Pbest中,将所有Pbest中最优适应度值的个体位置和适应度值保存在全局极值中Gbest中。
(3)更新粒子位移和速度;
(4) 更新权重
(5)将每个粒子的适应度值和粒子的最好位置作比较,如果相近,则将当前值作为粒子最好的位置。比较当前所有的Pbest和Gbest,更新Gbest
(6)当算法达到其停止条件,则停止搜索并输出结果,否则则返回步骤3继续搜索
6.1.2 线性递减权重法
针对PSO算法容易早熟及后期容易在全局最优解附近产生振荡现象,提出了线性递减权重法,即使惯性权重依照线性从大到小递减,其变化公式为
其中,Wmax表示惯性权重最大值,Wmin表示惯性权重最小值;t表示当前迭代步数。
随机权重法的计算步骤如下:
(1)随机设置各个粒子的速度和位置
(2)评价每个粒子的适应度值,将粒子的位置和适应度值存储在粒子的个体极值Pbest中,将所有Pbest中最优适应度值的个体位置和适应度值保存在全局极值Gbest中。
(3)更新粒子的位移和速度:
(4)更新权重
(5)将每个粒子的适应度值和粒子的最好位置作比较,如果相近,则将当前值作为粒子最好的位置。比较当前所有的Pbest和Gbest,更新Gbest
(6)当算法达到其停止条件,则停止搜索并输出结果,否则则返回步骤3继续搜索
6.1.3 自适应权重法
粒子适应度值是反应粒子当前位置优劣的一个参数。对应某些具有较高适应度值的粒子Pi,在Pi所在的局部区域可能存在能够更新全局最优的点Px,即Px表示的解要优于全局最优。
为了使全局最优能够迅速更新,从而迅速找到Px,应该减小粒子Pi的惯性权重,从而提高其局部寻优的能力;而对于适应度较低的粒子,当前位置较差,所在区域存在优于局部最优解的概率较低,为了跳出当前区域,应当增大惯性权重,增强全局搜索能力。
(1)依据早熟收敛程度和适应度值进行调整
根据种群中的早熟收敛成都和个体适应度值,可以确定惯性权重的变化。设定粒子Pi的适应度值为fi,最优粒子适应度值是fm,则粒子群的平均适应度值是favg,将优于平均适应度值的粒子适应度值求平均favg',则定于Δ=|fm-favg'|。
依据fi,fm,favg将群体分为3个子群,分别进行不同的自适应操作,其惯性权重的调整如下:
1.如果fi优于fm, 那么
2.如果fi优于favg',但是次于fm,则惯性权重保持不变。
3.如果fi次于favg', 那么
其中k1和k2为控制参数,k1用来控制w的上限,k2用来控制w的调节能力。
当算法停止时,如果粒子的分布分散,则Δ比较大,w变小,此时算法局部搜索能力加强,从而使得群体趋于收敛;如果粒子的分布聚集,则Δ比较小,w变大,使得粒子具有较强的探查能力,从而有效地跳出局部最优
(2)根据全局最优点的距离进行调整
一些学者认为惯性权重的大小还和其距离全局最优点的距离有关,并提出了各个不同的粒子惯性权重不仅随着迭代次数的增加而递减,还随着距离全局最优点的距离增加而递增,即全中国w随着粒子的位置不同而动态变化。目前大多采用的是非线性动态惯性权重系数公式:
其中f表示粒子实时的目标函数值;favg和fmin分别表示当前所有粒子的平均值和最小目标值。从上面的公式可以看出,惯性权重随着粒子目标函数值的改变而改变。
当粒子目标值分散时,减小惯性权重;当粒子目标值一致时,增加惯性权重;
根据全局最优点的距离调整算法的基本步骤如下:
(1)随机设置各个粒子的速度和位置
(2)评价每个粒子的适应度值,将粒子的位置和适应度值存储在粒子的个体极值Pbest中,将所有Pbest中最优适应度值的个体位置和适应度值保存在全局极值Gbest中。
(3)更新粒子的位移和速度:
(4)更新权重
(5)将每个粒子的适应度值和粒子的最好位置作比较,如果相近,则将当前值作为粒子最好的位置。比较当前所有的Pbest和Gbest,更新Gbest
(6)当算法达到其停止条件,则停止搜索并输出结果,否则则返回步骤3继续搜索
6.2 混合粒子群算法
正在编写中....