简介:免疫算法(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

##智能优化算法复习--免疫算法IA相关推荐

  1. 【优化布局】免疫算法求解充电站最优布局【含Matlab源码 2539期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[生产调度]基于matlab免疫算法求解生产调度零等待问题[含Matlab源码 1178期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

  2. 智能优化与机器学习结合算法实现数据预测matlab代码清单

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  3. 智能优化与机器学习结合算法实现数据分类matlab代码清单

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  4. 智能优化与机器学习结合算法实现时序数据预测matlab代码清单

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 基于matlab智能优化与机器学习结合算法数据预测清单

    ​✅作者简介:热爱Matlab仿真的开发者,Matlab项目合作可私信.

  6. 各种智能优化算法比较与实现(matlab版)

    各种智能优化算法比较与实现(matlab版) 一. 方法介绍 1免疫算法(Immune Algorithm,IA) 1.1算法基本思想 免疫算法是受生物免疫系统的启发而推出的一种新型的智能搜索算法.它 ...

  7. 6-1免疫算法(IA)原理

    查看完整原理请点击http://www.daimapi.com/algorithm6_1/ A原理 遗传算法是一种具有生成+检测 (generate and test)的迭代过程的搜索算法.从理论上分 ...

  8. 【优化布局】基于matlab免疫算法求解充电站最优布局【含Matlab源码 2539期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[生产调度]基于matlab免疫算法求解生产调度零等待问题[含Matlab源码 1178期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

  9. 人工智能:免疫算法概述

    免疫算法 Immune(免疫)是从拉丁文衍生而来的.很早以前,人们就注意到传染病患者痊愈后,对该病会有不同程度的免疫力.在医学上,免疫是指机体接触抗原性异物的一种生理反应.1958年澳大利亚学者Bur ...

  10. 【免疫算法,资源分配】基于免疫算法的认知无线电资源分配研究

    1.软件版本 matlab2017b 2.本算法理论知识 在生命科学领域,人们对遗传和免疫等自然现象进行了广泛而深入的研究.20世纪60年代,Bagley和Rosenberg等先驱使用了相关的内容和知 ...

最新文章

  1. 聊聊Spring Boot服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!...
  2. java数据库编程(JDBC)
  3. Docker入门 一 安装Docker
  4. 就业模拟试题2_答案
  5. jzoj1082-合并果子【堆,贪心】
  6. 计算机网络--接入互联网方式
  7. python内置对象是什么_Python内置对象类型之数字类型
  8. 天文学专业在什么时候学计算机,南京大学在985排名第几?南京大学最牛的专业是天文系吗?...
  9. onvif开发之设备发现功能的实现
  10. rpm方式安装MySQL-5.6
  11. 输入网址后发生了什么
  12. 职场上不会“装傻”,才是真的傻!
  13. ubuntu两张网卡时的网络设置
  14. android报错:org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject
  15. 戴爾一體機欲與蘋果決高下
  16. ios 录音生成.aac录音文件
  17. 在ArcGIS使用Modelbuilder创建拓扑检查模型
  18. 04、docker端口映射的原理及配置方法
  19. 抖音小程序开发教程之 01 构建开发环境(教程含源码)
  20. js递归处理删除某些节点

热门文章

  1. 高德地图语音助手实测:驾车导航基本实现动口不动手
  2. excel 第六次人口普查_excel 第六次人口普查_第六次全国人口普查表短表
  3. 第七次全国人口普查公报[1](第五号) ——人口年龄构成情况
  4. flash声音播放-Sound
  5. windows下yafu的下载及其安装
  6. php ddos 防御,PHP DDos的几个防御方法
  7. 掌握这些,你也可以轻松扒谱(上)
  8. 发动机噪音测试软件,噪音测试
  9. 台式计算机颜色如何矫正,显示器颜色校正,详细教您怎么校准显示器颜色
  10. 数据库系统概论第五版(第 5 章数据库完整性)习题答案