CN109614367B - 一种改进的dnd算法及其基于fpga的实现方法 - Google Patents
一种改进的dnd算法及其基于fpga的实现方法 Download PDFInfo
- Publication number
- CN109614367B CN109614367B CN201811394482.8A CN201811394482A CN109614367B CN 109614367 B CN109614367 B CN 109614367B CN 201811394482 A CN201811394482 A CN 201811394482A CN 109614367 B CN109614367 B CN 109614367B
- Authority
- CN
- China
- Prior art keywords
- rule
- rem
- membrane
- fpga
- objects
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 239000012528 membrane Substances 0.000 claims abstract description 107
- 238000004364 calculation method Methods 0.000 claims abstract description 24
- 238000013507 mapping Methods 0.000 claims abstract description 4
- 238000004090 dissolution Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 abstract description 7
- 238000013461 design Methods 0.000 abstract description 2
- 239000011159 matrix material Substances 0.000 description 16
- 210000004027 cell Anatomy 0.000 description 11
- 238000010586 diagram Methods 0.000 description 3
- 210000000170 cell membrane Anatomy 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 102100026816 DNA-dependent metalloprotease SPRTN Human genes 0.000 description 1
- 101710175461 DNA-dependent metalloprotease SPRTN Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003851 biochemical process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种改进的DND算法及其基于FPGA的实现方法。改进的DND算法包括正向阶段和反向阶段。改进的DND算法基于FPGA的实现方法包括步骤:使用FPGA表达细胞型膜系统;采用硬件描述语言,按照改进的DND算法设计规则多重集的非确定选择及并行执行的FPGA电路;使用FPGA电路执行细胞型膜系统进化。改进的DND算法是根据对象极大消耗原则,在每个区域中直接生成一个规则多重集并执行。改进的DND算法基于FPGA的实现方法,实现了膜系统的规则、对象以及膜结构等基本特征在FPGA中的表示,建立了FPGA结构功能特点与膜计算最大并行性及非确定性特点之间的映射关系,提出了一种能够较好实现膜计算功能的并行处理电路构架的设计方法,为膜计算在诸多工程领域的应用奠定基础。
Description
技术领域
本发明涉及膜计算方法及其硬件实现与应用技术领域,特别是一种改进的DND算法及其基于FPGA的实现方法。
背景技术
膜计算(Membrane Computing)是自然计算的一个新方向,也是分子计算的一个新的分支,于1998年由Gheorghe 提出。膜计算是一种受活细胞的结构和功能启发,将细胞内部的生物化学过程用数学方式抽象表达、综合后得到的计算模式。膜计算具有极大并行性、非确定性以及分布式等显著特点,为计算机信息处理提供了一种新的分布式并行思路。计算理论的研究结果表明,膜计算模型(膜系统)具有强大的计算功能,且大多数的膜系统是图灵完备的,使用简单的结构和简单的规则的膜系统也可以模拟出复杂系统。
目前,大多数膜计算的研究人员都致力于研究膜系统的计算能力与通用性,在计算机上用软件编程语言设计程序来模拟膜系统的计算过程,尝试借助于膜系统的极大并行性加速求解过程,以求解某些计算困难(NP难)的问题。然而,基于经典图灵机理论的当代计算机本质上是一种串行处理机,虽然多核多线程技术的引入使得当代计算机具备了一定的并行处理能力,但这种有限的并行处理能力并不能满足膜计算极大并行的要求。在当代计算机上只能通过极为有限的并行处理来模拟膜系统的运算过程,不能真正实现膜计算的极大并行处理。要真正实现膜计算的极大并行性和非确定性,必须设计能够实现这两个特征的并行处理硬件架构。
FPGA(现场可编程门阵列)拥有大规模的可编程逻辑门阵列,其内部电路连接方式具有高度的可重构性。将硬件描述语言设计的功能块映射为可以同步工作的硬件电路赋予了FPGA很好的并行处理能力,FPGA非常有利于膜计算这类分布式并行算法的实现。
发明内容
本发明的目的在于提供一种改进的DND(Direct NondeterministicDistribution)算法及其基于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电路执行细胞型膜系统进化。
本发明的有益效果在于,
(1)改进的DND算法是根据对象极大消耗原则(极大并行),在每个区域中直接生成一个规则多重集并执行,而不是生成所有可能的规则多重集,然后选择一个执行。
(2)改进的DND算法基于FPGA的实现方法,实现了膜系统的规则、对象以及膜结构等基本特征在FPGA中的表示,建立了FPGA结构功能特点与膜计算最大并行性及非确定性特点之间的映射关系,提出了一种能够较好实现膜计算功能的并行处理电路构架的设计方法,为膜计算在诸多工程领域的应用奠定基础。
附图说明
图1是细胞型膜系统的示意图,包括膜结构、对象多重集和进化规则的三要素;
图2(a)是实施例膜系统;
图2(b)是实施例膜系统在当前格局下,按照极大并行原则生成的所有可能的规则多重集;
图3是膜系统对象多重集储存在寄存器序列中的示意图;
图4是进化规则在寄存器中的示意图;
图5是膜计算硬件实现方法的FPGA架构。
具体实施方式
细胞型膜系统的构成三要素包括:膜结构、对象多重集和进化规则,其一般形式如图1所示。细胞型膜系统的工作特点是:在某时刻的格局(该时刻膜结构及其包含的对象多重集和进化规则的全体)下,每个膜区域内的对象多重集所包含的对象种类与数目决定了该区内各条进化规则的可用次数,所有可用规则按照尽可能多地消耗对象的原则组合成规则多重集。当每个区域中的某个规则多重集(如果有的话)被执行后,膜系统进化到下一格局,膜系统格局的进化过程被定义为其计算过程。当所有区域中再无可用规则时,膜系统达到终止格局,计算终止。在一个膜区域中,规则多重集一般有多个,每个规则多重集被选中执行的概率是相等的,需要等可能地选择一个执行,这是膜系统非确定性的根源。被选中的规则多重集中的多条规则是并行执行的,执行的结果是尽可能多的消耗区域中的对象,所有区域中的规则多重集也是并行执行,这是极大并行性的来源。
一个细胞型膜系统的工作过程如图2所示。如图2(a),根据膜计算理论,有很多个规则的组合(规则多重集)可以让系统进化。改进DND算法的作用在于生成一个规则多重集来进化系统。在进化过程中所有规则保持不变,只有区域对象多重集发生改变。图2(b)展示了可能的规则多重集。假设(r1)7(r2)3r4r5被改进的DND算法生成来进化系统,其进化过程如下:规则r1执行7次,消耗7个a,消耗7个b,生成3x7=21个c;规则r2执行3次,消耗3个a,消耗6个c,生成2x3=6个a,生成3个b;规则r4执行1次,消耗2个c,生成5个a;规则r5执行1次,消耗3个b,消耗2个c,生成1个a,生成1个b,生成2个c。区域对象多重集被更新为:对象a=10-7-3+6+5+1=12;对象b=10-7-3+3+1=4;对象c=10-6-2-2+3x7+2=23。如图2(c)所示。
于是,在FPGA上实现细胞型膜系统,首先需要研究膜结构、对象多重集和进化规则的表示方法。本发明采用以下技术手段来实现细胞型膜系统三要素的FPGA表示:
(1)以分布式储存各个膜区域中的内容来间接表示膜结构
在FPGA中没有类似细胞膜的囊泡或隔间,无法直观的表示细胞膜的嵌套结构,需要采用一种等效的表示法来替代。膜计算理论指出,膜结构的主要作用是将对象多重集与进化规则(膜区域中的内容)限定在不同的区域并行工作,使膜系统成为一个分布式系统,膜的大小与空间分布是不重要的。基于此,本发明将各个膜区域中的内容按照膜结构的拓扑关系映射到不同硬件区域,分布式地储存各区域的内容,以此来实现膜系统整体膜结构的FPGA表示。
然而,具体到每个膜,为了配合膜系统的格局进化,本发明采用膜标志来代替单个膜,即用一个1位寄存器来代表膜存在或者膜溶解(消失),如图4中的1位寄存器m。当m=1时,表示对应的膜存在,当m=0时,表示膜溶解或不存在。规则a→b2cδ中,δ为膜溶解标志,当规则中存在δ时,表示该规则执行完以后膜溶解(膜溶解后m=0,δ=0),当规则中不存在δ时,规则正常执行,包含该规则的膜继续存在。
(2)用寄存器来储存各个对象多重集中对象的数目,对象种类的不同用寄存器的不同来间接表示
如图1所示,对象多重集的一般形式为其中mi,i∈希腊字母,是对象,xj,j∈拉丁字母,是该对象的数量。本发明将xj储存到FPGA的不同寄存器中,以寄存器不同间接反应对象的不同,如图3所示。为防止寄存器存储溢出,将寄存器的最后一位作为溢出标志位。
(3)用分别储存进化规则左右两边对象多重集的方法来表示进化规则
进化规则实际上是一种多重集重写规则,将规则左边的对象多重集重写规则右边的对象多重集。本发明将进化规则两边的对象多重集分别储存,当某条规则被执行一定次数时,将对应寄存器中的数值按照执行次数加倍,加倍之后的规则左边的对象多重集是消耗的对象,而规则右边的对象多重集是生成的对象,如图4所示。
完成细胞型膜系统三要素的FPGA表示之后,要解决的问题是在FPGA上实现规则多重集的非确定选择及其并行执行。针对这两个问题,本发明采取的技术手段如下:
(1)规则多重集的非确定生成
如果一条进化规则左边的对象多重集是该规则所在膜区域包含的对象多重集的子集,则这条规则是可以执行的,可执行的最大次数则是这样确定的:
①以该条规则左边对象多重集中每种对象的个数为除数,以区域对象多重集中该类对象的总数为被除数,做相应的除法,将每次除法的整数商保留。
②取上步得到的所有整数商的最小值,该最小值就是这条规则的最大可用次数。
上述过程可以通过一个例子来具体化。设一条进化规则Rj:b4c3e5→be2,该规则所在膜区域的对象多重集为b9c12e14。因为b4c3e5∈b9c12e14,所以规则Rj是一条可执行规则。为了确定该规则的最大执行次数,需要做一系列除法然后取商的最小值:
①对象b共有9个,规则左边有4个b,执行9÷4=2余1,商为2。对象c共有12个,规则左边有3个c,执行12÷3=4,商为4。对象e共有14个,规则左边有5个e,执行14÷5=2余4,商为2。
一个膜区域中一般有多条规则,根据区域对象多重集,每条规则的使用次数ni∈[0,ni_max]。因为要最大限度的消耗区域对象多重集,而不同规则消耗的对象不同,就算某条规则使用了它的最大次数,剩余的区域对象多重集可能足以使其他规则执行。且可用规则的使用次数可以在其次数区间内取值,只要可用规则及其次数的组合可以尽可能多的消耗区域对象多重集,使剩余的对象多重集数量太少以至于没有规则可以再执行。所以,膜区域中可用规则及其次数会构成形如的规则多重集,这种规则多重集一般有多个,都符合最大限度消耗区域对象多重集的要求。在实际执行时,要从多个规则多重集中等概率地选择一个执行,即在每个膜区域中选择一个规则多重集,但是不能确定哪个规则多重集一定能被选中,这就是细胞型膜系统非确定性地根源,如图2(b)所示。
从计算理论上分析,生成并选择每个膜区域的规则多重集是一个NP难地问题。一些算法被设计出来以解决这个问题,但是这些算法都是用软件程序设计语言编写程序的方式来实现的,在FPGA上实现这类算法尚未见诸文献。本发明改进了一种已经存在的解决该问题的算法(Direct Nondeterministic Distribution,DND算法),并将这个改进算法在FPGA上实现,以完成细胞型膜系统的FPGA实现。改进的DND算法的特点是根据对象极大消耗原则(极大并行),在每个区域中直接生成一个规则多重集并执行,而不是生成所有可能的规则多重集,然后选择一个执行。
改进的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的情况时,该元素不参与除法计算。
(2)规则多重集的并行执行
在获得各条规则执行次数以后,通过各条规则的执行次数与规则右侧对象矩阵相乘得到规则生成对象数,通过各条规则的执行次数与规则左侧对象矩阵相乘得到规则消耗对象数,然后对对象多重集进行重写。
下面利用图2所示的实施例膜系统来对发明的技术方案进行进一步说明。
实施例采用的硬件描述语言为Verilog,FPGA芯片为Xilinx Spartan 6 xc6slx9-2ftg256,FPGA开发软件为Xilinx ISE 14.7。
实施例是一个只有表层膜的膜系统,膜区域对象多重集为a10b10c10,5条规则如图所示。
(1)对象多重集的实现
在膜内(即膜区域)存在的对象多重集,可为初始对象多重集、格局进化中产生的对象以及规则执行过程中消耗的对象等,如图2的a10b10c10。在对象模块中,定义寄存器序列用于储存a,b,c三种对象,在规则执行过程和格局进化过程中,对象数量的增减通过对寄存器内的存储数据进行加减运算实现。
具体操作如下:
在Xilinx ISE 14.7中用Verilog定义3个reg型变量(寄存器变量):c1,c2,c3,定义3个输入端口a,b,c,然后将a,b,c的值赋给这3个寄存器变量。
按照此方法完成所有对象多重集的表示。
(2)进化规则的实现
分别用不同的寄存器来存储规则左右两边的对象多重集,如图4所示。用Zm表示规则m左侧对象矩阵,Ym表示规则m右侧对象矩阵。以实例的第一条规则R1:ab→c3为例,此规则左边的对象多重集包含1个a,1个b,0个c,而此规则右边的对象多重集包含0个a,0个b,3个c。
具体操作如下:
用Verilog定义6个寄存器变量,例如,a_R21储存规则左边的a的数量,而a_R21_right储存规则右边的a的数量。然后根据规则表达式,在时钟信号上升沿到来时赋值。
(3)膜结构的实现
本发明采用膜标志来代替单个膜,即用一个1位寄存器来代表膜标志,当此寄存器的值为1时,表示膜存在,值为0时表示膜溶解(消失)。
(4)非确定性与并行性的实现
步骤1.正向阶段:
第一步,规则对象输出模块,A为规则左侧对象输出矩阵,当j=1时,输出规则R1的左侧对象,即
当j=2时,输出规则R2的左侧对象,即
以此类推。
C为膜内对象多重集的数量,膜内对象输出矩阵为
具体操作如下:
以j=1为例,此时输出规则R1左边的对象到A。用Verilog定义寄存器变量,设置判断结构来确定规则,然后将相应规则的左边对象多重集赋给A。
当存在对象生成与消耗时,对膜内对象输出矩阵C进行算术运算。
第二步,膜内消耗对象统计模块,V为已消耗对象多重集矩阵
其中,Vlast为上一条规则判断执行次数后消耗的对象多重集矩阵,j=1时为空。Xj为第j条规则的预判执行次数。
具体操作如下:
以执行两步为例,先定义相关寄存器变量,然后判断执行条件,根据判断结果执行Vlast+A*Xj操作。
第三步,膜内剩余对象多重集统计模块,B为剩余对象多重集矩阵
式中j代表第j条规则。
具体操作如下:
以执行两步为例,先定义相关寄存器变量,然后判断执行条件,根据判断结果执行C-V的操作。
第四步,数据选择模块,选择第j条规则的最大执行次数Qj,其中
当Ai(1≤i≤3)中出现Ai=0的情况时,此时的Ci/Ai或者Bi(j-1)/Ai不参与数据选择。
第五步,限定范围随机数模块,膜系统具有不确定性的特点,需要在0~Qj范围内随机选出第j条规则的执行次数Xj。本发明采用一种随机数求余的限定范围的随机数生成法,步骤如下:
首先,本发明中为产生均匀伪随机数采用LFSR(线性反馈移位寄存器)来实现,通过LFSR持续生成伪随机数,在求余模块接收到触发信号后,获取该时刻的随机数。
其次,求余模块在获得随机数后,对随机数除以Qj+1进行求余,余数为Xj,Xj代表第j条规则的预判执行次数。其中,1≤j≤4.
最后,j=5时,不需要进行求余,令X5=Q5。
上述五步为非确定分配算法(DND)模块计算规则R1~R5的预判执行次数X1~X5,从j=1开始,依次循环执行上述五步,j=5执行完以后结束,转到反向阶段。
步骤2:反向阶段:
第一步,重置已消耗对象多重矩阵V,令
V=A*X5
其中,X5为第5条规则的最大执行次数,A为第5条规则的左侧对象多重集矩阵。
第二步,对于第4条规则~第1条规则,反向验证预判执行次数Xj是否正确,令
若Qj′≠Xj,则令Xj=Qj’,再到第三步。当j=1执行完以后,非确定分配算法(DND)模块结束,输出最后的规则执行次数,X1,X2,X3,X4,X5。
第三步,已消耗对象多重矩阵V统计,
回到第二步执行。
(5)对象多重集重写
在获得各条规则分配的执行次数以后,通过各条规则的执行次数与规则右侧对象矩阵相乘,得到规则生成对象数,即为Xj*Yj。通过各条规则的执行次数与规则左侧对象矩阵相乘,得到规则消耗对象数,即为Xj*Zj。可以对对象多重集进行重写,即
C=C-Xj*Zj+Xj*Yj
其中,1≤j≤5。综上,完成对膜内对象多重集重写。
Claims (1)
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电路执行细胞型膜系统进化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811394482.8A CN109614367B (zh) | 2018-11-22 | 2018-11-22 | 一种改进的dnd算法及其基于fpga的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811394482.8A CN109614367B (zh) | 2018-11-22 | 2018-11-22 | 一种改进的dnd算法及其基于fpga的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109614367A CN109614367A (zh) | 2019-04-12 |
CN109614367B true CN109614367B (zh) | 2021-07-23 |
Family
ID=66003714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811394482.8A Expired - Fee Related CN109614367B (zh) | 2018-11-22 | 2018-11-22 | 一种改进的dnd算法及其基于fpga的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109614367B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427634B (zh) * | 2019-05-17 | 2022-08-02 | 西南交通大学 | 基于fpga实现反应系统的通信系统及其构建方法 |
CN110321318B (zh) * | 2019-06-04 | 2023-04-07 | 西南交通大学 | 多时钟单状态组织型p系统的fpga实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662322B (zh) * | 2012-04-10 | 2014-06-04 | 西华大学 | 一种fpga处理器及pid膜优化神经网络控制器 |
CN104022536A (zh) * | 2014-06-13 | 2014-09-03 | 西华大学 | 基于fpga的微电网能量控制方法、fpga处理器及系统 |
CN106099999A (zh) * | 2016-07-29 | 2016-11-09 | 西华大学 | 一种微电网能量控制方法、处理器及微电网能量控制系统 |
CN106250933A (zh) * | 2016-08-12 | 2016-12-21 | 西华大学 | 基于fpga的数据聚类的方法、系统及fpga处理器 |
-
2018
- 2018-11-22 CN CN201811394482.8A patent/CN109614367B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662322B (zh) * | 2012-04-10 | 2014-06-04 | 西华大学 | 一种fpga处理器及pid膜优化神经网络控制器 |
CN104022536A (zh) * | 2014-06-13 | 2014-09-03 | 西华大学 | 基于fpga的微电网能量控制方法、fpga处理器及系统 |
CN106099999A (zh) * | 2016-07-29 | 2016-11-09 | 西华大学 | 一种微电网能量控制方法、处理器及微电网能量控制系统 |
CN106250933A (zh) * | 2016-08-12 | 2016-12-21 | 西华大学 | 基于fpga的数据聚类的方法、系统及fpga处理器 |
Non-Patent Citations (3)
Title |
---|
Automation of metabolic P system implementation in FPGA: A case study;Darius Kulakovskis; Dalius Navakauskas;《AIEEE》;20160104;全文 * |
Improved Implementation of Simulation for Membrane Computing on the Graphic Processing Unit;Ali Maroosi;《Procedia Technology》;20140129;184-190 * |
基于FPGA的膜计算研究;王富罗;《中国优秀硕士学位论文全文数据库.基础科学辑》;20140530;A006-127 * |
Also Published As
Publication number | Publication date |
---|---|
CN109614367A (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JáJá | Parallel algorithms | |
US20190130268A1 (en) | Tensor radix point calculation in a neural network | |
JP2007317179A (ja) | 帯域幅要件が軽減された行列乗算 | |
Scheuermann et al. | FPGA implementation of population-based ant colony optimization | |
CN105373517A (zh) | 基于Spark的分布式稠密矩阵求逆并行化运算方法 | |
US20220366010A1 (en) | Integer matrix multiplication engine using pipelining | |
CN109614367B (zh) | 一种改进的dnd算法及其基于fpga的实现方法 | |
CN110235099A (zh) | 用于处理输入操作数值的装置和方法 | |
CN103914276A (zh) | 利用浮点架构的定点除法电路 | |
CN103970720A (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
US20210173648A1 (en) | Processor for neural network operation | |
Kawashima et al. | FPGA implementation of hardware-oriented chaotic Boltzmann machines | |
US20190130276A1 (en) | Tensor manipulation within a neural network | |
Ahn | Computation of deep belief networks using special-purpose hardware architecture | |
CN104793922B (zh) | 一种大整数乘法Comba算法基于OpenMP的并行实现方法 | |
WO2019089553A1 (en) | Tensor radix point calculation in a neural network | |
Tavakkoli et al. | Low-latency option pricing using systolic binomial trees | |
CN109871512B (zh) | 面向异构融合体系结构的矩阵乘加速方法 | |
Mikaitis | Arithmetic accelerators for a digital neuromorphic processor | |
CN110321318B (zh) | 多时钟单状态组织型p系统的fpga实现方法 | |
Buell | Factoring: algorithms, computations, and computers | |
RU2827680C1 (ru) | Конвейерный умножитель | |
RU148925U1 (ru) | Вычислительный элемент бимодульной модулярной арифметики | |
Nagendra et al. | Digit systolic algorithms for fine-grain architectures | |
Cumplido et al. | On the design and implementation of a high performance configurable architecture for testor identification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210723 |
|
CF01 | Termination of patent right due to non-payment of annual fee |