APP下载

动态透镜成像学习人工兔优化算法及应用*

2023-10-24伟,龙

广西科学 2023年4期
关键词:测试函数集上全局

王 伟,龙 文

(1.贵州财经大学管理科学与工程学院,贵州贵阳 550025;2.贵州财经大学数学与统计学院,贵州贵阳 550025)

在过去的几十年中,元启发式算法在处理各种工程领域中具有挑战性的优化问题方面越来越受欢迎,这是因为它比传统的数值方法更有效。元启发式算法在搜索过程中需要执行探索和开发两个关键任务。在探索任务中进行“宏观搜索”以找到解空间中最有潜力的区域,对应于在问题的可行解空间中进行全局搜索,以搜索全局最优解。在开发任务中执行“微搜索”以提取搜索区域中的有用信息,对应于局部搜索,目的是改进可用的最佳解决方案。由于这两个过程的矛盾性质,所以在任何元启发式算法中都应该保持探索和开发之间的平衡,以执行性能良好的搜索。若未处理好探索和开发的平衡则会导致跳过真解、局部最优停滞和过早收敛等问题。

目前流行的元启发式算法有灰狼优化(Grey Wolf Optimizer,GWO)算法[1]、鲸鱼优化算法(Whale Optimization Algorithm,WOA)[2]、正弦余弦算法(Sine Cosine Algorithm,SCA)[3]、蝗虫优化算法(Grasshopper Optimization Algorithm,GOA)[4]、哈里斯鹰优化(Harris Hawks Optimizer,HHO)算法[5]、海鸥优化算法(Seagull Optimization Algorithm,SOA)[6]、蝴蝶优化算法(Butterfly Optimization Algorithm,BOA)[7]等,它们在解决全局优化问题上显示出一定的有效性。这些算法是基于种群迭代的,并且能够同时使用多个个体来执行搜索。此外,算法中的个体在搜索过程中还能够分享经验,相互交流。这些特性有助于算法在搜索过程中避免局部最优,从而增强了算法的探索能力。

人工兔优化(Artificial Rabbits Optimization,ARO)算法是由Wang等[8]于2022年提出的一种新型元启发式算法,它的灵感来自自然界中兔子的生存策略,包括迂回觅食和随机隐藏。ARO算法具有数学模型简单、需调整的参数少、容易编程实现以及不依赖梯度信息等特点,在函数优化和工程优化领域中得到成功应用[8-11]。然而,基本ARO算法存在精度差、收敛慢以及容易陷入局部最优等缺点。为了改善ARO算法的性能,Wang等[12]首先在随机隐藏阶段引入了Lévy飞行策略,以提高种群的多样性和动态性,种群的多样性加深了全局探索过程,从而提高了算法的收敛精度;然后,通过引入选择性反向策略来提高跟踪效率,防止ARO陷入当前的局部解。Wang等[13]结合天鹰优化(Aquila Optimizer,AO)算法的全局勘探和ARO算法的局部开发能力,设计了自适应切换机制,引入混沌反向学习策略,提出一种混合算法。

虽然这些元启发式算法在某些问题上可以找到全局最优,但是没有算法可以找到所有优化问题的全局最优值。无免费午餐(No Free Lunch,NFL)定理指出,不可能存在适用于所有优化问题的理想算法,该定理使得元启发式算法领域的研究非常活跃,并允许对现有算法进行修改以提高其性能[14]。为了改善基本ARO算法的搜索能力,本文提出一种改进的ARO算法(称为IARO算法),不仅设计了一种基于正弦函数的非线性递减能量因子以平衡IARO算法的探索和开发能力,还在笔者前期工作的基础上提出了一种动态透镜成像学习策略以避免算法陷入局部最优。数值实验部分选取了6个基准测试函数、2个工程设计优化问题和1个包括15个数据集的特征选择问题对IARO算法进行性能测试。

1 基本ARO算法

ARO算法模拟了兔子的生存策略,通过搜索、觅食和躲避攻击执行优化过程。与其他元启发式算法一样,ARO算法通过式(1)随机产生一组解组成初始种群个体:

P=lb+rand·(ub-lb),

(1)

其中,ub和lb是解空间的上、下界,rand是[0,1]间的随机数。

ARO算法中的优化过程主要包括两个阶段,即全局勘探(迂回觅食)和局部开发(随机隐藏),具体数学模型描述如下:

在迂回觅食阶段,假设种群中的每只兔子都有自己的区域,有一些草和洞穴,兔子总是随机地访问彼此的位置觅食。事实上,在觅食时,兔子很可能会扰乱食物来源以获取足够的食物。因此,ARO算法的迂回觅食行为意味着每个搜索个体倾向于使用向群中随机选择的其他搜索个体的位置来更新其位置,并添加扰动。迂回觅食策略的数学模型为

Xi(t+1)=Xj(t)+R·(Xi(t)-Xj(t))+round(0.5·(0.05+r1))·r2,

(2)

(3)

式中,X表示个体的位置;i,j=1,2,…,N,i≠j,N为种群规模;r1、r2和r3分别是[0,1]间的随机数;t为当前迭代次数;T为最大迭代次数;R表示移动步长;k=1,2,…,d,d是问题的维数;c的取值为0或1,round为四舍五入取整函数。

在随机隐藏阶段,为了躲避捕食者,兔子通常会在巢穴周围挖一些不同的洞来躲藏。在ARO算法的每次迭代中,兔子总是沿着搜索空间的每个维度在其周围产生若干个洞穴,并且总是从所有洞穴中随机选择一个进行隐藏,以降低被捕食的概率,具体数学模型为

Xi(t+1)=Xi(t)+R·(r4·H·g·Xi(t)-Xi(t)),

(4)

(5)

式中,H为隐藏参数,在迭代过程中随机从1线性减小到1/T,r4和r5分别为[0,1]间的随机数,g的取值为0或1。

在ARO算法中,兔子总是倾向于在迭代初始阶段频繁地进行迂回觅食,而在迭代后期阶段频繁地进行随机隐藏,这种搜索机制取决于兔子的能量,它会随着时间的推移而逐渐收缩。因此,设计一个能量因子来模拟从勘探阶段到开发阶段的自动转换,能量因子A的定义如下:

(6)

式中,r6是一个[0,1]间的随机数。

2 改进ARO算法(IARO算法)

2.1 非线性递减能量因子

在搜索过程中平衡好全局勘探和局部开发能力对提高元启发式算法的搜索性能至关重要。一般来说,算法搜索前期的主要目的是在解空间中进行大范围搜索,以找到潜在的可行区域;而在搜索中后期,算法主要执行局部精确搜索,以加快收敛速度。不难发现,基本ARO算法设计了一种能量因子A以控制其在全局勘探和局部开发之间的转换。能量因子A较大表示兔子有足够的能量和体力进行迂回觅食;反之,能量因子A较小则表明兔子的体力不足,需要随机隐藏。即,当A>1时,兔子在探索阶段随机探索不同兔子的觅食区域,种群进行全局搜索;当A≤1时,兔子倾向于在开发阶段随机开发自己的洞穴,进行局部搜索。

由式(6)可知,虽然能量因子A的值随迭代次数的增加而随机扰动递减至0,但这不能真实反映ARO算法的优化过程,即前期进行全局搜索需要较大的A值,而中后期局部精确搜索则需要较小的A值。因此,本文设计了一种基于正弦函数的非线性递减能量因子,其数学公式为

(7)

式中,Amax和Amin分别为能量因子A的最大值和最小值,μ为缩放因子。图1为式(7)描述的能量因子A随迭代次数增加的变化曲线。由图1可以看出,在算法搜索前期,能量因子A取较大值;而在搜索中后期,A取较小值,符合ARO算法前期进行全局勘探、后期进行局部开发的特点。

2.2 动态透镜成像学习策略

在基本ARO算法搜索末期,所有个体均向当前群体中最优个体所在区域靠拢,导致群体多样性降低,算法很容易陷入局部最优,这也是元启发式算法的固有缺点。为了克服这个缺点,龙文等[15]提出一种基于凸透镜成像原理的反向学习策略用于改进GWO算法的性能。然而,固定的缩放因子k无法充分利用透镜成像学习策略的优势。因此,为了进一步增加群体多样性,本文提出一种动态透镜成像学习策略,如图2所示。

(8)

式中,k=2·r7,r7是[0,1]之间的随机数,j=1,2,…,m。

(9)

基于上述两个修改策略,本文提出的IARO算法的流程如图3所示,迭代步骤如下:

图3 IARO算法流程

步骤1:初始化算法参数,如种群规模N、最大迭代次数T、Amax、Amin、μ、k;

步骤2:在解空间中随机产生一组个体位置作为算法种群初始位置,令t=1;

步骤3:计算每个个体的目标函数值,并记录当前群体最优个体位置;

步骤4:判断t

步骤5:根据式(7)计算能量因子A的值;

步骤6:判断A>1,如果是,则根据式(2)更新个体位置;否则,由式(4)更新个体位置;

步骤7:针对当前最优个体,执行动态透镜成像学习策略,以产生新候选个体,令t=t+1,返回步骤3。

3 函数优化问题测试及比较

为了测试IARO算法的优化能力,本文选取6个基准函数进行数值实验,详细信息如表1所示。其中f1、f2和f3是单峰函数,通常用来测试算法的局部开发能力;多峰函数f4、f5和f6用于研究算法的全局勘探能力。6个基准测试函数的全局最优值均为0。

表1 6个基准测试函数

采用IARO算法对表1中的6个基准测试函数进行求解,并与GWO算法[1]、WOA[2]、SCA[3]和基本ARO算法[8]进行比较。5种算法的种群规模设为30,最大迭代次数设为500。每个函数的维数均设置为30。每种算法均对每个基准测试函数独立运行30次。

表2列出了5种算法对6个基准测试函数的平均值(Mean)和标准差(Standard deviation,St.dev)的结果。所有算法均在MATLAB R2014a软件上实现,操作系统为Microsoft windows 8 64位版,处理器为Intel (R) Core (TM) i5-5200U CPU @ 2.20 GHz,内存为4 GB RAM。

表2 5种算法在6个基准测试函数的比较结果

从表2可知,除了f4外,IARO算法在其他5个基准测试函数上均获得了理论最优值(0),在f4上的寻优结果也非常接近于0。在5种比较算法中,SCA的寻优性能最差。与其他4种算法相比,IARO算法在6个基准测试函数上均获得了较好的平均值,且具有较强的鲁棒性。关于5种算法对6个函数的Friedman检验结果的排名,IARO算法在目标函数平均值上排名第一,接下来依次是ARO算法、WOA、GWO算法和SCA。另外,图4是5种算法对6个基准测试函数的迭代收敛曲线。从图4可以看出,与ARO算法、WOA、GWO算法和SCA相比,IARO算法在6个基准测试函数上显示出更快的收敛速度和更高的收敛精度。

图4 5种算法在6个函数上的收敛曲线

为了分析两种改进策略的有效性,将基本ARO算法与仅采用非线性能量递减因子的ARO (NARO)算法、仅采用动态透镜成像学习策略的ARO(DARO)算法和IARO算法进行比较,选取表1中的6个测试函数进行实验,结果如表3所示。

表3 4种算法的平均结果比较

从表3的比较结果可知,仅采用非线性能量递减因子对改进ARO算法性能的帮助有限,IARO算法性能改进的有效算子是引入动态透镜成像学习策略。

4 IARO算法求解工程设计优化问题

为了进一步验证IARO算法的有效性,将其应用于求解两个工程设计优化问题,即压力容器设计优化和拉压弹簧设计优化问题。考虑IARO算法在解决这两个工程设计优化问题时需要结合约束处理技术,本文使用惩罚函数法[16]处理约束条件。这里利用GWO算法、WOA、SCA、ARO算法和IARO算法对两个工程设计优化问题进行求解,5种算法的种群规模设置为50,最大迭代次数设置为1 000。

4.1 压力容器设计

压力容器设计的结构如图5所示,它有4个设计变量,即压力容器厚度、封帽厚度、容器内径和容器长度,优化目标是在一定约束条件下使得容器总造价最低,其目标函数和约束条件的数学表达式如下:

图5 压力容器设计

g1=Ts+0.0193R≤0 ,

g2=Th+0.00954R≤0,

g4=L-240≤0,

(10)

式中,0≤Ts,Th≤99,10≤R,L≤200。

GWO算法、WOA、SCA、ARO算法和IARO算法在压力容器设计优化问题上获得的最优结果如表4所示。从表4的比较结果可知,与GWO算法、WOA、SCA和ARO算法相比,在相同参数设置的条件下,IARO算法在压力容器设计优化问题上获得了最低的总造价。

表4 5种算法的最优结果比较

4.2 拉压管柱弹簧设计

拉压管柱弹簧设计结构如图6所示,它有3个设计变量如管柱直径、平均线圈直径和有效线圈数。

图6 拉压管柱弹簧设计

拉压管柱弹簧设计优化问题的目标是在最小挠度、剪切应力、外径限制和设计变量的约束下,使管柱弹簧的重量最小化,其目标函数和约束条件的数学表达式为

minf=(P+2)Dd2,

(11)

式中,0.05≤d≤2.00,0.25≤D≤1.30,2≤P≤15。

GWO算法、WOA、SCA、ARO算法和IARO算法在拉压管柱弹簧设计优化问题上获得的最优结果如表5所示。由表5的比较结果可以看出,与GWO算法、WOA、SCA和ARO算法相比,IARO算法在拉压管柱弹簧设计优化问题上获得了最小的重量。

表5 5种算法的最优结果比较

5 IARO算法求解特征选择问题

特征选择是处理高维数据的一个重要环节,它是指从原数据集的M个特征中选择出N个特征以降低数据集的维数,从而提高机器学习模型的分类效率。特征选择通过数学建模后可转换为求解一个多目标函数优化问题,其目标(适应度)函数可描述为

(12)

其中,E为分类器的分类错误率,ρ是权重系数,|l|表示算法所选择的特征数,|L|为原始数据集的特征数。

为了测试IARO算法求解特征选择问题的有效性,本文从UCI数据库中选取15个数据集进行实验,详细信息如表6所示。

表6 实验中使用的15个UCI数据集

利用GWO算法、WOA、SCA、ARO算法和IARO算法对表6中的15个UCI数据集进行特征选择并进行比较。5种算法的种群规模为10和最大迭代次数为20。在每个数据集中,随机选择90%作为训练集,剩下10%作为测试集,以k最近邻模型为分类模型,k=3,各种算法分别对每个数据集单独运行10次,得到的平均分类准确率和平均所选特征数分别见表7和表8。

表7 5种算法的分类准确率比较

表8 5种算法的所选特征数比较

从表7的结果可知,IARO算法在BreastEW、KrvskpEW、PenglungEW和SonarEW数据集上的平均分类准确率达到100%。与GWO算法相比,IARO算法在8个数据集上分类更为准确,在Exactly2、SpectEW和Tic-tac-toe数据集上的分类能力相当,在Clean2、Exactly、Semeion和WaveformEW数据集上,GWO算法分类更加准确。除IonosphereEW数据集外,IARO算法在其他14个数据集上比WOA分类更加准确,并且在IonosphereEW数据集上二者的分类准确率相同。与SCA相比,IARO算法在12个数据集上的分类能力更强,在SpectEW数据集上二者的分类准确率相等;但是,SCA在IonosphereEW和M-of-n数据集上的分类能力更强。与ARO算法相比,IARO算法分别在7个数据集上分类表现更好,在Exactly2、KrvskpEW、Semeion、SonarEW和Tic-tac-toe数据集上二者的分类准确率相同;在数据集Clean2、IonosphereEW和M-of-n上,ARO算法的分类能力更强。

6 结论

ARO算法是最近提出的一种元启发式优化技术,它在经典基准测试函数上显示出强大的寻优性能。然而,基本ARO算法在求解复杂优化问题上存在容易陷入局部最优、后期收敛速度慢等缺点。为了平衡算法的全局勘探和局部开发能力,本研究不仅提出了一种随正弦函数变化的非线性递减能量因子,还设计了一种动态透镜成像学习策略以增强种群多样性。基于上述两个改进策略,提出了IARO算法。数值模拟实验选取了6个基准函数以测试IARO算法的性能,并与GWO算法、WOA、SCA和ARO算法进行比较。数值模拟实验结果表明,IARO算法在解精度和收敛速度性能上比起对比算法均有较大的提升。此外,将IARO算法应用于求解2个工程设计优化问题和1个含15个UCI数据集的特征选择问题,结果显示,与其他4种算法相比,IARO算法在求解工程设计优化问题和特征选择问题上具有较强的竞争力。下一步的研究方向是将IARO算法应用于多目标优化、动态优化以及其他工程应用领域中。

猜你喜欢

测试函数集上全局
Cahn-Hilliard-Brinkman系统的全局吸引子
量子Navier-Stokes方程弱解的全局存在性
Cookie-Cutter集上的Gibbs测度
链完备偏序集上广义向量均衡问题解映射的保序性
落子山东,意在全局
复扇形指标集上的分布混沌
具有收缩因子的自适应鸽群算法用于函数优化问题
带势函数的双调和不等式组的整体解的不存在性
约束二进制二次规划测试函数的一个构造方法
新思路:牵一发动全局