与其他进化算法一样,PSO算法中最常用的终止准则是预先设定一个最大的飞行代数,或者是当搜索过程中解的适应度在连续多少代后不再发生明显改变时,终止算法。
6编程上机运行
根据所设计的算法结构编程,并进行具体优化问题的求解。通过所获得问题的解的质量,可以验证算法的有效性,准确性和可靠性。
在编程仿真的软件上,选择MATLAB。利用MATLAB矩阵运算的强大功能编写粒子群算法程序有很好的优势。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
2 基本粒子群算法
2.1 粒子群算法概述
2.1.1 粒子群算法发展
1995年美国电气工程师Eberhart和社会心理学家Kennedy基于鸟群觅食行为提出了粒子群优化算法(particle swarm optimization,PSO),简称粒子群算法。由于该算法概念简明、实现方便、收敛速度快、参数设置少,是一种高效的搜索算法。
PSO是模拟鸟群随机搜寻食物的捕食行为。假设在搜索食物区域里只有一块食物,所有的小鸟都不知道食物在什么地方,所以Kenndy等认为鸟之间存在着互相交换信息,通过估计自身的适应度值,它们知道当前的位置离食物还有多远,所以搜索目前离食物最近的鸟的周围区域是找到食物的最简单有效的办法,通过鸟之间的集体协作使群体达到最优。PSO就是从这种模型中得到启示并用于解决优化问题。在PSO中每个优化问题的潜在解都可以想象成搜索空间中的一只鸟,我们称之为“粒子”。粒子主要追随当前的最优粒子在解空间中搜索,PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”来更新自己,第一个就是粒子本身所找到的最优解,这个解叫做个体极值pbest,另一个极值是整个种群目前找到的最优解,这个极值是全局极值gbest。这两个最优变量使得鸟在某种程度上朝着这些方向靠近,此外也可以不用整个种群而只用其中一部分作为粒子的邻居,那么所有邻居的极值就是局部极值,粒子始终跟随这两个极值变更自己的位置和速度直到找到最优解。
到目前为止粒子群算法的发展得到越来越多的众多领域学者的关注和研究,称为解决许多问题的热点算法的研究重点。其中对PSO算法的改进也非常多,有增强算法自适应性的改进、增强收敛性的改进、增加多种群多样性的改进、增强局部搜索的改进、与全局优化算法相结合、与确定性的局部优化算法相融合等。以上所述的是对于算法改进的目的的讨论的,实际改进中应用的方法有基于参数的改进,即对PSO算法的迭代公式的形式上做改进;还有从粒子的行为模式进行改进,即粒子之间的信息交流方式,如拓扑结构的改进、全局模式与局部模式相结合的改进等;还有基于算法融合的粒子群算法的改进,算法融合可以引入其他算法的优点来弥补PSO算法的缺点,设计出更适合问题求解的优化算法。 MATLAB混合微粒群算法的性能仿真(4):http://www.youerw.com/tongxin/lunwen_34588.html