System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于硬件加速领域,涉及fpga技术,具体涉及一种二进制粒子群算法在fpga上的串并行实现方法。
技术介绍
1、硬件加速是指在计算机中通过把计算量非常大的工作分配给专门的硬件来处理以减轻中央处理器的工作量的技术。在传统的软件开发中,通常使用通用处理器(cpu)来执行各种任务。然而,对于某些计算密集型应用,如图像处理、机器学习和加密算法等,cpu的处理速度可能无法满足要求。为了提高计算性能,可以使用硬件加速器,如gpu(图形处理单元)或专用硬件。
2、fpga(field-programmable gate array,现场可编程门阵列)可以在部署后通过编程来定制其功能,在加速计算和处理数据方面具有较高的灵活性和性能,适用于需要定制化硬件加速的应用场景。它提供了一种介于通用处理器和专用硬件加速器之间的选择。
3、通过使用fpga,可以实现高度定制化的硬件加速器,具有比通用处理器更高的计算性能和能效。fpga中的逻辑单元可以按需配置,从而实现各种功能,如乘法器、加法器、存储器等。此外,fpga还具有并行处理的能力,可以同时处理多个数据流,进一步提高加速性能。
4、在使用fpga对算法进行硬件加速时,必需考虑资源的消耗。对于bpso算法,当粒子的种群规模或粒子的维度较高时,在fpga上进行全并行加速,将消耗较多的资源。
技术实现思路
1、专利技术目的:为了克服现有技术中存在的不足,提供一种二进制粒子群算法在fpga上的串并行实现方法,令n个粒子
2、技术方案:为实现上述目的,本专利技术提供一种二进制粒子群算法在fpga上的串并行实现方法,包括如下步骤:
3、s1:通过随机数生成模块生成bpso硬件实现要求产生的随机数;
4、s2:根据产生的随机数,通过采用串并行架构的粒子模块完成粒子的速度更新、位置的更新以及适应值的计算;
5、s3:根据粒子模块的输出,通过最优值比较模块输出第k次迭代后群体最优粒子的适应值及其二进制序列;
6、s4:通过最优值寄存器和最优粒子寄存器分别储存整体最优粒子的适应值和整体最优粒子的二进制序列。
7、进一步地,所述步骤s1中随机数生成模块由n个线性反馈移位寄存器组成,每个时钟周期可输出n个随机数。
8、进一步地,所述步骤s2中粒子模块的串并行架构为n个粒子并行进行迭代,粒子的d个维度采用串行,以流水线方式进行迭代。
9、进一步地,所述步骤s2中粒子模块由n个粒子子模块组成,每个粒子子模块由粒子更新模块、个体最优值比较模块,个体最优值寄存器和个体最优粒子寄存器组成。
10、进一步地,所述粒子更新模块由速度更新模块,位置更新模块和适应值计算模块组成。
11、进一步地,所述速度更新模块实现bpso算法的速度更新公式为:
12、vid=ωvid+c1ran(pid-xid)+c2ran(pgd-xid) (1)
13、其中,ω为惯性权重,vid为粒子i在d维的速度向量,c1为个体学习因子,c2为群体学习因子,ran为取值在[0,1]之间的随机数,pid为粒子i个体最优值在d维的位置向量,pgd为粒子群群体最优值在d维的位置向量,xid为粒子i在d维的位置向量,其集合xid={xi1,xi2,…,xid}表示长度为d的二进制编码。
14、进一步地,所述位置更新模块实现bpso算法的速度概率映射公式和位置更新公式为:
15、
16、进一步地,所述步骤s3中最优值比较模块包括m+1层比较网络,其中,2m-1<n≤2m,第1层比较网络负责将粒子1到粒子n的适应值两两进行比较,并将适应值更好的粒子送到下一次网络进行同样的操作,在第m层比较网络输出第k次迭代的最优粒子,并送到第m+1层与前k-1次迭代后的群体最优粒子比较得到第k次迭代后的群体最优粒子。
17、本专利技术还提供一种适用于硬件部署的ex计算方法,用于计算公式(2)中的包括如下步骤:
18、1)采用快速近似方法计算e的整数次幂;
19、2)使用泰勒公式计算e的小数次幂;
20、3)计算e的整数次幂于e的小数次幂的乘积。
21、进一步地,所述步骤1)中快速近似方法的计算公式为:
22、ex=x×1512775+1072632447 (4)
23、其中,x为整数,取值范围为[-700,700];
24、计算出的ex数据格式为32位非规范浮点数,最高位为符号位,次11位为阶码,后20位为尾数,指数偏移值为1023;
25、所述步骤2)中泰勒公式为:
26、
27、其中,rn(x)为泰勒余项,x0为任意常数;
28、所述步骤3)表示为:
29、ex=ei·ed (6)
30、其中,i为x的整数部分,d为x的小数部分;计算ei与ed的乘积之前,需要将ei的数据格式转换为定点数格式。
31、本专利技术提供的ex计算方法,其消耗的逻辑资源与硬件资源对比现有ip核显著减少。所以本专利技术提供的ex计算方法能够适用于硬件部署,而本专利技术中bpso算法的实现,需要完成ex的计算。所以此ex计算方法能够硬件部署,可以使得bpso的实现占用更少的资源。或者是相同资源占用情况下,在部署bpso算法时,使用本专利技术提出的ex计算方法部署的bpso算法并行度更高。
32、有益效果:本专利技术与现有技术相比,具备如下优点:
33、1、本专利技术提出了一种适用于硬件部署的ex计算方法。该方法可以近似计算ex,且部署后消耗的资源较现有计算ex的ip核少,不但减少了资源消耗,而且此计算方法能够在fpga上实现硬件部署,为本专利技术提供的二进制粒子群算法在fpga上的串并行提供了基础条件,这是现有ex计算方法所无法实现的。
34、2、本专利技术提出了一种二进制粒子群算法在fpga上的串并行实现方法。所提方法能够兼顾运算时间与资源消耗,部署后可以完成寻优任务。
本文档来自技高网...【技术保护点】
1.一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述步骤S1中随机数生成模块由N个线性反馈移位寄存器组成,每个时钟周期可输出N个随机数。
3.根据权利要求1所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述步骤S2中粒子模块的串并行架构为N个粒子并行进行迭代,粒子的D个维度采用串行,以流水线方式进行迭代。
4.根据权利要求3所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述步骤S2中粒子模块由N个粒子子模块组成,每个粒子子模块由粒子更新模块、个体最优值比较模块,个体最优值寄存器和个体最优粒子寄存器组成。
5.根据权利要求4所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述粒子更新模块由速度更新模块,位置更新模块和适应值计算模块组成。
6.根据权利要求5所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述速度更新模块实现
7.根据权利要求5所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述位置更新模块实现BPSO算法的速度概率映射公式和位置更新公式为:
8.根据权利要求1所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述步骤S3中最优值比较模块包括m+1层比较网络,其中,2m-1<N≤2m,第1层比较网络负责将粒子1到粒子N的适应值两两进行比较,并将适应值更好的粒子送到下一次网络进行同样的操作,在第m层比较网络输出第k次迭代的最优粒子,并送到第m+1层与前k-1次迭代后的群体最优粒子比较得到第k次迭代后的群体最优粒子。
9.根据权利要求7所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述公式(2)中的计算方法,包括如下步骤:
10.根据权利要求9所述的一种二进制粒子群算法在FPGA上的串并行实现方法,其特征在于,所述步骤1)中快速近似方法的计算公式为:
...【技术特征摘要】
1.一种二进制粒子群算法在fpga上的串并行实现方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种二进制粒子群算法在fpga上的串并行实现方法,其特征在于,所述步骤s1中随机数生成模块由n个线性反馈移位寄存器组成,每个时钟周期可输出n个随机数。
3.根据权利要求1所述的一种二进制粒子群算法在fpga上的串并行实现方法,其特征在于,所述步骤s2中粒子模块的串并行架构为n个粒子并行进行迭代,粒子的d个维度采用串行,以流水线方式进行迭代。
4.根据权利要求3所述的一种二进制粒子群算法在fpga上的串并行实现方法,其特征在于,所述步骤s2中粒子模块由n个粒子子模块组成,每个粒子子模块由粒子更新模块、个体最优值比较模块,个体最优值寄存器和个体最优粒子寄存器组成。
5.根据权利要求4所述的一种二进制粒子群算法在fpga上的串并行实现方法,其特征在于,所述粒子更新模块由速度更新模块,位置更新模块和适应值计算模块组成。
6.根据权利要求5所述的一种二进制粒子群算法在fpga上的...
【专利技术属性】
技术研发人员:程理泽,马国军,张龙,朱勤华,刘清洋,刘元贤,
申请(专利权)人:江苏科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。