一种基于混沌的免疫算法研究与改进
2023-12-25吴菲钒吴湘华
吴菲钒 吴湘华
摘要:文章通过研究传统免疫算法和混沌优化理论,通过对几种常用的混沌映射和随机函数性能进行大量的比对分析,选取Logistics映射作为混沌优Matlab进行仿真模拟,研究结果表明,改进后的基于混沌的免疫算法具有更高的搜索精度和更快的收敛速度。
关键词:免疫算法;混沌映射;种群更新;搜索效率;收敛速度
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2023)31-0064-03
开放科学(资源服务)标识码(OSID)
0 引言
传统免疫算法在搜索空间的探索和利用方面存在一些局限性,随着问题规模的不断扩大,算法的效率和精度也越来越难以满足实际需求。将混沌理论引入免疫算法,以期提高算法的全局搜索能力和收敛速度[1]。混沌理论是一种新的数学分支,可以描述非线性系统的复杂性和不确定性,其重要特征是丰富的非周期性运动和灵敏度依赖于初值。将混沌理论融入免疫算法中,可以有效地增强算法的随机性和多样性,以适应更加复杂的优化问题和任务。
1 传统免疫算法和混沌优化简介
传统免疫算法的基本思想是利用一种免疫系统中具有自我适应机制的防御能力,对一定范围内的个体进行分类、筛选、优化和选取。该算法的计算框架主要包含外周识别、克隆扩增、抗体选择、抗体变异和免疫刺激这五个环节。该算法拥有自适应性、多样性和并行性等独特特性,具有全局搜索能力强、收敛速度较快的优点,并且适用于解决复杂多模态优化问题,例如函数优化、图像识别、分类问题和数据挖掘等。然而,传统免疫算法对参数调整非常敏感[2]等。另外,该算法并不是所有问题的最佳解决方案,针对某些特定问题可能存在更优的解决方案[3]。
混沌优化算法是一种基于混沌理论的新型优化方法。该算法源于混沌理论中的“蝴蝶效应”,使用随机化的方式在搜索解空间中寻求最优解。混沌优化算法的核心思想是基于混沌现象的随机性和确定性。它最初是由美国数学家James Yorke所提出,在此基础上,又有很多学者对其进行了改进和发展。混沌优化算法的运行过程比较简单,首先需要定义一个优化函数,然后确定混沌映射、参数及优化方案等,接着就可以对目标函数进行优化。混沌优化算法能够更快地找到全局最优解,进而提升了算法的搜索精度和收敛速度[4]。
2 传统免疫算法的实现
2.1 传统免疫算法实现过程中几个因素说明
1) 编码选择:采用二进制编码能够很好地控制求解精度,其主要缺点有:一是在求解过程中要反复进行二进制与十进制之间的相互转换,当十进制转换为二进制,数据会存在一定失真;二是当函数自变量多个值时,要采用多个二进制矩阵表示。采用实数编码不需要进行数制的转换,能够用实数矩阵方便地表示有多个自变量的情形。Matlab中,double类型的实数为64位,具有较高的精度,通过系统函数roundn控制求解精度,为避免初始种群精度达不到要求,可以先用二进制编码初始化,再将二进制种群转化为十进制实数初始种群。
2) 函数句柄:Matlab中,采用函数句柄可以方便地求取不同的测试函数的函数值,不需要为每一个测试函数编写相应的代码。
2.2 传统免疫算法主要算子描述与实现
1) 算子2-1:种群随机初始化initrand
种群初始化是免疫算法中最基本的算子之一,它负责初始化一定规模的种群。初始种群中的个体尽可能地保留搜索空间的多样性和充分覆盖特征空间,以便后续的算子能够对种群进行有效的优化。
2) 算子2-2:抗体浓度算子density
抗体浓度是表示种群多样性的重要性能指标,其值过高不利于全局寻优,本文基于欧几里得距离求解抗体浓度。
3) 算子2-3:选择算子selection
主要用于免疫选择,克隆抑制求最优个体等操作,在免疫选择中主要負责选取具有高激励度的抗体,以保留优秀基因并放弃劣质基因。
4) 算子2-4:随机变异算子randmutation
随机变异算子通过rand函数随机产生实数,进行mapping映射后,替换进行变异的个体,引入变异算子有利于更好的搜索解空间。
5) 算子2-5:样本特征算子
样本特征值算子用于保存样本空间最小值、最大值、中位数、平均数、众数、极差、方差、标准差等。
6) 算子2-6:映射算子mapping
映射算子可将某一区间范围的矩阵映射成另一取值范围的矩阵,有利于不同取值范围的矩阵互相计算与转化。
7) 算子2-7:计算收敛代数算子judgeiter
免疫算法中的最优抗体会随着迭代次数的增加而不断变化,将最优抗体亲和度作为判定收敛代数的一个标准,将抗体种群的方差作为判定收敛代数的另外一个标准。当最优抗体亲和度不再变化,同时抗体种群方差小于某一值时,研究者认为算法收敛。
2.3 传统免疫算法仿真分析与结论
在Matlab中,选用如下测试函数行仿真实验,并做出分析:
f(x)=x+10×sin(5×x)+7×cos(4×x),其中x取值范围为[-10,10]
通过对传统免疫算法多次运行,发现初始种群大小对收敛代数有明显影响。种群大小分别取50、100、200时,各运行50次,每次实验使用initrand函数随机产生初始种群。当种群大小为50时,平均收敛代数是8.08,当种群大小为100时,平均收敛代数是6.00,当种群大小为200时,平均收敛代数是5.46。
通过对传统免疫算法多次运行,发现初始种群大小对收敛代数有明显影响。种群大小越大,表示搜索越大,收敛越快。如果初始种群中出现靠最优值较近的个体,收敛也会加快。
3 基于混沌的免疫算法改进
3.1 基于混沌的免疫算法简介
基于混沌与免疫算法的优化方法将混沌理论与免疫系统的选择性优化能力相结合,平衡多样性和收敛性,以提高算法的全局搜索能力和搜索精度[5]。该算法不仅结合混沌优化算法的优势,还融合了免疫算法的自适应性和解决高维优化问题的能力,因此在实际应用中表现出色。基于混沌免疫算法的基本思想是设计一个混沌运动跟随免疫算法的运动过程,使算法产生更多的多样性[6]。在迭代寻优阶段,算法通过免疫学的选择、进化和变异等机制,逐步优化抗体,直到收敛为止。最终得到全局较优解。
3.2 混沌算子的优选
混沌优化算法(Chaos Optimization,CO) 是一种基于混沌理论的全局优化算法,它也被称为混沌搜索算法(Chaos Search,CS) 。该算法的思想源自混沌现象中表现出的随机性和确定性。混沌优化算法的优点有全局寻优能力强、搜索精度高、收敛速度快等。但在解决非线性问题和高维优化问题时,可能会陷入局部最小值点。混沌映射通常用于生成混沌序列,具有非线性、对初值敏感依赖性、遍历性、随机性、长期不可预测性、轨道不稳定性和分叉等主要特征,并且其生成的混沌序列是一种随机序列。
常见的混沌映射有很多,本文主要考虑了Logistic映射、PWLCM映射、Tent映射[7]等。取x0=rand(1),u=4,生成样本空间为10 000的Logstic混沌序列,进行10 000次运算,Logistic映射样本空间的平均方差为0.122 498。取x0=rand(1),p=0.4,生成样本空间为10 000的PWLCM混沌序列,进行10 000次运算,PWLCM映射样本空间平均方差为0.083 332。取x0=rand(1),alfa=0.4,生成样本空间为10 000的Tent混沌序列,进行10 000次运算,Tent映射样本空间平均方差为0.083 266。生成样本空间为10 000的Tent混沌序列,进行10 000次运算,随机函数rand平均方差0.081 666。本文选择选择Logstic映射,其方差较大,具有更好的搜索空间分布。Logistic映射是一种常见的非线性映射。其数学表达式见公式(1) 。
x(n+1)=u×x(n)×(1-x(n)) (1)
其中u为混沌参数,u的取值范围为(0,4]。x(n)为映射变量,取值范围为(0,1),x(n)不能为0、0.25、0.5、0.75、1.0。
3.3 混沌迭代方式的选择
选择Logistic映射优化初始种群可以采用如下三种方式:
1) 首先产生一个随机矩阵,对随机矩阵中的各元素進行若干次混沌迭代,取混沌序列最后一个数代替该元素。
2) 先产生一个随机数,然后进行混沌迭代,得到一个混沌矩阵;截取该混沌序列前popsize个数得到一个全新矩阵。
3) 从2) 中混沌矩阵中随机取popsize个数得到全新矩阵。
将上述三种方式生成的矩阵进行比较:矩阵A为随机矩阵,矩阵B通过方式1)求得,矩阵B1通过方式2)求得,矩阵B2通过方式3)求得。在HPC高性能集群平台,样本容量为50,不同混沌迭代次数(1~10 000次)下各运行10 000次,获得矩阵A、B、B1、B2的最小值、最大值、中位数、平均数、方差、标准差、熵等特征的平均值。对矩阵A、矩阵B、矩阵B1、矩阵B2的主要特征进行两两比较得到结果如表1所示。
其中X_Y表示X矩阵对应样的本特征值小于Y矩阵对应样的本特征值均值的数量,由上表可知矩阵B、矩阵B1、矩阵B2优于矩阵A;矩阵B优于矩阵B1,矩阵B略优于矩阵B2;矩阵B2优于矩阵B1。总的说来,矩阵B>矩阵B2>>矩阵B1>>矩阵A,对初始样本空间采用第1) 种混沌优化效果更好。
3.4 混沌优化初始种群算子描述与实现
函数名:Logistic。功能:通过混沌随机产生初始种群。输入:矩阵A,混沌参数u,混沌迭代次数MaxIter。输出:混沌矩阵A。具体执行过程:1) 建立循环由1至MaxIter;2) 通过Logistic映射混沌迭代MaxIter代,返回矩阵A。
2.5 种群随机初始化和种群混沌初始化对比主程序描述与实现
具体实现过程:步骤1:设定算法的参数;步骤2:调用initrand函数得到随机初始种群poprand,并确保poprand中不出现Logistic混沌优化中不能出现的值(0,0.25,0.5,0.75,1) ;步骤3:对步骤2生成的随机初始种群poprand,调用Logstic函数进行Logstic混沌迭代,得到混沌初始种群popchaos;步骤4:判断是否达到最大迭代代数。如果是,则结束循环,并执行步骤7;否则继续执行步骤5;步骤5:对随机初始种群poprand和混沌初始种群popchaos分别进行激励度计算、免疫选择、免疫抑制,得到抑制种群inhipoprand和抑制种群inhipopchaos,并计算这两个种群的特征;步骤6:分别刷新种群poprand和种群popchaos,返回步骤4;步骤7:当种群迭代次数到达设定的值时停止迭代;步骤8:根据步骤5的数据,调用judgeiter函数分别计算随机初始种群poprand和混沌初始种群popchaos的收敛代数。
4 传统免疫算法与混沌优化免疫算对比仿真与分析
本文采用对比混沌改进后的免疫算法与传统免疫算法的收敛速度来评估免疫算法的优化效果。当最优个体和最优亲和度趋于某一极小值时,即可判定免疫算法已经收敛。分别对传统免疫算法和根据混沌种群初始化改进后的免疫算法进行运算分析。
1)选择测试函数f1(X1,X2) =(3/(0.05+(X12+X22)2))+X12+X22,手工运行5次,每次用initrand函数产生一个poprand随机初始化种群,对poprand种群使用Logistic函数混沌迭代100次(u=4.0) 生成popchaos混沌优化初始种群,进行免疫操作,使用随机初始种群时,免疫算法平均收敛代数为22.6。使用混沌优化初始种群时,免疫算法平均收敛代数为17.8。
2)选择测试函数f(x)=x+10×sin(5×x)+7×cos(4×x),在HPC高性能集群中对主函数进行10 000次运算,主要参数设置同表2.1,每次用initrand函数产生一个poprand随机初始化种群,对poprand种群使用Logistic函数混沌迭代10 000次(u=4.0) 生成popchaos混沌优化初始种群,进行免疫操作。对运行情况进行统计分析,运行过程中,采用混沌优化种群的迭代次数小于随机种群的情形为6 147次。
实验结果表明,经过混沌优化后的种群比随机函数产生的种群具有更好的搜索空间,能更快收敛。
5 结束语
本文首先对目前国内外有关传统免疫算法和混沌优化的研究状况进行了简单介绍,分析比较常见的几种混沌映射与随机函数产生初始种群的优越性,并选择合适的混沌优化算子对初始化种群,在免疫算法的基础上,基于混沌的相关原理对其进行优化,提高了免疫算法效率。同时为验证改进后免疫算法的改进效果,选择了合适的测试函数进行仿真实验,并对结果归纳与分析。但论文还存在着些许不足及有待进一步探索与研究的内容,如对于该算法的研究与优化仍有许多工作要做,在实际应用中需要根据具体问题进行优化参数的选择、算法的改进和优化策略的设计,以期在更多的实际问题中发挥该算法的优势和应用价值。如何在变异操作等其他免疫操作中合理运用混沌相关的理论,使得已改进的算法拥有更高的效率等。
参考文献
[1] 王琼,吕微,任伟建.免疫遗传算法及在优化问题中的应用综述[J].计算机应用研究,2009,26(12):4428-4431.
[2] 武晓朦, 袁榕泽, 李英量,等.基于新冠病毒群体免疫算法的有源配电网优化调度[J].系统仿真学报,2023(5):1-10.
[3] 王小霞,王丹,张再军.求解约束多目标区间优化问题的人工免疫算法[J].贵州大学学报(自然科学版),2022,39(5):94-99.
[4] 张春慨,徐立云,邵惠鹤.改进混沌优化及其在非线性约束优化问题中的应用[J].上海交通大学学报,2000,34(5):593-595,599.
[5] 包晓晓,叶春明,计磊,等.改进混沌烟花算法的多目标调度优化研究[J].计算机应用研究,2016,33(9):2601-2605.
[6] 王瑞琪,张承慧,李珂.基于改进混沌优化的多目标遗传算法[J].控制与决策,2011,26(9):1391-1397.
[7] 陳志刚,梁涤青,邓小鸿,等.Logistic混沌映射性能分析与改进[J].电子与信息学报,2016,38(6):1547-1551.
【通联编辑:朱宝贵】