粒子群算法(一)

(一)背景介绍

1.1、人工生命

人工生命:研究具有某些生命基本特征的人 工系统。包括两方面的内容:
  1、研究如何利用计算技术研究生物现象;
  2、研究如何利用生物技术研究计算问题。
  此处关注的是第二点。 已有很多源于生物现象的计算技巧,例如神 经网 络和遗传算法。 现在讨论另一种生物系统统---社会系统:由简 单个体组成的群落和 环境及个体之间的相互 行为。

1.2、群智能

模拟系统利用局部信息从而可以产生不可预测的群行为。经常能够看到成群的鸟、鱼或者浮游生物。这些生物的聚集行为有利于它们觅食和逃避捕食者。它们的群落动辄以十、百、千甚至万计,并且经常不存在一个统一的指挥者。它们是如何完成聚集、移动这些功能呢?

1994年, Millonas在开发人工生命算法时,提出群体智能概念并提出五点原则:
  1、接近性原则:群体应能够实现简单的时空计算;
  2、优质性原则:群体能够响应环境要素;
  3、变化相应原则:群体不应把自己的活动限制在一狭 小范围;
  4、稳定性原则:群体不应每次随环境改变自己的模 式;
  5、适应性原则:群体的模式应在计算代价值得的时候 改变。

1.3、模拟群

鸟群行为的模拟:Reynolds、Heppner和Grenader提出鸟群行为的模拟。他们发现鸟群在行进中会突然同步的改变方向,散开或聚集等。那么一定有某种潜在的能力或规则保证了这些同步的行为。这些科学家都认为上述行为是基于不可预知的鸟类社会行为中的群体动态学。在这些早期的模型中仅仅依赖个体间距的操作,也就是说,这种同步是鸟群中个体之间努力保持最优距离的结果。

鱼群行为的研究:生物社会学家E.O.Wilson对鱼群进行了研究,提出:“至少在理论上,鱼群的个体成员能够受益于群体中其他个体在寻找食物过程中的发现和以前的经验,这种受益超过了个体之间的竞争所带来的利益消耗”。这说明,同种生物之间信息的社会共享能够带来好处,这是PSO的基础。

(二)粒子群算法的历史

粒子群算法源于复杂适应系统(Complex Adaptive System,CAS)。CAS理论于1994年正式提出,CAS中的成员称为主体。比如研究鸟群系统,每个鸟在这个系统中就称为主体。主体有适应性,它能够与环境及其他的主体进行交流,并且根据交流的过程“学习”或“积累经验”改变自身结构与行为。整个系统的演变或进化包括:新层次的产生(小鸟的出生);分化和多样性的出现(鸟群中的鸟分成许多小的群);新主题的出现(鸟寻找食物过程中,不断发现新的食物)。所以CAS系统中的主体具有4个基本特点(这些特点是粒子群算法发展变化的依据):

  • 首先,主体是主动的、活动的。
  • 主体与环境及其他主体是相互影响、相互作用的,这种影响是系统发展变化的主要动力。
  • 环境的影响是宏观的,主体之间的影响是微观的,宏观与微观要有机结合。
  • 最后,整个系统可能还要受一些随机因素的影响。

粒子群算法就是对一个CAS系统--鸟群社会系统的研究得出的。

粒子群算法(Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。   

PSO算法就从这种生物种群行为特性中得到启发并用于求解优化问题。在PSO中,每个优化问题的潜在解都可以想象成d维搜索空间上的一个点,称之为“粒子”(Particle),所有粒子都有一个被目标函数决定的适应值(Fitness Value ),每个粒子还有一个速度决定他们飞翔的方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索。Reynolds对鸟群飞行的研究发现。鸟仅是追踪它有限数量的邻居但最终的整体结果是整个鸟群好像在一个中心的控制下.即复杂的全局行为是由简单规则的相互作用引起的。

(三)

(四)粒子群算法的具体描述

PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO中的粒子,也就是求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。这个过程可以转化为一个数学问题。寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。该函数的图形如下:

粒子群算法(一)_第1张图片

当x=0.9350-0.9450,达到最大值y=1.3706。为了得到该函数的最大值,在[0,4]之间随机的洒一些点,为了演示,放置两个点,并且计算这两个点的函数值,同时给这两个点设置在[0,4]之间的一个速度。下面这些点就会按照一定的公式更改自己的位置,到达新位置后,再计算这两个点的值,然后再按照一定的公式更新自己的位置。直到最后在y=1.3706这个点停止自己的更新。这个过程与粒子群算法作为对照如下:

  • 这两个点就是粒子群算法中的粒子。
  • 该函数的最大值就是鸟群中的食物。
  • 计算两个点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的适应度函数。
  • 更新自己位置的公式就是粒子群算法中的位置速度更新公式。

下面演示一下这个算法运行一次的大概过程:

第一次初始化

粒子群算法(一)_第2张图片

第一次更新位置

粒子群算法(一)_第3张图片

第二次更新位置

粒子群算法(一)_第4张图片

第21次更新

粒子群算法(一)_第5张图片

最后的结果(30次迭代)

粒子群算法(一)_第6张图片

最后所有的点都集中在最大值的地方。

你可能感兴趣的:(人工智能算法)