Particle Swarm optimization(PSO)---粒子群算法

粒子群算法(PSO)

简介

粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。
PSO同遗传算法类似,是一种基于迭代的优化算法。系统初始化为一组随机解,通过迭代搜寻最优值。但是它没有遗传算法用的交叉(crossover)以及变异(mutation),而是粒子在解空间追随最优的粒子进行搜索。同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域。
如前所述,PSO模拟鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。
PSO 初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个”极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。

其实,粒子群算法,就我个人理解,就是一群人合作玩儿打猎的游戏,该游戏提供给玩家的信息有:1.玩家自己距离猎物的距离(fitness value);2.玩家自己曾经找到过得一系列位置,包括曾经距离猎物最近的位置 (Pi) ;3.所有玩家中距离猎物最近的位置 (Pg) (或者自己周围玩家距离猎物最近的位置 (Pnk) )。我们如何通过这一系列的信息以最快速度找到猎物的位置呢?粒子群算法告诉我们如何去移动从而找到猎物。当我们使用全局信息时,我们结合者自己曾经找到过的离猎物最近的位置和现在所有玩家离猎物最近的位置,来思考我们下一步该怎么走,其实所有人在接收到多个有用信息时,都会给这些信息的重要性排个序,然后融合这些信息来走,这个重要性在公式中的表现就是权重,然后所有玩家都以这种方式来更新自己的位置,就会逐渐都找到同一个位置,即逐渐收敛,从而找到一个就目前而言最佳的位置(可能局部最优也可能全局最优)。而当我们使用局部信息时,我们只需要把接收到的所有玩家离猎物最近的位置更改为我周围玩家的离猎物最近的位置即可,其余的都一样。在这里,有一个问题会被思考,即什么样的玩家算作是我周围的玩家,这里会在后面的局部粒子算法中详细介绍。

两种粒子群算法

全局粒子群算法

全局粒子群算法中,粒子值的更新是依据自己搜到的历史最优值 (Pi) 和全部粒子搜到的最优值 (Pg) 来决定的。其速度与位置的更新公式如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值