1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56Zl51r
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
人工免疫算法(Immune Algorithm)是一种具有生成+检测 (generate and test)的迭代过程的群智能搜索算法。从理论上分析,迭代过程中,在保留上一代最佳个体的前提下,免疫算法是全局收敛的。算法主要包含以下几大模块:
1.抗原识别与初始抗体产生。根据待优化问题的特点设计合适的抗体编码规则,并在此编码规则下利用问题的先验知识产生初始抗体种群。
2.抗体评价。对抗体的质量进行评价,评价准则主要为抗体亲和度和个体浓度,评价得出的优质抗体将进行进化免疫操作,劣质抗体将会被更新。
3.免疫操作。利用免疫选择、克隆、变异、克隆抑制、种群刷新等算子模拟生物免疫应答中的各种免疫操作,形成基于生物免疫系统克隆选择原理的进化规则和方法,实现对各种最优化问题的寻优搜索。
免疫算法的算子包括:亲和度评价算子、抗体浓度评价算子、激励度计算算子、免疫选择算子、克隆算子、变异算子、克隆抑制算子和种群刷新算子等。由于算法的编码方式可能为实数编码、离散编码等,不同编码方式下的算法算子也会有所不同。
抗原:在生命科学中,是指能够刺激和诱导机体的免疫系统使其产生免疫应答,并能与相应的免疫应答产物在体内或体外发生特异性反应的物质。在我们的算法中,是指所有可能错误的基因,即非最佳个体的基因。
抗体:在生命科学中,是指免疫系统受抗原刺激后,免疫细胞转化为浆细胞并产生能与抗原发生特异性结合的免疫球蛋白,该免疫球蛋白即为抗体。在本文中是指根据疫苗修正某个个体的基因所得到的新个体。其中,根据疫苗修正某个个体基因的过程即为接种疫苗,其目的是消除抗原在新个体产生时所带来的负面影响。
4.部分源码
......................................................
popsize=100; %群体规模
maxgen =40; %最大代数
lanti=10;
cross_rate=0.98; %交叉速率
mutation_rate=0.02;%变异速率
a0=0.9;
zpopsize=2;
bestf=0;
nf=0;
number=0;
I=imread('01.bmp'); %读入图像
q=isrgb(I); %判断是否为RGB真彩图像
if q==1
I=rgb2gray(I); %转换RGB图像为灰度图像
end
[m,n]=size(I); %图像大小
p=imhist(I); %显示图像数据直方图
p=p'; %阵列由列变为行
p=p/(m*n); %将p的值变换到(0,1)
figure
subplot(1,2,1);
imshow(I);
title('原图的灰度图像');
hold on
%抗体群体初始化
pop=2*rand(popsize,lanti)-1; %pop为15*10的值为(-1,1)之间的随机数矩阵
pop=hardlim(pop); %大于等于0为1,小于0为0
%免疫操作
for gen=1:maxgen
gen
% 计算抗体—抗原的亲和度
[fitness,yuzhi,number]=fitnessty(pop,lanti,I,popsize,m,n,number);
.......................................................................
if a>a0
zpop=2*rand(zpopsize,lanti)-1;
zpop=hardlim(zpop); %随机生成zpopsize个新抗体
pop(popsize+1:popsize+zpopsize,:)=zpop(:,:);
[fitness,yuzhi,number]=fitnessty(pop,lanti,I,popsize,m,n,number);
%计算抗体—抗原的亲和度
A=shontt(pop); %计算抗体—抗体的相似度
f=fit(A,fitness); %计算抗体的聚合适应度
pop=select(pop,f); %进行选择操作
end
if gen==maxgen
[fitness,yuzhi,number]=fitnessty(pop,lanti,I,popsize,m,n,number);
%计算抗体—抗原的亲和度
end
error(gen)=bestf;
end
imshow(I);
subplot(1,2,2);
fresult(I,yu);
title('阈值分割后的图像');
A315