求解约束优化问题的复合人工蜂群算法

2022-02-24 12:32支俊阳李旭飞崔轲轲
计算机工程与应用 2022年3期
关键词:测试函数种群约束

王 贞,支俊阳,李旭飞,崔轲轲

1.北方民族大学 数学与信息科学学院,银川 750021

2.咸阳师范学院 数学与信息科学学院,陕西 咸阳 712000

实际工程优化问题大多被构建为约束优化问题,例如:焊接梁结构设计、拉力/压力弹簧设计、压力容器最小费用优化等。约束的存在增加了问题的求解难度,因此研究者们设计了多种策略来处理约束,如ε约束法[1]、多目标优化法[2]、罚函数法[3]等。此外,随着智能优化算法的发展,研究者们还通过改进智能优化算法提高求解约束优化问题的性能。2015年,龙文等[4]提出了一种改进的萤火虫算法,加快算法求解约束优化问题的收敛速度,避免其陷入局部最优。2018年,刘三阳等[5]提出了一种协同进化教与学优化算法,使得随着种群的进化惩罚因子及约束容忍度自适应调整,提高了算法求解约束优化问题的效率。2019年,Wang等[6]为了平衡收敛性与多样性、目标函数与约束违反,提出了一种约束优化的复合差分进化方法来求解约束优化问题。2020年,顾启元等[7]提出一种改进的水波优化算法,提高了算法求解约束优化问题的收敛精度。

人工蜂群算法(ABC)是Karaboga[8]于2005年提出的一种智能优化算法,它具有控制参数少,收敛速度快等优点。2010年,Zhu等[9]为了提高ABC算法的开发能力,采用Gbest引导种群进行搜索,提出了GABC算法。Mezura等[10]通过使用等式约束动态容忍机制及修改三种蜜蜂搜索方程,提出了Elitist-ABC算法。2011年,Karaboga等[11]提出了改进的ABC算法(MABC),使用Deb选择规则替换ABC原有的选择方式。Kang等[12]提出了一种基于Hooke Jeeves模式搜索的混合Hooke Jeeves ABC算法。2017年,Bansal等[13]在雇佣蜂和观察蜂阶段通过结合基于个体移动适应度概率的概念,对GABC进行了改进。2018年,Gao等[14]提出了一种基于人工蜂群算法(ABC)的新机制,该算法由两种新的学习策略-方向学习和精英学习组成,相互补充,提高算法的性能。王志刚等[15]在雇佣蜂和观察蜂阶段动态调整搜索维数,提出多搜索策略协同进化的人工蜂群算法。2020年,郭佳等[16]提出了IMABC算法,将算法的进化过程分为两个阶段,减少算法随机搜索的同时避免了算法的早熟。莫建麟等[17]提出了ABCIS算法,放弃了传统的贪婪选择机制并通过智能搜索与特殊划分的方式提升了算法的搜索性能。尽管对ABC算法的研究取得了很多成果,但大部分人工蜂群算法在求解约束优化问题时,在搜索过程中仅采用单一搜索方程,很难平衡种群的收敛性与多样性,使算法易陷入局部最优。在保留较优个体时,仅使用一种策略,难以平衡种群的目标函数与约束违背。

为了解决上述问题,本文提出了一种复合人工蜂群算法(composite artificial bee colony algorithm,CABC)来求解约束优化问题。算法中使用了不同的搜索方程平衡种群的多样性与收敛性,来提高算法的收敛精度。通过ε约束和可行性准则结合的方式选择个体,促使种群向可行区域靠近,同时平衡目标函数与约束,极大地提高了算法的探索能力。通过将CABC算法用于求解CEC 2006和CEC 2010测试函数,并应用到3个工程优化问题上检验了算法的性能。

1 人工蜂群算法

受到蜜蜂采蜜行为的启发[8],在ABC中,食物源位置对应优化问题的一个候选解,每个食物源的质量代表其对应候选解的适应度值。

在初始化阶段,随机生成一个均匀分布含SN个食物源的初始种群,每个食物源x i(i=1,2,…,SN)的维数为D,每个解通过下面方式来初始化:

其中,x i是种群中的第i个解,xmin,j和xmax,j分别是第j维的下界和上界,rand是[0,1]范围内分布的随机数。在雇佣蜂阶段,种群探索新食物源,通过如下形式更新:

其中,j∈[1,2,…,D],k∈[1,2,…,SN],k≠i。φij是在[-1,1]中随机产生的数。产生新解之后,在xi和新解v i之间保留更好的食物源。对于每个食物源x i的适应度值fit i以如下方式计算:

其中,f i代表解xi的目标函数值。

开采食物源后,雇佣蜂返回蜂巢,通过摇摆舞与跟随蜂分享食物源的位置和质量信息。在跟随蜂阶段,跟随蜂依据雇佣蜂分享的信息计算食物源xi的选择概率prob i:

其中,maxf it i是种群中的最大适应度值。跟随蜂通过轮盘赌选择食物源,并根据式(2)进行更新。

若任何食物源的开采达到limit次,则放弃该食物源,对应的雇佣蜂就会转化为侦查蜂,在整个搜索空间中根据式(1)探索新的食物源。人工蜂群算法流程如下。

算法1人工蜂群算法

步骤1利用式(1)进行种群初始化,设定算法的所有参数。食物源数量SN,最大迭代次数maxGen,当前代数gen=1,最大开采次数limit。

步骤2雇佣蜂根据式(2)搜索新的食物源vi,通过式(3)计算新食物源的适应度值fit i。比较x i和vi的适应度值保留较好的食物源。

步骤3利用式(4)计算跟随蜂选择食物源的概率,通过式(2)选择一个食物源进行更新。计算新食物源的适应度值,根据其适应度值选择要保留的食物源。

步骤4如果有食物源达到最大开采次数,则根据式(1)产生一个新食物源。

步骤5识别是否满足满足终止条件,若满足终止条件,则输出最优解,否则转至步骤2。

2 复合人工蜂群算法

原始ABC算法仅仅使用一种搜索方程,难以平衡种群的收敛性与多样性,影响了算法的性能。因此,CABC算法在雇佣蜂阶段使用三种不同的搜索方程产生三个新食物源。在这三个新食物源之间根据可行性准则保留较优新食物源,将得到的新食物源再与旧食物源之间基于ε约束进行比较,保留较优食物源。这样可以平衡种群的收敛性与多样性,同时兼顾目标函数与约束的有效信息。

2.1 搜索方程

在原始的人工蜂群算法中,蜂群的搜索方程往往是对解进行一维变异,但这样将会导致种群中的个体过于关注自身的信息,进而忽略了其他个体以及优秀个体的信息。但若对种群中个体的每一维都进行变异,种群过度吸收其他个体的信息而忽略了自身的信息,丢失个体在寻优过程中得到的优良信息。所以在雇佣蜂阶段种群需要由最优个体引导并随机选取部分维进行变异来保证种群的收敛性,但这样将会造成种群的多样性有所损失。为了平衡种群的收敛性与多样性,需要由邻居个体引导并对其每一维都进行变异来维持种群的多样性。因此在雇佣蜂阶段采用如式(5)、(6)两个搜索方程产生新的蜜源:

其中,k∈{1,2,…,SN},k≠i,j=[1,2,…,D],φi∈[-1,1]是均匀分布的随机数,D为问题的维数。

其中,r1,r2,r3∈{1,2,…,SN},r1≠r2≠r3≠i,j=[j1,j2,…,j m],j r∈{1,2,…,D},r∈{1,2,…,m},m∈{1,2,…,[rand×D]},φi∈[-1,1]是均匀分布的随机数,φi∈[-0.75,0.75]是均匀分布的随机数,D为问题的维数。在式(6)中,F随着代数的增加而减小:

首先利用式(5)对雇佣蜂进行变异,生成第一个新食物源v1,通过对每一维都进行变异维持了种群的多样性。其次选取具有最小目标函数值的个体xbest,利用式(6)对雇佣蜂部分维进行变异,生成第二个新食物源v2,通过具有最小目标函数值个体的引导促使种群快速收敛。最后选取具有最小约束违反程度的个体xbest,利用式(6)对雇佣蜂部分维进行变异,生成第三个新食物源v3,通过具有最小约束违反程度个体的引导帮助种群快速进入可行域。若种群中具有最小目标函数值的个体不止一个,则选取具有最小目标函数值中具有最小约束违反程度的个体;若种群中具有最小约束违反程度的个体不止一个,则选择具有最小约束违反程度个体中具有最小目标函数值的个体。

由于在雇佣蜂阶段采用了两种最优引导策略和一种多样性引导策略,增强了算法的收敛性,对于种群的多样性有所损失。为了平衡种群的收敛性与多样性,所以在跟随蜂阶段采用如下搜索方程维持种群的多样性。

其中,k∈{1,2,…,SN},k≠i,j=[j1,j2,…,j m],j r∈{1,2,…,D},r∈{1,2,…,m},m∈{1,2,…,[rand×D]},φi∈[-1,1]是均匀分布的随机数。

在侦察蜂阶段仍使用与原始ABC相同的搜索方程(1)产生新的个体,通过随机搜索帮助种群跳出局部最优。因为雇佣蜂及观察蜂阶段的搜索方程促使更多距离种群较远的个体进入种群中,在进化过程中维持了种群的多样性,使算法更容易跳出局部最优。

2.2 约束处理方法

可行性准则是Deb[18]于2000年提出的约束处理方法。由于其原理简单、方便执行、收敛速度快,被研究者广泛使用。在可行性准则中,采用如下规则来比较个体:

(1)两个个体均为可行解,具有最小目标函数值的个体占优。

(2)一个个体为可行解,另一个个体为不可行解,可行个体占优。

(3)两个个体都为不可行解,约束违背程度小的个体占优。

由于可行性规则较为严格的特性,如果可行区域在整个空间中占比较小,不可行解将难以被选入下一代种群中,因此种群很难进入可行区域。为了加快种群的收敛,除可行解外,需要特别关注位于可行区域边界的不可行解,因为这些解可能携带优良解的基因。这就需要一种约束处理方法保留位于可行区域边界的解以便在进化过程中对这些解进一步开发,帮助种群快速进入可行区域。

ε约束是Takahama和Sakai[1]提出的有代表性的约束处理技术,它可以放松约束,让约束违反程度低目标函数值小的个体有机会被选入下一代种群,使得算法能够探测到可行区域边缘的优良解,进而指导种群搜索到最优区域。ε约束中比较两个个体xi和x j时,称xi优于x j当且仅当:

在式(9)中,ε随着代数的增加而下降:

其中,gen代表当前代数,maxGen代表最大迭代次数,ε0代表在当前代种群中个体的最大约束违反程度。

本文采用ε约束和可行性准则两种约束条件处理方法进行解的比较与选择。通过ε约束促使位于可行区域边界的不可行解有机会进入下一代种群,引导种群进入可行区域。通过使用可行性准则对进化过程中产生的解进行更严格的选择,促进算法收敛。

2.3 适应度值的计算

受文献[12]的启发,在CABC算法中,极小化约束优化问题第i个食物源的适应度值为:

式(11)中fito i为第i个食物源的原值适应度值:其中,SP∈[1.0,2.0]是选择压力,SP=1.5是最佳选择。rank i是第i个个体在整个种群中排序后的位置。

在计算rank时,先对种群中个体根据约束违背值进行排序,在这个排序基础上再对种群中个体基于其目标函数值进行排序。由于跟随蜂选择食物源的概率为:

所以通过这种排序的方法使得种群中个体约束违背程度且目标函数值小的个体总是位于前方,也就是说在下一代种群中优先选择那些可行且目标函数值小的个体。若种群中的个体全部是不可行的,这种排序方式就退化为仅依靠约束违背程度进行排序,这样具有较小约束违背程度的个体有着更大的概率进入下一代种群,从而引导种群向可行区域靠近。若种群中的个体都是可行的,该排序方式就仅依靠目标函数值进行排序,具有更小目标函数的个体有着更大的概率进入下一代种群,增强了算法的开发能力。

2.4 CABC算法的框架

算法2给出了CABC算法的基本框架。初始化过程中,算法在搜索区域内随机产生食物源。在雇佣蜂阶段,采用一种随机搜索方程与两种最优引导方程产生三个新的食物源。这样能够提高算法的收敛能力,并且保证种群的多样性。在这三个新食物源中根据可行性规则选择要保留的新食物源,促使种群向可行区域靠近。在产生的新食物源与旧食物源之间根据ε约束保留优良个体,这种保留机制对约束条件有着一定的放松,促使种群中约束违反程度低且目标函数值小的个体有机会进入下一代种群,这样有利于保留较好的不可行解,促进算法收敛。在跟随蜂阶段采用随机搜索方程,平衡了种群的收敛性与多样性。

算法2复合人工蜂群算法

步骤1设置算法参数,食物源数量SN,最大迭代次数maxGen,当前代数gen=1,最大开采次数limit。利用式(1)进行种群初始化。

步骤2雇佣蜂按照式(5)、(6)搜索新的食物源,计算新食物源目标函数值、约束违反程度。利用可行性规则在产生的三个新食物源中选出一个较优新食物源。

步骤3利用ε约束在新食物源与旧食物源之间进行选择,保留较优食物源。

步骤4利用式(13)计算跟随蜂选择食物源的概率,并选择一个食物源进行更新。根据式(8)搜索新食物源,计算新食物源的目标函数值,约束违反程度。根据可行性规则在新食物源和旧食物源之间进行选择,保留较优食物源。

步骤5如果有食物源达到最大开采次数,则根据式(1)重新初始化一个食物源。

步骤6识别是否满足满足终止条件,若满足终止条件,则输出最优解,否则转至步骤2。

2.5 算法的性能分析

为了从理论上验证CABC算法的性能,进行如下所述分析。

2.5.1 算法的寻优能力分析

CABC算法在雇佣蜂阶段使用三种不同的搜索方程平衡种群的收敛性与多样性,通过将可行性准则和ε约束结合的方式促使位于可行区域边界的不可行个体有机会进入下一代种群,引导种群快速进入可行区域,提高了算法的全局探索能力。使用新的适应度值计算方式更容易识别种群中高质量个体,并且跟随蜂阶段采用轮盘赌方式在高质量个体附近进行搜索,提高了算法的局部探索能力,使得种群向较优个体靠近,保证了算法的收敛。

当种群中大部分个体位于可行区域中,这就需要尽可能多地保留种群中高质量个体的信息。在雇佣蜂阶段由具有最小约束违反程度的个体引导的搜索方程已经变成由具有最小目标函数的可行解引导,因此算法将在最优个体附近进一步开发,提高了算法的局部寻优能力。随着迭代次数的增加,逐渐确定了可行区域的大致位置,这时不需要不可行个体引导种群的搜索方向,ε约束逐渐演变为可行性准则引导种群在可行区域内部搜索,促使算法收敛到最优值。另一方面由于在雇佣蜂及跟随蜂阶段采用多维随机变异操作,保证了种群的多样性,侦察蜂阶段采用随机搜索的方式,使种群更容易跳出局部最优,避免了算法的早熟。

为了进一步说明CABC算法的寻优能力,对IEEE CEC2006[19]中g08测试函数的种群分布特征进行实验,实验结果如图1所示,其中图1(e)、(f)右上角为种群分布的局部放大图,percent代表当前种群的可行性比例。从图中可以直观地看出,在进化初期,种群可行性比例不断增加,说明了CABC算法将可行性准则和ε约束结合能够帮助高质量不可行个体进入下一代种群,从而引导种群快速进入可行区域。随着迭代次数的增加,种群中个体逐渐向最优个体附近聚集并且具有良好的分散性,说明了利用多维随机变异操作和最优引导变异操作使CABC算法在迭代过程中始终进行全局搜索和局部搜索,在已有经验的基础上对较优个体附近区域进一步探索且保持了种群的多样性,平衡了算法的探索能力和开发能力。

图1 测试函数g08上种群分布变化图Fig.1 Variation of population distribution on test function g08

2.5.2 算法的时间复杂度分析

由算法1可知ABC算法的时间复杂度为O(maxGen×SN×D),其中max Gen是最大迭代次数,SN是食物源数量,D是问题的维数。与ABC算法相比,CABC算法初始化的时间复杂度为O(SN×D)。CABC算法在雇佣蜂阶段通过不同搜索方程产生了三个新种群,其时间复杂度为O(3×maxGen×SN×D)。所以CABC算法的时间复杂度为O(SN×D+3×maxGen×SN×D+maxGen×SN×D),即O(max Gen×SN×D)。所以CABC算法的时间复杂度为O(maxGen×SN×D),与ABC算法相同。

2.5.3 算法的空间复杂度分析

由算法1可知ABC算法的空间复杂度为O(SN×D)。与ABC算法相比,CABC算法在雇佣蜂阶段通过不同搜索方程产生了三个新种群,其空间复杂度为O(3×SN×D),即O(SN×D)。所以CABC算法的空间复杂度为O(SN×D),与ABC算法相同。

3 数值实验及结果分析

为了系统地验证CABC算法求解约束优化问题的性能,在两组标准测试函数上对CABC算法和其他算法进行了比较。测试函数包括IEEE CEC2006中的20个测试函数[19],IEEE CEC2010的18个测试函数[20],它们涵盖了强非线性、多模态、极小可行区域等各种特性。测试函数详情见文献[19-20]。

3.1 参数设置

为了使CABC算法的结果和其他改进算法的结果进行对比,在这里将算法的迭代次数达到最大迭代次数作为算法的终止条件。按照对比算法在对应文献中设置的最大评估次数设置本文的最大迭代次数,使得CABC算法的最大评估次数小于或者等于对比算法的最大评估次数。最大迭代次数max Gen的设置和种群规模NP的设置在表1中给出。食物源数量SN=1/2×NP。所有算法的最大开采次数lim it=SN×D,F0=0.5。实验中各个算法均进行30次独立实验,并取其平均值作为最终实验结果。

表1 参数设置Table 1 Parameter settings

3.2 在IEEE CEC2006测试函数上的实验

将CABC算法应用于IEEE CEC2006中的20个测试函数的求解。与ABC算法进行了比较,实验结果如表2所示,加粗部分表示具有良好的结果。表中best、mean、worst、std、percent分别代表算法独立运行30次找到的最好值、平均值、最差值、标准差、可行性比例。可以看出在20个测试函数中除了g02、g18外,CABC算法的平均值和标准差均优于或者类似于ABC算法的优化结果。ABC算法在测试函数g05、g13、g17、g20上找不到可行解。CABC算法仅在g20函数上找不到可行解。图2为CABC与ABC算法在部分测试函数上的收敛曲线图。从图中可以直观地看出,CABC算法在收敛精度与收敛速度方面明显优于ABC算法。

图2 IEEE CEC2006部分测试函数上CABC与ABC的收敛曲线Fig.2 Convergence curve of CABC and ABC on partial test functions in IEEE CEC2006

表2 IEEE CEC2006 20个测试函数上CABC与ABC的优化结果Table 2 Optimization results of CABC and ABC on 20 benchmark test functions in IEEE CEC2006

将CABC算法同文献[13]中的MGABC、BSFABC、GABC、MABC、LFABC的实验结果进行比较,最大评估次数和文献[13]中设置相同,比较结果如表3所示。可以看出在测试函数g01、g03、g04、g06、g07、g08、g10、g11、g12、g15、g16、g19上CABC算法获得的平均目标函数值均优于其他算法获得的平均目标函数值,除g07、g10测试函数外,CABC算法得到的标准差均小于其他算法得到的标准差,这表明CABC具有更好的稳定性。

表3 IEEE CEC2006 20个测试函数上CABC与各种改进ABC的优化结果Table 3 Optimization results of CABC and various improved ABC on 20 benchmark test functions in IEEE CEC2006

将CABC算法同文献[7]中CGWO、E-BRM及文献[21]中PSO、HCS-LSAL算法的优化结果进行比较,比较结果如表4所示。可以看出在测试函数g01、g03、g04、g06、g08、g11、g12上均值和标准差均优于其他算法。在测试函数g05、g07、g09、g13上寻找到的平均最优值非常接近最优值。这表明CABC算法能够有效求解约束优化问题。

表4 IEEE CEC 2006 13个测试函数上CABC与其他算法的优化结果Table 4 Optimization results of CABC and other algorithms on 13 benchmark test functions in IEEE CEC 2006

3.3 在IEEE CEC2010测试函数上的实验

为了进一步验证CABC算法的性能,将CABC算法应用于IEEE CEC2010中18个测试函数的求解。

在10维上CABC算法与文献[14]中的LL-CABC及文献[10]中的Elitist-ABC进行了比较,最大评估次数与原文献中设置的相同。实验结果如表5所示,可以看出CABC算法在测试函数C01、C02、C03、C04、C05、C06、C09、C10、C14、C15、C17、C18上平均值优于其他算法,其中除C01、C06外标准差均小于其他算法。Elitist-ABC在测试函数C04、C11上找不到可行解。ABC与LL-ABC在测试函数C03、C04、C05、C06、C09、C10、C11、C12上找不到可行解。CABC仅在测试函数函数C11、C12上找不到可行解。

表5 IEEE CEC2010 10维18个测试函数上CABC与各种改进ABC算法的优化结果Table 5 Optimization results of CABC and various improved ABC algorithms on 18 benchmark test functions with dimension 10 in IEEE CEC2010

在30维上CABC算法与文献[14]中的LL-CABC以及文献[10]中的Elitist-ABC进行了比较,最大评估次数与原文献中设置的相同。实验结果如表6所示,可以看出CABC算法在测试函数C01、C02、C05、C06、C09、C10、C15、C16、C17、C18上平均值优于其他算法,其中除C01、C02外标准差均小于其他算法。Elitist-ABC在测试函数C03、C04、C11、C12上找不到可行解;ABC与LL-ABC在测试函数C03、C04、C05、C06、C09、C10、C11上找不到可行解,CABC仅在测试函数C03、C04、C11上找不到可行解。综上所述,CABC算法求解约束优化问题可行有效。

3.4 在工程设计方面的应用

为了检验CABC算法在实际工程问题中的有效性,本文将其应用于3个实际工程问题中,即焊接桥梁结构设计优化问题、拉力/压力弹簧结构设计优化问题、压力容器最小设计优化问题。为了使CABC算法的结果可以和文献[4-5,14]的结果进行对比,将算法迭代次数达到最大迭代次数作为算法的终止条件。并且按照原文献设置的最大评估次数将最大迭代次数设置为maxGen=1 000。

3.4.1 焊接梁设计问题

该问题是在满足约束条件的情况下使其总费用达到最小,它的决策变量是h(x1)、l(x2)、t(x3)、b(x4),问题的模型为:

式中:

通过CABC算法求解焊接梁设计问题,与ABC算法和文献[4]中CDE、CPSO算法以及文献[14]中LL-ABC算法比较结果如表7所示。由表可知,在求解焊接梁设计优化问题时CABC算法在最优值计算及算法的稳定性上明显优于ABC、CDE、CPSO、LL-ABC算法。图3为ABC、LL-CABC、CABC算法在焊接梁设计优化问题上的收敛曲线图。从图中可以直观地看出,CABC算法在收敛精度和收敛速度方面明显优于ABC、LL-CABC算法。

图3 各个算法在焊接梁设计问题上的收敛曲线Fig.3 Convergence curve of each algorithm in welding beam design

表7 各个算法在焊接梁设计上的优化结果Table 7 Optimization results of each algorithm in welding beam design

3.4.2 拉力/压力弹簧设计问题

该问题是在满足约束条件的情况下使其质量达到最小,它的数学模型如下:

式中:

0.25≤x1≤1.30,0.05≤x2≤2.00,2.00≤x3≤15.00

用CABC算法求解压力/拉力弹簧设计优化问题,与ABC算法和文献[4]中CDE、CPSO算法以及文献[14]中LL-ABC算法比较结果如表8所示。由表可知,在求解拉力压力弹簧设计优化问题时CABC算法在最优值计算及算法稳定性上明显优于ABC、CDE、CPSO、LL-ABC算法。图4表示ABC、LL-ABC、CABC在拉力/压力弹簧设计设计优化问题上的收敛曲线图,从图中可以直观地看出,CABC算法在收敛精度和收敛速度方面明显优于ABC、LL-CABC算法。

图4 各个算法在压力/拉力弹簧设计问题上的收敛曲线Fig.4 Convergence curves of each algorithm in pressure/tension spring design

表8 各个算法在拉伸/压缩弹簧设计上的优化结果Table 8 Optimization results of each algorithm in pressure/tension spring design

3.4.3 压力容器设计最小费用问题

该问题的主要目标是在满足一定约束的条件下使得费用最小,它的数学模型如下:

式中:

1≤x1≤99,1≤x2≤99,10≤x3≤200,10≤x4≤200

用CABC算法求解压力容器设计最小费用问题,与ABC算法和文献[5]中CDE、TLBO算法以及文献[14]中LL-CABC算法比较结果如表9所示。由表可知,在求解压力容器设计最小费用优化问题时CABC算法在最优值及算法稳定性上明显优于ABC、CDE、TLBO、LLCABC算法。图5表示ABC、LL-CABC、CABC在压力容器设计最小费用优化问题上的收敛曲线图,从图中可以直观地看出,CABC算法在收敛精度和收敛速度方面明显优于ABC、LL-CABC算法。

表9 各个算法在压力容器设计上的优化结果Table 9 Optimization results of each algorithm in pressure vessel design

图5 各个算法在压力容器设计问题上的收敛曲线Fig.5 Convergence curve of each algorithm in pressure vessel design

4 结论

本文提出CABC算法来求解约束优化问题。通过对两个标准测试集及3个实际工程优化问题的实验可知,CABC算法的搜索方程可以有效平衡种群的多样性和收敛性。将ε约束和可行性准则相结合进行约束处理,可以有效地平衡目标函数和约束。改进的适应度函数可以识别优良个体,增加了算法的开发能力。实验证明本文提出的CABC算法能够有效地解决约束优化问题。

猜你喜欢
测试函数种群约束
山西省发现刺五加种群分布
解信赖域子问题的多折线算法
一种基于精英选择和反向学习的分布估计算法
基于双种群CSO算法重构的含DG配网故障恢复
基于自适应调整权重和搜索策略的鲸鱼优化算法
中华蜂种群急剧萎缩的生态人类学探讨
具有收缩因子的自适应鸽群算法用于函数优化问题
马和骑师
适当放手能让孩子更好地自我约束
CAE软件操作小百科(11)