倪红梅, 刘永建, 李盼池
(东北石油大学 a. 计算机与信息技术学院; b. 提高油气采收率教育部重点实验室, 黑龙江 大庆 163318)
稠油是石油资源的重要组成部分, 蒸汽驱是稠油油藏开采的一种行之有效的方法。在油藏条件一定的条件下, 蒸汽驱能否取得良好的效果, 关键取决于蒸汽驱注入参数的设定。注汽速度是蒸汽驱非常重要的一个注入参数, 其决定蒸汽驱的成败。近几十年, 国内外专家一直研究如何在整个蒸汽驱过程中选取最优的注汽速度[1,2]。以往的研究结果表明, 蒸汽驱存在最佳的注汽速度, 这些研究主要针对的是恒定式注汽速度。文献[3,4]通过现场试验表明, 在蒸汽驱过程中, 如果注汽速度是变化的, 将取得更好的开发效果。文献[5]通过解析模型, 验证了振荡式注汽速度优于恒定式注汽速度。针对以上情况, 笔者提出一种新的蒸汽驱振荡式注汽速度优化方法。
由于蒸汽驱振荡式注汽速度优化是一个复杂的多因素交叉影响的非线性动态优化问题, 因此按照传统的方法求解每个振荡周期的最优注汽速度是非常困难的。粒子群优化(PSO: Particle Swarm Optimization)算法[6]是一种基于群体的智能优化算法, 在优化问题上表现出良好的性能, 在一些领域中得到很好的应用[7-11], 包括各类复杂石油工程优化问题的求解[12,13]。但是在求解复杂优化问题时, 标准粒子群优化算法易陷入局部最优, 出现搜索停滞的现象。为解决这些问题, 笔者提出了自适应变异的混沌极值扰动粒子群优化算法。该算法引入混沌优化算子产生初始解, 依据各粒子适应值的距离, 确定粒子变异的幅度, 完成对各个粒子的自适应变异, 同时引入极值扰动算子对个体历史最优值和全局最优值实施随机扰动, 加快了收敛速度, 提高了种群的可进化能力。
现场评价蒸汽驱效果好坏是以累积油汽比衡量的, 累积油汽比值越大, 表明蒸汽驱效果越好。因此, 笔者首先以累积油汽比最大作为优化目标, 建立蒸汽驱注汽速度数学模型, 采用改进粒子群优化(IPSO: Improved Particle Swarm Optimization)算法对此模型进行求解, 确定出蒸汽驱振荡式注汽速度最优方案。以辽河油田齐40块为例, 笔者进行试算, 结果表明, 该方法可以指导蒸汽驱注入方案合理编制, 指导蒸汽驱高效运行, 提高经济效率。
依据质量平衡方程和能量平衡方程, 以达西定律为基础[14,15], 建立蒸汽驱注汽速度数学模型。则有
PSO算法是一种基于群体的智能优化算法。在PSO算法中, 一个粒子代表一个潜在的解, 每个粒子具有自适应寻找最优解的能力。粒子本身找到的最优解叫做个体极值(Pbest), 整个种群找到的最优解叫做全局极值(gbest)。粒子通过这2个极值更新其速度和位置, 具体更新公式如下
(7)
(8)
设种群共有N个粒子, 粒子维数为D。在IPSO算法中, 首先应用混沌优化算子产生初始解, 然后使用自适应变异算子对各粒子进行变异, 最后引入极值扰动算子对个体历史最优值和全局最优值实施随机扰动。下面分别给出3个算子的实现过程。
混沌搜索是将混沌状态引入优化变量中, 通过施加混沌扰动, 使其按系统内在规律进行遍历, 公式如下
yn+1=μyn(1-yn)
(9)
其中μ是混沌吸引子。当μ=4时, 系统进入混沌状态, 生成混沌变量yn(n=1,2,…), 其值在[0,1]区间内变化。
该算子具体实现过程如下:
Step1 初始化种群个数N, 控制参数μ=4,i=1;
Step2 随机产生y0=(y01,y02,…,y0D), 其中D为优化问题的维数,y0中不能包含0.25、0.5和0.75这3个数值;
Step3 按照式(9)生成yi=(yi1,yi2,…,yiD);
Step4 按照式(10)将yi映射为种群个体Xi=(xi1,xi2,…,xiD);
xi,j=xmin,j+yi,j(xmax,j-xmin,j)
(10)
Step5 计算i=i+1, 判断i>N, 满足条件则结束, 否则返回Step3。
该算子依据各粒子适应值的距离, 确定变异的幅度, 实现各粒子的自适应变异。具体实现步骤如下, 首先应用
(11)
(12)
随机扰动公式为
(13)
(14)
其中tid和tgd分别为个体历史最优值和全局粒子最优值进化停滞步数;Tid和Tgd分别为个体历史最优值和全局粒子最优值需要扰动的停滞步数阈值;U(0,1)为[0,1]间的随机数。
IPSO算法的具体实现步骤如下:
Step1 初始化参数, 包括给定种群规模N、 粒子维数L、 惯性权重ω、 学习因子c1和c2、 最大迭代次数Iter_Max、 个体历史最优值的停滞步数阈值Tid和全局粒子最优值的停滞步数阈值Tgd; 令初始的迭代次数t=1;
Step2 按照混沌初始化算子产生位置Xi和速度Vi,i=1,2,…,N;
Step6 执行自适应变异算子;
Step7 如果个体历史最优值进化停滞步数tid大于阈值Tid时, 按式(15)对其随机扰动;
Step8 如果全局最优值进化停滞步数tgd大于阈值Tgd时, 按式(16)对其随机扰动;
Step9 令t=t+1, 判断是否满足算法的终止条件, 如满足则停止, 输出相关结果; 否则转Step4。
以辽河齐40块某稠油油藏为例, 进行试算。假设连续注入蒸汽66个月, 振荡周期为1个月, 注汽干度为0.75, 注汽压力为3 MPa, 分别使用标准PSO算法和IPSO算法进行试算。辽河齐40块某稠油油藏区的基础数据如表1所示。
表1 辽河齐40块油田油藏的基础数据参数
IPSO算法的初始化参数确定如下: 粒子种群规模N=100; 粒子维数L=66; 惯性权值ω=0.729 8; 学习因子c1=c2=1.496 18; 最大迭代次数Iter_Max=2 000; 个体历史最优值的停滞步数阈值Tid=1和全局粒子最优值的停滞步数阈值Tgd=2。标准PSO算法涉及到的初始化参数与IPSO算法设置相同。根据笔者建立的蒸汽驱注汽速度数学模型, 应用IPSO算法和PSO算法分别对此模型进行了求解并优化了振荡式注汽速度, 最后得到蒸汽驱振荡式注汽速度最优方案, 如图1所示。
图1 连续注入66个周期的振荡式注汽速度方案Fig.1 Oscillatory steam injection rate scheme in 66 continuous cycle
依据PSO算法和IPSO算法得到2种不同的蒸汽驱振荡式注汽速度优化方案, 分别计算出每个振荡周期的累积油汽比和累积产油量, 并将其与恒定式注汽速度的优化结果进行了对比, 如图2和图3所示。
从图2可看出, 使用3种不同优化方法(恒定式注汽速度、 PSO算法和IPSO算法)连续注入蒸汽66个周期后, 得到的累积油汽比分别是0.158 2、0.173 8、0.187 2。IPSO算法优化方案与恒定式注汽速度方案相比累积油汽比增加了18.33%, 与PSO算法优化方案相比累积油汽比增加了7.71%。PSO算法优化方案与恒定式注汽速度方案相比累积油汽比增加了9.86%。
图2 3种注汽速度优化方案累积油汽比比较 图3 3种注汽速度优化方案累积产油量比较Fig.2 Comparison of cumulative oil steam ratio for 3 optimization schemes of steam injection rate Fig.3 Comparison of cumulative for 3 oil production optimization schemes of steam injection rate
从图3可看出, 使用3种不同优化方法(恒定式注汽速度、 PSO算法和IPSO算法), 得到的累积产油量分别是37 883.3 m3、40 495.7 m3、42 548.3 m3。IPSO算法优化方案与恒定式注汽速度方案相比累积产油量增加了12.31%, 与PSO算法优化方案相比累积产油量增加了5.07%。PSO算法优化方案与恒定式注汽速度方案相比累积产油量增加了6.90%。
从实验结果可看出, 分别将3种不同优化算法(恒定式注汽速度、 PSO算法和IPSO算法)应用于蒸汽驱振荡式注汽速度优化中, 取得了不同优化结果, 产生了不同的蒸汽驱振荡式注汽速度优化方案。从得到的累积油汽比和累积产油量可以看出, 振荡式注汽速度优化方案优于恒定式注汽速度方案, IPSO算法优化的振荡式注汽速度方案最好。从不同的振荡式注汽速度优化方案对比可以看出, IPSO算法表现出更有效的自寻优能力, 获得了较好的优化结果。
笔者提出了基于IPSO算法的蒸汽驱振荡式注汽速度优化方法。IPSO算法引入混沌优化算子产生初始解, 依据各粒子适应值的距离, 确定各粒子变异幅度, 完成对各个粒子的自适应变异, 同时引入极值扰动算子对个体历史最优值和全局最优值实施随机扰动, 引导粒子跳出局部最优, 加快了收敛速度, 提高了可进化能力。以辽河油田齐40块为例, 进行了实例研究。从研究结果可以看出, 不同优化算法得到不同的振荡式注汽速度优化方案, 通过这些优化方案计算得到不同的累积油汽比和累积产油量。结果对比分析表明, IPSO算法的优化结果好于PSO算法, 振荡式注汽速度好于恒定式注汽速度。IPSO算法应用到蒸汽驱振荡式注汽速度优化中, 能得到较优的振荡式注汽速度, 指导蒸汽驱注入方案合理编制, 最大限度的提高采收率。