基于FPGA高效训练的遗传算法及系统的制作方法

文档序号:11231367阅读:462来源:国知局
基于FPGA高效训练的遗传算法及系统的制造方法与工艺

本发明涉及遗传算法及系统,尤其是涉及一种基于fpga高效训练的遗传算法及系统。



背景技术:

遗传算法是一种借鉴生物界的进化规律演化而来的随机化搜索方法。被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它也是现代有关智能计算中的关键技术。但是,如果单纯用计算机软件实现遗传算法时,随着问题复杂度和求解精度要求的增加,会产生非线性的增加,从而造成极大的计算延时,从而限制了遗传算法在很多实时性或者快速计算要求很高的场合上的应用。提高遗传算法的运算速度和通用性将极大提高其在实际工程中的应用。



技术实现要素:

本发明的目的在于提供一种基于fpga高效训练的遗传算法及系统设计,通过硬件与软件控制相结合的方法快速进行遗传算法的训练与运行。

本发明采用的技术方案是:

一、一种基于fpga高效训练的遗传算法,该算法的步骤如下:

步骤1)开始训练时,电脑将要进行运行的遗传算法代码下载到fpga中进行训练;

步骤2)在fpga中进行优化后,将运行结果节点输出反馈回电脑,在电脑中将优化的节点结果生成一个config文件保存下来;

步骤3)然后将优化完的节点结果代替原来遗传算法中的初始节点,在电脑编译生成高速遗传算法代码,并重新下载到电脑中,使用高速模式进行运行。

所述步骤1)中的训练采用两个模式:模式a训练模式——将电脑上运行编译的遗传算法训练代码下载入fpga,下载完成后进行训练,实现遗传算法的节点优化;模式b运行模式——使用训练完成后的优化节点生成新的高速遗传算法代码,下载入fpga中进行高速运行,进行新数据的测试输入与输出,同时进行输出与预期的结果的误差进行比较,如果误差过大,反馈给电脑编译生成新的训练代码,重新训练,直至得到符合条件的误差。

二、一种基于fpga高效训练的遗传算法的系统,其特征在于:包括进行软件编程的电脑和进行硬件运算的fpga;进行软件编程的电脑输出端通过下载数据线与fpga输入端连接,fpga输出端通过反馈数据线与进行软件编程的电脑输入端连接。

本发明具有的有益效果是:

1)本发明通过fgpa进行遗传算法节点的更新,同时,将遗传算法代码更新通过电脑进行实现,进行编译完成后再重新下载到fpga的rom中,实现实时的训练过程;fpga内部分为2种交替运行的代码。

2)本发明实现了软硬件结合的遗传算法的训练与优化,采用了训练与执行过程的分离,极大的加快了系统数据处理和运算的速度,兼顾了灵活和效率。

附图说明

图1是本发明实现的原理框图。

图2是本发明的运行流程图。

图3是遗传算法优化原理图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。

如图1所示,本发明的系统,包括进行软件编程的电脑和硬件运算的fpga;进行软件编程的电脑输出端通过下载数据线与fpga输入端连接,fpga输出端通过反馈数据线与进行软件编程的电脑输入端连接。

其具体过程为:对于训练模式,首先电脑进行遗传算法的优化过程,在电脑上通过特定语言如c语言等进行遗传算法代码的编译,并通过软件转化编译为能够下载到fpga的rom中可以运行的rom代码。通过fpga内部的门电路进行遗传算法运行,遗传算法的初始节点可设为0(实际操作中可根据代码设定),然后通过fpga优化遗传算法的节点,并生成代码运行的误差error。之后再fpga内部通过寄存器存储新的节点值以及误差值,并通过反馈数据线反馈回电脑,并在电脑上生成存储节点数据的config文件。对于高速模式,则是电脑对于已经训练好的运行遗传算法的fpga模块,将需要测试的输入数据下载到训练的好fpga模块中进行测试,测试其误差值error以判断是否能够使用,如果不能,则重新训练。

实际过程中的使用流程如图2所示。当该系统处于训练模式时,下载到fpga进行训练代码的编写,当fpga运行完成生成新的节点数据与遗传算法误差值error,将节点数据与error值反馈回电脑,如果error值不符合我们设计的预期,则将新的节点数据替换原来的节点数据,生成新的遗传算法训练代码,重新下载到fpga里面进行训练,并重复进行训练直到误差error值符合我们的算法要求。而当error符合算法要求时,电脑将将config文件进行处理,将其中数值为零的节点进行舍去,实现遗传算法的优化,进而生成高速遗传算法代码,重新下载到fpga进行运行,从而能够实现测试特殊的数据输入下的遗传算法结果。

而遗传算法的优化过程如图3所示。以3x3的遗传网络结构为例,每一列表示同层遗传网络节点数据,每一层的每一个节点都和下一层的3个节点有数据传输。在遗传算法进行训练过程中,我们可以假设每个节点的初始值为0,如图3中的第一阶段。当遗传算法进行训练后当误差满足预设后,节点值进行优化后会产生新的节点,如图3中的第二阶段,有些节点值变化为1(实际应用中可能为别的非零值),有些节点仍为0,这些节点没有用处但是却占据了遗传算法运行的计算量,所以为了得到高速运行的遗传算法,我们可以对其进行优化,舍去不需要的节点,大大简化遗传算法运行的路径,如图3的第三阶段所示。



技术特征:

技术总结
本发明公开了一种基于FPGA高效训练的遗传算法及系统。该系统包括进行软件编程的电脑和进行硬件运算的FPGA。开始训练时,电脑将要进行运行的遗传算法代码下载到FPGA中进行训练;在FPGA中进行优化后,将运行结果节点输出反馈回电脑,在电脑中将优化的节点结果生成一个config文件保存下来;然后将优化完的节点结果代替原来遗传算法中的初始节点,在电脑编译生成高速遗传算法代码,并重新下载到电脑中,使用高速模式进行运行。本发明训练采用两个模式进行,实现了软硬件结合的遗传算法的训练与优化,采用了训练与执行过程的分离,极大的加快了系统数据处理和运算的速度,兼顾了灵活和效率。

技术研发人员:皇甫江涛;夏磊;邓皓;张海忠;冉立新
受保护的技术使用者:浙江大学
技术研发日:2017.03.29
技术公布日:2017.09.08
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1