袁 磊,王 勇,2,赵艳玲 (1.广西民族大学 人工智能学院,广西 南宁 530006; 元启发式算法在科学和工程等领域得到广泛的应用,其优越性也得到界内研究者的广泛认可,因而自20世纪70年代Holland提出遗传算法(GA)[1]以来,元启发式算法的研究越来越受到国内外研究者的重视。目前在国内外刊物或国际会议上发表的有关元启发式算法研究成果大体上可分为两类:一是原创性提出新算法(如粒子群算法(PSO)[2],蝗虫优化算法(GOA)[3],鲸鱼算法(WOA)[4],黑猩猩优化算法(COA)[5],社会模拟算法样式(SMO)[6]、教学优化算法(TLBO)[7],算数优化算法(AOA)[8]、哈里斯鹰优化算法(HHO)[9],知识共享算法(GSK)[10]等); 基于知识共享的优化算法(Gaining-sharing knowledge based algorithm for solving optimization problems, GSK)[10]是由Mohamed等人从人类获取和共享知识过程中得到启发,于2019年提出的一种新的群智能优化算法。GSK具有算法模型简单易懂、易于编程实现等优点。然而,GSK存在全局搜索能力不强、收敛速度慢、易陷入局部极值等不足,仍有待进一步完善。针对GSK之不足,Mohamed等人[11]提出改进版本的GSK,称之为APGSK,该APGSK用自适应概率参数来控制知识比率,以平衡全局探索与局部开发。然而从文献[11]给出的具体实例实验与仿真结果上看,APGSK的收敛速度相对较慢、优化精度也不高。Zhong等人[12]提出将GSK与HHO相结合的混合差分进化算法,称之为DEGH。该算法首先构建一个混合变异算子,用于平衡全局探索和局部开发; 基于知识共享的优化算法(GSK)将人类知识的获取分为初级(junior)和高级(senior)两个阶段:第一阶段称为初级获取与分享阶段; 设N为特定人群总人数(种群规模),D是人可获取知识的学科领域数(表示人的知识全部从D个学科获取,表征搜索空间维数是D),以xij表示第i人从第j学科中获取知识,以xi=(xi1,xi2,…,xiD)表示第i人的知识维度,f(xi)为其适应度值,i=1,…,N。 1.1 确定使用初级获取与分享知识的维度数搜索开始时,首先计算第i人xi使用初级方案(初级获取)更新的维度数,从而也就确定了使用高级方案(高级获取)的维数。具体方法如下:设t时刻第i人的位置为xi(t)=(xi1(t),…,xiD(t)),则由公式(1)计算: 其中:k称为知识率,是大于0的实数(GSK在数值实验中取k=10),Tmax为最大迭代次数,t为当前迭代次数。记Djun为不超过D(juniorphase)的最大正整数。则在t+1时刻,xi(t)=(xi1(t),…,xiD(t))的前Djun个维按初级获取知识方案进行更新,后Dsen个维则按高级获取知识方案进行更新,其中: 1.2 不同阶段知识获取与分享方法记xi(t)为第i人于t时刻的位置(i=1,…,N),f(xi)为其适应度值。根据适应度值将人群按升序排列:xbest(t),…,xi-1(t),xi(t),xi+1(t),…,xworst(t),并且从[0,1]中取一个随机数rand: 针对初级获取与分享阶段,首先给定kf(知识因子)和kr(知识比率),其中kf>0,0 若rand≤kr,则xi(t)的前Djun个维均按公式(3)更新知识: 否则(即rand>kr时)不更新,i=1,…,N,j=1,…,Djun。即xi(t)的前Djun个维均采用初级获取知识方案更新知识。其中:xi-1(t)和xi+1(t)分别是比xi(t)更好和更差的两个“人”,作为xi(t)获取知识的来源,再从群体中随机选择另一个“人”xr(t)作为知识共享的来源。注:若xi(t)为当前最优个体,则以xbest+1(t)和xbest+2(t)作为其获取知识的来源; 针对高级获取与分享阶段,首先将种群分为最好人群(人数为p⋅N)、中等人群(人数为(1-2p)⋅N)、最差人群(人数为p⋅N)三个群体(GSK在数值实验中取p=0.1)。然后每个“人”使用如下方案更新知识: 若rand≤kr,则xi(t)按公式(4)更新知识: 否则(即rand>kr时)不更新。i=1,…,N,j=Djun+1,…,D。其中xp-best(t)、xm(t)和xp-worst(t)为分别从最好人群、中等人群、最差人群中随机选择的一个个体。 GSK实现步骤如下: Step1:给定目标函数f(x),种群规模N,搜索空间维数D,最大迭代次数Tmax,知识率k,知识因子kf,知识比率kr,种群最好人群比例p。 Step2:初始化种群xi(t),评估每一个体的适应度值f(xi(t)),i=1,…,N。 Step3:根据适应度值将种群按升序排列:xbest(t),…,xi-1(t),xi(t),xi+1(t),…,xworst(t)。 Step4:利用公式(1)和(2)确定Djun和Dsen=D-Djun。 Step5:从[0,1]中取一个随机数rand,若rand≤kr,则xi(t)的前Djun维度均采用公式(3)更新知识,后DDjun维度均采用公式(4)更新知识; Step6:评估每一个体的适应度值f(xi(t)),i=1,…,N。 Step7:判断是否满足终止条件:若满足则转Step8; Step8:算法终止,并根据适应度值将最优位置作为优化问题的最优解。 分析标准GSK算法模型:不管是在初级阶段还是在高级阶段,搜索个体的前Djun个维均按公式(3)更新位置、后D-Djun个维则均按公式(4)更新位置。显然,GSK的公式(3)和(4)中,每个维更新位置时,其步长均由知识因子kf确定,然而kf是给定的常数(GSK在数值实验中取kf=0.5),因此,GSK种群中个体每个维的搜索步长是固定的,也就是说,GSK种群中的每一个体在搜索空间中均采用“同一时刻步长完全相同、同步跳跃”的搜索策略。这使得种群个体搜索明显缺乏随机性和灵活性,限制了个体的搜索灵活性和自主性,降低了个体的搜索能力和效率,造成算法搜索效率低下,最终导致GSK的全局搜索能力不强、全局收敛速度较慢、优化精度不高之不足。针对GSK存在的问题,本文提出相应的改进策略,详述如下: i=1,…,N,j=1,…,Djun。其中r为[0,1]中的随机数。 i=1,…,N,j=Djun+1,…,D。其中w=(1-t/Tmax)4,L(λ)为列维飞行[14]: 公式(5)中的r⋅kf和公式(6)中的L(λ)⋅kf均是随机可变的, 而标准GSK的知识因子kf是固定的。因此,本文将r⋅kf和L(λ)⋅kf统称为动态知识因子(本文算法在数值实验中取kf=1.8)。 说明:a)公式(5)和(6)中的w⋅xi,j(t)表示:个体i对知识的吸取具有习惯性,并保持其这一习惯性趋势。w=(1-t/Tmax)4是一个关于算法搜索时间t的单调递减函数,当t=1时,w=(1-1/Tmax)4≈1(本文算法置Tmax=300),t=300时,w=0 。换言之,w从算法搜索前期到后期逐步从1单调递减到0; 本文算法已对标准GSK中的“Step5:从[0,1] 中取一个随机数rand,若rand≤kr,则xi(t)的前Djun维度均采用公式(3)更新知识,后D-Djun维度均采用公式(4)更新知识; 本文算法(DKGSK)实现步骤如下: Step1:给定目标函数f(x),种群规模N,搜索空间维度D,最大迭代次数Tmax,知识率k,知识因子kf,种群最好人群比例p(本文算法在实验中取kf=1.8,k=10,p=0.1)。 Step2:初始化种群xi(t),并评估适应度值f(xi(t)),i=1,…,N。 Step3:根据适应度值将种群按升序排列:xbest(t),…,xi-1(t),xi(t),xi+1(t),…,xworst(t)。 Step4:由公式(1)和(2)确定Djun和Dsen=D-Djun。 Step5:xi(t)分别根据公式(5)和(6)更新其前Djun个维和后D-Djun个维。 Step6:评估每一个体的适应度值f(xi(t)),i=1,…,N。 Step7:判断是否满足终止条件:若满足则转Step8; Step8:算法终止,并根据适应度值将最优位置作为优化问题的最优解。 设最大迭代次数是T,种群规模是N,探索空间维数是D。初始化种群的时间复杂度是O(N),计算初级阶段维数的时间复杂度是O(T),排序时间复杂度是O(N(N-1)T/2),因而标准GSK的时间复杂度是O(N(N-1)T/2)+O(NDT)+O(N)+O(T)。在AGSK中,引入自适应权重与列维飞行的时间复杂度为O(NT),故DKGSK的时间复杂度是O(N(N-1)T/2)+O(NDT)+O(NT)+O(N)+O(T),若略去时间复杂度之低次项,则两种算法的计算时间复杂度是一致的。 为 了 测 试 本 文 算 法(DKGSK)的 性 能,本 文 将DKGSK与 标 准GSK[10]、PSO[2]、WOA[4]、APGSK[11]、DEGH[12]作算法性能对比分析,以验证本文算法(DKGSK)的优化性能。 本文选取12个已被广泛用来测试算法优化性能的基准测试函数(具体见表1),作为算法数值实验与优化性能对比分析的测试实例,这些基准测试函数当中包含5个单峰函数和7个多峰函数。其中:单峰函数主要用来测试算法的收敛速度,多峰函数则用来测试算法的全局搜索能力和规避陷入局部最优的能力。 表1 基准测试函数 为了数值实验测试结果的公平性,本文实验针对六种对比算法均统一设置种群规模为100、最大迭代次数为300。对于GSK[10]、PSO[2]、WOA[4]、APGSK[11]、DEGH[12]这五种算法的其余参数,均与相对应的文献[10]、[2]、[4]、[11]、[12]的设置一致。 为了尽可能避免随机性对数值实验结果的影响,本文在做数值实验测试时,六种算法针对每一个测试问题都独立进行30次实验,并将运行结果(最优值、平均值、标准差)记录下来。这些评价指标总体上反应了算法优化能力的强弱以及算法稳定性的好坏。其中:“最优值”评价指标反映了算法的全局搜索能力和优化精度,“平均值、标准差”评价指标能够反映算法的稳定性能。本文针对30维和200维搜索空间分别做数值实验,得到的实验结果见表2。 为了便于观察和比较六种算法各自的收敛速度,本文也给出了六种算法分别求解这12个基准测试函数时得到的适应度进化曲线图,具体如图1所示。 本文根据实验数据表2和进化曲线图1来分析这六种对比算法各自的优化性能。 从“最优值”上看:本文算法(DKGSK)找到F1∼F5,F7∼F12这11个测试函数的理论最优值; 从“平均值”和“标准差”上看:本文算法(DKGSK)求解F1∼F5,F7∼F12这11个测试函数时得到的“平均值、标准差”均与理论最优值相同; 从图1的(a)~(l)上看:相较于其他五种对比算法,本文算法(DKGSK)的进化曲线均位于对比算法的进化曲线当中之最底下、下降的速度是最快的。本文算法求解F1∼F5、F7∼F12这11个测试函数时得到的进化曲线均到达理论最优位置; 图1 函数收敛图 为了进一步测试这六种对比算法各自的优化性能,本文再用六种算法分别求解表1中的12个函数当D=200时的优化表现,以考查六种算法的鲁棒性问题。具体得到的实验结果均列在表2中。 基于表2的实验数据进一步分析六种对比算法各自的性能。 表2 30/200维基准测试函数测试结果对比 本文算法(DKGSK)找到F1∼F5,F7∼F12这11个函数的“最优值、平均值、标准差”都是函数理论最优值; 记p=最好人群/群体规模N。为了研究p之不同值对DKGSK优化性能的影响,本文针对p=0.1,0.2,0.3,0.4分别做数值实验。表1中的F6是一个具有多极小点但只有一个全局最小点(0,…,0)的多峰函数,由于受random[0,1)的扰动,要找到其全局最小点相对较难,故寻找F6的最小点是较能考验算法的全局探索和局部开发能力的。因此,本文就以F6作为确定p值之测试函数。实验种群规模为100,最大迭代次数300,D=30。针对p之不同值,均独立运行30次,考查p取不同值时算法稳定性的变化情况。利用绘制箱线图来反映30次运行结果,可容易观察到多组连续型定量数据分布的中心位置和散布范围。当p取不同值时,DKGSK 的中位数线均靠近全局最小位置,且大部分数据都接近理论最优位置。这说明DKGSK具有较强的全局寻优能力、较强的跳出局部最优能力和较好的优化精度,采用的改进策略是有效和可行的。从箱线图的高度上看,p取4个不同值时,大部分数据点都没有严重偏离理论最优位置。从偏离理论最优位置上看,当p=0.1时,没有出现偏离理论最优位置的数据点,而p取其余3个值时,均出现偏离理论最优位置的数据点。因此,本文算法(DKGSK)在数值实验中取p=0.1。 其次,为了研究知识因子kf之不同值对DKGSK 优化性能的影响,本文针对kf= 0.5,1,1.2,1.5,1.8 分别做实验。实验设置种群规模为100,最大迭代次数为150,D=30。从实验结果上看:DKGSK求解F1∼F5和F7∼F12在kf=1.8时的表现最好、求解F6在kf=1.5时的表现比较好。因此,本文算法(DKGSK)在实验中取kf=1.8。 为进一步验证本文算法(DKGSK)的寻优性能,将DKGSK分别与GSK,DEGH,APGSK,PSO,WOA算法进行Wilcoxon秩和检验。在显著性水平为0.05的条件下检验算法之间的显著差异性,其中p表示检验的数值,若p值小于0.05,则表明算法之间的寻优结果存在显著性差异,否则无明显差异。N表示数据无效即检验的所有样本数据相同,算法不具有显著差异性。从测试数据可以看出,p值小于0.05的占绝大多数。因此,DKGSK与其他五种对比算法具有非常显著的差异性,并且DKGSK的全局优化能力最强。 针对标准GSK之不足,本文提出采用动态知识因子的基于知识共享的优化算法(DKGSK)。首先,利用单调递减自适应权重函数来控制个体的移动步长,使个体在算法前期能以较大步长在搜索空间中进行全局探索活动,让种群个体尽快遍历整个搜索空间,增强了算法的全局探索能力,为算法后期的局部搜索活动提供了更多有用的信息; |