免疫算法是受生物免疫系统的启发而推出的一种新型的智能搜索算法。它是一种确定性和随机性相结合并具有“勘探”与“开采”能力的启发式随机搜索算法。
- 历史发展
1958年,澳大利亚学者Burnet率先提出了与免疫算法(Immune Algorithm,IA)相关的理论--克隆选择原理。
1973年,Jerne提出免疫系统的模型,他基于Burnet的克隆选择学说,开创了独特型网络理论,给出了免疫系统的数学框架,并采用微分方程建模来仿真淋巴细胞的动态变化。
1986年,Farmal等人基于免疫网络学说理论构造出的免疫系统的动态模型,展示了免疫系统与其他人工智能方法相结合的可能性,开创了免疫系统研究的先河。
几十年来,免疫算法的研究与发展已涉及非线性最优化、组合优化、控制工程、机器人、故障诊断、图形处理等诸多领域。
- 免疫算法与生物免疫系统概念的对应关系
生物免疫系统 | 免疫算法 |
抗原 | 优化问题 |
抗体(B细胞) | 优化问题的可行解 |
亲和度 | 可行解的质量 |
细胞活化 | 免疫选择 |
细胞分化 | 个体克隆 |
亲和度成熟 | 变异 |
克隆抑制 | 克隆抑制 |
动态维持平衡 | 种群刷新 |
- 免疫算法流程
免疫算法的算法流程如下所示:
1、基本步骤:
(1)首先进行抗原识别,即理解代优化问题,构造合适的亲和度函数及各种约束条件。
(2)生成初始种群
(3)对种群中的每一个个体进行亲和度评价
(4)判断算法是否满足终止条件,如果满足则算法终止,输出计算结果;否则,继续寻优计算
(5)计算抗体浓度和激励度
(6)进行免疫处理,包括免疫选择、克隆、变异和克隆抑制
(7)种群刷新,以随机生成的新抗体替代种群中激励度较低的抗体,形成新一代抗体,转步骤(3)
2、关键参数
抗体种群大小:10~100,一般不超过200
免疫选择比例:一般取抗体种群大小的10%~50%
抗体克隆扩增的倍数:一般取5~10倍
种群刷新比例:每代更新的抗体一般不超过抗体种群的50%
3、算子
(1)亲和度评价算子
通常函数优化问题可以用函数值或对函数值的简单处理(如取倒数、相反数等)作为亲和度评价,而对于组合优化问题或其它问题,则需具体问题具体分析,通常是一个函数:aff(x)。
(2)抗体浓度评价算子
抗体浓度通常定义为:
其中,N为种群规模,S(pi,pj)为抗体间的相似度,可表示为:
其中,pi为种群中的第i个抗体,aff(pi,pj)为抗体i与抗体j的亲和度,δs为相似度阈值。
抗体间亲和度的计算方法主要包括基于抗体和抗原亲和度的计算方法、基于欧式距离的计算方法、基于海明距离的计算方法、基于信息熵的计算方法等。
1、基于欧式距离的抗体间亲和第计算方法
对于实数编码的算法,抗体间亲和第通常可以通过抗体向量之间的欧式距离来计算:
其中,pik为抗体i的第k维度,L是抗体编码的总维数。
2、基于海明距离的抗体间亲和度计算方法
对于基于离散编码的算法,衡量抗体-抗体亲和度最直接的方法就是利用抗体串的海明距离:
式中:
(3)激励度计算算子
抗体激励度是对抗体质量的最终评价结果,通常亲和度大、浓度低的抗体会得到较大的激励度。抗体激励度的计算通常如下所示:
其中,sim(pi)为抗体pi的激励度,a、b为计算参数,可以根据实际情况确定。
(4)免疫选择算子
根据抗体的激励度确定哪些抗体被选择进入克隆选择操作。一般,激励度高的抗体更可能被选中
(5)克隆算子
克隆算子将免疫选择算子选中的抗体进行复制。其可描述为:
其中,clone(pi)为mi个与pi相同的克隆构成的集合,mi为抗体克隆数目。
(6)变异算子
1、实数编码算法变异算子
实数变异算子的变异策略是在变异源个体中加入一个小扰动。
其中,pi,j,m为抗体pi的第m个克隆体的第j维度,δ为定义的邻域范围,Pm为变异概率。
2、离散编码算法变异算子
离散编码算法以二进制编码为主,其变异策略是从变异源抗体串中随机选取几位元,改变位元的取值(取反)。
(7)克隆抑制算子
克隆抑制算子用于对经过变异后的克隆体进行再选择,抑制亲和度低的抗体,保留亲和度高的抗体进入新的抗体种群。
(8)种群刷新算子
对种群中激励度较低的抗体进行刷新,从抗体种群中删除这些抗体并以随机生成的新抗体替代。