当前位置:   article > 正文

数学建模【粒子群算法】

数学建模【粒子群算法】

一、粒子群算法简介

这里通过共享信息的鸟群来引出粒子群算法

  • 场景:一群鸟在森林随机寻找食物,目标是找到食物量最多的位置
  • 关键:鸟群通过叫声交流,随时共享自己的位置和发现的食物量
  • 这样鸟群就知道当前在哪个位置食物的量最多
  • 每只鸟根据自己的记录和从鸟群获取的信息调整下一步搜索的方向
  • 每只鸟都记录自己经过位置的食物量最多的位置--------个体最优解
  • 每只鸟都知道整个鸟群记录过的食物量最多的位置--------群体最优解
  • 鸟具有惯性,有保持自身原有方向的趋势。但鸟也会学习
  • 鸟学习个体经验,有向个体最优解飞行的趋势
  • 鸟学习社会经验,有向群体最优解飞行的趋势
  • 惯性、个体经验和社会经验是鸟决策需要的信息

迭代

  • 决策信息指导下一步飞行→总有鸟更靠近食物→更新信息指导再下一步飞行
  • 如此正反馈,整个鸟群始终在不断靠近食物

用其对比于粒子群

鸟群觅食粒子群算法
森林解空间
鸟的当前位置可行解
食物量函数值(适应度)
食物最多的位置最优解
更新鸟群位置更新可行解

二、适用赛题

多目标优化问题

  • 充电站布局优化(美赛)、系泊系统的设计(国赛)、背包问题
  • 当目标函数复杂、变量多(维度高),传统求解方法速度很慢
  • 粒子群算法的最大优点:快!(尤其是高维度且目标函数复杂的优化问题)

寻优问题

  • 复杂函数寻优、神经网络训练、模式分类、模糊系统控制、TSP问题等
  • 直接求解,或为这些问题的模型提供初始值或参数优化

算法优缺点

  • 优点:收敛快,简单易实现,几乎任何寻优问题都能用其求解
  • 缺点:局部搜索能力较差,搜索精度不够高(如何改进?)

三、模型流程

四、流程分析

这里以一个例题贯穿分析:寻优:非线性方程求解

传统方法的局限性

  • 物理学和现实中的数学模型常常归结为求解非线性方程
  • 传统Newton法等计算量大,经常求导困难,且收敛性与结果很受与初始值的影响
  • 避开传统数学方法,启发式算法可以“遍地撒网,重点捞鱼”

二维复杂函数

  • Schaffer函数形式简单但具有很强的复杂性
  • 有着无数个极小值点,且强烈震荡
  • x1,x2 ∈ [-10, 10]
1.参数初始化

本题显而易见有两个变量x1和x2,空间维度是2。 

初始位置和位移是随机的,或作为参数输入

2.变量初始化
①适应度

适应度就是模型的目标函数值

初始时将上一步初始化好的位置带入得到每一个粒子的适应度(函数值)

②最优解
  • 最优解对应适应度的最大还是最小值,取决于求解的问题
  • 第i只鸟的个体最优解记作pbesti(p表示personal)
  • 比较全部鸟的pbest,找出其中最佳的,记作全局最优解gbest(g表示global)
  • pbesti:第i只鸟曾经去过的适应度最高的位置,初始时自然为初始值
  • Yi:个体最优解对应的适应度
  • gbest:每只鸟都有个体最优解,其中对应的适应度Yi最高的解设为全局最优解
  • Y:全局最优解对应的适应度
  • 适应度最高 = 函数值最优 = 最小化问题求得最小值/最大化问题求得最大值
3.更新粒子速度和位置
①速度

  • :第k次迭代中第i只鸟的速度(位移)
  • :第k-1次迭代中第i只鸟的当前位置
  • :分别表示惯性、个体经验和社会经验的权重
  • :第k次迭代前,第i只鸟记录的个体最优解
  • :第k次迭代前,鸟群的全局最优解
  • 除权重系数外,各量都是向量,本式的本质是向量加减
  • 位移 = 速度 * 时间,算法中默认时间为1,因此位移 = 速度

公式分析

  • C1 = 0时鸟是盲从的,不学习自身经验
  • C2 = 0时鸟是自大的,不学习社会经验
  • w偏大时,有利于全局搜索,但收敛性差
  • w偏小时,有利于局部搜索,但运算更慢

理想情况

  • 前期粒子较为分散,进行全局搜索避免过早收敛陷入局部最优,需要w偏大
  • 后期粒子较为集中,进行局部搜索,求解更精确,需要w偏小
  • 改进方法:权重线性递减、自适应权重、随机权重等
②位置

当前位置 + 位移量(时间默认为1,所以速度 = 位移)

4.更新粒子适应度

将新位置带入目标函数计算得适应度

5.更新最优解

和2类似,最优解对应适应值的最大还是最小值取决于求解的问题

  • 相比较,取最优
  • :所有鸟的相比较,取最优
6.迭代与终止

重复3到5,直到满足终止条件或最大迭代次数

输出最终解位置和对应的适应度

至此,求解完成

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/151878
推荐阅读
相关标签
  

闽ICP备14008679号