粒子群算法优化不同维数连续函数以与离散函数最小值问题

上传人:第*** 文档编号:61791781 上传时间:2018-12-12 格式:DOC 页数:17 大小:2.85MB
返回 下载 相关 举报
粒子群算法优化不同维数连续函数以与离散函数最小值问题_第1页
第1页 / 共17页
粒子群算法优化不同维数连续函数以与离散函数最小值问题_第2页
第2页 / 共17页
粒子群算法优化不同维数连续函数以与离散函数最小值问题_第3页
第3页 / 共17页
粒子群算法优化不同维数连续函数以与离散函数最小值问题_第4页
第4页 / 共17页
粒子群算法优化不同维数连续函数以与离散函数最小值问题_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《粒子群算法优化不同维数连续函数以与离散函数最小值问题》由会员分享,可在线阅读,更多相关《粒子群算法优化不同维数连续函数以与离散函数最小值问题(17页珍藏版)》请在金锄头文库上搜索。

1、引言2一、问题描述41.1 函数优化问题41.2 粒子群算法基本原理4二、算法设计72.1算法流程框图72.2 算法实现72.3 算法的构成要素82.4 算法的改进9三、算例设计113.1 测试函数介绍113.2 优化函数特点11四、仿真实验设计154.1 实验参数设计154.2 基本粒子群算法在测试函数中应用15五、仿真实验结果分析185.1 实验结果汇总185.2 实验结果分析18六、总结与展望206.1总结206.2展望20附录一21附录二23引言本文主要利用粒子群算法解决连续函数以及离散函数的最小值问题,粒子群优化是一种新兴的基于群体智能的启发式全局搜索算法,粒子群优化算法通过粒子间的

2、竞争和协作以实现在复杂搜索空间中寻找全局最优点。它具有易理解、易实现、全局搜索能力强等特点,倍受科学与工程领域的广泛关注,已经成为发展最快的智能优化算法之一。惯性权重是PSO标准版本中非常重要的参数,可以用来控制算法的开发(exploitation)和探索(exploration)能力。惯性权重的大小决定了对粒子当前速度继承的多少。较大的惯性权重将使粒子具有较大的速度,从而有较强的探索能力;较小的惯性权重将使粒子具有较强的开发能力。关于惯性权重的选择一般有常数和时变两种。算法的执行效果很大程度上取决于惯性权重的选取。本文介绍了粒子群优化算法的基本原理,分析了其特点,并将其应用于函数优化问题求解

3、。此外,本文根据惯性权重对粒子群优化算法性能影响的研究,提出了三种不同的惯性权重。通过仿真实验,验证了各自的收敛性同时也说明了惯性权重在粒子群优化算法中有很大的自由度。一、问题描述1.1 函数优化问题目标优化问题可以描述为:(1) 或: (2) 这里SRn称为搜索空间,f(x):SRn称为目标函数。(1)式描述的优化问题称为极大化问题,(2)式描述的称为极小化问题。当把f(x)看成是一序列的函数时,上述的问题就转变为多目标优化问题。对很多实际问题进行数学建模后,可将其抽象为一个数值函数的优化问题。由于问题种类的繁多、影响因素的复杂,这些数学函数会呈现出不同的数学特征,比如连续的、离散的、凸的、

4、凹的、单峰值的、多峰值的函数等等,经常遇到的函数还有这些不同数学特征的组合,除了在函数是连续、可求导、低阶的简单情况下可解析地求出其最优解外,大部分情况需要通过数值计算方法来进行近似优化计算。尽管人们对这个问题研究了很多年,但至今仍无一种既能处理各种不同的复杂函数、又具有良好求解结果的数值计算方法。特别是当问题的规模比较大时,优化计算时的搜索空间急剧扩大,人们认识到要严格地求出其最优解不太现实。所以需要研究出一种能够在可接受的时间和可接受的精度范围内求出数值函数近似最优解的方法或通用算法。粒子群优化由于其算法的简单,易于实现,无需梯度信息,参数少等特点在连续优化问题和离散优化问题中都表现出了良

5、好的效果,特别是因为其天然的实数编码特点适合于处理实优化问题。近年来成为国际上智能优化领域研究的热门。1.2 粒子群算法基本原理粒子群优化算法PSO(Particle Swarm Optimization)是一种基于群体的自适应的搜索优化方法。是由James Kennedy和Eberhart在1995年提出的。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。PSO初始化为一群随机粒子(随机解),然后通过迭代

6、找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。假设在一个维的目标搜索空间中,有个粒子组成一个群落,其中第个粒子表示为一个维的向量,。第个粒子的“飞行 ”速度也是一个维的向量,记为,。第个粒子迄今为止搜索到的最优位置称为个体极值,记为,。整个粒子群迄今为止搜索到的最优位置为全局极值,记为在找到这两个最优值时,粒子根据如下的公式(1.1)和( 1.2)来更新自己的速度和位置: (1.

7、1) (1. 2)其中:和为学习因子,也称加速常数(acceleration constant),和为0,1范围内的均匀随机数。式(1.1)右边由三部分组成,第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己先前速度的趋势;第二部分为“认知(cognition)”部分,反映了粒子对自身历史经验的记忆(memory)或回忆(remembrance),代表粒子有向自身历史最佳位置逼近的趋势;第三部分为“社会(social)”部分,反映了粒子间协同合作与知识共享的群体历史经验。二、算法设计 这部分内容主要是针对本文主要研

8、究问题的类型确定粒子群算法具体实现过程和一些参数的选择。2.1算法流程框图2.2 算法实现算法的流程如下: 初始化粒子群,包括群体规模,每个粒子的位置和速度 计算每个粒子的适应度值; 对每个粒子,用它的适应度值和个体极值比较,如果 ,则用替换掉; 对每个粒子,用它的适应度值和全局极值比较,如果则用替; 根据公式(1.1),(1.2)更新粒子的速度和位置 ; 如果满足结束条件(误差足够好或到达最大循环次数)退出,否则返回。2.3 算法的构成要素对于构成粒子群算法的各个参数进行设定。本算法中主要的参数变量为惯性权值,学习因子 ,群体的大小 N,迭代次数 M,粒子维数 D。(1)群体大小通常,群体太

9、小则不能提供足够的采样点,以致算法性能很差,容易陷入局部最优;群体太大尽管可以增加优化信息,阻止早熟收敛的发生,但无疑会增加计算量,造成收敛时间太长,表现为收敛速度缓慢。本文对函数的优化选择种群规模为500。(2)最大迭代次数迭代次数越多能保证解的收敛性,但是影响运算速度,本文对函数的优化选最大迭代次数为1000次。(3)惯性权值惯性权重表示在多大程度上保留原来的速度。较大,全局收敛能力强,局部收敛能力弱;较小,局部收敛能力强,全局收敛能力弱。(4)学习因子加速常数和分别用于控制粒子指向自身或邻域最佳位置的运动。建议,并通常取。本文中取。(5)粒子维数粒子维数取决于待优化函数的维数,例如本文主

10、要有三个函数主要:第一个函数是2维的,第二个函数是10维的,第三个函数是30维的。(6)粒子空间的初始化较好的选择粒子初始化空间,将大大缩短收敛的时间。在本文中我们主要是选用随机对粒子进行初始化。2.4 算法的改进对于函数的优化我们主要选择的是对于惯性权重的优化。惯性权重是粒子优化算法的重要参数,算法的成败很大程度上就取决于参数的选取和调节,本文采用固定权重、时变权重和随机权重三种权重。(1)固定权重 即赋予惯性权重以一个常数值,一般来说,该值在0和1之间。固定的惯性权重使粒子在飞行中始终具有相同的探索和开发能力。显然对于不同的问题,获得最好优化效果的常数是不同的,要找到这个值需要大量的实验。

11、通过实验发现:种群规模越小,需要的惯性权重越大,因为此时种群需要更好的探索能力来弥补粒子数量的不足,否则粒子极易收敛;种群规模越大,需要的惯性权重越小,因为每个例子可以更专注于搜索自己附近的区域。(2)时变权重希望粒子群在飞行开始的时候具有较好的探索能力,随着迭代次数的增加,特别是在飞行后期,希望有较好的开发能力。所以使用动态调节惯性权重。可以通过时变的惯性权重来实现。设惯性权重的取值范围为:,最大迭代次数为,则第i次迭代时的惯性权重可以为:(3)随机权重随机权重是在一定范围内随机取值,在本文中我们采用的是:其中为0-1之间的随机数。这样惯性指数将在0.5-1之间随机变化。均值为0.75。对于

12、动态优化问题来说,不能够预测在给定的时间粒子群于要更好的探索能力还是更好的开发能力。所以,可以使惯性权重在一定范围内随机变化。需要说明的是,本文的程序允许改变除惯性权重以外的其他参数,因为本文编写的程序参照MATLAB工具箱,留给用户解决这类问题一个接口函数,上述的各个参数正是接口函数的参数,因此允许改变。另外对于c也可采用变参数法,即随迭代次数增加,利用经验公式使它们动态调整,本文采用固定值。三、算例设计3.1 测试函数介绍本文主要选取三个函数:一个2维连续函数、一个10离散函数、一个30维离散函数,利用MATLAB编写粒子群算法程序来优化它们。本文选取了三个函数,分别如下:其中f1求最大值

13、,f2和f3为求最小值。3.2 优化函数特点 (1)Schaffer函数:求其最大值。目标函数的效果图如图3.1下:图3.1 Schaffer函数的效果图由图知此函数是个二维函数,常用于测试粒子群算法性能的测试函数,全局在(0,0)处取得最大值,具有强烈震荡的状态,而在Xi (-3.14,3.14)范围内,有无限个次全局最大点。(2)Rastrigrin函数:目标函数的效果图如图3.2所示:图3.2 Rastrigrin函数的效果图由图知此函数是10维多峰值函数,存在大量按正弦拐点排列的、很深的局部最优点。其在(0,0,0)处取得全局最小值,在Xi(-5.12,5.12)范围内大约有10个局部

14、极小点,不难优化查找到全局最优值。(3)Girewank函数: 目标函数的效果图如图3.3所示:图3.3 Girewank函数的效果图由图知此函数为一个多峰值函数,为30维函数,变量之间有相互关系,该函数有很多局部最优点,其全局最优点全局最小值在(X1,X2,Xn)=(0,0,0)取得,目标函数最优为0。四、仿真实验设计4.1 实验参数设计(1)权重参数设计本文对每个测试函数将使用三种不同的惯性权重策略进行实验,分别为固定权重:;随机权重:;时变权重:,其中。(2)其他参数设计对于Schaffer函数,种群规模N=500,最大迭代次数M=1000,学习因子,函数是2维的,粒子维数取。对于Ras

15、trigrin函数,种群规模N=500,最大迭代次数M=1000,学习因子,函数是10维的,粒子维数对于Girewank函数,种群规模N=500,最大迭代次数M=1000,学习因子,函数是30维,粒子维数。4.2 基本粒子群算法在测试函数中应用以Schaffer函数、Rastrigrin函数、Girewank函数为例来说明基本粒子群算法在函数优化中问题中的效果。 步骤1:首先依据基本粒子群算法的流程图编写粒子群算法的MATLAB程序(见附录一); 步骤2:分别编写各个函数的适应值函数程序(见附录二); 步骤3:在MATLAB环境中用基本粒子群算法分别调用三个函数的适应值程序,得到收敛效果图。 Schaffer函数、Rastrigrin函数、Girewank函数的收敛效果图分别如图4.1、4.2、4.3所示:图4.1 Schaffer函数收敛效果图图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号