粒子群算法(1.初步了解)
1995年,受鸟类捕食行为的启发,Kennedy和Eberhart正式提出了粒子群优化算法的概念。研究中发现,在鸟类捕食过程中,个体并不知道如何找到食物以及自身离食物到底有多远,为了找到食物,最有效的搜索方式是搜索离食物源最近的个体的周围区域,这种搜索方式为粒子群算法中信息共享机制提供了生物行为基础。同时,在认知过程中,每个个体都会建立自身的信念,同时观察其他个体的信念,当发现其他个体的信念更加优秀时,个体会进行相应的调整以提高自身的搜索能力,粒子群算法中的学习机制即是受这种行为的启发而产生的。
简单例子说明大致思想:一只位于A处的小鸟在寻找食物的过程中它发现的最好的食物是位于B处的几粒小麦,而它的伙伴们们发现的最好的食物是位于C处的100只虫子,但这只小鸟既不想错过小麦,也不想错过虫子,应次它就选择网AB与AC矢量和的方向飞,而在这个方向飞的过程中它可能会找到比100只虫子更好的食物,它就会告诉其他伙伴,并调整自己的方向。
一群群个体合作不仅能改进它们在某件任务上的集合性能而且还能提高每一个个体的性能,这正是粒子群优化(Particle swarm optimization)的基础.我们不仅在动物的行为中清楚看到粒子群优化的原理,在人类的行为中也能看到.当我们试图改进在某个任务上的性能时,会根据一些基本观点调整我们的方法.
-
惯性.我们往往会保留在过去已证明是成功的那些旧的方式。“我总是这样做,所以还会继续这样做”
-
受社会的影响.我们听到他人的成功后会试图仿照他人的方法.我们可能从书籍,或者互联网,或者报纸读到他人成功的事迹.“如果那样做对他们管用,对我可能也管用.”
-
受邻居的影响.我们从与自己亲近的人那里学到的最多、受朋友的影响会比受社会的影响更多.我们会与他人分享成功和失败的故事,并因为这些交往修正我们的行为.与互联网上亿万富翁的遥远的故事相比,百万富翁邻居或侄儿的投资建议对我们的影响更大.
粒子群算法最初主要应用于连续函数的优化以及神经网络的训练,实践证明,多数情况下使用粒子群算法进行神经网络训练能够获得比BP算法更好的结果。已成功将粒子群算法应用于车间调度﹑旅行商(TSP)、整数规划等问题中。粒子群算法在同步发电机辨识、多目标优化、动态优化、聚类分析、游戏学习训练、生物信号检测与识别、新产品投人、目标检测以及广告优化等领域的应用均取得了一成果。
目前主要研究方向:理论研究、拓扑结构、参数选取与优化、其他算法的融合、算法的应用
1.算法框架
使用粒子群算法求解实际优化问题时,一般首先要将待求解的问题空间映射为算法空间;然后进行初始化,通常的做法是随机生成一组均匀分布在搜索空间内的初始解;接着,根据搜索策略在算法参数的控制下在搜索区域内进行个体搜索,并产生一组待选解;以一定的接受准则(如确定性、概率性、混沌方式等)为依据对当前状态进行更新,如此反复迭代直到某种收敛标准得到满足;最后通过空间反变换,即将算法空间映射回问题空间,输出所求解问题的最优解。以上描述可以大致由下图来描述。
2.算法设计步骤
(1)表示方案的确定
也可以成为编码方案或粒子的表示方法,目前粒子群优化算法采用的编码方案大多为实数向量的形式,一般将解表示为粒子的位置向量。对于非数值优化问题而言,如生产调度问题等,如何通过合适的粒子表示方法来映射调度问题的解空间,是问题求解的关键环节。
(2)适应度值函数的确定
适应度值函数用于评价待选解的质量,是唯一能够反映优化进程并引导其不断进行下去的参量。因此,对于特定的优化问题,根据问题的具体特征来选择合适的目标函数或代价函数来计算适应度值对于算法的求解质量有着重要的影响。
(3)控制参数的选取
对于不同的算法模型,参数的选取直接关系到算法的求解性能。粒子群优化算法的主要控制参数包括:粒子种群规模、算法的最大迭代代数、惯性权重、学习因子以及其他一些辅助控制参数,如粒子的速度与位置的范围等。
(4)优化模型的选择
比较常见的模型包括带有惯性权重的粒子群算法模型、带有收缩因子的粒子群算法模型、采用拉伸技术的粒子群算法模型、二进制粒子群算法模型等。目前,在大多数优化问题中,带有线性递减惯性权重的粒子群算法模型得到了较多的应用,这主要归因于该模型可以有效地平衡全局寻优和局部寻优,从而提高优化效率。
(5)算法终止条件的确定
与其他进化算法类似,粒子群优化算法通常采用最大迭代代数或凝滞代数作为算法的终止准则,即算法在迭代代数达到预先设定的最大值或者在搜索过程中全局最优适应度值持续一定的迭代代数不再发生明显改变时,迭代终止,算法寻优过程结束。
3.算法描述与分析
3.1算法基本模型
在粒子群优化算法中,粒子的行为是一种共生合作的行为,每个粒子的搜索行为受到群体中其他粒子搜索行为的影响。同时,记忆了粒子过去的最好位置,具备对过去经验的简单学习能力。PSO先生成初始种群,即在可行解空间中随机初始化一群粒子,每个粒子都为优化问题的一个可行解,并由目标函数为之确定一个适应度值(fitness value)。每个粒子将在解空间中运动,并由速度决定其下一时刻的运动方向和距离。通常粒子将追随当前的最优粒子而动,并经逐代搜索最后得到最优解。在每一代中,粒子将跟踪两个极值,一个为粒子本身迄今找到的最优解 p b e s t p_{best} pbest,另一个为全种群迄今找到的最优解 p g b e s t p_{gbest} pgbest。
粒子的维度与解空间的维度一致,根据个体适应度来判断粒子的优劣,粒子根据自己的飞行经验(单个粒子自己找到的局部最优解 p b e s t pbest pbest)和群体的飞行经验(全部粒子的全局最优解 g b e s t gbest gbest)来确定自身的飞行速度﹐调整自己的飞行轨迹,向最优点靠拢。粒子根据以下公式更新自己的速度和位置:
粒子i的第d维速度更新公式:
V i d k = w V i d k − 1 + c 1 r 1 ( p b e s t i d − x i d k − 1 ) + c 2 r 2 ( g b e s t d − x i d k − 1 ) V_{id}^k=wV_{id}^{k-1}+c_1r_1(pbest_{id}-x_{id}^{k-1})+c_2r_2(gbest_{d}-x_{id}^{k-1}) Vidk=wVidk−1+c1r1(pbestid−xidk−1)+c2r2