智能优化算法:象群算法-附代码

文章目录

  • 智能优化算法:象群算法-附代码
    • 1.算法原理
      • 1.1 氏族更新操作
      • 1.2 氏族分离操作
    • 2.算法结果
    • 3.参考文献
    • 4.Matlab代码
    • 5.Python代码

摘要:象群优化算法(Elephant Herding Optimization, EHO)是 Wang 等人于2016 年提出了一种新的群体智能优化算法,用于解决全局无约束优化问题,它源于自然界中大象的畜牧行为。它已经成功应用于多级别阈值,支持向量机参数优化,调度问题等诸多问题。尽管 EHO 算法是一种较新的元启发式算法,但它有着结构简单、控制参数少以及易于和其它方法相结合等特点,能够很好的解决寻优问题。

1.算法原理

在自然界中,一个象群可分为几个氏族,每个氏族都有母象作为首领,在每一代中,一定数量的雄象会离开氏族。对于不同氏族的的大象在族长(氏族中位置最好的大象)的领导下生活,固定数量的雄象在长大后会离开它们所在的氏族,从而执行氏族更新操作来更新氏族中每个大象的位置,得到新的大象氏族位置,随后执行分类操作,进而优化氏族中位置较差的大象位置。

在基本的象群优化算法中氏族代表着局部搜索,离开氏族的雄象则执行全局搜索。在基本的 EHO 算法中,先进行更新操作决定算法的搜索方向和局部搜素详细程度,随后实现分离操作。这个过程包括两个阶段:氏族更新操作和分离操作。

1.1 氏族更新操作

来自不同群体的大象在族长的领导下一起生活。 女族长是氏族中适应度最好的大象。每个大象的位置都根据其位置和女族长的位置进行更新。 族长的位置根据氏族中心的位置进行更新。

随机初始化大象种群,将大象种群分为 nnn 个氏族,每个氏族中有 jjj 个大象个体,在每次迭代中,每个大象 jjj 的位置都会随氏族cic_ici​ 中族长(适应度值最好的位置xbest,cix_{best,ci}xbest,ci​,)移动:
xnew,ci,j=xci,j+α.(xbest,ci−xci,j).r(1)x_{new,ci,j} = x_{ci,j}+\alpha.(x_{best,ci}-x_{ci,j}).r \tag{1} xnew,ci,j​=xci,j​+α.(xbest,ci​−xci,j​).r(1)
式中:xnew,ci,jx_{new,ci,j}xnew,ci,j​,是更新后的位置,xci,jx_{ci,j}xci,j​,是上一代的位置,xbest,cix_{best,ci}xbest,ci​,是在氏族cic_ici​中适应度最好的位置,α∈[0,1]\alpha \in [0,1]α∈[0,1]代表氏族中位置最佳的女族长xbest,cix_{best,ci}xbest,ci​,对大象个体xci,jx_{ci,j}xci,j​的影响的比例因子, r∈[0,1]r \in [0,1]r∈[0,1]是算法后期用来提高种群多样性的随机数。

氏族 cic_ici​中女族长的位置xbest,cix_{best,ci}xbest,ci​,被定为:
xnew,ci,j=β∗xcenter,ci(2)x_{new,ci,j} = \beta*x_{center,ci} \tag{2} xnew,ci,j​=β∗xcenter,ci​(2)
式中:β∈[0,1]\beta \in [0,1]β∈[0,1] 代表第二个算法参数,它控制氏族中心xcenter,cix_{center,ci}xcenter,ci​的影响。氏族中心被定义为:
xcenter,ci,d=(∑j=1ncixci,j,d)/nci(3)x_{center,ci,d} = (\sum_{j=1}^{n_{ci}}x_{ci,j,d})/n_{ci} \tag{3} xcenter,ci,d​=(j=1∑nci​​xci,j,d​)/nci​(3)
其中1≤d≤D1\leq d \leq D1≤d≤D代表第 ddd 维,DDD 是搜索空间的总维数,ncin_{ci}nci​ 是氏族cic_ici​ 中大象的数量。

1.2 氏族分离操作

雄性大象在长大后会离开他们的群体,以增加群体的全局搜索能力和密度。最坏的大象(适应度最差的大象)被删除,并在搜索空间进行随机搜索以增加搜索性能。

在每个氏族cic_ici​中,具有最差适应度函数值的恒定数量的大象会被移动到新的位置。它们的位置定义为:
xworst,ci=xmin+{xmax−xmin+1}∗rand(4)x_{worst,ci} = x_{min}+\{x_{max} - x_{min} + 1\}*rand \tag{4} xworst,ci​=xmin​+{xmax​−xmin​+1}∗rand(4)
其中xminx_{min}xmin​和 xmaxx_{max}xmax​分别表示搜索空间的下限和上限,rand∈[0,1]rand \in [0,1]rand∈[0,1]。

EHO 算法的基本步骤如下:
Step1: 初始化种群、设置最大迭代次数。
Step2: 用适应度函数计算每个大象个体的适应度值,得到当前最优个体位置。
Step3: 根据公式(1)更新种群中每个大象个体的位置,使用公式(2)更新当前最优个体的位置。
Step4: 计算更新之后的每个大象个体的适应度值,评估种群,得到更新后的种群最优和最差的大象个体位置。
Step5: 使用公式(4)更新当前最差个体位置,保留更好的解。
Step6: 判断是否达到最大迭代次数,若是,则输出当前最优个体位置以及对应的适应度值,否则返回执行 Step2。

2.算法结果

3.参考文献

[1]张子建,王宏伟,周怀芳,尤森槟.基于多机制混合象群算法的混沌系统参数估计[J].微电子学与计算机,2020,37(06):40-45.

[1]曹倩倩. 象群优化算法的改进及其在网络入侵检测中的应用[D].湖北工业大学,2020.

4.Matlab代码

5.Python代码

个人资料介绍

智能优化算法:象群算法-附代码相关推荐

  1. 智能优化算法:闪电搜索算法-附代码

    智能优化算法:闪电搜索算法-附代码 文章目录 智能优化算法:闪电搜索算法-附代码 1.算法原理 1.1 过渡放电体 1.2 空间放电体 1.3 引导放电体 2.算法结果 3.参考文献 4.Matlab ...

  2. 智能优化算法:布谷鸟搜索算法-附代码

    智能优化算法:布谷鸟搜索算法-附代码 文章目录 智能优化算法:布谷鸟搜索算法-附代码 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 摘要:谷鸟搜索算法(cuckoo search , ...

  3. 【学习笔记】【算法】【智能优化】粒子群优化(PSO)

    [学习笔记][算法][智能优化]粒子群优化(PSO) 文章目录 [学习笔记][算法][智能优化]粒子群优化(PSO) 1 算法背景 1.1 背景 1.2 基础知识 2 算法原理 2.1 基本原理 2. ...

  4. 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

    基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...

  5. 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码

    基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...

  6. 【其他】结构技术优化算法--蚁群算法(ant colony optimization)

    目录 1 遗传基因算法 2 模拟退火算法 2.1爬山算法 2.2随机概率优化 3 群体智能算法 3.1蚁群算法 3.2粒子群算法 4总结 1 遗传基因算法 遗传算法(Genetic Algorithm ...

  7. 高斯差分变异和对数惯性权重优化的鲸群算法

    文章目录 一.理论基础 1.鲸群优化算法 2.改进鲸群优化算法 (1)高斯差分变异策略 (2)对数惯性权重策略 (3)IGWOA算法步骤 二.实验测试及分析 三.参考文献 一.理论基础 1.鲸群优化算 ...

  8. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  9. 相位 unwrap 与 wrap 算法详解(附代码)

    相位 unwrap 与 wrap 算法详解(附代码) 最近接手了一个项目,光通信方面的,我负责编写初测结果的数据处理算法,其中有一个算法叫做 unwrap 与 wrap,之前没有听说过.通过询问同事与 ...

  10. 数据挖掘领域十大经典算法之—SVM算法(超详细附代码)

    相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-Apriori算法 数据挖掘领域十大经 ...

最新文章

  1. SECTIONS bss段初始化分析
  2. 繁星屠龙软件下载_历时72小时,测试5个软件,写出的数理化教学软件推荐……(下)...
  3. python操作Excel的5种方式
  4. 布隆过滤器(Bloom Filter)的原理和实现
  5. linux arm下硬件驱动程序放哪里,Arm-Linux摄像头驱动程序的移植
  6. 设置相机的距离_数码相机的曝光判断标准是什么
  7. PLMN中的USSD与IMS域中的USSD
  8. iOS关于iPhone6和iPhone6 Plus的屏幕适配问题
  9. java排序方式(冒泡,选择,JDK)
  10. 关于瑞萨RH850中断的异常处理函数地址Exception Handler Address的理解
  11. “衣带渐宽终不悔,为伊消得人憔悴” 读《唐宋词十七讲》有感二 —— 2021.12.23 晚八时
  12. 暴走英雄坛服务器维护到什么时候,暴走英雄坛在4月25日更新了什么 最新维护内容介绍...
  13. bzoj 1127 [POI2008]KUP——思路(悬线法)
  14. Halo 博客网站的SQL
  15. Delphi的多线程开发实例
  16. IO流_递归、IO流总结
  17. 分享优质JAVA学习网站
  18. 为何在数据库中将手机号设为int型却保存为2147483647
  19. Shopify 全套接口开发,产品上传、订单检索、自动履行【PHP接口】开发
  20. 计算机win7卡顿如何解决方法,win7电脑运行很慢很卡怎么办

热门文章

  1. SpringCloud和AlibabaCloud区别
  2. linux操作命令 mongo_MongoDB常用操作命令整理
  3. dhcp服务配置 [Linux] 超详细的步骤!学不会你打我!
  4. ora-28547 可能是oracle net 管理错误_PostgreSQL与Oracle:成本、易用性和功能上的差异...
  5. 逆袭进大厂:程序员究竟该如何学好前端?
  6. 实战Node—幼教平台
  7. Cesium:搭建运行环境
  8. 解决npm安装时出现run `npm audit fix` to fix them, or `npm audit` for details
  9. Cesium整体架构介绍
  10. 数值分析(8)-最佳一致逼近多项式