基于余弦相似度改进蝴蝶优化算法-附代码
  yOv1KlRBtRV9 2023年11月02日 30 0


基于余弦相似度改进蝴蝶优化算法


文章目录

  • 基于余弦相似度改进蝴蝶优化算法
  • 1.蝴蝶优化算法
  • 2. 改进蝴蝶优化算法
  • 2.1 基于余弦相似度位置更新策略
  • 2.2 根据适应度动态调整转换概率策略
  • 2.3 自适应混和惯性权重
  • 3.实验结果
  • 4.参考文献
  • 5.Matlab代码
  • 6.Python代码



摘要:针对蝴蝶优化算法(BOA)容易陷入局部最优和寻优精度低等问题,本文提出一种多策略改进的蝴蝶优化算法(MSBOA)。该算法首先引入余弦相似度位置调整策略,通过旋转变化算子和伸缩变换算子进行位置更新,有效的保持算法的种群多样性。其次引入动态切换概率,平衡算法局部阶段和全局阶段的转换。最后增加混合惯性权重策略,提高算法的收敛速度。

1.蝴蝶优化算法

2. 改进蝴蝶优化算法

2.1 基于余弦相似度位置更新策略

余弦相似度反应两个向量方向一致性关系。取值范围为[ -1 ,1],其中 1表示两个向量之间的夹角为 0度,有重合部分,-1表示两个向量方向相反。由于蝴蝶算法的特点,在迭代中后期,蝴蝶飞行围绕当前最优蝴蝶位置,甚至于飞行过程中出现重叠的现象,很难保持种群的多样性,引入余弦相似度衡量最优蝴蝶位置与周围蝴蝶的分布情况,通过构造当前蝴蝶个体位置和最优个体之间的向量,余弦相似度为分布情况的
指标,更新余弦相似度较高且适应度较差的蝴蝶个体位置,既加快算法收敛的速度,也保持了种群的多样性。策略具体细节如下:
首先构建 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能 向量:
基于余弦相似度改进蝴蝶优化算法-附代码_算法_02
其中第 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_03 次迭代的当前蝴蝶位置, 即第 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_04 个位置, 记为 基于余弦相似度改进蝴蝶优化算法-附代码_优化算法_05 表 示第 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_03 次迭代其他蝴蝶位置中的一个, 基于余弦相似度改进蝴蝶优化算法-附代码_优化算法_07 属于第 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_03 代中的最优 蝴蝶的位置。
定义 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_09 为两个向量之间的相似度, 取值范围为 基于余弦相似度改进蝴蝶优化算法-附代码_优化算法_10 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_11, 个体位置之间相似度计算公式为:
基于余弦相似度改进蝴蝶优化算法-附代码_余弦相似度_12
其中分子为向量 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能 的内积, 分母分别为向量 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能 的模。余弦 相似度越高, 代表蝴蝶个体 基于余弦相似度改进蝴蝶优化算法-附代码_优化算法_15基于余弦相似度改进蝴蝶优化算法-附代码_余弦相似度_16 越容易在方向上的重合。 将当前蝴蝶位置 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_04 与其他蝴蝶位置 基于余弦相似度改进蝴蝶优化算法-附代码_余弦相似度_18 依次计算余弦相似度, 并 设置阈值 基于余弦相似度改进蝴蝶优化算法-附代码_算法_19 将与当前蝴蝶位置余弦相似度较高的个体进行监 选, 通过比较当前个体与笑选后个体的适应度, 将适应度较 差的个体位置引人状态转移算法中的旋转变换算子或伸缩变 换算子 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_20 进行位置更新, 并保留适应度较高的个体位置, 更新 公式如下:
基于余弦相似度改进蝴蝶优化算法-附代码_迭代_21
其中 基于余弦相似度改进蝴蝶优化算法-附代码_优化算法_22基于余弦相似度改进蝴蝶优化算法-附代码_优化算法_23 ) 分别为蝴蝶个体 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_24基于余弦相似度改进蝴蝶优化算法-附代码_优化算法_25 适应度值, 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_26 为旋转 因子; 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_27 是一个其元素取值在 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_28 之间均匀分布的 随机矩阵, 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_29 为向量 2-范数, 理论上能将位置旋转到以半径 为 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_26 的任何位置。 基于余弦相似度改进蝴蝶优化算法-附代码_余弦相似度_31 是一个其非零元素取值服从高斯 分布随机对角矩阵, 从理论上看, 能将位置伸缩到服从 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_32

2.2 根据适应度动态调整转换概率策略

基本的蝴蝶算法中, 切换概率 基于余弦相似度改进蝴蝶优化算法-附代码_余弦相似度_33 值, 使用固定的常量来调 整局部搜索和全局搜索。本文采用文献 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_34 所提出的自适应 机制来描述切换概率,并且做了改进。如公式(8)所示。
基于余弦相似度改进蝴蝶优化算法-附代码_迭代_35
基于余弦相似度改进蝴蝶优化算法-附代码_算法_36 是在第 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_03 次迭代中第 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_04 只蝴蝶位置的切换概率, 其中 基于余弦相似度改进蝴蝶优化算法-附代码_算法_39, 中的最好适应度, 而 基于余弦相似度改进蝴蝶优化算法-附代码_余弦相似度_40 是第 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_03 次迭代中的第 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_04

2.3 自适应混和惯性权重

本文还在全局搜索阶段当前个体的位置更新公式 (3) 中 引人动态惯性权重 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_43 来影响更新蝴蝶的位置, 惯性权重较大 或者较小都有可能引起算法陷人局部最优, 从而影响算法得 效率。为了协调算法的全局和局部搜索能力引人了自适应惯 性权重(9)。
基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_44
其中 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_45 为调整过的 sigmoid函数 (10):
基于余弦相似度改进蝴蝶优化算法-附代码_余弦相似度_46
基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_45 值是调整过的 sigmoid函数, 该函数是神经网络中最常 用的激活函数之一。该函数在线性和非线性之间展现出极好 的平衡性, 拥有平滑的上界域和下边界域。在迭代前期参数 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_45 能保持较大值, 延长初期阶段的全局搜索能力和强度。伸 缩的范围较大, 保留个体的多样性。中期 基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_45 值随着迭代次数 的增加而减少, 从而加快算法的收敛速度。在迭代后期的一 段保持一个较小的权重, 延长了迭代后期的局部搜索时间, 更 有利于进行局部搜索, 更新后的全局阶段搜索过程为公式 (11)表示。
基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_50
权重引人了式 (9)的一部分, 其目的在于在控制最优蝴蝶 位置对新的蝴蝶位置的影响程度, 参数 基于余弦相似度改进蝴蝶优化算法-附代码_迭代_51

多策略改进蝴蝶优化算法 (MSBOA)的基本流程如下:
Step 1: 初始化。初始化算法参数, 随机生成种群位置, 计 算适应度并择优保存。

Step2: 蝴蝶位置更新阶段。根据公式 (5)构建向量, 并根 据式 (6) 计算蝴蝶个体位置的余弦相似度, 设置阈值 C将相似 度高于阈值的蝴蝶位置通过公式(7)进行位置更新。

Step3: 计算当前个体适应度, 并根据公式 (8) 计算 基于余弦相似度改进蝴蝶优化算法-附代码_余弦相似度_33

Step4: 计算位置更新后每只蝴蝶所在位置适应度, 并且 更新最优位置。

Step 5 : 重复 Step 2, Step 3 和 Step 4 的更新迭代过程, 若达到 设置收玫精度要求或规定的最大迭代次数, 终止算法并输出 最优解。

3.实验结果

基于余弦相似度改进蝴蝶优化算法-附代码_人工智能_53

4.参考文献

[1]陈俊,何庆.基于余弦相似度改进蝴蝶优化算法[J/OL].计算机应用:1-10[2021-04-28].http://kns.cnki.net/kcms/detail/51.1307.TP.20210305.0941.002.html.

5.Matlab代码

6.Python代码


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
yOv1KlRBtRV9