1.一种基于内嵌并行结构遗传算法的关键电路单元定位方法,其特征在于包括以下步骤:步骤1:网表解析及相关量的初始化:
1.1读取电路子网表,并建立与之相对应的完整性链表LC,其中LC指链表中任意节点的输入端信息均可从该节点的前序节点的输出端信息中提取得到;
1.2提取该电路的原始输入端与电路单元,并对所有NLC个电路单元实施二进制编码,且初始化循环变量i=1,实验重复次数Nsm,遗传算法的进化代数NGE,及种群规模nps;
步骤2:构建面向关键电路单元的初始化种群,并初始化当前进化代数变量j=1:
2.1随机生成nch个个体,并利用E-PTM模型分别计算各自的适应度;
2.2从步骤2.1的结果中挑选出适应度最好的一个个体作为初始种群的成员;
2.3若种群规模达到nps,则转步骤3;否则转步骤2.1;
步骤3:新建名人堂库HG,并将每一代中最好个体保存至HG中:
3.1按适应度的降序对当前种群中的所有个体进行排列,并初始化循环变量k=1;
3.2按公式(1)方法计算第k个与第k+1个父代个体patk与patk+1的相似度sim,若sim < λ
1,则转到步骤3.3;否则转到步骤3.4,其中,λ1指事先给定的阈值,bitand()指按位与运算,sum指求和运算;
sim=sum(bitand(patk, patk+1))/NLC (1)
3.3对父代个体patk与patk+1执行交叉操作;
3.3.1生成在区间[1, NLC×(2-j/NGE)/2]内的整型随机数rnc,其中NGE指总的进化代数;
3.3.2按公式(2)方法生成交叉概率pcr,其中,pcrmin为给定的最小交叉概率,fpatk与fpatk+1分别指个体patk与patk+1的适应度,fmax与fmin分别指当代种群的最大与最小适应度;
pcr = pcrmin+ |fpatk-fpatk+1|/|fmax-fmin| (2)
3.3.3 生成区间[0, 1]间的随机数rd,若rd < pcr,则对个体patk与patk+1的基因位[1, rnc]执行单点交叉操作,使产生新的个体chdk与chdk+1;
3.3.4对个体patk、patk+1、chdk与chdk+1执行父子竞争策略,并保留适应度更好的两个个体作为交叉操作的子代,并转到步骤3.5;
3.4对父代个体patk与patk+1执行变异操作,并初始化循环变量h=k;
3.4.1 生成区间[1, NLC]内的整型随机数rnm;
3.4.2 按公式(3)方法生成变异概率pmt,其中,pmtmin指最小的变异概率,fpath指个体path的适应度,b(>0)是人为给定的参数;
b
pmt=pmtmin+(1-j/NGE) ×|fmax-fpath| (3)
3.4.3 生成区间[0, 1]间的随机数rd,若rd < pmt,则对个体path的基因位rnm执行单点变异操作,并产生新的个体chdh;
3.4.4 对个体path与chdh执行父子竞争策略,并保留适应度更好的一个个体作为变异操作的子代,若h > k+1,则转到步骤3.5;否则,执行h = h+1并转到步骤3.4.1;
3.5若k > NLC,则转到步骤3.6;否则,执行k=k+2并转到步骤3.2;
3.6对交叉与变异操作后的结果执行选择操作以生成新的种群,并更新HG;
3.6.1 针对每个个体,利用E-PTM模型分别计算随机生成的niv=max{Ncon, pm×β}个输入向量所对应的适应度,并取它们的中值作为个体的适应度,其中,Ncon与β均为人为给定的参数,pm为电路原始输入端的个数;
3.6.2 按适应度的降序对当前种群的所有个体进行排序;
3.6.3 提取前nso个最好的个体,并随机生成剩下的nps-nso个个体共同构成新的种群;
3.6.4 提取步骤3.6.2中排名第一的个体置入HG中;
步骤4:若i > Nsm,则转到步骤7;否则转到步骤5;
步骤5:按公式(4)方法计算种群的多样性div,若div ≥ λ2 && j ≤ NGE,则执行j=j+
1,并转到步骤3.1;否则,转到步骤6,其中,λ2指人为给定的阈值,fq指种群中第q个个体的适应度,fave指种群的平均适应度;
(4)
步骤6:通过当前HG计算电路中各电路单元的关键性值:
6.1统计HG中包含所有个体的相对应基因位中’1’出现的频率;
6.2对步骤6.1中所获得的频率按降序排列,并根据公式(5)的方法对它们重新赋值,其中RCit指在第i轮中排名为t的值的新值;
RCit = (NLC-t+1)/NLC (5)
6.3将步骤6.3所得结果用作为LC中相关的各电路单元的关键性值;
6.4执行i=i+1,并转到步骤2;
步骤7:按公式(6)方法计算LC中各电路单元的关键性值,其中RCs指LC中第s个电路单元的关键性值,RCis指第i轮计算中LC中第s个电路单元所对应的关键性值;
(6)
步骤8:对步骤7所得的关键性值按降序排列,并输出与之相对应的电路单元。