一种基于长短期记忆神经网络和粒子群优化算法的分层注水优化方法与流程

文档序号:29707710发布日期:2022-04-16 16:13阅读:281来源:国知局
一种基于长短期记忆神经网络和粒子群优化算法的分层注水优化方法与流程

1.本发明属于油气开采技术领域,具体涉及一种基于长短期记忆神经网络和粒子群优化算法的分层注水优化方法。


背景技术:

2.目前,我国大多数油田都进入开发的中后期,含水率上升,开发效益下降,在油田生产过程中,分层注水是改善层间注采矛盾、提高水驱开发效果的一种重要手段,开展分层注水优化研究对保持油田高效控水增油开发具有重要意义。
3.基于油藏数值模拟的分层注水优化存在地质模型不确定性强、所需数据多、计算耗时长等缺点。近年发展起来的机器学习和智能优化算法为分层注水的优化提供了一种新的手段。bp神经网络被广泛用于产量预测,但没有考虑历史时间序列数据的影响。


技术实现要素:

4.针对现有技术存在的问题,本发明公开一种基于长短期记忆神经网络和粒子群优化算法的分层注水优化方法。
5.本发明利用长短期记忆神经网络(lstm)和粒子群优化算法(pso)克服传统的基于油藏数值模拟的分层注水优化方法存在的不足。长短期记忆神经网络(lstm)一种时间递归神经网络模型,具备时序观念,具有长时间的记忆能力,属于典型的深度学习模型,能够更深层次挖掘数据之间的潜在规律。lstm是递归神经网络(rnn)的改进,在rnn的基础上增加了输入门、输出门和遗忘门,从而使得自循环的权重是变化的,这样一来在模型参数固定的情况下,不同时刻的积分尺度可以动态改变,从而避免了梯度消失或者梯度膨胀的问题,进而对生产动态进行准确预测。粒子群优化算法(pso)是根据鸟类觅食行为提出的优化算法,该算法在搜索空间内先随机初始化一群粒子,每一个粒子的位置都是一个解,将其代入目标函数得出适应度值,根据适应度值的大小来判断粒子的优劣,粒子的运动方向和步长由粒子的速度决定。在每一次迭代中,粒子会根据自身的信息和整个粒子群的信息不断更新自己的位置和速度,当达到终止条件时迭代停止,从而找到最优解。
6.本发明详细的技术方案如下:
7.一种基于长短期记忆神经网络和粒子群优化算法的分层注水优化方法,其特征在于:
8.步骤一、确定数据集并将数据集划分为训练集和测试集,具体方法如下:
9.s1.1:确定数据集
10.确定生产井组,选择井组内油井某个时间段内的产液量和含水率数据以及注水井对应时间内的分层注水量数据作为数据集;
11.若所述数据集中在某个时间点或某个时间段内存在缺失数据,则采用缺失数据附近数据的平均值填充所述缺失数据;其中,所述的某个时间点是指某一天;所述的某个时间
段是指连续的某几天,至少是两天;
12.s1.2:将数据集划分为训练集和测试集
13.按照预设比例将数据集划分为训练集和测试集;优选的,所述预设比例为8:2;
14.步骤二、mdi方法(所述mdi方法是指基于平均不纯度减少方法)分析各个注水层段对油井产液量贡献的重要程度,筛选出影响油井产液量主要注水层段,具体方法如下:
15.s2.1:基于mdi方法分析各个注水层段对油井产液量贡献的重要程度
16.从sklearn库中导入随机森林分类器模块,将各层注水量作为特征值、产液量作为观测值训练rf模型(所述rf模型是指随机森林模型);在rf模型的生成过程中,依次给rf模型增加分层注水量特征节点,当选定并添加某层注水量特征时,得到其对于观测值的mdi值,依次添加剩余分层注水量特征,直至遍历完所有特征时,停止决策树的生长,同时得到其余特征参数的mdi值;
17.s2.2:筛选出影响油井产液量主要注水层段
18.将各个分层注水量特征根据mdi值大小排序,保留mdi值排名靠前的分层注水量特征,确定影响油井产液量的主要注水层段;优选的,此处保留mdi值排名前85%的分层注水量特征;
19.步骤三、筛选出影响油井产液量的主要注水层段后,对各个注水层段的注水量进行归一化处理,具体方法如下:
20.采取最大最小归一化方法将各个注水层段的输入特征数据映射到区间[0,1]上,公式如下:
[0021][0022]
其中,x表示某一层的注水量的数据,x
min
表示该层注水量的最小值,x
max
表示该层注水量的最大值;
[0023]
步骤四、lstm模型的搭建、训练与验证,以分层注水量作为输入、油井产液量和含水率作为输出,训练得到油井的lstm模型,具体方法如下:
[0024]
s4.1:lstm模型的搭建
[0025]
从sklearn库中导入开源的人工神经网络算法工具模块搭建长短期记忆神经网络:
[0026]
在t时刻,lstm单元处理输入状态x
t
、短期隐藏状态h
t-1
和长期隐藏状态c
t-1
来生成输出状态y
t

[0027]
长期隐藏状态c
t-1
包含t时刻之前的时间步的相关信息;
[0028]
短期隐藏状态h
t-1
包含上一个时间步的信息;
[0029]
在lstm单元内,输入状态x
t
和短期隐藏状态h
t-1
被全连接层fc处理,其中g
t
、f
t
、i
t
、o
t
分别为:
[0030][0031][0032]
[0033][0034]
其中,f为非线性激活函数,一般为tanh或relu,公式(6)~(7);σ为激活函数,通常为sigmoid,公式(8);f
t
、i
t
、o
t
由激活函数σ决定,分别控制遗忘门、输入门和输出门,取值范围为0到1;g
t
为由非线性激活函数f决定,与i
t
一起控制输入门的参数,取值范围为0到1;w
xg
、w
xf
、w
xi
、w
xo
为处理输入x
t
的权重矩阵,w
hg
、w
hf
、w
hi
、w
ho
为处理短期隐藏状态h
t-1
的权重矩阵,bg、bf、bi、bo为偏置项;权重矩阵和偏置项是状态矩阵中每个元素的加权系数,在神经网络自我学习过程中由程序自动调整;
[0035][0036][0037][0038]
在遗忘门,lstm单元决定t时刻c
t-1
被遗忘的部分,这是通过执行f
t
和c
t-1
之间的数组元素相乘来实现的,具体来讲:c
t-1
里的元素被0相乘则全部遗忘,被1相乘则全部保留;在输入门,lstm单元通过执行g
t
和i
t
之间的数组元素相乘来决定在长期隐藏状态中g
t
被保存的部分;将遗忘门的处理信息和输入门的处理信息结合起来更新时刻t的长期隐藏状态(c
t
):
[0039][0040]
其中,代表数组元素依次相乘;
[0041]
输出门处理更新的长期隐藏状态c
t
和输出向量o
t
来生成更新的短期隐藏状态h
t

[0042][0043]
lstm模型参数包括训练次数、时间步长、批次大小、隐藏层数和隐藏层内包含神经元的个数、忽略dropout层随机忽略的神经元比例、全连接dense层输出向量转换维数、f函数的选择、σ函数的选择,这些参数根据网格搜索法确定,网格搜索法是指将各个参数可能的取值进行排列组合,列出所有可能的组合结果生成“网格”,然后将各组合用于lstm模型训练,并根据下述模型评价指标对结果进行评估,返回最佳的参数组合;
[0044]
采用均方误差mse(mean squared error)评价lstm模型训练的好坏:
[0045][0046]
其中,n是数据的个数,x

是经过lstm模型学习后预测的数据,x是真实的数据,均方误差越小则模型训练的越好;
[0047]
s4.2:lstm模型的训练
[0048]
采用步骤s4.1搭建的人工神经网络对训练集开展训练,在lstm模型训练过程中,优化器用来寻找模型的最优解,优化器采用adaptive moment estimation,简称adam优化器,adam优化器是自适应学习率优化器的一种,可以让学习率随训练过程自动修改,有着收敛速度快、调优容易等优点,所述adam优化器的算法策略:
[0049][0050]
式中,m
t
和v
t
分别为模型第t次迭代的一阶动量项和二阶动量项,β1和β2通常取值0.9和0.999,和分别表示m
t
和v
t
的修正值,w
t
表示模型第t次迭代的参数,∈取10-8

[0051]
最终训练得到油井的lstm模型。
[0052]
步骤五、采用pso算法优化各注水井分层注水量,具体方法如下:
[0053]
将所选井组内所有生产井按照步骤一、步骤二、步骤三、步骤四进行训练并保存各自的lstm模型,以井组内训练好的所有生产井的lstm模型为基础,以井组增油控水为目标采用粒子群算法整体优化各注水层段注水量,油井产水量等于油井产液量乘以含水率,油井产油量等于油井产液量减去油井产水量;
[0054]
粒子群优化算法是根据鸟类觅食行为提出的优化算法,简称pso算法,该算法在搜索空间内先随机初始化一群粒子,每一个粒子的位置都是一个解,将其代入目标函数得出适应度值,根据适应度值的大小来判断粒子的优劣,粒子的运动方向和步长由粒子的速度决定;在每一次迭代中,粒子会根据自身的信息和整个粒子群的信息不断更新自己的位置和速度,当达到终止条件时迭代停止;所述pso算法的迭代公式如下所示:
[0055][0056]
式中,vi(t+1)是粒子第t+1次迭代的速度;xi(t)是粒子第t次迭代的位置;vi(t)是粒子第t次迭代的速度;t是迭代次数;pi(t)是个体最优解;pg(t)是全局最优解;c1和c2为常数,分别表示社会认知学习因子和自我认知学习因子;r1和r2为区间(0,1)上的随机数;ω为惯性因子;
[0057]
粒子群优化算法需要调节的参数包括种群大小、迭代次数、惯性因子ω、社会认知学习因子c1和自我认知学习因子c2,这些参数需要根据优化效果进行调节;所述的种群大小根据问题的复杂程度进行调节,可以是100、300、500,也可以是0到1000之间的任意一个数值;所述的迭代次数根据优化结果是否达到最优值进行调节,取值范围通常为10到1000;所述的惯性因子ω可以是0.5、0.8、1.0,也可以是0.5到1.0之间的任意一个数值;所述的社会认知学习因子c1和自我认知学习因子c2通常取值为2。
[0058]
所述的粒子群优化算法在各个注水层段的分层注水量约束条件空间内先随机初始化一群粒子,每一个粒子的位置都是一个分层注水量,将其代入井组内训练好的所有生产井的lstm模型中预测各生产井的产液量和含水率;根据所预测各生产井的产液量和含水率的大小来判断分层注水量的优劣,分层注水量优化的运动方向和步长由分层注水量的变化速度决定;在每一次迭代中,分层注水量会根据自身的信息和所有分层注水量的信息不断更新自己的位置和变化速度,当井组总的产液量和含水率不再变化时迭代停止,得到井组最优的各个注水层段的分层注水量,否则继续调整分层注水量进行迭代计算。
[0059]
根据本发明优选的,所述的分层注水优化的各个注水层段的分层注水量约束条件为:该注水层段当前注水量上下波动一定比例。所述的一定比例可以是该注水层段当前注水量的0到100%之间的任意一个数值。
[0060]
本发明的有益效果在于:
[0061]
(1)针对分层注水油田,利用分层注水量、油井产液量和含水三个直观生产参数实现智能学习和预测,所需参数少,现场操作简单。
[0062]
(2)利用平均不纯度减少方法将数据从高维空间映射到低维空间,揭示影响油井生产的主要注水层段,结合长短期记忆神经网络准确捕捉注采生产变化趋势。
[0063]
(3)基于长短期记忆神经网络模型的粒子群优化算法可以快速实现分层注水优化,计算时间短、效率高,结果可靠。
附图说明
[0064]
图1是基于长短期记忆神经网络和粒子群优化算法的分层注水优化方法流程图;
[0065]
图2是长短期记忆神经网络的结构图;
[0066]
图3是a16井mdi特征重要性柱状图,纵坐标代表注水层段编码,每个注水层段给它一个命名;
[0067]
图4是a16井训练集产液量训练结果;
[0068]
图5是a16井训练集含水率训练结果;
[0069]
图6是a16井训练集和测试集损失函数随训练次数的变化;
[0070]
图7是a16井测试集产液量预测结果;
[0071]
图8是a16井测试集含水率预测结果;
[0072]
图9是实验井组产油量随迭代次数的变化。
具体实施方式:
[0073]
下面结合实施例和说明书附图对本发明进行详细说明,但不限于此。
[0074]
实施例、
[0075]
一种基于长短期记忆神经网络和粒子群优化算法的分层注水优化方法:
[0076]
如图1、2所示,在图2中,x
t
为输入状态;h
t-1
为短期隐藏状态;c
t-1
为长期隐藏状态;y
t
为输出状态;c
t
为更新时刻t的长期隐藏状态;h
t
为更新时刻t的短期隐藏状态;f
t
、i
t
、o
t
由激活函数σ决定,分别控制遗忘门、输入门和输出门的参数;g
t
为由非线性激活函数f决定,与i
t
一起控制输入门的参数;f为非线性激活函数;σ为激活函数;fc为全连接层;
[0077]
步骤一、确定数据集并将数据集划分为训练集和测试集,具体方法如下:
[0078]
s1.1:确定数据集
[0079]
确定生产井组,选择井组内油井某个时间段内的产液量和含水率数据以及注水井对应时间内的分层注水量数据作为数据集;
[0080]
若所述数据集中在某个时间点或某个时间段内存在缺失数据,则采用缺失数据附近数据的平均值填充所述缺失数据;
[0081]
s1.2:将数据集划分为训练集和测试集
[0082]
按照预设比例将数据集划分为训练集和测试集;在本实施例中,所述预设比例为
8:2;
[0083]
在步骤一中,选取1个井组作为分层注水优化的研究对象。该井组于2015年11月30日投产,最初采用合注方式生产,2019年9月25日开始采取分注措施,目前包括生产井12口和注水井7口,选取注水井各分层注水量为特征参数,收集和整理分注开始至2021年2月20日的分层注水量、油井日产液量和油井含水率数据为训练集,2021年2月21日到2021年6月30日的分层注水量、油井日产液量和油井含水率数据为测试集;
[0084]
步骤二、mdi方法(所述mdi方法是指基于平均不纯度减少方法)分析各个注水层段对油井产液量贡献的重要程度,筛选出影响油井产液量主要注水层段,具体方法如下:
[0085]
s2.1:基于mdi方法分析各个注水层段对油井产液量贡献的重要程度
[0086]
从sklearn库中导入随机森林分类器模块,将各层注水量作为特征值、产液量作为观测值训练rf模型(所述rf模型是指随机森林模型);在rf模型的生成过程中,依次给rf模型增加分层注水量特征节点,当选定并添加某层注水量特征时,得到其对于观测值的mdi值,依次添加剩余分层注水量特征,直至遍历完所有特征时,停止决策树的生长,同时得到其余特征参数的mdi值;
[0087]
s2.2:筛选出影响油井产液量主要注水层段
[0088]
将各个分层注水量特征根据mdi值大小排序,保留mdi值排名靠前的分层注水量特征,确定影响油井产液量的主要注水层段;优选的,此处保留mdi值排名前85%的分层注水量特征;
[0089]
在步骤二中,以生产井a16为例,进行各个注水井层段的mdi值计算,将各层段的mdi值由大到小排序,剔除排序靠后的、累积值为15%的特征,如图3所示,对生产井a16产液量和含水率影响最大的特征是a01e2s3miu+id层段,影响最小的特征是a03e2s3ui4-5层段,剔除a03e2s3ui4-5、a12e2s3miu1、a03e2s3uii、a12e2s3miu2-4共计4个特征,保留前25个特征作为lstm的输入变量。
[0090]
步骤三、筛选出影响油井产液量的主要注水层段后,对各个注水层段的注水量进行归一化处理,具体方法如下:
[0091]
采取最大最小归一化方法将各个注水层段的输入特征数据映射到区间[0,1]上,公式如下:
[0092][0093]
其中,x表示某一层的注水量的数据,x
min
表示该层注水量的最小值,x
max
表示该层注水量的最大值;
[0094]
在本步骤三中,对a16井各个注水层段的输入特征进行最大最小归一化处理。
[0095]
步骤四、lstm模型的搭建、训练与验证,以分层注水量作为输入、油井产液量和含水率作为输出,训练得到油井的lstm模型,具体方法如下:
[0096]
s4.1:lstm模型的搭建
[0097]
从sklearn库中导入开源的人工神经网络算法工具模块搭建长短期记忆神经网络:
[0098]
在t时刻,lstm单元处理输入状态x
t
、短期隐藏状态h
t-1
和长期隐藏状态c
t-1
来生成输出状态y
t

[0099]
长期隐藏状态c
t-1
包含t时刻之前的时间步的相关信息;
[0100]
短期隐藏状态h
t-1
包含上一个时间步的信息;
[0101]
在lstm单元内,输入状态x
t
和短期隐藏状态h
t-1
被全连接层fc处理,其中g
t
、f
t
、i
t
、o
t
分别为:
[0102][0103][0104][0105][0106]
其中,f为非线性激活函数,一般为tanh或relu,公式(6)~(7);σ为激活函数,通常为sigmoid,公式(8);f
t
、i
t
、o
t
由激活函数σ决定,分别控制遗忘门、输入门和输出门,取值范围为0到1;g
t
为由非线性激活函数f决定,与i
t
一起控制输入门的参数,取值范围为0到1;w
xg
、w
xf
、w
xi
、w
xo
为处理输入x
t
的权重矩阵,w
hg
、w
hf
、w
hi
、w
ho
为处理短期隐藏状态h
t-1
的权重矩阵,bg、bf、bi、bo为偏置项;权重矩阵和偏置项是状态矩阵中每个元素的加权系数,在神经网络自我学习过程中由程序自动调整;
[0107][0108][0109][0110]
在遗忘门,lstm单元决定t时刻c
t-1
被遗忘的部分,这是通过执行f
t
和c
t-1
之间的数组元素相乘来实现的,具体来讲:c
t-1
里的元素被0相乘则全部遗忘,被1相乘则全部保留;在输入门,lstm单元通过执行g
t
和i
t
之间的数组元素相乘来决定在长期隐藏状态中g
t
被保存的部分;将遗忘门的处理信息和输入门的处理信息结合起来更新时刻t的长期隐藏状态(c
t
):
[0111][0112]
其中,代表数组元素依次相乘;
[0113]
输出门处理更新的长期隐藏状态c
t
和输出向量o
t
来生成更新的短期隐藏状态h
t

[0114][0115]
lstm模型参数包括训练次数、时间步长、批次大小、隐藏层数和隐藏层内包含神经元的个数、忽略dropout层随机忽略的神经元比例、全连接dense层输出向量转换维数、f函数的选择、σ函数的选择,这些参数根据网格搜索法确定,网格搜索法是指将各个参数可能的取值进行排列组合,列出所有可能的组合结果生成“网格”,然后将各组合用于lstm模型训练,并根据下述模型评价指标对结果进行评估,返回最佳的参数组合;
[0116]
采用均方误差mse(mean squared error)评价lstm模型训练的好坏:
[0117][0118]
其中,n是数据的个数,x

是经过lstm模型学习后预测的数据,x是真实的数据,均方误差越小则模型训练的越好;
[0119]
s4.2:lstm模型的训练
[0120]
采用步骤s4.1搭建的人工神经网络对训练集开展训练,在lstm模型训练过程中,优化器用来寻找模型的最优解,优化器采用adaptive moment estimation,简称adam优化器,adam优化器是自适应学习率优化器的一种,可以让学习率随训练过程自动修改,有着收敛速度快、调优容易等优点,所述adam优化器的算法策略:
[0121][0122]
式中,m
t
和v
t
分别为模型第t次迭代的一阶动量项和二阶动量项,β1和β2通常取值0.9和0.999,和分别表示m
t
和v
t
的修正值,w
t
表示模型第t次迭代的参数,∈取10-8

[0123]
最终训练得到油井的lstm模型。
[0124]
在本步骤四中,搭建lstm模型,训练a16井lstm模型所用各项参数为:训练次数为480、时间步长为5,批次大小为128,隐藏层数为2,第一层内神经元数目为128,第二层内神经元数目为128,忽略dropout层随机忽略的神经元比例为0.2,全连接dense层输出向量转换维数为2,f函数选择relu函数,σ函数选择sigmoid函数,利用训练集中的515组数据对lstm模型训练200次后均方误差缓慢减小并趋于稳定,训练结果如图4~8所示。
[0125]
步骤五、采用pso算法优化各注水井分层注水量,具体方法如下:
[0126]
将所选井组内所有生产井按照步骤一、步骤二、步骤三、步骤四进行训练并保存各自的lstm模型,以井组内训练好的所有生产井的lstm模型为基础,以井组增油控水为目标采用粒子群算法整体优化各注水层段注水量,油井产水量等于油井产液量乘以含水率,油井产油量等于油井产液量减去油井产水量;
[0127]
粒子群优化算法是根据鸟类觅食行为提出的优化算法,简称pso算法,该算法在搜索空间内先随机初始化一群粒子,每一个粒子的位置都是一个解,将其代入目标函数得出适应度值,根据适应度值的大小来判断粒子的优劣,粒子的运动方向和步长由粒子的速度决定;在每一次迭代中,粒子会根据自身的信息和整个粒子群的信息不断更新自己的位置和速度,当达到终止条件时迭代停止;所述pso算法的迭代公式如下所示:
[0128][0129]
式中,vi(t+1)是粒子第t+1次迭代的速度;xi(t)是粒子第t次迭代的位置;vi(t)是粒子第t次迭代的速度;t是迭代次数;pi(t)是个体最优解;pg(t)是全局最优解;c1和c2为常数,分别表示社会认知学习因子和自我认知学习因子;r1和r2为区间(0,1)上的随机数;ω为
惯性因子;
[0130]
粒子群优化算法需要调节的参数包括种群大小、迭代次数、惯性因子ω、社会认知学习因子c1和自我认知学习因子c2,这些参数需要根据优化效果进行调节;所述的种群大小根据问题的复杂程度进行调节,可以是100、300、500,也可以是0到1000之间的任意一个数值;所述的迭代次数根据优化结果是否达到最优值进行调节,取值范围通常为10到1000;所述的惯性因子ω可以是0.5、0.8、1.0,也可以是0.5到1.0之间的任意一个数值;所述的社会认知学习因子c1和自我认知学习因子c2通常取值为2。
[0131]
所述的粒子群优化算法在各个注水层段的分层注水量约束条件空间内先随机初始化一群粒子,每一个粒子的位置都是一个分层注水量,将其代入井组内训练好的所有生产井的lstm模型中预测各生产井的产液量和含水率;根据所预测各生产井的产液量和含水率的大小来判断分层注水量的优劣,分层注水量优化的运动方向和步长由分层注水量的变化速度决定;在每一次迭代中,分层注水量会根据自身的信息和所有分层注水量的信息不断更新自己的位置和变化速度,当井组总的产液量和含水率不再变化时迭代停止,得到井组最优的各个注水层段的分层注水量,否则继续调整分层注水量进行迭代计算。
[0132]
所述的分层注水优化的各个注水层段的分层注水量约束条件为:该注水层段当前注水量上下波动一定比例。所述的一定比例可以是该注水层段当前注水量的0到100%之间的任意一个数值。
[0133]
在本步骤五中,按照步骤一至步骤四将井组内剩余生产井的lstm模型训练完并保存,读取井组内所有生产井已经训练好的模型,采用pso算法优化分层注水量,优化实施方案井组的pso参数设置如下:种群大小为500、迭代次数为30、惯性因子ω为0.8、社会认知学习因子c1为2、自我认知学习因子c2为2;分层注水优化的约束条件为当前分层注水量的
±
30%,分层注水量优化结果如图9和表1、表2:
[0134]
表1实施方案井组各注水层段注水量优化前后对比
[0135]
[0136][0137]
表2实施方案井组各生产井生产参数优化前后对比
[0138]
[0139][0140]
从表1可以看出优化后各注水层段注水量相比于优化前都有一定幅度的增减,总注水量相比于优化前减少了31.9m3/d;从表2可以看出实施方案井组优化后的总产液量减少18.4t/d、总产油量增加55t/d(比优化前增加12.2%)、平均含水率下降4.3%,起到了较好的增油控水作用,为油田分层注水优化提供指导。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1