智能优化算法:阴阳对优化算法

文章目录

  • 智能优化算法:阴阳对优化算法
    • 1.算法原理
      • 1.1 设置待优化
      • 1.2 分裂阶段
      • 1.3 存储阶段
    • 2.算法流程
    • 3.算法结果
    • 4.参考文献
    • 5.Matlab代码

摘要:阴阳对优化(YYPO)算法是 Varun Punnathanam等人于 2016 年基于阴阳平衡原理提出的一种新型元启发式优化算法。目前已在函数、多目标优化等领域得到应用。

1.算法原理

该算法基于 2 个点集(P1 和P2),其中 P1 设计为专注于开发变量空间,P2 设计为专注于探索变量空间,通过开发与探索 2 个矛盾行为之间的相互协调、补充达到平衡,并利用分裂、存储 2 个阶段进行迭代更新来求解最优化问题。

1.1 设置待优化

设置待优化问题维度 DDD ,随机初始化 2 个点集P1={P11,P12,...,P1D}P1 = \{P1^1,P1^2,...,P1^D\}P1={P11,P12,...,P1D}和 P2={P21,P22,...,P2D}P2 = \{P2^1,P2^2,...,P2^D\}P2={P21,P22,...,P2D}
。对点集 P1 和 P2 进行归一化处理,即 0≤(P1j,P2j)≤10 ≤ (P1^j ,P2^j ) ≤10≤(P1j,P2j)≤1 ,其中,j=1,2,3,…,Dj = 1,2,3,…,Dj=1,2,3,…,D 。

1.2 分裂阶段

a) 单向分裂:在 YYPO 算法中,点 PPP 的二维相同副本被存储为 SSS,其可以被认为是尺寸为2D×D2D × D2D×D 的矩阵。SSS 中每个点的一个变量用下面的公式修改:
{Sjj=Sj+rδj=1,2,3,...,DSD+jj=Sj−rδ(1)\begin{cases} S_j^j=S^j+r\delta \\ \quad \quad \quad \quad \quad \quad \quad j=1,2,3,...,D\\ S_{D+j}^j = S^j -r\delta \tag{1} \end{cases} ⎩⎪⎨⎪⎧​Sjj​=Sj+rδj=1,2,3,...,DSD+jj​=Sj−rδ​(1)
式中 下标—点号;上标—正被修改的决策变量号; rrr —在 0 和 1 之间的随机数,对于SSS中任意点的每个变量产生新的rrr ,共 需2D ×D 个 0 和 1 之间的随机数; δ\deltaδ —搜索半径。

b) D 向分裂:在 YYPO 算法中,点 PPP 的2D相同副本被存储为 SSS,其可以被认为是 2D×D2D × D2D×D 大小的矩阵,生成包含长度为DDD的二维随机二进制矩阵BBB,使得每个二进制串是唯一的。随后,使用以下等式来修改任意点的每个变量:
{Skj=Sj+r(δ/2)ifBkj=1j=1,2,3,...,DSkj=Sj−r(δ/2)else(2)\begin{cases} S_k^j=S^j+r(\delta/\sqrt{2})\, if\,B_k^j=1 \\ \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad j=1,2,3,...,D\\ S_{k}^j = S^j -r(\delta/\sqrt{2})\, else \tag{2} \end{cases} ⎩⎪⎨⎪⎧​Skj​=Sj+r(δ/2​)ifBkj​=1j=1,2,3,...,DSkj​=Sj−r(δ/2​)else​(2)
式中 下标—点号(或行);上标—决策变量号(或列); r、δr 、δr、δ 意义同上;二进制矩阵 BBB 通过随机选择 0~2D-10 ~ 2 D -10~2D-1 之间的唯一整数并转换成长度为 DDD 的二进制串来组成。

1.3 存储阶段

存储阶段是在满足所需数量的存储更新之后启动,且该存储阶段包含 2I2 I2I 个点( III 为存储阶段的更新次数大小),对应于在分裂阶段前每个更新中添加的 2 个点 P1、P2P1 、P2P1、P2 。若存储中的最佳点比点 P1、P2P1 、P2P1、P2更合适,则与点 P1、P2P1 、P2P1、P2 交换。存储阶段因此保持精英主义并且确保算法的单调收敛(即在任何迭代中确定的最佳点不会丢失)。在存储阶段结束时,存储矩阵设置为空,并且在其指定范围 IminI_{min}Imin​ 和 ImaxI_{max}Imax​ (IminI_{min}Imin​ 和 ImaxI_{max}Imax​ 分别为存储更新的最小数和最大数)内随机生成存储更新 III 的新值。搜索半径 δ1δ_1δ1​ 和 δ2δ_2δ2​ 的更新公式如下:
{δ1=δ1−(δ1/a)δ2=δ2+(δ2/a)(3)\begin{cases} \delta_1 = \delta_1- (\delta_1/a)\\ \delta_2 = \delta_2+ (\delta_2/a) \tag{3} \end{cases} {δ1​=δ1​−(δ1​/a)δ2​=δ2​+(δ2​/a)​(3)
式中 δ1、δ2δ 1、δ2δ1、δ2 —点集 P1、P2P1、P2P1、P2 的搜索半径; aaa —扩张/收缩因子。YYPO 算法的特点在于随机生成的点集数量取决于问题维度,针对高维优化问题将生成较多的点,这种自适应能力能有效解决不同维度问题并获得待优化问题的最优解。

2.算法流程

step1 初始化YYPO相应参数

step2 初始化2个点集P1,P2;

step3 利用目标函数评估点集 P1、P2 的适应度值,若 P1 优于 P2,则 P1、P2 互换;存储 P1、P2,并令 i = i + 1 。

step4 分别执行 P1、P2 分裂和存储操作,并获得更新的 P1、P2 以及对应的适应度值;若存储中的最佳点比点 P1、P2 更合适,则与点 P1、P2 交换。

step5 更新点集 P1、P2 的搜索半径 δ 1 和 δ 2

step6 存储矩阵设置为空,并在其指定范围I min 和 I max 内随机生成存储更新 I 的新值,存储阶段结束。

step7 断算法是否达到最大迭代次数 T ,若是,输出最佳点适应度值及所处空间位置,即待优化问题最优解,算法结束;否则重复 Step3—7

3.算法结果

4.参考文献

[1]何国栋,崔东文.基于阴阳对算法优化的随机森林与支持向量机组合模型及径流预测实例[J].人民珠江,2019,40(03):33-38.

[2] Varun Punnathanam, Prakash Kotecha. Yin-Yang-pair Optimization: A novel lightweight optimization algorithm. 2016, 54:62-79.

5.Matlab代码

个人资料介绍

智能优化算法:阴阳对优化算法-附代码相关推荐

  1. 基于粒子群算法优化的Elman神经网络数据预测-附代码

    基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  2. 基于布谷鸟算法优化的Elman神经网络数据预测-附代码

    基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  3. 基于鲸鱼算法优化的Elman神经网络数据预测-附代码

    基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  4. 基于海鸥算法优化的Elman神经网络数据预测-附代码

    基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  5. 基于遗传算法优化的Elman神经网络数据预测-附代码

    基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  6. python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码

    原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...

  7. 基于蜣螂优化的Elman神经网络数据预测-附代码

    基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  8. 【AI超级美发师】深度学习算法打造染发特效(附代码)

    [新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...

  9. 快速排序 c++_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)

    本文始发于个人公众号:TechFlow 在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及 ...

  10. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...

    授权自AI科技大本营(ID:rgznai100) 本文约3600字,建议阅读7分钟. 本文为你介绍FFA去雾算法和暗通道去雾算法搭建. 在过去的几十年中,单图像去雾作为基本的低级视觉任务已引起了计算机 ...

最新文章

  1. [RN] React Native 自定义 底部 弹出 选择框 实现
  2. Spring-基于Spring使用自定义注解及Aspect实现数据库切换
  3. 23 | 二叉树基础(上):什么样的二叉树适合用数组来存储?
  4. 打败 IE 的葵花宝典:CSS Bug Table
  5. 在MySQL中删除重复的行
  6. docker集群——介绍Mesos+Zookeeper+Marathon的Docker管理平台
  7. 自如蛋壳被指推高房租背后:爱公寓资金链断裂先例需警醒
  8. 二十五、JAVA多线程(五、线程生命周期)
  9. Matching the Blanks: Distributional Similarity for Relation Learning (通篇翻译)
  10. JS实现简易画图工具
  11. 合伙开公司要如何规避风险
  12. java jtextarea 事件_JTextArea事件处理
  13. 高数 极限存在、连续、有界、可积、可导/可微之间的关系
  14. [Python]networkx入门
  15. 【js html】对于img图片的引用填充,src可以给什么值?
  16. 织梦教程网模板+Wap端
  17. 清明祭:缅怀手机领域的那些先烈厂商们,你可还记得?
  18. 字符串与Date类型相互转换
  19. RXD and functions HDU-6061 NTT
  20. 新冠肺炎数据:美国霍普金斯大学

热门文章

  1. html5提交按钮如何改成图片,HTML5 订阅按钮变成填充表单动效
  2. ipad连接电脑显示不在充电_笔记本电脑和投影仪连接后为什么投影仪不能显示电脑内容?...
  3. mybatis oracle 多条件批量删除_面试官经常喜欢问的Mybatis经典面试题,值得好好收藏哦!...
  4. 语言用符号打印出落叶的图案_普通语言学概要(第一章第二节,语言是符号系统)...
  5. Java编程:排序算法——归并排序
  6. uV胶点胶机器人_解析手机用粘合剂十大用胶点
  7. 用setTimeout代替setInterval
  8. Spring Batch开发简单入门实践
  9. 伪随机数生成算法-梅森旋转(Mersenne Twister/MT)
  10. 有关C语言联合体(union)的使用