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

article/2025/9/24 12:41:10

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

免疫算法和遗传算法很类似:

遗传算法的思想简单讲就是父代之间通过交叉互换以及变异产生子代,不断更新适应度更高的子代,从而达到优化的效果。

而免疫算法本质上其实也是更新亲和度(这里对应上面的适应度)的过程,抽取一个抗原(问题),取一个抗体(解)去解决,并计算其亲和度,而后选择样本进行变换操作(免疫处理),借此得到得分更高的解样本,在一次一次的变换过程中逐渐接近最后解。

在生物学中学过免疫系统,大概讲述一下



免疫算法基本流程 :

首先对应一下免疫系统和免疫算法

综上:免疫算法主要包括以下模块

(1)抗原识别与初始抗体的产生

(2)抗体评价

(3)免疫操作(利用免疫选择,克隆,变异,克隆抑制,种群刷新等算子模拟生物免疫)

主要特点:有全局搜索能力,多样性保持机制,鲁棒性强,并行式搜索机制,避免“早熟”(陷入局部最优)

下面进入正题,开始免疫算法

基本流程

 

1、基本步骤:

    (1)首先进行抗原识别,即理解代优化问题,构造合适的亲和度函数及各种约束条件。

    (2)生成初始种群

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

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

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

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

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

步骤(3) 

2.  关键参数

         抗体种群大小NP:10~100,一般不超过200

      免疫选择比例:一般取抗体种群大小的10%~50%

      抗体克隆扩增的倍数:一般取5~10倍

      种群刷新比例:每代更新的抗体一般不超过抗体种群的50%

      最大进化代数G:一般100-500

3、算子

    (1)亲和度评价算子

     通常函数优化问题可以用函数值或对函数值的简单处理(如取倒数、相反数等)作为亲和度评价,而对于组合优化问题或其它问题,则需具体问题具体分析,通常是一个函数:aff(x)。在这可以取1/(1+目标函数)来作为亲和度函数,更多的还是具体问题具体分析。

(2)抗体浓度评价算子

             抗体浓度通常定义为:

   

其中,N为种群规模,S(pi,pj)为抗体间的相似度,可表示为: 

其中,pi为种群中的第i个抗体,aff(pi,pj)为抗体i与抗体j的亲和度,δs为相似度阈值。

      抗体间亲和度的计算方法主要包括基于抗体和抗原亲和度的计算方法、基于欧式距离的计算方法、基于海明距离的计算方法、基于信息熵的计算方法等。

 1、基于欧式距离的抗体间亲和第计算方法

    对于实数编码的算法,抗体间亲和第通常可以通过抗体向量之间的欧式距离来计算:

 其中,pik为抗体i的第k维度,L是抗体编码的总维数。 

***举个例子说明一下:比如有两个四维的抗体,那么他们的抗体间亲和度怎么算呢,

第一个为(2,3,4,5),第二个为(3,4,5,2),那个aff=sqrt((2-3)^2+(3-4)^2)+...+(5-2)^2)    是不是很简单的就可以计算出来

    2、基于海明距离的抗体间亲和度计算方法

        对于基于离散编码的算法,衡量抗体-抗体亲和度最直接的方法就是利用抗体串的海明距离: 

式中:

 

***举个例子说明一下,比如有两个四维的抗体,

第一个为(2,3,4,5),第二个为(6,3,4,2),那么∂ 1=0,∂ 2=1...∂ 4=0,那么∂ k就可以求出来了,在这里就是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)种群刷新算子

     对种群中激励度较低的抗体进行刷新,从抗体种群中删除这些抗体并以随机生成的新抗体替代。

 下面来展示一个具体实例

用免疫算法解决TSP问题(matlab实现)

什么是TSP问题呢

旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。

%%%%%%%%%%%%%%%%%%%%免疫算法求解TSP%%%%%%%%%%
%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
close all;
clc;
c = [1304 2313;3639 1315;4177 2244;3712 1399;3488 1535;3326 1556;2788 1229;4196 1044;4312 790 ;4386 570 ;3007 1970;2562 1756;2788 1491;2381 1676;1332 695; 3715 1678;3918 2179;4061 2370;3780 2212;3676 2578;4029 2838;4263 2931;3429 1908;3507 2376;3394 2643;3439 3201;2935 3240;3140 3550;2545 2357;2778 2826;2370 2975];N = size(c,1);D = zeros(N);%%%%%%%%%%%%%%%%%%%%%%%%%%%求任意两个城市距离间隔矩阵%%%%%%
for i=1:Nfor j=1:ND(i,j)=((c(i,1)-c(j,1))^2+(c(i,2)-c(j,2))^2)^0.5;end
end
NP=200;            %免疫个体数目
G=1000;        %最大免疫代数
f=zeros(N,NP);  %用于存储种群
for i=1:NPf(:,i)=randperm(N);  %随机生成初始种群
end
len=zeros(NP,1);      %存储路径长度
for i=1:NPlen(i)=func3(D,f(:,i),N);  % 计算路径长度
end
[Sortlen,Index]=sort(len);   
Sortf=f(:,Index);            %种群按个体排序
gen=0;                       %免疫代数
Ncl=10;                      %克隆次数%%%%%%%%%%%%%%%%%%%%%免疫循环%%%%%%%%%%%%
while gen<Gfor i=1:NP/2%%%%%选激励度前NP/2个个体进行免疫操作%%%%%%%%%a=Sortf(:,i);Ca=repmat(a,1,Ncl);for j=1:Nclp1=floor(1+N*rand());p2=floor(1+N*rand());while p1==p2p1=floor(1+N*rand());p2=floor(1+N*rand());endtmp=Ca(p1,j);Ca(p1,j)=Ca(p2,j);Ca(p2,j)=tmp;endCa(:,1)=Sortf(:,i);%%%%%%%%%%克隆抑制,保留亲和度最高的个体%%%%%for j=1:NclCalen(j)=func3(D,Ca(:,j),N);end[SortCalen,Index]=sort(Calen);SortCa=Ca(:,Index);af(:,i)=SortCa(:,1);alen(i)=SortCalen(1);end%%%%%%%%%%%%%%%%种群刷新%%%%%%%%%%%%%%%for i = 1:NP/2bf(:,i) = randperm(N);blen(i) = func3(D,bf(:,i),N);end%%%%%%%%%%%%%%%%%%免疫种群与新种群合并%%%%%%%%%%f = [af,bf];len = [alen,blen];[Sortlen,Index] = sort(len);Sortf = f(:,Index);gen = gen + 1;trace(gen) = Sortlen(1);end%%%%%%%%%%%%%%输出优化结果%%%%%%%%%%%%Bestf = Sortf(:,1);Bestlrn = trace(end);figurefor i = 1:N - 1plot([c(Bestf(i),1),c(Bestf(i + 1),1)],...[c(Bestf(i),2),c(Bestf(i + 1),2)],'bo-');hold on ;endplot([c(Bestf(N),1),c(Bestf(1),1)],...[c(Bestf(N),2),c(Bestf(1),2)],'ro-');title(['优化最短距离:',num2str(trace(end))]);figure,plot(trace)xlabel('迭代次数')ylabel('目标函数值')title('亲和度进化曲线')%%%%%%%%%%计算路线总长度%%%%%%%%%%%%%%%%%function len = func3(D,f,N)len = D(f(N),f(1));for i = 1:(N - 1)len = len + D(f(i),f(i + 1));endend

 

 

 

 

 

 

 


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

相关文章

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

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

人工免疫算法学习通解

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

【学习】人工免疫算法

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

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

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

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

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

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

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

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

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

免疫算法(Immune Algorithm)

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

人工免疫算法概述

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

人工智能-免疫算法

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

免疫算法Python实现

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

免疫算法详解

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

人工免疫算法总结

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

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

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

免疫优化算法

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

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

这里写目录标题 1. 免疫算法思想起源2. 算法原理3. 免疫算法算子3.1 算法算子3.1.1 亲和度评价算子3.1.2 抗体浓度评价算子&#xff1a;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)实例详解

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

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

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

免疫算法(Immune Algorithm)详解

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

免疫算法

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