粒子群算法(PSO)详解以及使用

1 PSO原理(particle swarm optimazition)

1.1 算法使用范围

根据名字: 粒子群优化,其实就界定了该算法是作为一个优化算法的,优化的目的是什么?使得某个loss 函数最小或者最大吧,这里可以容易使人联想到梯度下降求最小值(缺陷较为明显->有可能在局部达到最小或者最大,并且不适用于带约束条件的问题,优点就是:容易实现,算法思路简单。),于是我们现在考虑PSO,该算法能够适应于带约束条件的问题的求解。

1.2 算法使用方法

  • 1 假设你刚刚用神经网络训练出来一个函数(模型),这个函数的输出能够衡量输入样本的失败率,这下你希望获得–针对这个函数,使得这个函数最小的样本是什么呢?(假设函数的输入是一个一维向量,代表了一堆操作变量,输出就是这些操作变量给系统带来的损失)
  • 2 此时就可以考虑使用PSO算法,你已经知道了函数,然后你想求这个函数的最小值(如果函数的输入是有约束条件的,那就是带约束的pso算法咯,没有的话就更好实现),PSO算法care的其实只有2件事情,1是损失函数,2是约束条件(甚至你的函数的输入变量的定义域,这也是约束条件)

1.3 算法流程描述

主要参考https://en.wikipedia.org/wiki/Particle_swarm_optimization

很容易得出:算法本身仅仅依赖于函数和约束条件,和之前你使用的任何样本数据都无关。
算法如下:

for each particle i = 1, …, S do
Initialize the particle’s position with a uniformly distributed random vector: xi ~ U(blobup)
Initialize the particle’s best known position to its initial position: pi ← xi
if f(pi) < f(g) then
update the swarm’s best known position: g ← pi
Initialize the particle’s velocity: vi ~ U(-|bup-blo|, |bup-blo|)
while a termination criterion is not met do:
for each particle i = 1, …, S do
for each dimension d = 1, …, n do
Pick random numbers: rp, rg ~ U(0,1)
Update the particle’s velocity: vi,d ← ω vi,d + φp rp (pi,d-xi,d) + φg rg (gd-xi,d)
Update the particle’s position: xi ← xi + lr vi
if f(xi) < f(pi) then
Update the particle’s best known position: pi ← xi
if f(pi) < f(g) then
Update the swarm’s best known position: g ← pi

应用到具体实例中,各个参数的实际意义:
(待实现)

2 使用实例(待实现)

可以先参考:
https://github.com/tisimst/pyswarm

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,灵感来源于鸟觅食行为。O通过模拟鸟群中个体之的协作与信息共享,来寻找最优解。 在PSO中,将待优化问题看作是一个多维空间中的搜索问题算法通过维护一群粒子(particles),每个子代表一个潜在解。每个粒子都有己的位置和度,并根据自身历史经验和群体经验进行位置的更新。 PSO的基本思想是,每个粒子根据自身历史最优解(局部最优解)和整个群体历史最优解(全局最优解)来调整自己的速度和位置。具体而言,每个粒子根据自身的速度和位置信息,以及全局最优解的引导,更新自己的速度和位置。通过不断迭代更新,粒子群逐渐收敛于最优解。 PSO算法的核心公式如下: v_i(t+1) = w * v_i(t) + c1 * rand() * (pbest_i - x_i(t)) + c2 * rand() * (gbest - x_i(t)) x_i(t+1) = x_i(t) + v_i(t+1) 其中,v_i(t)表示粒子i在时刻t的速度,x_i(t)表示粒子i在时刻t的位置,pbest_i表示粒子i的历史最优解,gbest表示整个群体的历史最优解,w、c1、c2为算法的参数,rand()为随机函数。 PSO算法具有以下特点: . 简单易实现:PSO算法的原理简单,易于理解和实现。 2. 全局搜索能力:通过群体信息共享和协作,PSO能够在搜索空间中进行全局搜索,有较好的收敛性能。 3. 适应性强:PSO算法对问题的约束条件和目标函数形式没有特殊要求,适用于各种类型的优化问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值