一种改进的基因表达式编程方法_2

文档序号:9453500阅读:来源:国知局
r>[0024] 本发明实施例提供的一种改进的基因表达式编程方法,参考图1所示,包括如下 步骤:
[0025] S101、以染色体长度为水平,函数集和终止符集为因素生成一混合水平均匀表,混 合水平均匀表由g个矩阵构建,g为一个染色体上的基因组成个数,混合水平均匀表的每行 值代表一个染色体。
[0026] 比如,人的1号染色体上有3186个基因,则1号染色体由3186个矩阵构建;人的 X染色体有1529个基因,则X染色体由1529个矩阵构成。
[0027] 具体的,染色体长度包括染色体的头部长度h和染色体的尾部长度t,每个染色体 都有一个头部和一个尾部,染色体的头部长度h由用户指定,染色体的尾部长度t由如下公 式计算得到:t=h*(n-l)+l,n为常量整数。
[0028] 具体的,函数集为f(x),终止符集为var(x),比如,函数集f(x)为{+,_,*,/,Q, E,S,T,C};终止符集var(x)为{a,b,c,d,e} 〇
[0029] S101具体包括步骤1~步骤3 :
[0030] 步骤1、创建g个调整后等水平均匀表UnXk((nXk)h* (v+l)t),用于形成对应的 g个子混合水平均匀表,其中,h取值为染色体的头部长度,t取值为染色体的尾部长度, kG(v+1,f+v+l),v取值为终止符集var(x)的元素数目,f取值为函数集f(x)的元素数 目,n为常量整数。
[0031] 步骤2、将每个调整后等水平均匀表中的元素循环复制到对应的空白表中,每个空 白表被填满后形成子混合水平均勾表。
[0032] 步骤3、根据形成的g个子混合水平均匀表创建出如下公式表示的混合水平均匀 表:
[0033]Un*(f+V+1) (g* (f+v+1)h ? (v+1)l)〇
[0034] 具体的,Un>Kf+v+1) (g*(f+v+l)h ? (v+1),中,h取值为染色体的头部长度,t取值为 染色体的尾部长度,v取值为终止符集var(x)的元素数目,f取值为函数集f(x)的元素数 目,n为常量整数,g取值为染色体上的基因组成个数。
[0035] 具体的,参考图2所示,生成一混合水平均匀表通过如下循环步骤完成:
[0036]S1011、设置染色体和基因的相关参数。包括:染色体的头部长度:h,函数集: f(x),f(x)的元素数目:f,终止符集:var(x),var(x)的元素数目:V,染色体的尾部长度:t =h*(n-l)+l,基因组成个数:g,染色体数目:n*(f+v+l),常量整数:n。对染色体编码时,染 色体是固定长度的字符串,由函数集f(x)和终止符集var(x)中元素组成。
[0037]S1012、给函数集f(x)和终止符集var(x)中的元素分配标签号。以作为矩阵的初 始成员。
[0038]S1013、创建一原始等水平均匀表UnA((n*k)h+t),其中,h+t表示矩阵列数,h取值 为染色体的头部长度,t取值为染色体的尾部长度,n*k表示矩阵行数,kG〇+1,f+v+l), n为常量整数。
[0039] 具体的,原始等水平均匀表Un>Nk ((n*k)h+t)的创建,首先需要构建矩阵UnA ((n*k) h+t),并用generation-vectors(矢量生成)方法对矩阵Un>Nk ((n*k)h+t)进行元素填充得到原 始等水平均匀表。比如,对创建的原始等水平均匀表举例,给定原始等水平均匀表为U6(63) 如下表1所示:
[0040] 表1.原始等水平均匀表U6 (63)
[0041]
[0042] 从表1中A列、B列、C列中同一数字都只出现一次,即保证:每个因素在每个水平 仅做一次试验;任意两个因素的试验点在平面的格子上,每行、每列有且仅有一个试验点。
[0043]S1014、通过拟水平法调整原始等水平均匀表,对调整后的原始等水平均匀表中染 色体的头部长度进行限制,以及虚拟出调整后的原始等水平均匀表的部分水平,以形成调 整后等水平均匀表:1 ><15((11\1〇夂(計1)1)。
[0044] 具体的,限制原始等水平均匀表的头部取值,具体通过如下公式进行:
[0045]
[0046] 其中,kG(計1,f+v+l),n为常量整数,v取值为终止符集var(x)的元素数目,f 取值为函数集f(x)的元素数目。
[0047]S1015、将调整后等水平均匀表中的元素循环复制到一个空白表中,空白表被填满 后形成一子混合水平均勾表。
[0048]S1016、令g=g-1后判断是否g= 0,若是,则执行S1017,否则返回步骤S1013。 直到创建所有基因的对应的子混合水平均匀表。
[0049]S1017、通过direct-product(直积)方法对循环步骤S1011~S1016生成的g个 子混合水平均匀表进行处理,创建出矩阵Un_v+1) (g*(f+v+l)h ? (v+l)t),以形成混合水平均 匀表Un*(f+V+1) (g* (f+v+1)h ? (v+1)》。
[0050] S102、子代产生步骤:对基于混合水平均匀表产生的初始种群应用自适应多亲杂 交算子产生子代P,P依次取1,2,…,P,其中,P为预设最大遗传代数。
[0051] 在具体实施过程中,由于子代产生步骤为多代遗传过程,针对为第一次子代产生 时,即P= 1,直接基于S101生成的混合水平均匀表中每一行值产生该初始种群的染色体。 对初始种群应用自适应多亲杂交算子产生子代1。初始种群的染色体的质量极大地影响着 整个收敛过程,染色体的多样性也决定着搜索空间的效率,本发明采用了混合水平均匀表 使得初始样本均匀分布,初始种群元素从元素集中均匀取样保证了初始种群染色体的多样 性。对第2代父本应用自适应多亲杂交算子产生子代2;第2代父本为来自于初始种群产 生的子代1,对第3代父本应用自适应多亲杂交算子产生子代3,第3代父本为来自于子代 2,依次类推。
[0052] 具体的,将基于初始种群所产生父本的m*n个子段进行均匀杂交组合产生子代p, 其中,m表示父本所包括父本染色体的数目,n表示一个染色体所划分成子段的数目。在 不同代遗传中,基于初始种群所产生父本不同,具体来讲,在第一代遗传中,父本为初始种 群中的染色体,在第二代遗传中,父本来自于子代1中的染色体,依次类推。比如,在某代 种群中共有200个染色体,每个染色体被分为1000个子段,设计一个均匀的表格来对这 200*1000个子段进行均匀杂交组合,以产生下一代子代。
[0053] 参考图3对自适应多亲杂交均匀算子的设计进行详细描述:
[0054]S1021、把每个染色体Lp划分为n个互不相交的子集,LPG(tG(1,P)),其中, pG1,2,…,P,p代表目前进行的遗传代数。
[0055] S1022、从父本选出待杂交的m个基父本放入配对池。
[0056] 具体而言,基父本为发生杂交的染色体,从旁协助参与杂交的染色体称为从父本。 自适应多亲杂交算子兼有交叉和变异的特点,即可在基父本周围搜寻新解,又能完成基父 本与从父本之间的信息交流。由于自适应多亲杂交算子的杂交规模由基父本当前状态控 制,则若基父本适应值fp与当前最优适应值f_相差较大,就构造大规模混合水平均匀表指 导杂交,以加强父本间的信息交流;若相差不大,就缩小混合水平均匀表的规模,以防止大 变异破坏优秀的基因片段。在具体实施过程中,可按如下经验公式确定组成混合水平均匀 表的基父本数m:
[0057]
[0058]其中,SG(〇,l),p是目前进行的遗传代数,pG1,2,*"P。
[0059] S1023、从父本中随机选择m-1个从父本加入配对池。
[0060] S1024、基于m个基父本与m-1个从父本构造出杂交算子均匀表Ujiif),其中, U>n)的每一行都代表子代p的一个染色体。
[0061] 在S102之后,执行S103、对子代p应用基因重组算子和Dc域重组算子进行进化处 理,以获得与子代对应的进化后子代。
[0062] 其中,Dc域是基因编码中的常数域,通常包括染色体头部、染色体尾部和附加的常 数域。
[0063] S104、依据精英选择策略从进化后子代中选择适应度最高的染色体为当前最优 解;
[0064] 在具体实施过程,根据适应函数计算出进化后子代中每个染色体的适应值,将染 色体根据适应值高低进行排序,从进化后子代中选择适应值最大的染色体保留,即为当代 的最优解,看其是否为全局最优解。
[0065] S105、在当前最优解为全局最优解,或达到预设最大遗传代数时结束遗传过程,否 则令P=P+1后返回步骤子代产生步骤。
[0066] 在具体实施过程中,对遗传过程应用精英
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1