c语言免疫算法,人工免疫算法的全局收敛性分析

收稿日期:!""#$"%$&"

基金项目:教育部高校博士点专项科研基金资助项目(!""’"(’’")

作者简介:汤放奇(&)(#$),女,湖南宁乡人,长沙理工大学电气与信息工程学院副教授,学士,主要从事电工理论与新技术的研究*

第&)卷第’期

!""#年+月

长 沙 电 力 学 院 学 报 ( 自 然 科 学 版 )

,-./012-345106751.089:/78;:/(01;./12748:04:)

9?@*&) 0?*’

1AB

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

*!""#

人工免疫算法的全局收敛性分析

汤放奇&,李茂军&,罗 安!

(&*长沙理工大学 电气与信息工程学院,湖南 长沙 #&""CC;!*湖南大学 电气与信息工程学院,湖南 长沙 #&""+!)

摘 要:提出了一种模拟生物免疫系统自我调节功能的人工免疫算法,介绍了算法的基本步骤,构造了几种人工

免疫算子*对人工免疫算法的全局收敛性进行了分析,指出在进行抗体选择时若能确保当时的最优抗体可以进入

下一代抗体群,则人工免疫算法是全局收敛的*

关 键 词:人工免疫算法;人工免疫算子;全局收敛性

中图分类号:;=&+ 文献标识码:1 文章编号:&""%$C"(!""#)"’$"""&$"#

!"#$%"’()*+)’,)-’%"./0/#1-’-*2010,0%"3445’)-"+#*0264

;1063DEB$FG&,28HD?$IAE&,2.-1E!

(&*4?@JBJ?K:@JLMNGLD@O8EK?NPDMG?E:EBGEJJNGEB,4QDEBRQD.EGSJNRGMT?K7LGJELJO;JLQE?@?BT,4QDEBRQD,#&""CC,4QGED;

!*4?@JBJ?K:@JLMNGLD@O8EK?NPDMG?E:EBGEJJNGEB,5AEDE.EGSJNRGMT,4QDEBRQD#&""+!,4QGED)

-$/2*%,2:1EDNMGKGLGD@GPPAEJD@B?NGMQPRGPA@DMGEBUG?@?BGLD@GPPAEJRTRMJPRGRVAMK?NWDNXDEXGMR

UDRGLDVVN?DLQGRVNJRJEMJX*7JSJND@DNMGKGLGD@GPPAEJ?VJNDM?NRVN?XALGEBEJWDEMGU?XGJRDNJL?ERMGMAM$

JX,DEXMQJB@?UD@L?ESJNBJELJ?KMQJD@B?NGMQPGRRMAXGJX*;QJNJRA@MRRQ?WMQDMMQJDNMGKGLGD@GPPAEJ

D@B?NGMQPGRB@?UD@L?ESJNBJEMGKMQJLANNJEM?VMGPD@DEMGU?XTPARMUJRJ@JLMJXGEM?MQJEJYMDEMGU?XT

L@ARMJN*

7).8#*9/:DNMGKGLGD@GPPAEJD@B?NGMQP;DNMGKGLGD@GPPAEJ?VJNDM?N;B@?UD@L?ESJNBJELJ

生物免疫系统的免疫功能是由抗体消灭入侵的

病原体(抗原)而实现的*模拟生物免疫系统的功能

可以构造人工免疫系统[&,!],基于人工免疫系统又

可以设计人工免疫算法(181)*人工免疫算法和遗

传算法(61R)[’,#]、蚁群算法[(,%]等都属于模拟自然

界生物行为的仿生算法*近来,有学者发现将生物免

疫系统的一些行为引入到传统的仿生算法中,构造

人工免疫算法,可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用matlab编写的人工免疫算法 clc clear all close all tic; global n ww m=100;% m--抗体规模 n=22;% n--每个抗体二进制字符串长度 ww=1;%参数个数 mn=100;%从抗体集合里选择n个具有较高亲和度的最佳个体进行克隆操作 xmin=[0 0]; xmax=[9 9]; tnum=100;% tnum--迭代代数 pMutate=0.1;% pMutate--高频变异概率 cfactor=0.2;% cfactor--克隆(复制)因子 A=InitializeFun(m,n); %生成抗体集合A,抗体数目为m,每个抗体基因长度为n F='X+10*sin(X.*5)+7*cos(X.*4)'; %目标函数 %F='sin(10*X)' FM=[]; %存放各代最优值的集合 FMN=[]; %存放各代平均值的集合 t=0; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% while t<tnum t=t+1; X=DecodeFun(A(:,1:22),xmin,xmax); %将二进制数转换成十进制数 Fit=eval(F); %以X为自变量求函数值并存放到集合Fit中 if t==1 figure(1) fplot(F,[xmin(1),xmax(1)]); grid on hold on plot(X,Fit,'k*') title('抗体的初始位置分布图') xlabel('x') ylabel('f(x)') end if t==tnum figure(2) fplot(F,[xmin(1),xmax(1)]); grid on hold on plot(X,Fit,'r*') title('抗体的最终位置分布图') xlabel('x') ylabel('f(x)') end T=[]; %把零时存放抗体的集合清空 [FS,Affinity]=sort(Fit,'descend'); %把第t代的函数值Fit按从小到大的顺序排列并存放到FS中 XT=X(Affinity(end-mn+1:end)); %把第t代的函数值的坐标按从小到大的顺序排列并存放到XT中 FT=FS(end-mn+1:end); %从FS集合中取后mn个第t代的函数值按原顺序排列并存放到FT中 FM=[FM FT(end)]; %把第t代的最优函数值加到集合FM中 %克隆(复制)操作,选择mn个候选抗体进行克隆,克隆数与亲和度成正比,AAS是每个候选抗体克隆后在T中的开始坐标 [T,AAS]=ReproduceFun(mn,cfactor,m,Affinity,A,T); %高频变异操作,变异概率反比于抗体的亲和度 T=Hypermutation(T,n,pMutate,xmax,xmin); %把以前的抗体保存到临时克隆群体T里 AF1=fliplr(Affinity(end-mn+1:end)); %从大到小重新排列要克隆的mn个原始抗体 T(AAS,:)=A(AF1,:); %把以前的抗体保存到临时克隆群体T里%从临时抗体集合T中根据亲和度的值选择mn个(多峰函数的解决) X=DecodeFun(T(:,1:22),xmin,xmax); Fit=eval(F); AAS=[0 AAS]; FMN=[FMN mean(Fit)]; for i=1:mn [OUT(i),BBS(i)]=min(Fit(AAS(i)+1:AAS(i+1))); %克隆子群中的亲和度最大的抗体被选中 BBS(i)=BBS(i)+AAS(i); end AF2=fliplr(Affinity(end-mn+1:end)); %从大到小重新排列要克隆的mn个原始抗体 A(AF2,:)=T(BBS,:); %选择克隆变异后mn个子群中的最好个体保存到A里,其余丢失 end disp(sprintf('\n The optimal point is:')); disp(sprintf('\n x: %2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值