版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能优化算法与MATLAB编程实践目录TOC\h\h第1章蜉蝣优化算法\h第2章哈里斯鹰优化算法\h第3章狮群优化算法\h第4章樽海鞘群算法\h第5章秃鹰搜索算法\h第6章乌燕鸥优化算法\h第7章平衡优化器算法\h第8章海洋捕食者算法\h第9章算术优化算法\h第10章蝠鲼觅食优化算法\h第11章智能优化算法基准函数集合\h第12章智能优化算法性能测试第1章蜉蝣优化算法本章首先概述蜉蝣优化算法的基本原理,然后使用MATLAB实现蜉蝣优化算法的基本代码,最后将蜉蝣优化算法应用于函数寻优问题和减速器设计问题。1.1基本原理蜉蝣优化算法(mayflyoptimizationalgorithm,MOA)是由KonstantinosZervoudakis等于2020年提出的一种新型群体智能优化算法,其灵感源于蜉蝣的社会行为,特别是它们的交配过程。如图1.1所示为蜉蝣。蜉蝣是一种体量很小的昆虫,生长于水泽地带。幼虫期稍长,个别种类有存活两三年的。成虫有两对翅,常在水面飞行,在空中飞舞交配,完成其物种的繁衍后便死亡。成虫寿命很短,只有几小时至一星期左右。图1.1蜉蝣MOA包含雌性蜉蝣群体和雄性蜉蝣群体,在蜉蝣交配行为中,雄性蜉蝣的最优个体和雌性蜉蝣的最优个体进行交配,得到一个最优子代;同理,雄性蜉蝣次优个体和雌性蜉蝣次优个体进行交配得到次优子代,依此类推。这一过程符合优胜劣汰规律,逐步淘汰适应度较差的个体。假设每个蜉蝣在d维搜索空间中的位置为x=(x,x,…,x),并根据预先确定的目标函数或适应度函数对其进行搜索性能评价。同样,假设每个蜉蝣在d维的搜索空间中的速度为v=(v,v,…,v),每个蜉蝣的飞行方向是个体和社会飞行经验的动态交互,蜉蝣都会朝向目前为止个体历史最优位置(pbest),以及当前蜉蝣群体的全局历史最优位置(gbest)调整自己的轨迹。12d12d1.1.1雄性蜉蝣的运动当雄性蜉蝣投放在一个固定的区域内时容易发生聚集行为,向着群体中心位置靠近。蜉蝣个体的位置是按照自身经验或邻近个体的行为进行调节的。假设是在第t次迭代时雄性蜉蝣i在搜索空间中的当前位置,雄性蜉蝣i的位置更新是第t+1次的迭代速度加上第t次迭代的位置之和,其位置表达式如下:雄性蜉蝣向中心不断地聚集和移动,并在水面上的一定距离内表演舞蹈,其速度更新如下:式中,为雄性蜉蝣i在j维度第t次迭代的速度;为雄性蜉蝣i在j维度第t次迭代的位置;a和a为雄性蜉蝣移动行为的吸引系数;pbest为迄今为止雄性蜉蝣i的个体历史最优位置;gbest为迄今为止雄性蜉蝣群体的全局历史最优位置;为雄性蜉蝣的能见度系数,用于控制雄性蜉蝣的能见范围;为当前位置与pbest的距离;为当前位置与gbest的距离。其距离的计算公式如下:12ijjijj式中,X为pbest或者gbest的位置;X为pbest或者gbest在j维度的位置;x为雄性蜉蝣个体i;x为雄性蜉蝣个体i在j维度的位置;n为雄性蜉蝣的维度上限。iijiij为了得到最优雄性蜉蝣个体的位置,雄性蜉蝣须不断更新速度,其速度更新如下:式中,d为舞蹈系数,用于不断吸引异性;r为[−1,1]之间的随机数。1.1.2雌性蜉蝣的运动雌性蜉蝣不会像雄性蜉蝣一样成群结队地聚集,但当雌性蜉蝣被雄性蜉蝣吸引时,雌性蜉蝣会向雄性蜉蝣飞行靠近并交配繁殖,否则雌性蜉蝣会随机飞行。假设为在第t次迭代时雌性蜉蝣i在搜索空间中的当前位置,雌性蜉蝣i的位置更新是第t+1次的迭代速度加上第t次迭代的位置之和,其位置更新如下:雌性蜉蝣被雄性蜉蝣吸引的过程是随机的,但是在MOA中将这一吸引过程简化为一个确定性过程,即根据蜉蝣的适应度规定,最优的雌性蜉蝣应该被最优的雄性蜉蝣吸引,次优的雌性蜉蝣应该被次优的雄性蜉蝣吸引,以此类推。因此,雌性蜉蝣的速度更新如下:式中,为雌性蜉蝣i在j维度第t次迭代的速度;为雌性蜉蝣i在j维度第t次迭代的位置;a为雌雄蜉蝣吸引系数;为一个固定的能见度系数;r代表雌性蜉蝣i距离雄性蜉蝣i的距离;fl是一个随机游走系数,只有雌性蜉蝣没有被雄性蜉蝣吸引时起作用;r为[−1,1]之间的随机数;f(·)为适应度函数。2mf1.1.3雌雄蜉蝣的交配过程雌雄个体交配是生物自身的特点,蜉蝣亦是如此。蜉蝣的交配过程可用交叉算子表示,其交配过程为,从雄性蜉蝣群体中选择一个父本,从雌性蜉蝣群体中选择一个母本,选择父本的方式与雌雄蜉蝣吸引的方式一致。雌雄蜉蝣按照适应度的大小选择交配个体并进行交配,雄性蜉蝣的最优个体与雌性蜉蝣的最优个体进行交配,雄性蜉蝣的次优个体与雌性蜉蝣的次优个体进行交配,交配后得到最优和次优的两个子代,其子代如下:式中,male为父本;female为母本;L为[−1,1]之间的随机数。1.1.4蜉蝣优化算法流程蜉蝣优化算法的流程图如图1.2所示,具体步骤如下。步骤1:设定参数,初始化雌性蜉蝣和雄性蜉蝣种群位置以及速度。步骤2:计算适应度并排序,获取个体历史最优位置pbest和全局历史最优位置gbest。步骤3:更新雄性蜉蝣和雌性蜉蝣速度及位置。步骤4:计算适应度。步骤5:根据适应度对雄性蜉蝣和雌性蜉蝣进行排序。步骤6:雌雄性蜉蝣交配产生子代蜉蝣。步骤7:计算子代蜉蝣适应度。步骤8:随机将子代分配给雄性和雌性。步骤9:用较优的子代替换较差的雄性和雌性。步骤10:计算适应度,更新个体历史最优位置pbest和全局历史最优位置gbest。步骤11:判断是否满足停止条件,如果满足则输出全局最优解和适应度,否则重复步骤3~步骤11。图1.2蜉蝣算法流程图1.2MATLAB实现本节主要介绍蜉蝣优化算法的MATLAB代码具体实现,主要包括种群初始化、适应度函数、边界检查和约束函数,以及蜉蝣优化算法代码几个部分。1.2.1种群初始化1.MATLAB随机数生成函数随机数的生成采用MATLAB自带的随机数生成函数rand(),rand()会生成[0,1]之间的随机数。>>rand()运行结果如下:ans=0.6740如果要一次性生成多个随机数,可以使用rand(row,col),其中row和col分别代表行和列,如rand(3,4)表示生成3行4列的范围在[0,1]之间的随机数。>>rand(3,4)运行结果如下:如果要生成指定范围内的随机数,其表达式如下:r=lb+(ub-lb)×rand()式中,ub代表范围的上边界,lb代表范围的下边界。如在[0,3]范围内生成5个随机数:ub=3;%上边界lb=0;%下边界r=(ub-lb).*rand(1,5)+lb运行结果如下:2.蜉蝣优化算法种群初始化函数编写将蜉蝣优化算法种群初始化函数单独定义为一个函数,命名为initialization。利用随机数生成方式生成初始种群。例如,设定种群数量为5,每个个体维度为3,每个维度的边界为[-3,3],利用初始化函数初始化种群。pop=5;%种群数量dim=3;%每个个体维度ub=[3,3,3];%上边界lb=[-3,-3,-3];%下边界position=initialization(pop,ub,lb,dim)运行结果如下:从运行结果可以看出,通过初始化函数得到的种群均在设定的上下边界范围内。为了更加直观地表现随机初始化函数的效果,设定种群数量为20,每个个体维度为2,维度边界分别设置为[0,1]、[-2,-1]、[2,3],绘制3种范围的随机数生成结果,如图1.3所示。pop=20;%种群数量dim=2;%每个个体维度ub=[1,1];%上边界lb=[0,0];%下边界position0=initialization(pop,ub,lb,dim);ub=[-1,-1];%上边界lb=[-2,-2];%下边界position1=initialization(pop,ub,lb,dim);ub=[3,3];%上边界lb=[2,2];%下边界position2=initialization(pop,ub,lb,dim);figureplot(position0(:,1),position0(:,2),'bo');holdonplot(position1(:,1),position1(:,2),'b.');plot(position2(:,1),position2(:,2),'bo');gridontitle('不同随机数范围生成结果')xlabel('X')ylabel('Y')legend('[0,1]','[-2,-1]','[2,3]')图1.3程序运行结果从图1.3可以看出,生成的种群均在相应的边界范围内产生。1.2.2适应度函数在学术研究与工程实践中,优化问题是多种多样的,需要根据不同的问题优化目标设计相应的适应度函数(也称目标函数)。为了便于后续优化算法调用适应度函数,通常将适应度函数单独写成一个函数,命名为fun()。如定义一个适应度函数fun(),并存放在fun.m中,适应度函数fun()定义如下:%%适应度函数functionfitness=fun(x)%x为输入一个个体,维度为dim%fitness为输出的适应度fitness=sum(x.^2);end可以看到,适应函数fun()是x所有维度的平方和,如x=[2,3],那么经过适应度函数计算后得到的值为13。x=[2,3];fitness=fun(x)运行结果如下:fitness=131.2.3边界检查和约束函数边界检查的目的是防止变量超过预先指定的范围,具体逻辑是当变量大于上边界(ub)时,将变量置为上边界;当变量小于下边界(lb)时,将变量置为下边界;当变量小于等于上边界(ub),且大于等于下边界(lb)时,变量保持不变。形式化描述如下:定义边界检查函数为BoundaryCheck。如x=[0.5,2,-2,1],定义的上边界为[1,1,1,1],下边界为[-1,-1,-1,-1],经过边界检查和约束后,x应该为[0.5,1,-1,1]。x=[0.5,1,-1,1];ub=[1,1,1,1];lb=[-1,-1,-1,-1];x=BoundaryCheck(x)运行结果如下:1.2.4蜉蝣优化算法代码由1.1节蜉蝣优化算法的基本原理编写蜉蝣优化算法的基本代码,定义蜉蝣优化算法的函数名为MOA。综上,蜉蝣优化算法的基本代码编写完成,可以通过函数MOA进行调用。下面将讲解如何使用上述蜉蝣优化算法来解决优化问题。1.3函数寻优本节主要介绍如何利用蜉蝣优化算法对函数进行寻优,主要包括寻优函数问题描述、适应度函数设计、主函数设计几个部分。1.3.1问题描述求解一组x,x,使得下面函数的值最小,即求解函数的极小值。12式中,x与x的取值范围分别为[−10,10],[−10,10]。12待求解函数的搜索空间是怎样的呢?为了直观、形象、生动地展现待求解函数的搜索空间,可以使用MATLAB绘图的方式进行查看,以x为X轴,x为Y轴,f(x,x)为Z轴,绘制该待求解函数的搜索空间,代码如下,效果如图1.4所示。1212图1.4程序运行结果1.3.2适应度函数设计在该问题中,变量范围的约束条件如下:-10≤x≤101-10≤x≤102可以通过设置蜉蝣个体的维度和边界条件进行设置,即设置蜉蝣个体的维度dim为2,蜉蝣个体上边界ub=[10,10],蜉蝣个体下边界lb=[-10,-10]。根据问题设定适应度函数fun.m如下:%%适应度函数functionfitness=fun(x)%x为输入一个个体,维度为[1,dim]%fitness为输出的适应度值fitness=x(1)^2+x(2)^2;end1.3.3主函数设计设置蜉蝣优化算法的参数如下。蜉蝣雌性雄性种群数量pop为50,最大迭代次数maxIter为100,蜉蝣个体的维度dim为2,蜉蝣个体上边界ub=[10,10],蜉蝣个体下边界lb=[-10,-10]。使用蜉蝣优化算法求解待求解函数极值问题的主函数main.m如下:%%蜉蝣优化算法求解x1^2+x2^2的最小值clc;clearall;closeall;%参数设定pop=50;%种群数量dim=2;%变量维度ub=[10,10];%个体上边界信息lb=[-10,-10];%个体下边界信息maxIter=100;%最大迭代次数fobj=@(x)fun(x);%设置适应度函数为fun(x)%蜉蝣优化算法求解问题[Best_Pos,Best_fitness,IterCurve]=MOA(pop,dim,ub,lb,fobj,maxIter);%绘制迭代曲线figureplot(IterCurve,'r-','linewidth',1.5);gridon;%网格开title('蜉蝣优化算法迭代曲线')xlabel('迭代次数')ylabel('适应度')disp(['求解得到的x1,x2为',num2str(Best_Pos(1)),'',num2str(Best_Pos(2))]);disp(['最优解对应的函数值为:',num2str(Best_fitness)]);程序运行得到的蜉蝣优化算法迭代曲线如图1.5所示。运行结果如下:求解得到的x1,x2为-3.2187e-05-0.00030331最优解对应的函数值为:9.3033e-08图1.5程序运行结果从蜉蝣优化算法寻优的结果来看,最终的求解值为(-3.2187e-05,-0.00030331),十分接近理论最优值(0,0),表明蜉蝣优化算法具有较好的寻优能力。1.4减速器设计本节主要介绍如何利用蜉蝣优化算法对减速器设计工程问题进行参数寻优,主要包括问题描述、适应度函数设计、主函数设计几个部分。1.4.1问题描述在机械系统中,齿轮箱的一个重要部件是减速器,它可用于多种应用,如图1.6所示。在这个优化问题中,减速器的重量设计应在11个约束条件下最小化。该优化问题一共涉及7个变量:齿宽b(=x),齿模m(=x),小齿轮齿数z(=x),轴承之间第一根轴的长度l(=x),轴承之间第二轴的长度l(=x),第一轴的直径d(=x),第二轴的直径d(=x)。该问题的数学公式如下。12314251627最小化:图1.6减速器示意图约束:变量范围:2.6≤x≤3.610.7≤x≤0.82x∈{17,18,19,…,28}37.3≤x≤8.347.3≤x≤8.352.9≤x≤3.965≤x≤5.57基于轮齿的弯曲应力、表面应力、轴的横向偏转、轴的应力来考虑,本工程问题包括11个约束,其中7个为非线性约束,4个为非线性不等式约束。1.4.2适应度函数设计在该问题中,变量范围的约束条件如下:2.6≤x≤3.610.7≤x≤0.82x∈{17,18,19,…,28}37.3≤x≤8.347.3≤x≤8.352.9≤x≤3.965≤x≤5.57可以通过设置蜉蝣个体的边界条件来进行设置,即设置蜉蝣个体的上边界为ub=[3.6,0.8,28,8.3,8.3,3.9,5.5],蜉蝣个体的下边界为lb=[2.6,0.7,17,7.3,7.3,2.9,5]。针对约束g(X)-g(X),在适应度函数中进行处理。针对不满足约束条件的情况,采用增加惩罚数的方式来对适应度进行求解。当满足约束条件时,不增加惩罚数,反之则增加。使得不满足条件个体的适应度比较大,竞争力减弱。定义不满足约束条件的个数为n,惩罚系数为P,惩罚数的计算如下:111V=nP适应度的计算如下:fitness=f(x)+V定义适应度函数fun如下:1.4.3主函数设计通过上述分析,可以设置蜉蝣优化算法参数如下。设置蜉蝣雌雄性种群数量pop为30,最大迭代次数maxIter为100,个体的维度dim为7(即x,x,x,x,x,x,x),个体上边界ub=[3.6,0.8,28,8.3,8.3,3.9,5.5],个体下边界lb=[2.6,0.7,17,7.3,7.3,2.9,5]。蜉蝣优化算法求解减速器设计问题的主函数main设计如下:1234567%%基于蜉蝣优化算法的减速器设计clc;clearall;closeall;%参数设定pop=30;%种群数量dim=7;%变量维度ub=[3.6,0.8,28,8.3,8.3,3.9,5.5];%个体上边界信息lb=[2.6,0.7,17,7.3,7.3,2.9,5];%个体下边界信息maxIter=100;%最大迭代次数fobj=@(x)fun(x);%设置适应度函数为fun(x)%蜉蝣优化算法求解问题[Best_Pos,Best_fitness,IterCurve]=MOA(pop,dim,ub,lb,fobj,maxIter);%绘制迭代曲线figureplot(IterCurve,'r-','linewidth',1.5);gridon;%网格开title('蜉蝣优化算法迭代曲线')xlabel('迭代次数')ylabel('适应度')disp(['求解得到的x1为:',num2str(Best_Pos(1))]);disp(['求解得到的x2为:',num2str(Best_Pos(2))]);disp(['求解得到的x3为:',num2str(round(Best_Pos(3)))]);disp(['求解得到的x4为:',num2str(Best_Pos(4))]);disp(['求解得到的x5为:',num2str(Best_Pos(5))]);disp(['求解得到的x6为:',num2str(Best_Pos(6))]);disp(['求解得到的x7为:',num2str(Best_Pos(7))]);disp(['最优解对应的函数值为:',num2str(Best_fitness)]);%计算不满足约束条件的个数[fitness,g]=fun(Best_Pos);n=sum(g>0);%约束的值大于0的个数disp(['违反约束条件的个数',num2str(n)]);程序运行结果如图1.7所示。图1.7程序运行结果运行结果如下:求解得到的x1为:3.5求解得到的x2为:0.7求解得到的x3为:17求解得到的x4为:8.054求解得到的x5为:7.9878求解得到的x6为:3.3663求解得到的x7为:5.2934最优解对应的函数值为:3015.6084违反约束条件的个数0从收敛曲线上看,适应度函数值随着迭代次数不断减小,表明蜉蝣优化算法不断地对参数进行优化。最后,在约束条件范围内,得到了一组满足约束条件的参数,对减速器的优化设计具有指导意义。参考文献[1]ZervoudakisK,TsafarakisS.Amayflyoptimizationalgorithm[J].Computers&IndustrialEngineering,2020,145:106559.[2]王义,张达敏,张琳娜,等.基于黄金正弦与自适应融合的蜉蝣优化算法[J].计算机应用研究,2021,38(10):3072-3077.[3]高智强,张亚加,邱啟蒙,等.改进蜉蝣算法及其在防火墙策略配置中的应用[J].陕西理工大学学报(自然科学版),2022,38(02):41-48.[4]王克逸,符强,陈嘉豪.偏移进化蜉蝣优化算法[J].计算机系统应用,2022,31(03):150-158.[5]陈伟超,符强.基于倒位变异的蜉蝣优化算法[J].计算机系统应用,2021,30(08):157-163.[6]吴霄,江海新,吴芸,等.基于佳点集和莱维飞行原理的蜉蝣优化算法[J].高师理科学刊,2022,42(03):36-41+51.[7]徐焕增,徐文倩,孔政敏.基于Tent混沌序列改进的蜉蝣算法及其应用[J].控制工程,2022,29(03):435-440.[8]杨嘉.面向移动边缘计算的计算卸载与资源分配问题研究[D].西南交通大学,2021.[9]张达敏,王义,邹诚诚,等.认知异构蜂窝网络中改进蜉蝣算法的资源分配策略[J].通信学报,2022,43(06):156-167.[10]王义,张达敏,邹诚诚.增强全局搜索和自适应蜉蝣算法[J/OL].哈尔滨工业大学学报:1-14[2022-08-15]./kcms/detail/23.1235.T.20220505.1416.028.html.第2章哈里斯鹰优化算法本章首先概述哈里斯鹰优化算法的基本原理;然后,使用MATLAB实现哈里斯鹰优化算法的基本代码;最后,将哈里斯鹰优化算法应用于函数寻优问题和拉伸/压缩弹簧设计问题。2.1基本原理哈里斯鹰优化(harrishawkoptimization,HHO)算法是由Heidari等于2019年提出的仿生智能优化算法,其灵感源于哈里斯鹰的群体狩猎的突袭围捕行为。如图2.1所示为哈里斯鹰。哈里斯鹰与其他猛禽相比最大的特点是以团队形式合作狩猎,其狩猎对象大多数为野兔,在搜寻目标时,哈里斯鹰首先会各自飞向不同区域四处巡视,并以一种类似“蛙跳”的方式在各树梢间对猎物进行观察;在追逐猎物时,主要采取“突袭围捕”。当鹰群发现猎物时,几只鹰将尝试从不同方向合作突袭猎物,同时向猎物周围汇聚,通常此过程只需要几秒,便可捕获受到惊吓的猎物,但当猎物拥有足够的体力逃脱时,突袭围捕则是在短时间内在猎物附近多次、短距离的快速突袭,哈里斯鹰会根据场景特性和猎物的逃跑模式(猎物的反应和躲避方向)改变追逐策略。图2.1哈里斯鹰可以将哈里斯鹰狩猎行为划分为3个阶段:第一阶段为搜索阶段,这个阶段哈里斯鹰处于搜寻猎物的状态,采用的是机会对等策略搜索猎物位置;第二阶段为从搜索到开发转换阶段,这个阶段哈里斯鹰处于发现猎物的状态;第三阶段为开发阶段,这个阶段哈里斯鹰处于对猎物进行捕捉的状态,它们采用软围攻、硬围攻、渐进式快速俯冲的软包围和渐进式快速俯冲的硬包围4种策略对猎物进行捕捉。2.1.1搜索阶段在搜索阶段,哈里斯鹰出现在任意位置对猎物进行搜索,其搜索猎物的过程主要是通过敏锐的眼睛对猎物进行探测和跟踪。在这个阶段中,HHO算法通过机会对等策略模拟哈里斯鹰寻找猎物的过程,如果每种机会对等策略中的机会q均等,则当q≥0.5时,此时还没有任何一只鹰发现猎物,因此将会随机选择种群中的个体,朝它飞行,更新自身位置;当q<0.5时,哈里斯鹰发现猎物,以猎物为目标,在其附近盘旋,并更新位置,其位置更新如下:式中,X(t),X(t+1)分别为当前和下一次迭代时哈里斯鹰个体的位置;t为迭代次数;X(t)为随机选出的个体位置,X(t)为猎物位置,即拥有最优适应度的个体位置,r,r,r,r,q为[0,1]之间的随机数,q用来随机选择要采用的策略,ub和lb分别为搜索空间的上界和下界;X(t)为哈里斯鹰的平均位置,其表示如下:randrabbit1234m式中,X(t)为种群中第t代的每只鹰个体的位置;M为种群规模。k2.1.2从搜索到开发的转换阶段在从搜索到开发的转换阶段,HHO根据猎物的逃逸能量E来实现这种转换。现实中猎物的逃逸能量是逐渐减小的过程,因此E随着迭代次数的增加而减少,基于猎物逃逸能量行为的数学模型表示如下:式中,E是猎物的初始能量,为[-1,1]之间的随机数,每次迭代时自动更新;t为迭代次数,T为最大迭代次数。当E从0减小到-1时,猎物野兔处于萎靡不振的状态;而当E从0增加到1时,意味着猎物野兔正在变得强壮。在迭代过程中,逃逸能量E呈下降趋势,当逃逸的能量时,猎物的逃逸能量较大,鹰群持续监视和定位猎物,处于搜索阶段;当时,猎物的逃逸能力降低,鹰群开始追逐猎物,进入开发阶段。000假设最大迭代次数T=500,绘制猎物的逃逸能量曲线,曲线如图2.2所示。图2.2程序运行结果MATLAB绘制程序如下:2.1.3开发阶段哈里斯鹰会采用突袭的方式猎捕前一阶段探测到的目标猎物。在实际的捕食过程中,猎物经常试图逃脱,假设r是猎物在突袭前逃脱的机率,逃脱成功(r<0.5)或逃脱失败(r≥0.5),不论猎物做什么,鹰都会以强硬或轻柔的围攻来捕获猎物,这意味着它们将根据猎物的保留能量从不同方向强硬或轻柔地包围猎物。鹰会越来越接近探测到的猎物,并通过合作突袭增加杀死猎物的机会,几分钟后,逃逸的猎物将失去越来越多的能量;然后,鹰加强围攻过程,从而抓住疲惫的猎物。因此,在实际情况中哈里斯鹰会根据猎物的逃跑行为采用不同的追逐策略。HHO在开发阶段提出了4种可能的策略来模拟哈里斯鹰对猎物的攻击阶段,分别为软围攻、硬围攻、渐进式快速俯冲的软包围和渐进式快速俯冲的硬包围,根据猎物的逃逸能量E和猎物逃离概率r决定4种追逐方式。1.软围攻当≥0.5,r≥0.5时,猎物有足够的能量尝试通过一些随机的误导性跳跃逃脱。此时,哈里斯鹰使用软围攻策略缓慢包围猎物,使猎物更加疲惫,然后进行突袭。软围攻策略位置更新公式如下:式中,ΔX(t)为野兔位置与当前位置的差;J为猎物在逃跑过程中的跳跃强度,其值为[0,2]之间的随机值;r为[0,1]内的随机变量。52.硬围攻当<0.5,r≥0.5时,猎物非常疲惫,逃逸能量低。猎物既没有足够的能量摆脱,也没有逃脱的机会,哈里斯鹰会快速地对猎物进行捕捉,这种捕捉猎物的方式称为硬围攻策略。硬围攻策略位置更新公式如下:硬围攻下的位置变化如图2.3所示。图2.3硬围攻下的位置变化示例图3.渐进式快速俯冲的软包围当≥0.5,r<0.5时,猎物有充足的体力逃跑且有很大的机会从哈里斯鹰包围中逃脱,此时哈里斯鹰非常聪明,哈里斯鹰在对猎物进行捕捉之前,会对猎物实施更加严密的软围攻,以此来防止猎物逃脱,随后通过慢慢消耗猎物体力,等到猎物体力快消耗殆尽时,通过突袭的方式对猎物进行捕捉,这种捕捉猎物的方式称为渐进式俯冲软包围策略。这种策略是通过引入Levy飞行函数实现对猎物更加严密的软围攻。渐进式俯冲软包围策略位置更新公式如下:式中,f(·)为适应度函数;D为问题的维度;S为1×D的随机向量,LF(·)是Levy飞行函数,其表达式为:式中,是一个默认变量,通常情况下取1.5,和v是一个[0,1]范围内的随机变量。渐进式快速俯冲的软包围位置变化如图2.4所示。图2.4渐进式快速俯冲的软包围位置变化示例图4.渐进式快速俯冲的硬包围当<0.5,r<0.5时,猎物有机会逃逸,但逃逸能量不足,哈里斯鹰则在突袭前形成了一个硬包围圈,尽量减少自己的平均位置与逃跑猎物的距离,等到猎物体力快消耗殆尽时,对猎物进行突袭,迅速捕捉到猎物。这种捕捉猎物的方式称为渐进式快速俯冲硬包围策略。渐进式快速俯冲硬包围策略位置更新公式如下:式中,X(t)为哈里斯鹰的平均位置,由式(2.2)获得;S、D和LF(·)的含义与式(2.10)保持一致。m渐进式快速俯冲的硬包围位置变化示例如图2.5所示。图2.5渐进式快速俯冲的硬包围位置变化示例图2.1.4哈里斯鹰优化算法流程哈里斯鹰优化算法的流程图如图2.6所示,具体步骤如下。步骤1:种群初始化。根据搜索空间每一维的上界和下界,初始化每个个体。步骤2:计算初始适应度。将适应度最优的个体位置设为当前猎物位置。步骤3:位置更新。计算猎物逃逸能量,根据逃逸能量和生成的随机数执行搜索或开发行为中对应的位置更新策略。步骤4:计算适应度。计算位置更新后的个体适应度,并与猎物适应度进行比较,若位置更新后的个体适应度优于猎物,则以适应度更优的个体位置作为新的猎物位置。重复步骤3和步骤4,当算法迭代次数达到最大迭代次数时,输出当前猎物位置作为目标的估计位置。图2.6哈里斯鹰优化算法的流程图2.2MATLAB实现本节主要介绍哈里斯鹰优化算法的MATLAB代码具体实现,主要包括种群初始化;适应度函数;边界检查和约束函数;Levy飞行函数;哈里斯鹰优化算法代码几个部分。2.2.1种群初始化1.MATLAB随机数生成函数随机数的生成采用MATLAB自带的随机数生成函数rand(),rand()生成[0,1]之间的随机数。>>rand()运行结果如下:ans=0.5540如果要一次性生成多个随机数,可以使用rand(row,col),其中row,col分别代表行和列,如rand(3,4)表示生成3行4列的范围在[0,1]之间的随机数。>>rand(3,4)运行结果如下:如果要生成指定范围内的随机数,其表达式如下:r=lb+(ub-lb)×rand()式中,ub代表范围的上边界,lb代表范围的下边界。如在[0,3]范围内生成5个随机数:ub=3;%上边界lb=0;%下边界r=(ub-lb).*rand(1,5)+lb运行结果如下:2.哈里斯鹰优化算法种群初始化函数编写将哈里斯鹰优化算法种群初始化函数单独定义为一个函数,命名为initialization。利用随机数生成方式生成初始种群。例如,设定种群数量为5,每个个体维度为3,每个维度的边界为[-3,3],利用初始化函数初始种群。pop=5;%种群数量dim=3;%每个个体维度ub=[3,3,3];%上边界lb=[-3,-3,-3];%下边界position=initialization(pop,ub,lb,dim)运行结果如下:从运行结果可以看出,通过初始化函数得到的种群均在设定的上下边界范围内。为了更加直观地表现随机初始化函数的效果,设定种群数量为20,个体维度为2,维度边界分别设置为[0,1]、[-2,-1]、[2,3],绘制3种范围的随机数生成结果,如图2.7所示。pop=20;%种群数量dim=2;%每个个体维度ub=[1,1];%上边界lb=[0,0];%下边界position0=initialization(pop,ub,lb,dim);ub=[-1,-1];%上边界lb=[-2,-2];%下边界position1=initialization(pop,ub,lb,dim);ub=[3,3];%上边界lb=[2,2];%下边界position2=initialization(pop,ub,lb,dim);figureplot(position0(:,1),position0(:,2),'bo');holdonplot(position1(:,1),position1(:,2),'b.');plot(position2(:,1),position2(:,2),'bo');gridontitle('不同随机数范围生成结果')xlabel('X')ylabel('Y')legend('[0,1]','[-2,-1]','[2,3]')图2.7程序运行结果从图2.7可以看出,生成的种群均在相应的边界范围内产生。2.2.2适应度函数在学术研究与工程实践中优化问题是多种多样的,需要根据问题优化目标的不同设计相应的适应度函数(也称目标函数)。为了便于后续优化算法调用适应度函数,通常将适应度函数单独写成一个函数,命名为fun()。如定义一个适应度函数fun(),并存放在fun.m中,适应度函数fun()定义如下:%%适应度函数functionfitness=fun(x)%x为输入一个个体,维度为dim%fitness为输出的适应度fitness=sum(x.^2);end可以看出,适应函数fun()是x所有维度的平方和,如x=[2,3],那么经过适应度函数计算后得到的值为13。x=[2,3];fitness=fun(x)运行结果如下:fitness=132.2.3边界检查和约束函数边界检查的目的是防止变量超过预先指定的范围,具体逻辑是当变量大于上边界(ub)时,将变量设为上边界;当变量小于下边界(lb)时,将变量设为下边界;当变量小于等于上边界(ub),且大于等于下边界(lb)时,变量保持不变。形式化描述如下:定义边界检查函数为BoundaryCheck。如x=[0.5,2,-2,1],定义的上边界为[1,1,1,1],下边界为[-1,-1,-1,-1],经过边界检查和约束后,x应该为[0.5,1,-1,1]。x=[0.5,1,-1,1];ub=[1,1,1,1];lb=[-1,-1,-1,-1];x=BoundaryCheck(x)运行结果如下:2.2.4Levy飞行函数在2.1.3节中的渐进式快速俯冲的软包围和渐进式快速俯冲的硬包围策略中,已使用Levy飞行函数,其表达式如下:式中,是一个默认变量,通常情况下取1.5,u和v是一个[0,1]范围内的随机变量。为了方便调用将Levy飞行函数单独写成一个函数,命名为Levy。用Levy飞行函数生成20组二维数据,观察其变化,二维Levy飞行函数变化图如图2.8所示。图2.8程序运行结果%Levy飞行函数示意图X=Levy(20);%20组数据的横坐标Y=Levy(20);%20组数据的纵坐标figureplot(X,Y,'.-','LineWidth',1.5);xlabel('X轴');ylabel('Y轴');gridontitle('二维Levy飞行函数示意图')从图2.8可以看出,Levy飞行函数的轨迹随机性较强,有利于帮助哈里斯鹰的探索。2.2.5算法代码由2.1节哈里斯鹰优化算法的基本原理编写哈里斯鹰优化算法的基本代码,定义哈里斯鹰优化算法的函数名称为HHO。综上,哈里斯鹰优化算法的基本代码编写完成,可以通过函数HHO进行调用。下面将讲解如何使用上述哈里斯鹰优化算法解决优化问题。2.3函数寻优本节主要介绍如何利用哈里斯鹰优化算法对函数进行寻优。主要包括寻优函数问题描述;适应度函数设计;主函数设计几个部分。2.3.1问题描述求解一组x,x,使得下面函数的值最小,即求解函数的最小值。12式中,x和x的取值范围分别为[-10,10],[-10,10]。12待求解函数的搜索空间是怎样的呢?为了直观、形象、生动地展现待求解函数的搜索空间,可以使用MATLAB绘图的方式查看,以x为X轴,x为Y轴,f(x,x)为Z轴,绘制该待求解函数的搜索空间,代码如下,效果如图2.9所示。1212图2.9程序运行结果2.3.2适应度函数设计在该问题中,变量范围的约束条件如下:-10≤x≤101-10≤x≤102可以通过设置哈里斯鹰个体的维度和边界条件进行函数设计。即设置哈里斯鹰个体的维度dim为2,哈里斯鹰个体上边界ub=[10,10],哈里斯鹰个体下边界lb=[-10,-10]。根据问题设定适应度函数fun.m如下:%%适应度函数functionfitness=fun(x)%x为输入一个个体,维度为[1,dim]%fitness为输出的适应度fitness=abs(x(1))+abs(x(2))+abs(x(1))*abs(x(2));end2.3.3主函数设计设置哈里斯鹰优化算法的参数如下。哈里斯鹰种群数量pop为50,最大迭代次数maxIter为100,哈里斯鹰个体的维度dim为2,哈里斯鹰个体上边界ub=[10,10],哈里斯鹰个体下边界lb=[-10,-10]。使用哈里斯鹰优化算法求解待求解函数极值问题的主函数main.m如下:%%哈里斯鹰优化算法求解abs(x1)+abs(x2)+abs(x1)*abs(x2)的最小值clc;clearall;closeall;%参数设定pop=50;%种群数量dim=2;%变量维度ub=[10,10];%个体上边界信息lb=[-10,-10];%个体下边界信息maxIter=100;%最大迭代次数fobj=@(x)fun(x);%设置适应度函数为fun(x)%哈里斯鹰优化算法求解问题[Best_Pos,Best_fitness,IterCurve]=HHO(pop,dim,ub,lb,fobj,maxIter);%绘制迭代曲线figureplot(IterCurve,'r-','linewidth',1.5);gridon;%网格开title('哈里斯鹰优化算法迭代曲线')xlabel('迭代次数')ylabel('适应度')disp(['求解得到的x1,x2为',num2str(Best_Pos(1)),'',num2str(Best_Pos(2))]);disp(['最优解对应的函数值为:',num2str(Best_fitness)]);程序运行得到的哈里斯鹰优化算法迭代曲线,如图2.10所示。图2.10程序运行结果运行结果如下:求解得到的x1,x2为3.2464e-29-1.0805e-28最优解对应的函数值为:1.4051e-28从哈里斯鹰优化算法寻优的结果看,最终求解值为(3.2464e-29,-1.0805e-28),十分接近理论最优值(0,0),表明哈里斯鹰优化算法具有较好的寻优能力。2.4拉伸/压缩弹簧设计本节主要介绍如何利用哈里斯鹰优化算法对拉伸/压缩弹簧设计工程问题进行参数寻优。主要包括问题描述;适应度函数设计;主函数设计几个部分。2.4.1问题描述如图2.11所示,拉伸/压缩弹簧设计问题的目的是在满足最小挠度、震动频率和剪应力的约束下,最小化拉压弹簧的重量。该问题由3个连续的决策变量组成,即弹簧线圈直径(d或x)、弹簧簧圈直径(D或x)和绕线圈数(P或x)。数学模型表示公式如下。123图2.11拉伸/压缩弹簧设计问题示意图最小化:约束条件为:变量范围:0.05≤x≤210.25≤x<1.322≤x≤1532.4.2适应度函数设计在该问题中,变量范围的约束条件如下:0.05≤x≤210.25≤x<1.322≤x≤153可以通过设置哈里斯鹰个体的边界条件进行设置。即设置哈里斯鹰个体的上边界为ub=[2,1.3,15],哈里斯鹰个体的下边界为lb=[0.05,0.25,2]。针对约束g(X)−g(X),在适应度函数中进行处理。针对不满足约束条件的情况,采用增加惩罚数的方式对适应度进行求解,当满足约束条件时,不增加惩罚数,反之增加。使得不满足条件个体的适应度比较大,竞争力减弱。定义不满足约束条件的个数为n,惩罚系数为P,惩罚数的计算如下:14V=n×P适应度的计算如下:fitness=f(x)+V定义适应度函数fun如下:%%适应度函数function[fitness,g]=fun(x)P=10E4;%惩罚系数x1=x(1);x2=x(2);x3=x(3);f=(x3+2)*x2*x1^2;%约束条件计算g(1)=1-(x2^3*x3)/(71785*x1^4);g(2)=(4*x2^2-x1*x2)/(12566*(x2*x1^3-x1^4))+1/(5108*x1^2)-1;g(3)=1-(140.45*x1)/(x2^2*x3);g(4)=(x1+x2)/1.5-1;V=P*sum(g>0);%惩罚数计算fitness=f+V;%计算适应度end2.4.3主函数设计通过上述分析设置哈里斯鹰优化算法参数如下。设置哈里斯鹰种群数量pop为30,最大迭代次数maxIter为100,个体维度dim为3(即x,x,x),个体上边界ub=[2,1.3,15],个体下边界lb=[0.05,0.25,2]。123哈里斯鹰优化算法求解拉伸/压缩弹簧设计问题的主函数main设计如下:%%基于哈里斯鹰优化算法的拉伸/压缩弹簧设计clc;clearall;closeall;%参数设定pop=30;%种群数量dim=3;%变量维度ub=[2,1.3,15];%个体上边界信息lb=[0.05,0.25,2];%个体下边界信息maxIter=100;%最大迭代次数fobj=@(x)fun(x);%设置适应度函数为fun(x)%哈里斯鹰优化算法求解问题[Best_Pos,Best_fitness,IterCurve]=HHO(pop,dim,ub,lb,fobj,maxIter);%绘制迭代曲线figureplot(IterCurve,'r-','linewidth',1.5);gridon;%网格开title('哈里斯鹰优化算法迭代曲线')xlabel('迭代次数')ylabel('适应度')disp(['求解得到的x1为:',num2str(Best_Pos(1))]);disp(['求解得到的x2为:',num2str(Best_Pos(2))]);disp(['求解得到的x3为:',num2str(Best_Pos(3))]);disp(['最优解对应的函数值为:',num2str(Best_fitness)]);%计算不满足约束条件的个数[fitness,g]=fun(Best_Pos);n=sum(g>0);%约束的值大于0的个数disp(['违反约束条件的个数',num2str(n)]);程序运行结果如图2.12所示。图2.12程序运行结果运行结果如下:求解得到的x1为:0.061677求解得到的x2为:0.64799求解得到的x3为:3.8189最优解对应的函数值为:0.014343违反约束条件的个数0从收敛曲线上看,适应度函数值随着迭代次数不断减小,表明哈里斯鹰优化算法不断地对参数进行优化。最后,在约束条件范围内,得到了一组满足约束条件的参数,对拉伸/压缩弹簧的优化设计具有指导意义。参考文献[1]HeidariAA,MirjaliliS,etal.Harrishawksoptimization:Algorithmandapplications[J].FutureGenerationComputerSystems,2019,97:849-872.[2]占家豪.改进哈里斯鹰优化算法在路径寻优中的应用[D].杭州电子科技大学,2022.[3]朱诚,潘旭华,张勇.基于趋化校正的哈里斯鹰优化算法[J].计算机应用,2022,42(04):1186-1193.[4]许鹏.哈里斯鹰优化算法的改进及其应用研究[D].西安理工大学,2021.[5]孙海禄,王原,王丽娜,等.基于离散哈里斯鹰优化算法求解具有单连续变量的背包问题[J].计算机应用研究,2022,39(07):1992-1999.[6]范陈程.增强型哈里斯鹰优化算法及应用研究[D].广西民族大学,2021.[7]郭佳宁,杨婧,刘婷.改进哈里斯鹰算法及其在FIR滤波器中的应用[J].软件工程,2022,25(06):18-21.[8]吴丁杰,温立书.一种基于哈里斯鹰算法改进的BP神经网络[J].网络安全技术与应用,2022(01):38-40.[9]赵凯.樽海鞘与哈里斯鹰优化算法的改进及应用[D].郑州轻工业大学,2021.[10]郭雨鑫,刘升,高文欣,等.多策略改进哈里斯鹰优化算法[J].微电子学与计算机,2021,38(07):18-24.第3章狮群优化算法本章首先概述狮群优化算法的基本原理;然后,使用MATLAB实现狮群优化算法的基本代码;最后,将狮群优化算法应用于函数寻优问题和压力容器设计问题。3.1基本原理狮群优化(lionswarmoptimization,LSO)算法是由刘生建等于2018年提出的一种新型智能优化算法,其灵感源于自然界狮群中不同身份狮子的行为活动,特别是相互合作的捕猎过程。将狮群划分为狮王、母狮和幼狮3类群体,不同群体的生存行为也决定着LSO算法中不同的位置更新方式。(1)狮王,是狮群中最强壮的公狮,需要保护幼狮和自己的领地,并给幼狮分配食物,狮王是在狮群的残酷竞争中按照优胜劣汰法则产生的首领,同时还需要面对其他公狮、狼群等外来挑战以维护自己的领地。狮王占据全局最优值点,所以需要不断更新自身以变得更加强壮。(2)母狮,也被称作捕猎狮,主要负责养育幼狮,它们根据猎物踪迹互相配合进行围捕。母狮在追踪食物时先大范围勘探,当靠近食物时,会在食物附近收缩包围圈猎杀食物。所以,母狮先相互协作大步寻找,锁定目标后小步收缩包围圈,若发现比当前全局最优值更优的位置,狮王将占领此最优位置。(3)幼狮,也被称作跟随狮,主要在狮王的保护下生存。幼狮主要围绕狮王和自己的母狮进行活动,幼狮的活动分为3种情况:饥饿时主动靠近狮王进食,所以会在狮王附近寻优;吃饱后跟随母狮学习捕猎,在母狮附近寻优;成年足够强壮时会挑战狮王的位置,取代狮王或是被狮王赶出领地成为流浪狮,即到方向学习点附近寻优,历经锻炼后流浪狮中的公狮又会挑战原有狮王的地位。狮子位置更新方式的多样化保证了算法快速收敛,不易陷入局部最优。狮群优化算法的主要思想如下:从待寻优空间中的某一初始位置开始,其中具有最佳适应度的就是狮王,选取一定比例的捕猎狮,捕猎狮相互配合捕猎,一旦发现比当前狮王占有的猎物更优质的猎物,该猎物的位置会被狮王拥有。幼狮跟随母狮学习打猎或在狮王附近进食,成年后会被驱赶出狮群,为了生存,被驱赶的狮子会努力朝记忆中的最佳位置靠近。狮群按照分工合作,不断重复搜寻,得出目标函数最优值。假设优化问题的解空间是D维,狮子数量为N,算法的最大循环次数为T。在整个狮群中,成年狮所占比例影响最终寻优效果,成年狮所占比例越大,幼狮数目越少,而幼狮位置更新的多样化能够增加种群的差异性,提高算法的探测能力。设定成年狮数量为nLeader,其表示如下:式中,为成年狮所占比例因子,是(0,1)内的一个随机数,其设定值在一定程度上决定了最终的搜索效果。为使算法收敛速度较快,取值一般小于0.5。每头狮子可以用一个D维向量表示,第i个狮子的位置如下:狮群中只有一头公狮,其余为母狮,幼狮数量为N-nLeader。捕猎过程中不同类型狮子的位置移动方式按所属群体划分,所以狮王、母狮、幼狮的更新方式不同。3.1.1狮王更新方式狮王是整个种群中具有最优目标函数值的个体狮子。由于狮王占据了当前种群的最优位置,所以不需要进行大范围搜索,它基于当前的最优位置,在自身邻域进行局部小范围寻优,以探寻自身附近是否存在更优解。狮王位置的更新公式如下:k式中,为狮王自身更新获得的第k+1代全局最优个体;g为第k代种群获得的全局最优个体;是依据正态分布产生的一个随机数,γ~N(0,1);为第i个狮子经历第k次迭代循环之后的历史最优位置。3.1.2母狮更新方式母狮群体主要通过合作进行捕猎和教导幼狮,所以母狮的更新方式多是自己母狮群内的信息交流,母狮会随机挑选任意一个其他母狮合作捕猎。母狮的位置更新公式如下:式中,是除了第i个狮子之外的另一个母狮的历史最优位置。由于大部分函数在优化过程中都遵循大步长勘探,小步长开发的寻优规律,这样既可以快速收敛,又可以提高算法的寻优精度。所以LSO算法在母狮移动更新机制中添加了一个扰动因子α,其目的是动态更新搜索范围促进收敛,扰动因子可以随更新迭代次数t的增加,使母狮的移动步长由长变短,后期逐渐趋近于零。其作用是使母狮可以先大范围搜索目标,然后小步长靠近猎物并快速捕获。扰动因子的形式如下:f式中,step为狮子在活动范围内移动的最大步长,和分别表示狮子活动范围空间各维度的最大值均值和最小值均值;t为当前迭代次数;T为群体最大迭代次数。3.1.3幼狮更新方式幼狮一共有3种更新方式:和狮王共同进食、与母狮学习捕猎、精英反向学习。当幼狮饥饿时可以向狮王移动,到狮王处进食,所以幼狮在全局最优位置附近探索;其次,幼狮需要跟随母狮进行捕猎技能的学习,获得母狮的位置信息并在母狮附近移动,从而学习捕猎;最后,幼狮具有精英反向学习思想,即如果幼狮不够强会被驱逐,驱逐位置为可行域内远离狮王的地方,这是为了增加种群的个体移动随机性以及位移方向多样性,防止狮群陷入局部最优位置无法脱离。上述幼狮的3种位置更新方式如下:式中,为第k代幼狮m跟随母狮的历史最优位置;概率因子q为依照均匀分布U~[0,1]产生的均匀随机值;为第i个幼狮在捕猎范围内被驱赶的位置,即远离狮王的地方,算法思想是一种典型的精英反向学习思想,表示如下:幼狮靠近狮王进食或幼狮跟随母狮学习捕猎过程中均会在指定范围内搜索,而扰动因子起到拉长或压缩范围的作用,让幼狮在此范围内先大步勘探食物,发现食物后再小步精细查找,查找范围呈线性下降趋势。所以,幼狮的更新过程中添加了线性动态随时间递减的扰动因子α,表示为:c3.1.4狮群优化算法流程狮群优化算法的流程图如图3.1所示,具体步骤如下。图3.1狮群优化算法流程图步骤1:初始化狮群中狮子的位置x及其数目N,最大迭代次数为T,维度空间为D,成年狮占狮群比例因子为。i步骤2:根据式(3.1)计算狮群中成年狮的数量,其余为幼狮。将个体历史最优位置设置为各狮的当前位置,初始群体最优位置设置为狮王位置。步骤3:根据式(3.3)更新狮王的位置,并计算适应度。步骤4:根据式(3.4)更新母狮的位置。步骤5:产生(0,1)内的均匀随机数q,根据式(3.7)更新幼狮的位置。步骤6:根据狮子位置计算适应度,更新自身历史最优位置及狮群历史最优位置,判断算法是否满足结束条件(发现理论值最优值或与最后两次最优值之差的绝对值小于设定精度),满足则转向步骤8,否则转向步骤3。步骤7:每隔一定迭代次数,重新排序(约10次),确定狮王、母狮及幼狮的位置,转向步骤3。步骤8:输出狮王的位置,即所求问题的最优解,算法结束。3.2MATLAB实现本节主要介绍狮群优化算法的MATLAB代码具体实现,主要包括种群初始化;适应度函数;边界检查和约束函数;狮群优化算法代码几个部分。3.2.1种群初始化1.MATLAB随机数生成函数随机数的生成采用MATLAB自带的随机数生成函数rand(),rand()生成[0,1]之间的随机数。>>rand()运行结果如下:ans=0.8540如果要一次性生成多个随机数,可以使用rand(row,col),其中row,col分别代表行和列,如rand(3,4)表示生成3行4列的范围在[0,1]之间的随机数。>>rand(3,4)运行结果如下:如果要生成指定范围内的随机数,其表达式如下:r=lb+(ub-lb)×rand()其中,ub代表范围的上边界,lb代表范围的下边界。如在[0,3]范围内生成5个随机数:ub=3;%上边界lb=0;%下边界r=(ub-lb).*rand(1,5)+lb运行结果如下:2.狮群优化算法种群初始化函数编写将狮群优化算法种群初始化函数单独定义为一个函数,命名为initialization。利用随机数生成方式生成初始种群。例如,设定种群数量为5,每个个体维度为3,每个维度的边界为[-3,3],利用初始化函数初始种群。pop=5;%种群数量dim=3;%每个个体维度ub=[3,3,3];%上边界lb=[-3,-3,-3];%下边界position=initialization(pop,ub,lb,dim)运行结果如下:从运行结果可以看出,通过初始化函数得到的种群均在设定的上下边界范围内。为了更加直观地表现随机初始化函数的效果,设定种群数量为20,每个个体维度为2,维度边界分别设置为[0,1]、[-2,-1]、[2,3],绘制3种范围的随机数生成结果,如图3.2所示。pop=20;%种群数量dim=2;%每个个体维度ub=[1,1];%上边界lb=[0,0];%下边界position0=initialization(pop,ub,lb,dim);ub=[-1,-1];%上边界lb=[-2,-2];%下边界position1=initialization(pop,ub,lb,dim);ub=[3,3];%上边界lb=[2,2];%下边界position2=initialization(pop,ub,lb,dim);figureplot(position0(:,1),position0(:,2),'bo');holdonplot(position1(:,1),position1(:,2),'b.');plot(position2(:,1),position2(:,2),'bo');gridontitle('不同随机数范围生成结果')xlabel('X')ylabel('Y')legend('[0,1]','[-2,-1]','[2,3]')图3.2程序运行结果从图3.2可以看出,生成的种群均在相应的边界范围内产生。3.2.2适应度函数在学术研究与工程实践中,优化问题是多种多样的,需要根据问题优化目标的不同设计相应的适应度函数(也称目标函数)。为了便于后续优化算法调用适应度函数,通常将适应度函数单独写成一个函数,命名为fun()。如定义一个适应度函数fun(),并存放在fun.m中,适应度函数fun()定义如下:%%适应度函数functionfitness=fun(x)%x为输入一个个体,维度为dim%fitness为输出的适应度fitness=sum(x.^2);end可以看到,适应函数fun()是x所有维度的平方和,如x=[2,3],那么经过适应度函数计算得到的值为13。x=[2,3];fitness=fun(x)运行结果如下:fitness=133.2.3边界检查和约束函数边界检查的目的是防止变量超过预先指定的范围,具体逻辑是当变量大于上边界(ub)时,将变量设为上边界;当变量小于下边界(lb)时,将变量设为下边界;当变量小于等于上边界(ub),且大于等于下边界(lb)时,变量保持不变。形式化描述如下:定义边界检查函数为BoundaryCheck。如x=[0.5,2,-2,1],定义的上边界为[1,1,1,1],下边界为[-1,-1,-1,-1],经过边界检查和约束后,x应该为[0.5,1,-1,1]。x=[0.5,1,-1,1];ub=[1,1,1,1];lb=[-1,-1,-1,-1];x=BoundaryCheck(x)运行结果如下:3.2.4狮群优化算法代码由3.1节狮群优化算法的基本原理编写狮群优化算法的基本代码,定义狮群优化算法的函数名称为LSO。综上,狮群优化算法的基本代码编写完成,可以通过函数LSO进行调用。下面将讲解如何使用上述狮群优化算法来解决优化问题。3.3函数寻优本节主要介绍如何利用狮群优化算法对函数进行寻优。主要包括寻优函数问题描述;适应度函数设计;主函数设计几个部分。3.3.1问题描述求解一组x,x,使得下面函数的值最小,即求解函数的极小值。12其中,x和x的取值范围分别为[-10,10],[-10,10]。12待求解函数的搜索空间是怎样的呢?为了直观、形象、生动地展现待求解函数的搜索空间,可以使用MATLAB绘图的方式进行查看,以x为X轴,x为Y轴,f(x,x)为Z轴,绘制该待求解函数的搜索空间,代码如下,效果如图3.3所示。1212图3.3程序运行结果3.3.2适应度函数设计在该问题中,变量范围的约束条件如下:-10≤x≤101-10≤x≤102可以通过设置狮群个体的维度和边界条件进行设置。即设置狮群个体的维度dim为2,狮群个体上边界ub=[10,10],狮群个体下边界lb=[-10,-10]。根据问题设定适应度函数fun.m如下:%%适应度函数functionfitness=fun(x)%x为输入一个个体,维度为[1,dim]%fitness为输出的适应度fitness=x(1)^2+(x(1)+x(2))^2;end3.3.3主函数设计设置狮群优化算法的参数如下。狮群种群数量pop为50,最大迭代次数maxIter为100,狮群个体的维度dim为2,狮群个体上边界ub=[10,10],狮群个体下边界lb=[-10,-10]。使用狮群优化算法求解待求解函数极值问题的主函数main.m如下:%%狮群优化算法求解x(1)^2+(x(1)+x(2))^2的最小值clc;clearall;closeall;%参数设定pop=50;%种群数量dim=2;%变量维度ub=[10,10];%个体上边界信息lb=[-10,-10];%个体下边界信息maxIter=100;%最大迭代次数fobj=@(x)fun(x);%设置适应度函数为fun(x)%狮群优化算法求解问题[Best_Pos,Best_fitness,IterCurve]=LSO(pop,dim,ub,lb,fobj,maxIter);%绘制迭代曲线figureplot(IterCurve,'r-','linewidth',1.5);gridon;%网格开title('狮群优化算法迭代曲线')xlabel('迭代次数')ylabel('适应度')disp(['求解得到的x1,x2为',num2str(Best_Pos(1)),'',num2str(Best_Pos(2))]);disp(['最优解对应的函数值为:',num2str(Best_fitness)]);程序运行得到的狮群优化算法迭代曲线,如图3.4所示。图3.4程序运行结果运行结果如下:求解得到的x1,x2为-5.9549e-18-5.9549e-18最优解对应的函数值为1.7731e-34从狮群优化算法寻优的结果来看,最终求解值为(-5.9549e-18,-5.9549e-18),十分接近理论最优值(0,0),表明狮群优化算法具有较好的寻优能力。3.4压力容器设计本节主要介绍如何利用狮群优化算法对压力容器设计工程问题进行参数寻优。主要包括问题描述;适应度函数设计;主函数设计几个部分。3.4.1问题描述压力容器设计问题的目标是使压力容器制作(配对、成型和焊接)成本最低,压力容器示意图如图3.5所示,压力容器的两端都由封盖封住,头部一端的封盖为半球状。L是不考虑头部的圆柱体部分的截面长度,R是圆柱体的内壁半径,T和T分别表示圆柱体的壁厚和头部的壁厚,L、R、T和T即为压力容器设计问题的4个优化变量,分别用x,x,x,x代表。该问题的数学模型表示公式如下。shsh1234图3.5压力容器设计问题示意图最小化:约束条件为:g(x)=-x+0.0193x≤0113g(x)=-x+0.00954x≤0223g(x)=x-240≤044变量范围:0≤x≤10010≤x≤100210≤x≤100310≤x≤10043.4.2适应度函数设计在该问题中,变量范围的约束条件如下:0≤x≤10010≤x≤100210≤x≤100310≤x≤1004可以通过设置狮群个体的边界条件进行设计,即设置狮群个体的上边界为ub=[100,100,100,100],狮群个体的下边界为lb=[0,0,10,10]。针对约束g(X)-g(X),在适应度函数中进行处理。针对不满足约束条件的情况,采用增加惩罚数的方式对适应度进行求解,当满足约束条件时,不增加惩罚数,反之增加,使得不满足条件个体的适应度比较大,竞争力减弱。定义不满足约束条件的个数为n,惩罚系数为P,惩罚数的计算如下:14V=nP适应度的计算如下:fitness=f(x)+V定义适应度函数fun如下:%%适应度函数function[fitness,g]=fun(x)P=10E4;%惩罚系数x1=x(1);x2=x(2);x3=x(3);x4=x(4);f=0.6224*x1*x3*x4+1.7781*x2*x3^2+3.1661*x1^2*x4+19.84*x1^2*x3;%约束条件计算g(1)=-x1+0.0193*x3;g(2)=-x2+0.00954*x3;g(3)=-pi*x3^2-4*pi*x3^3/3+1296000;g(4)=x4-240;V=P*sum(g>0);%惩罚数计算fitness=f+V;%计算适应度end3.4.3主函数设计通过上述分析,可以设置狮群优化算法参数如下。设置狮群种群数量pop为30,最大迭代次数maxIter为100,个体的维度dim设定为4(即x,x,x,x),个体上边界ub=[100,100,100,100],个体下边界lb=[0,0,10,10]。狮群优化算法求解压力容器设计问题的主函数main设计如下:1234%%基于狮群优化算法的压力容器设计clc;clearall;closeall;%参数设定pop=30;%种群数量dim=4;%变量维度ub=[100,100,100,100];%个体上边界信息lb=[0,0,10,10];%个体下边界信息maxIter=100;%最大迭代次数fobj=@(x)fun(x);%设置适应度函数为fun(x)%狮群优化算法求解问题[Best_Pos,Best_fitness,IterCurve]=LSO(pop,dim,ub,lb,fobj,maxIter);%绘制迭代曲线figureplot(IterCurve,'r-','linewidth',1.5);gridon;%网格开title('狮群优化算法迭代曲线')xlabel('迭代次数')ylabel('适应度')disp(['求解得到的x1为:',num2str(Best_Pos(1))]);disp(['求解得到的x2为:',num2str(Best_Pos(2))]);disp(['求解得到的x3为:',num2str(Best_Pos(3))]);disp(['求解得到的x4为:',num2str(Best_Pos(4))]);disp(['最优解对应的函数值为:',num2str(Best_fitness)]);%计算不满足约束条件的个数[fitness,g]=fun(Best_Pos);n=sum(g>0);%约束的值大于0的个数disp(['违反约束条件的个数',num2str(n)]);程序运行结果如图3.6所示。图3.6程序运行结果运行结果如下:求解得到的x1为:1.5892求解得到的x2为:1.0782求解得到的x3为:69.3953求解得到的x4为:11.455最优解对应的函数值为:13587.38违反约束条件的个数0从收敛曲线上看,适应度函数随着迭代次数不断减小,表明狮群优化算法不断地对参数进行优化。最后,在约束条件范围内,得到了一组满足约束条件的参数,对压力容器的优化设计具有指导意义。参考文献[1]刘生建,杨艳,周永权.一种群体智能算法—狮群算法[J].模式识别与人工智能,2018,31(05):431-441.[2]董盛伟.多目标狮群优化算法的研究与应用[D].山东大学,2021.[3]刘新建,孙中华.狮群优化核极限学习机的分类算法[J].电子技术应用,2022,48(02):69-72.[4]戴子翔.狮群优化算法及改进算法的研究与应用实现[D].山东大学,2020.[5]李文阳.狮群算法的机制改进和应用研究[D].山东大学,2020.[6]李彦苍,巩翔宇.基于信息熵的改进狮群算法及其在组合优化中的应用[J].电子学报,2021,49(08):1577-1585.[7]韩鸿雁,李田泽,苑文续,等.多峰值光伏MPPT改进狮群算法的研究[J].现代电子技术,2021,44(23):171-174.[8]黄澄,袁东风,张海霞.基于狮群算法的数字孪生车间调度问题优化[J].山东大学学报(工学版),2021,51(04):17-23+34.[9]王艳红,张革文.基于改进狮群算法的云计算资源调度策略[J].计算机应用与软件,2021,38(11):269-275.[10]吴程昊,莫路锋.基于改进狮群算法的支持向量机参数优化方法[J].现代电子技术,2022,45(14):79-83.第4章樽海鞘群算法本章首先概述樽海鞘群算法的基本原理;然后,使用MATLAB实现樽海鞘群算法的基本代码;最后,将樽海鞘群算法应用于函数寻优问题和三杆桁架设计问题。4.1基本原理樽海鞘群算法(salpswarmalgorithm,SSA)是由SeyedaliMirjalili等于2017年提出的一种新型启发式智能优化算法,其灵感源于樽海鞘群体的聚集与航行觅食行为。樽海鞘是一种与水母的外部形状和浮游方式类似的群体性水生动物,其形状如图4.1所示。在深海中,樽海鞘以一种链式的群行为进行移动和觅食。樽海鞘的链式群行为通常是个体首尾相接形成条“链”,依次跟随进行移动,其链状图如图4.2所示。在樽海鞘链中,分为领导者和追随者,领导者朝着食物移动并且指导着紧随其后的追随者移动,追随者的移动按照严格的“等级”制度,只受前一个樽海鞘影响,这样的运动模式使樽海鞘链有很强的全局探索和局部开发能力,SSA寻优过程就是模仿海底生物樽海鞘呈链状运动的觅食行为。▲图4.1单个樽海鞘▲图4.2樽海鞘链4.1.1樽海鞘群算法的数学模型樽海鞘大多是由多个樽海鞘聚集后形成长链,组成的樽海鞘链帮助其完成快速浮游
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国再生资源回收利用行业市场供需现状与未来发展趋势研究报告
- 2026汽车电池能量管理系统技术革新与商业前景研究探讨报告
- 2026中国稀土材料产业政策调整与市场供需分析报告
- 2026润滑油制造业市场供需平衡竞争投资评估规划发展研究报告
- 2026人工智能行业市场应用深度剖析及产业生态构建与投资布局研究报告
- 2026中国涡流泵产品能效标准与节能技术应用研究报告
- 2026中国新能源汽车产业链上游行业市场供需分析及投资评估规划分析研究报告
- 2026中国心理咨询行业执业发展及产业商业模式创新研究简报
- 2026陕西纺织行业市场现状供需分析及投资评估规划分析研究报告
- 2026人力资源服务行业竞争态势转型发展令
- 中国高危人群乙型肝炎病毒再激活防治指南(2026年版)
- 痴呆护理伦理与照护者压力管理
- 老年人营养管理
- 2025年南京大数据集团有限公司工作人员招聘笔试参考题库附带答案详解
- 2025双方合作谅解备忘录合同范本
- (正式版)DB65∕T 3347-2011 《杨十斑吉丁虫无公害防治技术规程》
- 肛门指检课件
- 2025年新电梯安全员证考试试题及答案
- 海尔人力资源管理制度
- 中医中风护理查房
- 曲阜明故城控制性详细规划(同济)课件
评论
0/150
提交评论