1.一种改进的DND算法基于FPGA的实现方法,其特征在于,所述改进的DND算法,包括正向阶段和反向阶段;
所述正向阶段,包括:
第1步,令膜区域内第i条规则的左侧对象多重集为Ai,膜区域内对象多重集为C,其中,m为膜区域内对象种数,1≤i≤n,n为膜区域内规则数;a1_i为第i条规则的左侧第
1种对象的数量,a2_i为第i条规则的左侧第2种对象的数量,以此类推;a1为膜区域内第1种对象的数量,a2为膜区域内第2种对象的数量,以此类推;
第2步,计算规则r1的最大可用次数Q1:将C中的元素作为被除数、A1中的对应元素作为除数做除法,比较所得的整数商,取最小的商作为规则r1的最大可用次数Q1;
第3步,生成一个伪随机整数作为被除数、Q1+1作为除数做除法,得到商q1和余数rem1;
余数rem1∈[0,Q1],将rem1作为r1的预判次数;
第4步,计算规则r1执行rem1次后消耗的对象数量V1,V1=A1*rem1
第5步,计算规则r1执行rem1次后区域中剩余的对象数量B1,第6步,计算规则r2的最大可用次数Q2:将B1中的元素作为被除数、A2中的对应元素作为除数做除法,比较所得的整数商,取最小的商作为规则r2的最大可用次数Q2;
第7步,生成一个伪随机整数作为被除数、Q2+1作为除数做除法,得到商q2和余数rem2;
余数rem2∈[0,Q2],将rem2作为r2的预判次数;
第8步,计算规则r2执行rem2次后消耗的对象数量V2,V2=A2*rem2
第9步,计算规则r2执行rem2次后区域中剩余的对象数量B2,第10步,按照第6步至第9步的方法,以此类推,依次分别计算规则r3、r4、...rn‑1的最大可用次数Q3、Q4、...Qn‑1,预判次数rem3、rem4、...remn‑1,规则r3、r4、...rn‑1分别执行预判次数rem3、rem4、...remn‑1后消耗的对象数量V3、V4、...Vn‑1,以及规则r3、r4、...rn‑1分别执行预判次数rem3、rem4、...remn‑1后区域中剩余的对象数量B3、B4、...Bn‑1;
第11步,将Bn‑1中的元素作为被除数、An中对应的元素作为除数做除法,比较所得的整数商,取最小的商作为规则rn的最大可用次数Qn;
第12步,将Qn作为规则rn的预判次数,计算规则rn执行Qn次后消耗的对象数量Vn,Vn=An*Qn
所述反向阶段,包括
第1步,将规则rn的预判次数Qn作为其执行次数;
第2步,计算
Fn‑1=Bn‑2‑Vn
将Fn‑1中的元素作为被除数,An‑1中对应的元素作为除数做除法,比较所得的整数商,取最小的商作为规则rn‑1的执行次数Q′n‑1;计算规则rn‑1执行Q′n‑1次后消耗的对象V′n‑1,即V′n‑1=An‑1*Q′n‑1第3步,计算
Fn‑2=Bn‑3‑V′n‑1‑Vn将Fn‑2中的元素作为被除数,An‑2中对应的元素作为除数做除法,比较所得的整数商,取最小的商作为规则rn‑2执行次数Q′n‑2;计算规则rn‑2执行Q′n‑2次后消耗的对象V′n‑2,即V′n‑2=An‑2*Q′n‑2第4步,按照第3步的方法,以此类推,依次分别计算规则rn‑3、rn‑4、...r2的执行次数Q′n‑3、Q′n‑4、...Q′2;依次计算规则rn‑3、rn‑4、...r2分别执行Q′n‑3、Q′n‑4、...Q′2次后消耗的对象V′n‑3、V′n‑4、...V′2;
第5步,计算
将F1中的元素作为被除数、A1中对应的元素作为除数做除法,比较所得的整数商,取最小的商作为规则r1的执行次数Q′1;
所述正向阶段和反向阶段的步骤中,当Ai中出现元素为0的情况时,该元素不参与除法计算;
改进的DND算法基于FPGA的实现方法包括步骤1:使用FPGA表达细胞型膜系统,包括以分布式储存各个膜区域中的内容来间接表示膜结构:将各个膜区域中的内容按照膜结构的拓扑关系映射到不同的FPGA硬件区域,分布式储存各区域的内容,并设置1位寄存器来代表膜存在或者膜溶解;
用寄存器来储存各个对象多重集中对象的数量,不同的对象种类用不同的寄存器储存;用分别储存进化规则左、右两边对象多重集的数量来表示进化规则;
步骤2:采用硬件描述语言,按照改进的DND算法设计规则多重集的非确定选择及并行执行的FPGA电路;
步骤3:使用FPGA电路执行细胞型膜系统进化。