人工免疫算法总结

article/2025/9/24 13:43:22

人工免疫算法简介

免疫系统

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

生物体液免疫的机理的启示

  • 抗原识别:免疫系统能够识别出抗原并根据不同抗原的特性生成不同的浆细胞来产生抗体
  • 根据亲和力来选择浆细胞:若产生的抗体与抗原的亲和度高则保留,否则筛掉
  • 存在记忆细胞:B细胞分化为浆细胞和记忆细胞,记忆细胞保存亲和度高的抗体信息
  • 促进和抑制抗体的产生:能产生亲和度高抗体的浆细胞被促进,反之则被抑制
  • 通过交叉变异产生下一代抗体

免疫算法的特点

  • 多样性,对抗体的克隆和变异有助于产生新的抗体
  • 保证收敛,收敛速度快,即产生满足要求的最优解所用时间较短

免疫算法基本过程

生物免疫和免疫算法概念之间的对应关系

生物免疫系统免疫算法
抗原优化问题
抗体优化问题的可行解
亲和度可行解的质量
细胞活化免疫选择
细胞分化个体克隆
亲和度成熟变异
克隆抑制优秀个体选择
动态稳态维持种群刷新

免疫算法的步骤

  1. 抗原的识别阶段:输入目标函数和各种约束作为免疫算法的抗原,并选择亲和度函数;

  2. 初始抗体的产生阶段:在解空间中用随机方法产生抗体;

  3. 亲和力的计算:分别计算抗原和抗体之间的亲和性并排序

  4. 记忆单元的活化:将与抗原亲和性高的抗体加入到记忆单元,并执行免疫操作

  5. 抗体的产生:通过交叉和变异和种群刷新产生进入下一代的抗体

  6. 终止记忆细胞的迭代:在达到指定阈值的时候终止记忆细胞的生成和选取;

应用免疫算法求解实际问题时,常将抗原和抗体之间的亲和性对应于优化问题的目标函数、优化解、解与目标函数的匹配程度

免疫操作

即免疫处理,包括免疫选择、克隆、变异和克隆抑制。

  • 免疫选择:根据种群中抗体的亲和度和浓度计算结果选择优质抗体,使其活化;
  • 克隆:对活化的抗体进行克隆复制,得到若干副本;
  • 变异:对克隆得到的副本进行变异操作,使其发生亲和度突变;
  • 克隆抑制:对变异结果进行再选择,抑制亲和度低的抗体,保留亲和度高的变异结果。

免疫算法的流程图

流程图

代码实现

问题:

代码使用免疫算法计算这个函数 h ( x ) = x + 10 ∗ s i n ( 5 x ) + 7 ∗ c o s ( 4 x ) h(x) = x + 10*sin(5x) + 7*cos(4x) h(x)=x+10sin(5x)+7cos(4x)在区间 [ − 10 , 10 ] [-10,10] [10,10]上的最大值(和上次的模拟退火算法一样,不过上次算的最小值)。该函数图像为:

函数图像

该函数的最大值在 x = 7.8568 x = 7.8568 x=7.8568左右。

MATLAB实现代码如下:

支持函数:二进制串转十进制

function value10 = decode2to10( vector2 )
%该函数用来将二进制串转化为十进制
%   只能用来转化向量形式的字符串,如果有矩阵,应使用for迭代%检测传入参数是否为向量,并提取向量长度[a,b] = size(vector2);if (a == 1) && (b > 1)BitLen = b;elseif (b == 1) && (a > 1)BitLen = a;elseBitLen = 0;end%转化为十进制value10 = vector2(BitLen);for i = 1:BitLen-1value10 = value10+vector2(BitLen-i)*power(2,i);end
end

主程序:

% 使用免疫算法计算这个函数h = @(x) x + 10.*sin(5.*x) + 7.*cos(4.*x) 在[-10,10]上的最大值
% 它真正的最大值在x = 7.8568附近
% 编码采用二进制编码法,需要二进制生成函数和二进制解码函数的支持
% 采用随机选取三个位发生反转来实现变异bounds = [-10,10]; %求解区间
precision = 0.0001; %求解精度
N = ceil(log2((bounds(2)-bounds(1))/precision)); %根据区间和精度求出编码长度N
NP = 200; %种群数目
G = 20; %最大代数
Ncl = 10; %单次克隆个体数
Fn = 0.5; %种群刷新比例
f = @(x) bounds(1)+x*(bounds(2)-bounds(1))/(2^N); %解码后十进制书到求解区间的映射函数
h = @(x) x + 10.*sin(5.*x) + 7.*cos(4.*x); %直接把待求函数作为亲和度函数%初始化抗体种群
pop = round(rand(NP,N)); %每行是一个抗体,共NP个%开始迭代
gen = 0;
while 1%检查是否达到最大代数gen = gen + 1;if gen > Gbreakend%计算种群亲和度affinity = zeros(NP,1);for i = 1:NPaffinity(i) = h(f(decode2to10(pop(i,:))));end%根据亲和度大小排序[~,index] = sort(affinity,'descend');sortpop = pop(index,:);%活化:对前NP*(1-Fn)个个体进行免疫操作for i = 1:round(NP*(1-Fn))%克隆:ca = repmat(sortpop(i,:), Ncl, 1);%变异:对每个克隆体,随机选取三位取反for j = 2:Nclindexx = ceil(18*rand(1,3));for k = 1:3if ca(j,indexx(k)) == 0ca(j,indexx(k)) = 1;elseca(j,indexx(k)) = 0;endendend%克隆抑制affi_ca = zeros(1,Ncl);for j = 1:Nclaffi_ca(j) = h(f(decode2to10(ca(j,:))));end[~,indexx] = sort(affi_ca,'descend');pop(i,:) = ca(indexx(1),:);end%种群刷新pop((round(NP*(1-Fn))+1):NP,:) = round(rand((NP-round(NP*(1-Fn))),N));end%迭代结束,计算最终种群的亲和度
final_pop = zeros(1,NP);
for i = 1:NPfinal_pop(i) = f(decode2to10(pop(i,:)));
end
affinity = h(final_pop);%输出前10个看看?
final_pop(1:10)
affinity(1:10)

代码输出:

二十代就收敛,太惊艳了!(一开始我还用了1000代,MATLAB算了二三十秒/笑哭)

代码输出


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

相关文章

免疫算法小结及算法实例(附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 算法概念 免…

一文搞懂什么是免疫算法Immune Algorithm【详细介绍】

本文参考了很多张军老师《计算智能》的第七章知识。 本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453 免疫算法 1.1 算法简介 免疫算法(Immune Algorithm,IA):是指以在人工免疫系统的理论为基…

免疫算法(Immune Algorithm)详解

关于免疫算法(IA),其功能与遗传算法、模拟退火等算法实现的功能是相同的,都是用来求最优解。例如求函数最值、旅行商问题等。从本质上说,免疫算法更像是遗传算法的一种延申。IA虽然其中借鉴了生物学(免疫学…

免疫算法

免疫算法是受生物免疫系统的启发而推出的一种新型的智能搜索算法,是一种确定性和随机性选择相结合并具有"勘探"与"开采"能力的启发式随机搜索算法。 算法主要的步骤: (1)抗原识别与初始抗体产生。 (2)抗体评价 (3)免疫操作 免疫算法的特点: (1)…

闵可夫斯基距离—大白话篇幅[有错误的话请指教]

包括:曼哈顿距离,欧氏距离,切比雪夫距离; 举例子:两个点:A(1,9),B(5,8) 1,曼哈顿距离: 就是取和:|(1-5)||(9-8)|5;曼哈顿…

闵可夫斯基距离(LP距离)、曼哈顿距离、欧式距离、切比雪夫距离、马哈拉诺比斯距离、相关系数、夹角余弦

标题闵可夫斯基距离(LP距离)、曼哈顿距离、欧式距离、切比雪夫距离、马哈拉诺比斯距离、相关系数、夹角余弦 在聚类中,可以将样本集合看作是向量空间中的点的集合,以该空间的距离表示样本之间相似度。常用的距离有闵可夫斯基距离,闵可夫斯基…

【Python经典题目】闵可夫斯基距问题

题目 定义一个高维空间样本点集类HDPoints,须包含以下数据属性与方法属性: (a)数据属性self.points:类型为列表,由多个子列表构成,每个子列表表示高维空间中的一个数据点,且数据维度可以任意,…

欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离

转载自:https://baijiahao.baidu.com/s?id1577090844304882120&wfrspider&forpc 欧氏距离(Euclidean Distance) 欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。 欧氏距离 二…

数值属性的相异性:闵可夫斯基距离

本文介绍数值属性刻画的对象之间的相异性度量,首先,应该把数据进行规范化,使之落入更小的值域,例[0,1],[0.0,1.0] 1:最流行的距离度量:欧几里得距离 2:曼哈顿距离 3&…

各种距离 欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准欧氏距离、马氏距离、余弦距离、汉明距离、杰拉德距离、相关距离、信息熵...

1. 欧氏距离(Euclidean Distance) 欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。 二维平面上点a(x1,y1)与b(x2,y2)间的欧氏距离: 三维空间点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离: n维空间点a(x1…

常用的相似度计算方法----欧式距离、曼哈顿距离、马氏距离、余弦、汉明距离、切比雪夫距离、闵可夫斯基距离、马氏距离

在深度学习以及图像搜索中,经常要对特征值进行比对,得到特征的相似度,常见的特征值比对方法有汉明距离、余弦距离、欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、马氏距离等,下面对各种比对方法分别进行介绍。 目录 1汉…

机器学习部分:距离的度量(欧氏距离,曼哈顿距离,夹角余弦距离,切比雪夫距离,汉明距离,闵可夫斯基距离,马氏距离)

目录 距离计算方法 1.欧式距离EuclideanDistance 2. 曼哈顿距离(ManhattanDistance) 3. 夹角余弦 4.切比雪夫距离(Chebyshevdistance) 5. 汉明距离(Hamming Distance) 6. 闵可夫斯基距离(Minkowski Distance) 7. 马氏距离(Mahalanobis Distance)…

【大数据】曼哈顿距离 欧几里得距离 与 闵可夫斯基距离Minkowski Manhattan Euclidean

这里写目录标题 闵可夫斯基距离曼哈顿距离欧几里得距离 e . g . e.g. e.g. 曼哈顿距离与欧几里得距离 三种距离计算算法 闵可夫斯基距离 闵可夫斯基距离(Minkowski Dis) ,是 曼哈顿距离(Manhattan Dis) 与 欧几里得距离(Euclidean Dis) 的一般形式。一般不常直接使…

样本相似性度量(欧几里得距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化欧氏距离)

样本相似性度量(欧几里得距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化欧氏距离) 在分类过程中,常常需要估算不同样本直接的 Similarity Measurement (相似性度量)。 此时常用的方法就是计算两个样本直接…

机器学习聚类算法中的闵可夫斯基距离

最近闲着没事了解一下聚类算法,闵可夫斯基距离真有趣,搞得我有点一头雾水,废话不多,上定义: 本文从公式上表述了欧几里得距离、曼哈顿距离、切比雪夫距离记忆闵可夫斯基距离之间的关系。 一般而言,定义一…

距离度量:欧式距离/曼哈顿距离/切比雪夫距离/闵可夫斯基距离/标准化欧氏距离/余弦距离/汉明距离/杰卡德距离/马氏距离

日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 2 常见的距离公式 2.1 欧式距离(Euclidean Distance): 欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接…

欧式距离余弦相似度matlab,相似度计算——欧氏距离,曼哈顿距离,闵可夫斯基距离,汉明距离,夹角余弦...

在机器学习领域,被俗称为距离,却不满足三条距离公理的不仅仅有余弦距离(满足正定性和对称性,但是不满足三角不等式),还有KL距离( Kulback- Leibler Divergence),也叫作相对熵(不满足对称性和三角不等式),它常用于计算两个分布之间的差异 欧氏距离 欧氏距离: 切比雪夫距离…