免疫算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
免疫算法理论与应用近代免疫的概念是指机体对自己或非己的识别并排除非己的功能,目的是维持自身生理平衡与稳定.免疫算法就是模拟免疫系统抗原识别、抗原与抗体结合及抗体产生过程,并利用免疫系统多样性和记忆机理抽象得到的一种免疫算法。这里介绍免疫算法的算法流程与代码.免疫学中基本概念的思想在免疫算法设计中得到有效应用,即亲和力,相似度,浓度及激励度,根据算法需要给出描述. 定义1 亲和力指抗体与抗原的匹配程度.反映在优化问题上,抗体(NBP)的亲和力定义为函数,与成反比,在此仍表示抗aff:S(0,1)aff(x)f(x)f(x)x体对应的可行解的目标函数.这里选择 1aff(x),0 1 . f(x)1e定义2 相似度指抗体与其他抗体的相似程度,其被定义为,此根据信息熵理论设计.设M为含有m个字符的字符集,群Aff:S S[0,1]体G为由N个长度为的字符串构成的集合,即l,其中G中基因座的信息熵定义为jG{X...,M,1i l}xxxx12lim其中为M中第个符号出现在基因座上的概率. ,ij log(G,N)p pp Hj ij ijiji1定义3 抗体浓度指抗体在抗体群中与其相似的抗体所占的比例,定义为函数即C:X S[0,1],{X|Aff(u,)}C(u),其中为浓度阈值,,在此称为浓度抑01N制半径. 定义 4 激励度是指抗体应答抗原和被其他抗体激活的综合能力,定义为函c(x)/e数,其中为调节因子,.抗体应答
1act:X S,act(x)aff(x)抗原综合能力与其亲和力成正比,与其在抗体群中浓度成反比. 定义5 克隆选择是指在给定的选择率下,,在抗体群中选择亲01和力较高的抗体.亲和力低的抗体则被清除. 定义 6 细胞克隆是指在给定的繁殖数M下,抗体群X中所有抗体依据自
s2身的亲和力及繁殖率共繁殖M个克隆的映射.,它是确定性映射,:X S Tcmxxxs即设为抗体群的繁殖率函数,
为抗体群,则定义X{,,...,}r:12m x抗体繁殖个相同的克隆构成的集合. 由下式确定:
mmiiim . N r(X)af(f),Mmxmiiii1定义 7 亲和突变是指抗体空间到自身的随机映射,,其作用方式:S S T m是抗体按与其亲和力成正比的可变概率独立地改变自身的基因,可选 . P(x)exp(aff(x))定义 8 克隆抑制指在抗体群中依据抗体的亲和力和相似度抑制部分抗体的确定性映射,.克隆抑制算子的设计,设X是群体规模为M的抗体群,:SMSTr依据抗体的相似度和抑制半径以及式,将X划分为子群,不妨设
Aff(u,)获q个子群,利用处罚函数对中亲和力低的抗体进行处罚. ,1i qPPii定义9 免疫选择是指在抗体群中
依据抗体的激励度选择抗体的随机映射,N按其概率
规则:S,STisact()xiP{T} . x(X)ii act()xjx X j定义 10 募
集新成员指在抗体空间S中随机选择抗体. 免疫算法
描述如下: Step 1 确定初始群体规模N,克隆
总数M,克隆选择率,抑制半径,募集新成员
插入率,. M N Step 2 随机产生N个抗体构成初始
抗体群,计算中抗体亲和力. AA00 Step 3 利用克隆选
择算子在中选择个抗体构成群体. NABnn1 Step 4 克隆
选择算子作用繁殖M个克隆,中抗体进入记忆池,
并更BBnn新记忆池中亲和力低的抗体. Step 5 依据
亲和突变算子对每个克隆细胞进行突变,获得克隆集.
Cn* Step 6 克隆抑制算子作用于,获得克隆集C C nn
* Step 7 计算与中亲和力较高的N个抗体的激励度.
用比例选择选取CAnn个抗体.其中中亲和力最高的
不参与选择.获得新群体. N round(N)1ADnn
Step 8 由募集新成员算子任选个自我抗体插入,并
计算round(N)Dn个抗体的亲和力,从而获得. round(N)An1 Step 9 若满足终止条件,输出结果,
否则,返回step 3. 免疫算法在函数优化中应用举例
例Rosebrock函数的全局最大值计算. 222max )(1)f(,)100(xxxxx21121s..t
8 2.0i48(1 2.04x i确定编码方法:xx用长度为10
的二进制编码串来分别表示俩个决策变量.10位二进
制编码串,12xx可以表示从0到1023之间的1024个
数,故将的定义域离散化为1023个,12均等的区域,
包括俩端点共1024个不同的离散点.从离散点-2.048
到 2.048,依次让它们对应于00000000000(0)到11111111111(1023)之间的二进制编码.再将xx,分
别表示的两个10位长的二进制编码串接在一起,组
成一个20位长的二12进制编码,它就构成了函数优
化问题的染色体编码方法.使用这种编码方法,解空
间与免疫算法的搜索空间具有一一对应的关系. 确定
解码方法:解码时需将20位长的二进制编码串切断
为二个10位长的二进制编码串,然后分别将它们转
换成对应的十进制整数代码,分别记为和. 依据前述
个体编码方yy12yx法和对定义域的离散化方法可知,
将代码转换为的解码公式为:iiyx ,
(i1,2) 4.0962.048i i1023求函数的全局最大值免疫
算法代码如下:Rosebrock #include
#include
#include
#define LENGTH2 10 #define CHROMLENGTH LENGTH1+LENGTH2 #define POPSIZE 300 int MaxGeneration =500; struct individual { char chrom[CHROMLENGTH+1]; ;//适应度double value ;//亲和
力double affective //浓度double concentration; //激励