基于Spark基因表达式优化的爆破振动预测方法与流程

文档序号:14677653发布日期:2018-06-12 21:43阅读:209来源:国知局
基于Spark基因表达式优化的爆破振动预测方法与流程

本发明涉及机器学习领域,尤其是一种爆破振动预测方法。



背景技术:

爆破振动通常指的是爆破产生的振动波的强弱,可以用爆破振动的速度、频率和爆破振动时间来描述,在实践中,经常使用爆破振动速度峰值来描述爆破振动。爆破振动预测是研究爆破振动影响因子与爆破振动之间的关系,其中爆破振动影响因子包括总药量、段药量、爆心距、地质条件和高程差等诸多因素。

爆破振动预测是降低爆破危险系数、优化爆破方案和评估爆破安全等级等爆破关键问题的有效方法,而研究高效准确的适用于爆破振动预测的方法则尤为重要。近些年,针对爆破振动预测提出了一些方法,包括神经网络算法、遗传算法以及支持向量回归算法等,这些方法都是人工智能领域的典型算法,应用于爆破领域中,克服了以往萨道夫斯基经验公式的不足,提高了预测的准确率。但是影响爆破振动的因子很多且相互间存在一种复杂的非线性的关系,上述方法普遍存在不足,遗传算法表示单一;神经网络过度依赖初始权值和阈值,而且为了取得较高的精度,需要有大量的训练数据。

在机器学习领域,基因表达式编程算法(GEP)通常用来进行模式识别、分类以及回归分析等,基因表达式算法既有遗传算法“定长线性串”的特点,也有遗传编程“动态树结构”的搜索能力,已经有学者将GEP应用于爆破振动预测中,基因表达式编程算法具有强大的全局搜索寻优能力,面对多参数非线性问题时也具有极强的函数发现能力和较高的训练效率,能够发掘出较为准确的预测公式。但是随着工程爆破数据量快速膨胀,传统的单机处理数据集的方式会有很大问题,如内存不足、训练耗时过长等。演化算法的内在并行机制以及并行演化算法的优势为并行GEP的实现与应用提供了基础和解决途径。



技术实现要素:

为了克服现有技术的不足,能更好的解决海量数据条件下的训练效率问题,本发明提出了一种基于Spark的基因表达式编程算法优化的方法,采用并行计算技术,在不影响训练精度的条件下,提高预测效率,实现爆破振动效果预测在多个节点上并行计算。

本发明采用基于新一代分布式计算框架Spark,实现基因表达式编程算法优化的爆破振动预测并行化方法,详细步骤如下:

步骤1:利用数据预处理技术处理爆破数据,得到样本数据集,将样本数据集切分成多个子集,并且存储到HDFS分布式文件系统中;

所述的数据预处理为利用粗糙集的不协调率计算方法对爆破振动影响因子进行属性约简,具体包括以下步骤:

步骤1(a):基于原始数据集,计算原始数据集中各条件属性的不协调率,不协调率的公式定义为:

fi=(C-Ci)/C (1)

其中,fi为去掉条件属性i后的不协调率,C代表原始数据集,Ci代表去掉条件属性i之后不产生冲突的数据集,C-Ci即不协调的数据集;

步骤1(b):原始数据集中分别删除各条件属性i后,利用公式(1)计算出原始数据集中各条件属性i对决策属性的不协调率;

步骤1(c):根据步骤1(b)中得到的不协调率,去掉不协调率低于设定阈值的条件属性,保留高于阈值的条件属性;

步骤2:以步骤1(b)得到的各条件属性的不协调率,在原始数据集中删除不协调率低于阈值的条件属性后,从而生成新的数据集作为输入数据集,在各个节点上利用改进的基因表达式方法进行函数寻优,得到爆破振动效果预测函数;

步骤2中所述的改进的基因表达式方法进行函数寻优,具体包括以下步骤:

步骤2(a):对基因表达式方法中的个体染色体的结构进行调整,由原始“head+tail”结构调整为“head+body+tail”结构,head部分只能取运算集中的元素,body部分任意取运算集和终端集中的元素,tail部分只能取终端集中的元素;

步骤2(b):搭建Spark分布式集群,在Spark分布式集群中各个节点将训练数据作为弹性分布式数据集(Resilient Distributed Datasets,RDD)输入,将每个个体根据GEP的编码规则编码成个体,生成新的种群RDD数据集;

步骤2(c):将新生成的种群RDD数据集根据预先设定的适应度函数计算每个个体的适应度值;

步骤2(d):根据达尔文适者生存原则,选择适应度值高于设定阈值的个体进入下一代,生成优胜劣汰后的种群RDD;

步骤2(e):将步骤2(d)生成的种群RDD作交叉和变异操作;

步骤2(f):当步骤2(e)的交叉、变异操作达到设定的次数s,或者将测试数据代入预测函数,所述的预测函数为适应度值最大的个体所对应的函数,计算出的结果与实际值的误差结果小于设定误差值,则得到最终预测函数,本步骤结束;否则,进入步骤2(c)进行下一轮迭代;

在步骤2(c)到步骤步骤2(f)的迭代过程中,当迭代次数每迭代s/t次,则对各个节点上适应度值最大的个体进行个体扩散,扩散后再根据步骤2(f)所述的判断条件进行判断步骤是否结束,所述的t为节点间交流次数;

所述个体扩散是指在集群中包含m个节点,其中1个节点作为主节点,其余m-1个节点为从节点,每个从节点将本节点中适应度值最大的最优个体及从节点的编号发送给主节点,主节点从m-1个最优个体出选出适应度值最大的个体,并将该个体及该个体的节点的编号一起广播给所有从节点,并替换所有从节点中适应度值最小的个体,若被广播的个体的节点编号与从节点的节点编号相等时,则该从节点不做替换;

步骤3:将所需预测的工程爆破项目的数据参数输入到根据步骤2得到训练后的预测函数中,即可得到爆破振动峰值速度的预测值。

本发明的有益效果在于由于采用基于Spark基因表达式编程算法优化的爆破振动预测方法,与现有的技术相比,能更好的解决海量数据条件下的训练效率问题,通过采用新一代并行计算技术,改进基因表达式编程算法对爆破数据进行全局函数寻优,在训练过程中,各个阶段都是可以多节点并行处理的,这样能大大提高收敛速度,在不影响训练精度的条件下,提高训练的效率。

附图说明

图1是本发明的基本流程图。

图2是本发明并行基因表达式编程算法流程图。

图3是本发明单点交叉操作示意图。

图4是本发明两点交叉操作示意图。

图5是本发明均匀交叉操作示意图。

图6是本发明头部基因变异操作示意图。

图7是本发明尾部基因变异操作示意图。

图8是本发明交叉操作示意图。

具体实施方式

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

Spark是Apache推出的分布式计算框架,提供了并行编程模型,而且高效地支持更多计算模式,包括交互式查询和流处理。它的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。用户只需调用相关接口就可以完成分布式处理程序,为大数据的处理提供了有利条件。

如图1所示,本发明的基于Spark基因表达式编程算法优化的爆破振动预测方法包含以下步骤:

步骤1:利用数据预处理技术处理爆破数据,得到样本数据集,将样本数据集切分成多个子集,并且存储到HDFS分布式文件系统中;

原始的爆破数据为影响爆破振动效果的众多参数,包括段药量、爆心距等,以及在爆破过程中实际测得的参数,如爆破振动速度、频率和振动持续时间,这三个参数作为评价爆破振动强度的重要指标,为了得到真正影响爆破振动的主要因素,首先采用粗糙集方法进行属性约简,去掉无关变量。

所述的数据预处理为利用粗糙集的不协调率计算方法对爆破振动影响因子进行属性约简,具体包括以下步骤:

步骤1(a):基于原始数据集,计算原始数据集中各条件属性的不协调率,不协调率的公式定义为:

fi=(C-Ci)/C (1)

其中,fi为去掉条件属性i后的不协调率,C代表原始数据集,Ci代表去掉条件属性i之后不产生冲突的数据集,C-Ci即不协调的数据集;

步骤1(b):原始数据集中分别删除各条件属性i后,利用公式(1)计算出原始数据集中各条件属性i对决策属性的不协调率;

步骤1(c):根据步骤1(b)中得到的不协调率,去掉不协调率低于设定阈值的条件属性,保留高于阈值的条件属性;

通过上述方法可以最终可以去掉若干个不协调率低的条件属性,实现条件属性的约简。

步骤2:如图2所示,以步骤1(b)得到的各条件属性的不协调率,在原始数据集中删除不协调率低于阈值的条件属性后,从而生成新的数据集作为输入数据集,在各个节点上利用改进的基因表达式方法进行函数寻优,得到爆破振动效果预测函数;

步骤2中所述的改进的基因表达式方法进行函数寻优,具体包括以下步骤:

步骤2(a):对基因表达式方法中的个体染色体的结构进行调整,由原始“head+tail”结构调整为“head+body+tail”结构,head部分只能取运算集中的元素,body部分任意取运算集和终端集中的元素,tail部分只能取终端集中的元素;

步骤2(b):搭建Spark分布式集群,在Spark分布式集群中各个节点将训练数据作为弹性分布式数据集(Resilient Distributed Datasets,RDD)输入,将每个个体根据GEP的编码规则编码成个体,生成新的种群RDD数据集;

步骤2(c):将新生成的种群RDD数据集根据预先设定的适应度函数计算每个个体的适应度值;

代入训练数据,计算编码后个体相应的适应度。具体地,对种群RDD作map转换处理,在具体处理函数中,每次处理一个个体对象,根据具体的适应度计算函数,计算每个个体的适应度值,在工程爆破中适应度值可以是计算值与实际值的接近度。

步骤2(d):根据达尔文适者生存原则,选择适应度值高于设定阈值的个体进入下一代,生成优胜劣汰后的种群RDD;

步骤2(e):将步骤2(d)生成的种群RDD作交叉和变异操作;

所述的交叉操作为:

经过步骤2(d)得到选择操作的种群RDD后,需要进行交叉操作,按照交叉操作的概率选出种群中需要进行交叉操作的个体,随机作两两组合,每两个个体中的部分基因进行交换(如单点交叉、多点交叉、均匀交叉等)。在具体处理函数中,每次读取一个个体,按照交叉操作的概率决定是否输出该个体。然后将筛选后的所有个体作map转换处理,在具体处理函数中,每次读取两个个体对象,根据具体的基因交换规则,将两个个体的部分基因进行交换,生成交叉操作后的种群RDD,图3为单点交叉示意图,图4为两点交叉示意图。

均匀交叉是指两个配对个体的染色体每位基因以相同的交叉概率进行交换,具体是随机产生一个与个体编码长度等长的屏蔽字W=ω1ω2…ωl,按照下列规则交叉两个父本的基因:

若ωi=0,则父代第i个基因不相互交换;

若ωi=1,则父代第i个基因相互交换。

设W=01010101010101010,具体过程如图5所示。

所述的变异操作为得到交叉操作的种群RDD后,需要进行变异操作,按照变异操作的概率选择出需要进行变异操作的个体,然后对这些个体上的某位基因进行突变(根据基因所在部位,遵循不同部位的变异规则)。具体地,可以将交叉操作的种群RDD作map转换处理,在具体处理函数中,每次处理一个个体对象,根据变异操作的概率决定该染色体是否需要进行基因突变。若需要进行突变,按照相应的基因突变规则将该染色体上的某位基因进行变异,然后输出变异后的染色体对象;否则直接输出该染色体对象,最后生成变异操作后的种群RDD,图6为头部基因变异示意图,图7为尾部基因变异示意图,图8为交叉操作示意图。

步骤2(f):当步骤2(e)的交叉、变异操作达到设定的次数s,或者将测试数据代入预测函数,所述的预测函数为适应度值最大的个体所对应的函数,计算出的结果与实际值的误差结果小于设定误差值,则得到最终预测函数,本步骤结束;否则,进入步骤2(c)进行下一轮迭代;

在步骤2(c)到步骤步骤2(f)的迭代过程中,当迭代次数每迭代s/t次,则对各个节点上适应度值最大的个体进行个体扩散,扩散后再根据步骤2(f)所述的判断条件进行判断步骤是否结束,所述的t为节点间交流次数;

所述个体扩散是指在集群中包含m个节点,其中1个节点作为主节点,其余m-1个节点为从节点,每个从节点将本节点中适应度值最大的最优个体及从节点的编号发送给主节点,主节点从m-1个最优个体出选出适应度值最大的个体,并将该个体及该个体的节点的编号一起广播给所有从节点,并替换所有从节点中适应度值最小的个体,若被广播的个体的节点编号与从节点的节点编号相等时,则该从节点不做替换;(本段再看一下有无异议)

步骤3:将所需预测的工程爆破项目的数据参数输入到根据步骤2得到训练后的预测函数中,即可得到爆破振动峰值速度的预测值。

本实施例利用步骤2得到的振动速度、振动频率和振动持续时间的预测函数,对步骤1得到的样本数据集进行预测,得到振动速度、振动频率和振动持续时间的预测数据,利用步骤3得到的预测数据,进行爆破参数确定或判断爆破方案是否安全。

综上所述,本发明提出了一种基于Spark基因表达式编程算法优化的爆破振动预测方法,以上说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖如所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1