码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 优选策略的自适应蚁狮优化算法-附代码


    优选策略的自适应蚁狮优化算法

    文章目录

    • 优选策略的自适应蚁狮优化算法
      • 1.蚁狮优化算法
      • 2. 改进蚁狮优化算法
        • 2.1 自适应边界
        • 2.2 优选轮盘赌策略
        • 2.3 动态比例系数
      • 3.实验结果
      • 4.参考文献
      • 5.Matlab代码
      • 6.Python代码

    摘要:针对基本蚁狮优化算法收敛速度较慢、易陷入局部极值、高维求解精度较低等缺点,提出具有自适应边界、优选轮盘赌和动态比例系数的改进蚁狮算法.在蚂蚁围绕蚁狮游走的过程中引入自适应边界机制,增加蚂蚁种群活跃性,防止算法陷入局部极值.轮盘赌选择蚁狮过程中加入优选轮盘赌策略,在保持蚁狮个体多样性的同时加快算法收敛速度.在蚂蚁位置更新公式中加入动态比例系数,提高算法前期的探索能力和后期的开发能力.

    1.蚁狮优化算法

    基础蚁狮优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107726004

    2. 改进蚁狮优化算法

    2.1 自适应边界

    在基本蚁狮算法的式 (7) 中, 蚂蚁围绕蚊狮游 走的边界随迭代次数的增加而变小, 变化呈线性分 段趋势且在同一轮迭代中, 所有妈蚁游走的边界都 完全相同, 这降低算法的多样性, 不利于算法寻找全 局最优解. 对此, 本文提出自适应边界策略, 改进式 (7)用于增加蚂蚑在围绕蚑狮游走时的多样性:
    I = 1 0 ∗ t T ( 0.5 + sin ⁡ ( t π 2 T ⋅  rand  ) ) , I=10^{*} \frac{t}{T}\left(0.5+\sin \left(\frac{t \pi}{2 T} \cdot \text { rand }\right)\right), I=10∗Tt​(0.5+sin(2Ttπ​⋅ rand )),
    其中 rand 为 ( 0 , 1 ) (0,1) (0,1) 内均匀分布的随机数.
    t > { 0.1 T , w = 2 0.5 T , w = 3 0.75 T , w = 4 0.9 T , w = 5 0.95 T , w = 6 t>

    {0.1T,w=20.5T,w=30.75T,w=40.9T,w=50.95T,w=6" role="presentation" style="position: relative;">⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪0.1T,0.5T,0.75T,0.9T,0.95T,w=2w=3w=4w=5w=6{0.1T,w=20.5T,w=30.75T,w=40.9T,w=50.95T,w=6
    t>⎩ ⎨ ⎧​0.1T,0.5T,0.75T,0.9T,0.95T,​w=2w=3w=4w=5w=6​
    由式 (6) 可知, 边界的变化主要由 I I I 值决定, 与 其呈反比, 而式(9)中 I I I 的值由
    1 0 w 、 t T 、 ( 0.5 + sin ⁡ ( t π 2 T ⋅  rand  ) ) 10^{w} 、 \frac{t}{T} 、\left(0.5+\sin \left(\frac{t \pi}{2 T} \cdot \text { rand }\right)\right) 10w、Tt​、(0.5+sin(2Ttπ​⋅ rand ))
    三项因子决定. 随着进化代数增加, 1 0 w 10^{w} 10w 呈线性分段指数递增, t T \frac{t}{T} Tt​ 呈线性递增,
    ( 0.5 + sin ⁡ ( t π 2 T ⋅  rand  ) ) \left(0.5+\sin \left(\frac{t \pi}{2 T} \cdot \text { rand }\right)\right) (0.5+sin(2Ttπ​⋅ rand ))
    在 ( 0.5 , 1.5 ) (0.5,1.5) (0.5,1.5) 内呈随机非线性递增趋势. 整体而言, I I I 值随进化代数增加呈现具有一定随机性的非线性自 适应递增趋势, 千是边界大小随进化代数呈现具有 一定随机性的非线性自适应递减趋势, 从而提高蚂 蚁围绕蚁狮游走的随机性和多样性, 提高算法的开 发能力和全局搜索能力, 有利于找到全局最优解.

    2.2 优选轮盘赌策略

    ALO 使用适应度轮盘赌法选择随机蚁狮, 虽然 这样使蚂蚁有较大概率绕较优蚁狮进行游走, 但是 仍然会有较大可能围绕较差蚁狮进行游走. 本文对 此进行改进, 将初始算法中用于轮盘赌选择的蚁狮 根据适应度大小进行排序, 然后设定: 如果
    A < A ⋅ P ⋅  rand,  AA<A⋅P⋅ rand, 
    A A A 参与轮盘赌; 否则 A A A 不参与轮盘赌. 其中, A A A 为参与 轮盘赌蚁狮个体的适应度值, P P P 为 M \boldsymbol{M} M 中蚁狮适应度 值的平均值, rand 为 ( 0 , 1 ) (0,1) (0,1) 内均匀分布的随机数. 这 种对蚁狮的判断选取既保留大多数蚁狮, 又使蚂蚁 有更大概率围绕较优蚁狮进行游走.
    通过改进, 对参与适应度轮盘赌的蚁狮进行有 条件选取, 使蚂蚁有更大概率围绕较优蚁狮进行游 走, 提高算法找到更优解的可能性和速度.

    2.3 动态比例系数

    标准蚑狮算法采用式 (8) 求取 R A t R_{A}^{t} RAt​ 和 R E t R_{E}^{t} REt​ 两种随 机游走平均值的方法以平衡探索和开发能力,但忽 略蚂蚁的开发和探索能力在不同时期所占比例应有 不同. 本文改进 R A t R_{A}^{t} RAt​ 和 R E t R_{E}^{t} REt​ 的比例系数, 让不同时期两 种游走方式占有的权重不同. 算法前期以围绕轮盘 赌选择的蚁狮游走方式为主, 后期以围绕精英蚁狮 的游走方式为主. 改进后的动态比例系数为
    A n t i t = ( 1 − 0.2 − 0.8 t T ⋅  rand  ) R A t + R E t ( 0.2 + 0.8 t T ⋅  rand  ) ,

    Antit=(1−0.2−0.8tT⋅ rand )RAt+REt(0.2+0.8tT⋅ rand )," role="presentation" style="position: relative;">Antti=(1−0.2−0.8tT⋅ rand )RtA+RtE(0.2+0.8tT⋅ rand ),Antit=(1−0.2−0.8tT⋅ rand )RAt+REt(0.2+0.8tT⋅ rand ),
    Antit​=​(1−0.2−0.8Tt​⋅ rand )RAt​+REt​(0.2+0.8Tt​⋅ rand ),​
    其中, R A t R_{A}^{t} RAt​ 为蚂蚁在第 t t t 次迭代时围绕轮盘赌所选蚁 狮进行随机游走后的位置, R E t R_{E}^{t} REt​ 为蚂蚁在第 t t t 次迭代 时围绕精英蚁狮进行随机游走后的位置, T T T 为最大 迭代次数, t t t 为当前迭代次数, rand 为 ( 0 , 1 ) (0,1) (0,1) 内均匀 分布的随机数.
    通过式 (10)的改进, 算法初期主要围绕轮盘赌 选择蚁狮游走, 同时也逐渐增强最优蚁狮的方向性影响.后期主要围绕精英蚁狮游走,兼有一定的随机性,有效提高算法前期的探索能力和后期的开发能力.同时动态比例系数的使用也在一定程度上提升蚂蚁种群的多样性.

    3.实验结果

    请添加图片描述

    4.参考文献

    [1]刘景森,霍宇,李煜.优选策略的自适应蚁狮优化算法[J].模式识别与人工智能,2020,33(02):121-132.

    5.Matlab代码

    6.Python代码

  • 相关阅读:
    Vue defineProps 与 props
    tomcat命令行下启动中文乱码(解释原理版)
    逻辑回归中对L1\L2正则化的理解
    vsimk is exiting with code 211
    Wireshark流量分析例题
    高成本获客时代,企业如何通过营销自动化实现突围?
    Java JDK下载与安装教程
    idea运行项目之后一直卡在Writing classes… 解决方案
    游戏软件开发与应用软件开发有什么不同呢?
    MATLAB算法实战应用案例精讲-【数模应用】欧氏距离(附MATLAB、Java、Python和R语言代码)
  • 原文地址:https://blog.csdn.net/u011835903/article/details/126478068
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号