• 单目标优化:山瞪羚优化算法(Mountain Gazelle Optimizer,MGO)求解CEC2017(提供Matlab代码)


    一、山瞪羚优化算法简介

    山瞪羚优化算法(Mountain Gazelle Optimizer,MGO)由BenyaminAbdollahzadeh等人于2022年提出,该算法模拟山瞪羚的社会生活和等级制度,思路新颖,性能高效。
    在这里插入图片描述
    山瞪羚,雄性头体长101-115厘米;体重17-29.5千克;雌性头体长98-101厘米;角长5.8-11.5厘米;体重16-25千克。山瞪羚上体黑褐色,下体白色,侧腹和四肢浅棕色。面部标有与黑边交际的灰白色条纹。还有一道狭窄的,用于分隔腹侧和白色下体的暗色侧面带。下侧腹的皮毛颜色是浅黄色。黑尾巴短而浓密。耳朵也比较短。下体的白色分界线直到大腿关节。夏季太阳辐射强时皮毛短而圆润,冬季皮毛会加厚,用于抵制冬天的寒冷与冻雨。两性均有角。雄性长220-294毫米,角的长短很大程度上会受栖息地影响。同一族群的雌性山瞪羚的角比雄性小70%,角长84-153毫米。雄性的角是粗厚,上具有显着的螺纹,而雌性的角没有螺纹。角的横截面是椭圆形,底部的空隙为约25毫米。雄性的角几乎都是指向天空,在雌性的角稍微向前弯曲。山瞪羚聚群活动,一般是3-8个的小群,有时更多。社会结构是由一只雄性为头领,有自己的领地,保持其领土的永久群体内有几只年轻雌性。雄性争夺领土的控制权,在两个区域之间发生边界冲突时,通常用打斗的暴力形式来准定成败。参赛者停在相距约30厘米的地方多次相互用头撞击。一只年轻的山瞪羚试图占有他国领土之间的战斗中,雄性可以造成对方重伤,甚至打断对方的腿。这些瞪羚是昼夜动物,所有亚种,除了巴勒斯坦山瞪羚,均在月夜下吃草,通常情况下,在黎明和黄昏中休息,度过一天中最热的时光。山瞪羚是典型的食草动物。饮食包括草本和灌木植物,根据栖息地不同有差别。分布在阿拉伯半岛和以色列的山瞪羚,由于该地区分布着金合欢树,这些树木形成了大量的叶片和豆荚。它们通常走到相思树枝前,用后腿支撑站立,前腿倚在树上,取食树叶和荚果。由于当地水源稀缺,山瞪羚挖鳞茎、球茎和其他肉质植物的地下器官来改善躯体内的水平衡。
    在这里插入图片描述
    山瞪羚优化算法MGO全局搜索和局部搜索同步进行,采用如下四种机制更新位置:
    在这里插入图片描述
    MGO种群更新依据四种机制(TSM、MH、BMH、MSF),其流程如下:
    在这里插入图片描述

    二、MGO算法描述及流程图

    在这里插入图片描述
    在这里插入图片描述
    参考文献:
    Abdollahzadeh, B., Gharehchopogh, F. S., Khodadadi, N., & Mirjalili, S. (2022). Mountain Gazelle Optimizer: A new Nature-inspired Metaheuristic Algorithm for Global Optimization Problems. Advances in Engineering Software, 174, [103282]. https://doi.org/10.1016/j.advengsoft.2022.103282

    三、CEC2017简介

    CEC2017共有30个无约束测试函数分别是:单峰函数(F1-F3)、简单多峰函数(F4-F10)、混合函数(F11-F20)和组合函数(F21-F30)。测试维度包含:10D、30D、50D、100D。CEC2017无约束测试问题随着维度的增加求解极其困难。

    在这里插入图片描述

    四、求解结果

    将山瞪羚优化算法MGO运用于求解CEC2017中30个无约束函数,其中每个测试函数可以选择的维度分别有:10D、30D、50D、100D。增大迭代次数,MGO的求解效果更佳。本例测试函数维度均为为10D(可根据自己需求调整),最大迭代次数为100次。

    close all
    clear 
    clc
    Function_name=1; %测试函数1-30
    lb=-100;%变量下界
    ub=100;%变量上界
    dim=10;%维度 10/30/50/100
    SearchAgents_no=30; % Number of search agents
    Max_iteration=100;%最大迭代次数
    ObjectiveFunction=str2func('cec17_func');
    [Best_score,Best_pos,MGO_cg_curve]=MGO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
    figure('color','w')
    % Best convergence curve
    semilogy(MGO_cg_curve,'Color','r')
    title(strcat('CEC2017-F',num2str(Function_name)))
    xlabel('迭代次数');
    ylabel('适应度值');
    axis tight
    grid on
    box on
    legend('MGO')
    display(['The best solution obtained by MGO is : ', num2str(Best_pos)]);
    display(['The best optimal value of the objective funciton found by MGO is : ', num2str(Best_score)]);
    
    %全部代码链接
    %链接:https://pan.baidu.com/s/11I6eMyMU3k-UHfUu1O_mIA 
    %提取码:1234
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    F1:
    在这里插入图片描述

    F2:
    在这里插入图片描述

    F3:
    在这里插入图片描述

    F4:
    在这里插入图片描述

    F5:
    在这里插入图片描述

    F6:
    在这里插入图片描述

    五、参考代码

    源文件夹包含MGO求解CEC2017的所有代码,测试函数共30个。每个函数可选择维度分别为:10、30、50与100。直接点击main.m文件直接运行,支持二次开发。
    在这里插入图片描述

  • 相关阅读:
    Leetcode hot 100之前缀和、差分数组、位运算
    计算机毕业设计(附源码)python钟点工管理系统
    浅学一下二叉树链式存储结构的遍历
    注册商标流程,商标注册需要材料
    Nginx与Tomcat部署Vue前后端分离应用
    看漫画学Python
    MyBatis #{} 和 ${} 的区别
    文件管理技巧:如何利用文件名关键字进行整理
    Redis 与 MySQL 数据一致性问题
    sql处理重复的列,更好理清分组和分区
  • 原文地址:https://blog.csdn.net/weixin_46204734/article/details/127803301