✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
针对黑猩猩优化算法存在易陷入局部最优、收敛速度慢、寻优精度低等缺陷,提出了混合改进策略的黑猩猩优化算法(SLWChOA)。首先,利用Sobol序列初始化种群,增加种群的随机性和多样性,为算法全局寻优奠定基础;其次,引入基于凸透镜成像的反向学习策略,将其应用到当前最优个体上产生新的个体,提高算法的收敛精度和速度;同时,将水波动态自适应因子添加到攻击者位置更新处,增强算法跳出局部最优的能力;最后,通过10个基准测试函数、Wilcoxon秩和检验以及部分CEC2014函数进行仿真实验来评价改进算法的寻优性能,实验结果表明所提算法在寻优精度、收敛速度和鲁棒性上均较对比算法有较大提升。另外,通过一个机械优化设计实验进行测试分析,进一步验证SLWChOA的可行性和适用性。
首先,在标准ChOA中,种群初始化采用随机分布的方式,这种方式造成种群多样性差,导致个体前期搜索存在一定的盲目性,使算法收敛速度慢;其次,标准ChOA通过对种群历史前四个最优位置的加权记忆,实现了个体在搜索空间快速寻优,但这一做法并未考虑到每个黑猩猩个体自身的搜索经验,导致算法寻优精度低;最后,标准ChOA的种群围绕攻击者、障碍者、驱赶者和追逐者进行位置更新,当这四个个体陷入局部空间极值时,种群会随之陷入局部最优,导致算法出现停滞搜索现象。综上所述,本文针对上述标准ChOA原理的缺陷,引入对应的策略进行改进。首先,本文通过Sobol序列初始化种群,使种群分布更加均匀,降低前期个体搜索的盲目性,从而提高算法的收敛速度;其次,引用基于凸透镜成像的反向学习策略,通过对算法中当前最优个体进行凸透镜成像反向学习,将各维度的值映射到搜索空间中得到反向解,引导群体向全局最优解附近靠拢,提高算法的寻优精度;最后,在种群的引导者“攻击者”位置更新处添加水波动态自适应因子,利用水波的动态变化的方向和大小的不确定性帮助攻击者引导种群在更广阔的范围搜索,增加算法寻优位置的多样性,避免趋同性,降低算法陷入局部最优的概率。
📣 部分代码
% This function initialize the first population of search agentsfunction Positions = initialization(SearchAgents_no, dim, ub, lb)Boundary_no= size(ub, 2); % numnber of boundaries% If the boundaries of all variables are equal and user enter a signle% number for both ub and lbif Boundary_no==1 Positions = rand(SearchAgents_no, dim).*(ub-lb)+lb;end% If each variable has a different lb and ubif Boundary_no > 1 for i=1:dim ub_i = ub(i); lb_i = lb(i); Positions(:, i) = rand(SearchAgents_no, 1).*(ub_i-lb_i)+lb_i; endend
⛳️ 运行结果