免疫优化算法Python实现

article/2025/9/24 11:33:17

免疫算法

免疫算法是模仿生物免疫机制,结合基因的进化机理,人工构造出的一种新型智能优化算法。

  • 它具有一般免疫系统的特征,采用群体搜索策略,通过迭代计算,最终以较大的概率得到问题的最优解。

  • 相比较于其他算法,免疫算法利用自身产生多样性和维持机制的特点,保证了种群的多样性,克服了一般寻优过程(特别是多峰值的寻优过程)中不可避免的“早熟”问题,可以求得全局最优解。

  • 免疫算法具有自适应性、随机性、并行性、全局收敛性、种群多样性等优点。

2.算法原理

在这里插入图片描述
根据上述的对应关系,模拟生物免疫应答的过程形成了用于优化计算的免疫算法。算法主要包含以下几大模块:

  • 抗原识别与初始抗体产生。根据待优化问题的特点设计合适的抗体编码规则,并在此编码规则下利用问题的先验知识产生初始抗体种群。
  • 抗体评价。对抗体的质量进行评价,评价准则主要为抗体亲和度和个体浓度,评价得出的优质抗体将进行进化免疫操作,劣质抗体将会被更新
  • 免疫操作。利用免疫选择、克隆、变异、克隆抑制、种群刷新等算子模拟生物免疫应答中的各种免疫操作,形成基于生物免疫系统克隆选择原理的进化规则和方法,实现对各种最优化问题的寻优搜索。

3. 免疫算法算子

免疫算法的算子包括:亲和度评价算子、抗体浓度评价算子、激励度计算算子、免疫选择算子、克隆算子、变异算子、克隆抑制算子和种群刷新算子等。由于算法的编码方式可能为实数编码、离散编码等,不同编码方式下的算法算子也会有所不同。

3.1亲和度评价算子

亲和度评价表征算子免疫细胞与抗原的结合强度。
亲和度评价算子通常是一个函数aff(x): S∈R
其中 S为问题的可行解区间,R为实数域。函数的输入为一个抗体个体(可行解),输出即为亲和度评价结果。

3.2抗体浓度评价算子:

抗体浓度评价表征算子抗体种群的多样性好坏。抗体浓度过高意味着种群中非常类似的个体大量存在,不利于全局优化。
抗体浓度通常定义为
在这里插入图片描述

3.3激励度计算算子

抗体激励度是对抗体质量的最终评价结果,需要综合考虑抗体亲和度和抗体浓度,通常亲和度大、浓度低的抗体会得到较大的激励度。

抗体激励度的计算通常可以利用抗体亲和度和抗体浓度的评价结果进行简单的数学运算得到,如
在这里插入图片描述
a、b 为计算参数,可以根据实际情况确定。

3.4 免疫选择算子

免疫选择算子根据抗体的激励度确定选择哪些抗体进入克隆选择操作

在抗体群中激励度高的抗体个体具有更好的质量,更有可能被选中进行克隆选择操作,在搜索空间中更有搜索价值。

3.5 克隆算子

克隆算子将免疫选择算子选中的抗体个体进行复制。克隆算子可以描述为:
在这里插入图片描述
clone(abi)为mi个与abi相同的克隆构成的集合,mi为抗体克隆数目,可以事先确定,也可以动态自适应计算。

3.6 变异算子

  • 实数编码变异算子:实数编码算法的变异策略是在变异源个体中加入一个小扰动,使其稍偏离原来的位置,落入源个体邻域中的另一个位置,实现变异源邻域的搜索。实数编码算法变异算子可以描述:
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 离散编码变异算子:
    离散编码算法以二进制编码为主,其变异策略是从变异源抗体串中随机选取几位元,改变位元的取值(取反),使其落在离散空间变异源的邻域。

变异算子对克隆算子得到的抗体克隆结果进行变异操作,以产生亲和度突变,实现局部搜索。
变异算子是免疫算法中产生有潜力的新抗体、实现区域搜索的重要算子,它对算法的性能有很大影响。
变异算子也和算法的编码方式相关,实数编码的算法和离散编码的算法采用不同的变异算子。

3.7克隆抑制算子

克隆抑制算子用于对经过变异后的克隆体进行再选择,抑制亲和度低的抗体,保留亲和度高的抗体进入新的抗体种群

在克隆抑制的过程中,克隆算子操作的源抗体与克隆体经变异算子作用后得到的临时抗体群共同组成一个集合,克隆抑制操作将保留此集合中亲和度最高的抗体,抑制其他抗体。

由于克隆变异算子操作的源抗体是种群中的优质抗体,而克隆抑制算子操作的临时抗体集合中又包含了父代的源抗体,因此在免疫算法的算子操作中隐含了最优个体保留机制。

3.8种群刷新算子

种群刷新算子用于对种群中激励度较低的抗体进行刷新
从抗体种群中删除这些抗体并以随机生成的新抗体替代,
有利于保持抗体的多样性,实现全局搜索,探索新的可行解空间区域

4.算法流程

目前还没有统一的免疫算法及框图,下面介绍一种含有以上免疫算子的算法流程,分为以下几个步骤:
(1)首先进行抗原识别,即理解待优化的问题,对问题进行可行性分析,提取先验知识,构造出合适的亲和度函数,并制定各种约束条件。

(2)然后产生初始抗体群,通过编码把问题的可行解表示成解空间中的抗体,在解的空间内随机产生一个初始种群。

(3)对种群中的每一个可行解进行亲和度评价。

(4)判断是否满足算法终止条件:如果满足条件则终止算法寻优过程,输出计算结果;否则继续寻优运算。

(5)计算抗体浓度和激励度。

(6)进行免疫处理,包括免疫选择、克隆、变异和克隆抑制。

免疫选择: 根据种群中抗体的亲和度和浓度计算结果选择优质抗体,使其活化;

克隆: 对活化的抗体进行克隆复制,得到若干副本;

变异: 对克隆得到的副本进行变异操作,使其发生亲和度突变;

克隆抑制: 对变异结果进行再选择,抑制亲和度低的抗体,保留亲和度高的 变异结果。

(7)种群刷新,以随机生成的新抗体替代种群中激励度较低的抗体,形成新一代抗体,转步骤(3)。

免疫算法运算流程如下图所示:
在这里插入图片描述

5.关键参数说明

在这里插入图片描述

6.算法特点

全局搜索能力。模仿免疫应答过程提出的免疫算法是一种具有全局搜索能力的优化算法
多样性保持机制。对抗体进行浓度计算,并将浓度计算的结果作为评价抗体个体优劣的一个重要标准;它使浓度高的抗体被抑制,保证抗体种群具有很好的多样性,这也是保证算法全局收敛性能的一个重要方面。
鲁棒性强。基于生物免疫机理的免疫算法不针对特定问题,而且不强调算法参数设置和初始解的质量,利用其启发式的智能搜索机制,即使起步于劣质解种群,最终也可以搜索到问题的全局最优解,对问题和初始解的依赖性不强,具有很强的适应性和鲁棒性。
并行分布式搜索机制。免疫算法不需要集中控制,可以实现并行处理。尤其适合于多模态的优化问题。

Python代码实现

import numpy as np
from scipy import spatial
import matplotlib.pyplot as pltnum_points = 50points_coordinate = np.random.rand(num_points, 2)  # generate coordinate of points
distance_matrix = spatial.distance.cdist(points_coordinate, points_coordinate, 	metric='euclidean')
def cal_total_distance(routine):'''The objective function. input routine, return total distance.cal_total_distance(np.arange(num_points))'''num_points, = routine.shapereturn sum([distance_matrix[routine[i % num_points], routine[(i + 1) % num_points]] 	for i in range(num_points)])from sko.IA import IA_TSPia_tsp = IA_TSP(func=cal_total_distance, n_dim=num_points, size_pop=500, 	max_iter=800, prob_mut=0.2,T=0.7, alpha=0.95)best_points, best_distance = ia_tsp.run()
print(best_points)
print(best_distance)
fig, ax = plt.subplots(1, 2)
best_points_ = np.concatenate([best_points, [best_points[0]]])
best_points_coordinate = points_coordinate[best_points_, :]
ax[0].plot(best_points_coordinate[:, 0], best_points_coordinate[:, 1], 'o-r')
ax[1].plot(ia_tsp.generation_best_Y)
plt.show()

在这里插入图片描述
[31 45 8 32 28 10 2 7 22 21 15 16 26 19 46 1 39 6 14 33 36 23 38 20
24 34 30 37 9 4 42 48 47 11 49 29 0 27 44 40 25 41 43 18 3 13 5 35
12 17]
[5.37233227]

可以看到效果还是非常好的


http://chatgpt.dhexx.cn/article/cOGtd8wl.shtml

相关文章

人工免疫算法详解

人工免疫算法(Artificial Immune Algorithm,AIA)是一种基于生物免疫系统(BIS)的启发式优化算法,是对生物免疫算法的拓展和改进。AIA 借鉴了生物免疫系统中抗体和免疫记忆细胞等概念,采用人工免疫…

automl-演化算法-免疫算法/免疫遗传算法

遗传算法的退化问题: 在对算法的实施过程中不难发现两个主要遗传算子都是在一定发生概率的条件下,随机地、没有指导地迭代搜索,因此它们在为群体中的个体提供了进化机会的同时,也无可避免地产生了退化的可能。在某些情况下&#x…

##智能优化算法复习--免疫算法IA

简介:免疫算法(Immune Algorithm,IA)是指以在人工免疫系统的理论为基础,实现了类似于生物免疫系统的抗原识别、细胞分化、记忆和自我调节的功能的一类算法。 免疫算法和遗传算法很类似: 遗传算法的思想简…

智能优化算法:冠状病毒群体免疫优化算法 -附代码

智能优化算法:冠状病毒群体免疫优化算法 文章目录 智能优化算法:冠状病毒群体免疫优化算法1.算法原理2.算法结果3.参考文献4.Matlab 摘要:冠状病毒群体免疫优化算法是于2020年提出的一种新型智能优化算法。 1.算法原理 冠状病毒群免疫优化算…

人工免疫算法学习通解

人工免疫算法(Artificial Immune System,AIS)是一种基于免疫系统的启发式优化算法,其基本思想是模拟生物体内的免疫系统对抗外部威胁的过程,通过生成、选择、进化、记忆和协同等机制来搜索最优解。 AIS 通常包含两个主…

【学习】人工免疫算法

开始项目后,我主要负责研究网络自免疫,对人工免疫系统有了一些初步的了解。 人工免疫特点: 1.识别与分类:可是识别自体和非自体。(如阴性选择法建立的检测器) 2.多样性:可以对进行基因重组&am…

【智能优化算法】人工免疫算法 (Immune Algorithm, IA), 1986

前言 最早的免疫系统起源于1973-1976年间Jerne的三篇关于免疫网络的文章1986年Farmer在此基础上提出了基于网络的二进制的免疫系统模拟生物免疫系统的抗原识别、细胞分化、记忆和自我调节功能的一类算法 遗传算法的思想简单讲就是父代之间通过交叉互换以及变异产生子代&#…

基于免疫优化算法的TSP算法

文章目录 一、理论基础二、案例背景1、问题描述2、解决思路及步骤(1). 算法流程(2). 算法实现过程 三、MATLAB程序实现1、程序源码2、结果分析 四、参考文献 一、理论基础 TSP(traveling salesman problem,旅行商问题)是典型的NP完全问题,即其最坏情况下的时间复杂…

2018-4-8免疫算法(Immune IA)

学习资料来源: 【图文】免疫算法_百度文库 https://wenku.baidu.com/view/39eb47ec551810a6f52486ee.html?sxts1523143415445 《智能优化算法以及matlab实现》包子阳,余继周 编著 自己觉的好资源,但是看不懂 三种人工免疫算法综述_图文…

免疫算法(二进制)算例(源码实现)

之前我们讲解了免疫算法以及离散的免疫算法。见链接: 万字长文了解免疫算法原理 及求解复杂约束问题(源码实现) 离散免疫算法求解旅行商问题(源码实现) 今天讲下二进制的免疫算法。 我爱学习,爱玉酱。 算例 假设一个数PD210&#…

免疫算法(Immune Algorithm)

概念 人工免疫算法(Immune Algorithm)是一种具有生成检测 (generate and test)的迭代过程的群智能搜索算法。从理论上分析,迭代过程中,在保留上一代最佳个体的前提下,遗传算法是全局收敛的。 对于遗传算法:在对算法的实施过程中…

人工免疫算法概述

一、免疫系统 什么是病毒? 病毒是一种简单的生活形式:包裹在保护壳中的一些基因。这些基因是制造新病毒的指令。 在细胞外,病毒无法繁殖。但是一旦病毒入侵了活细胞,它就会将该细胞变成病毒工厂。随着时间的流逝,成…

人工智能-免疫算法

这是一类智能的算法,没有什么固定的模式,就是一个算法思想,可以给我们一些有价值的指导,当我们想要做一些相关工作的时候,可以扩宽我们的视野,打开我们的脑洞,借鉴其中的原理。我不想多说里面的…

免疫算法Python实现

1.流程 免疫算法与遗传算法其实非常相似,但其独特的地方在于,免疫算法用激励度而非亲和度来衡量结果的好坏,而激励度又与抗体密度有关,这就使得密度大的抗体激励度反而小,让免疫算法有全局搜索的能力,不容易…

免疫算法详解

基本思想是将想要求解的各类优化问题的目标函数(约束条件)与抗原相对应,找到可以与抗原进行亲和反应的抗体,该抗体就是要求的最优解。 最核心要解决的就是 1.计算抗原和抗体的亲和度,亲和度越高,越可能是最…

人工免疫算法总结

人工免疫算法简介 免疫系统 免疫系统是哺乳动物抵御外来病毒侵害的防御系统,动物的生命过程中会遇到各种伤害可能,免疫系统为其正常的活动起着重要的作用。免疫系统的一大特点就是用有限的资源有效地应对了数量庞大且种类多变的病毒入侵。免疫算法基于…

免疫算法小结及算法实例(附Matlab代码)

文章目录 1、免疫算法流程2、关键参数说明3、MATLAB仿真实例3.1 免疫算法求一元函数的极值3.2 免疫算法求二元函数的极值3.3 免疫算法求解旅行商问题 4、免疫算法的特点 1、免疫算法流程 与遗传算法等其他智能优化算法类似,免疫算法的进化寻优过程也是通过算子来实…

免疫优化算法

免疫优化算法 免疫算法是模仿生物免疫机制,结合基因的进化机理,人工构造出的一种新型智能优化算法。 它具有一般免疫系统的特征,采用群体搜索策略,通过迭代计算,最终以较大的概率得到问题的最优解。 相比较于其他算法…

智能优化算法之免疫算法(IA)

这里写目录标题 1. 免疫算法思想起源2. 算法原理3. 免疫算法算子3.1 算法算子3.1.1 亲和度评价算子3.1.2 抗体浓度评价算子:3.1.3 激励度计算算子3.1.4 免疫选择算子3.1.5 克隆算子3.1.6 变异算子3.1.7 实数编码变异算子3.1.8 离散编码变异算子3.1.9 克隆抑制算子3.…

免疫算法(Immune Algorithm,IA)实例详解

免疫算法是将免疫概念及其理论应用于遗传算法,在保留原算法优良特性的前提下,利用抗体浓度评价算子和激励度计算算子来保持群体的多样性,克服了一般寻优过程中(特别是多峰值)不可避免的“早熟”问题。 1 算法概念 免…