一、发现问题:
- 使用专门的油藏数据进行初步调查发现,油田价值的变化的原因80%都是由于油藏条件的不确定性造成的(假设不确定性来源有:勘测结果,储量、生产率、油价和利率)。
- 如果我们能够准确地估算出模型参数,那么模型就可以大概给出储量和生产率的值。
之前估算出参数模型方法:通过判断岩性和深度来找到一个相似的储层,来得出参数值 (这种方法假设参数服从对数正态分布)
问题:粗糙且不准确
二、我们提出的解决方法:
首先我们做出如下假设:
1)勘测结果——遵循伯努利概率分布
2)油价——遵循Schwartz-Smith模型
3)利率——遵循Cox-Ingersoll-Ross模型
4)生产率和储量——遵循可压缩液体储罐模型
方法一:
对Hultzsch等人提出的模型进行扩展:没有像传统方法那样假设参数符合对数正态分布,而是对每个参数使用最合适的概率分布(也就是上面的假设),而且我们还要使用高斯copula来调节参数之间的关联。
方法二:
使用CHAID算法对储层进行聚类(寻找储层之间的关联)并估计参数,注意在这里,我们使用机器学习是用来聚类储层的,而不是直接估计参数。在聚类储层的基础上再确定每个参数的概率分布。
Tip:在方法一里面我们会使用老方法(基于油田的岩性和深度)对储层进行聚类,方法二中不使用这种方法进行聚类
三、怎么做
先前我们说生产率和储量是遵循可压缩液体储罐模型的,所以我们使用该模型来估算生产率和储量。接下来我们就具体介绍Compressible-liquid Tank Model(可压缩液体储罐模型):
模型需要的参数:
1)净工资:
h
h
h
2)孔隙率(度):
ϕ
\phi
ϕ
3)初始含油饱和度:
S
0
S_0
S0
4)地层体积系数:
B
0
B_0
B0
5)石油渗透率:
k
0
k_0
k0
6)石油粘度:
μ
0
μ_0
μ0
7)泄油面积:
A
A
A
8)原始地层压力:
p
ˉ
0
\bar{p}_0
pˉ0
9)井底压力:
p
ˉ
w
f
\bar{p}_{wf}
pˉwf
10)泄油面积形状因子:
C
A
C_A
CA
11)表皮系数:
s
s
s
12)水的压缩系数:
c
w
c_w
cw
13)原油压缩系数:
C
0
C_0
C0
14)地层压缩率:
c
f
c_f
cf
15)油井半径:
r
w
r_w
rw
3.1、了解了参数之后,接下来使用可压缩液体储罐模型计算生产率和储量。
第一步:
计算出总的压缩率c:
c
=
C
o
S
o
+
(
1
+
S
o
)
c
w
+
c
f
c=C_oS_o +\left(1+S_o\right) c_w+c_f
c=CoSo+(1+So)cw+cf
计算出孔隙体积:
V
p
=
7757.792
A
h
ϕ
(
R
B
)
V_p=7757.792 A h \phi(R B)
Vp=7757.792Ahϕ(RB)
ps:这里RB石油在油藏条件下的体积单位
计算原油地质储量:
V
OOIP
=
V
p
S
o
B
o
(
S
T
B
)
V_{\text {OOIP }}=\frac{V_p S_o}{B_o}(S T B)
VOOIP =BoVpSo(STB)
ps:STB是石油的体积单位:标准桶
计算单口井的生产率指数(反应不同时期井口产油率的变化):
J
=
0.00708
h
k
O
μ
o
(
1
2
ln
A
r
w
2
C
A
n
t
+
5.75
+
s
)
(
R
B
/
d
a
y
/
p
s
i
)
J=\frac{0.00708 h k_O}{\mu_o\left(\frac{1}{2} \ln \frac{A}{r_w^2 C_A n_t}+5.75+s\right)}(R B / d a y / p s i)
J=μo(21lnrw2CAntA+5.75+s)0.00708hkO(RB/day/psi)ps:设其中的t=0,
n
t
n_t
nt表示了在时间t时的生产井数量。
接下来第二步
计算时间t时的最大可实现生产率(文中这里Cakcukate可能是错误的,应该是Calculate):
q
t
=
n
t
J
[
p
ˉ
t
−
p
ˉ
w
f
]
B
o
(
S
T
B
/
d
a
y
)
q_t=n_t \frac{J\left[\bar{p}_t-\bar{p}_{w f}\right]}{B_o}(S T B / d a y)
qt=ntBoJ[pˉt−pˉwf](STB/day)ps:单位是标准桶/天
计算衰减率:
λ
t
=
n
t
J
V
p
C
(
Per day
)
\lambda_t=\frac{n_t J}{V_p C}(\text { Per day })
λt=VpCntJ( Per day )ps:单位是每天
计算时间t时的生产率:
y
t
=
min
{
q
t
1
−
e
−
λ
t
−
1
Δ
t
λ
t
−
1
,
C
⋅
Δ
t
}
(
S
T
B
∣
d
a
y
)
y_t=\min \left\{q_t \frac{1-e^{-\lambda_{t-1} \Delta t}}{\lambda_{t-1}}, C \cdot \Delta t\right\}(S T B \mid d a y)
yt=min{qtλt−11−e−λt−1Δt,C⋅Δt}(STB∣day)
最后我们将设置t=t+1,如果此时t=T,就计算完了。否则的话就计算t=t+1时的油层压力:
p
ˉ
t
+
1
=
p
ˉ
t
−
B
O
V
p
c
y
t
(
p
s
i
)
\bar{p}_{t+1}=\bar{p}_t-\frac{B_O}{V_p c} y_t(p s i)
pˉt+1=pˉt−VpcBOyt(psi)
计算完此时的油层压力之后,再回到第二步开头计算t=t+1时的最大可实现生产率。至此储量和生产率就计算完了。
3.2、用Schwartz-Smith模型计算油价:
Schwartz-Smith模型将时间t时的商品价格
S
t
S_t
St用两个随机元素——价格的短期偏差
X
t
X_t
Xt和长期均衡价格水平
ξ
t
ξ_t
ξt进行表示:
ln
(
S
t
)
=
ξ
t
+
χ
t
\ln \left(S_t\right)=\xi_t+\chi_t
ln(St)=ξt+χt
ξ
t
ξ_t
ξt被表示为算术布朗运动过程:
d
ξ
t
+
μ
ξ
d
t
+
σ
ξ
d
z
ξ
dξ_t+μ_ξdt+σ_ξdz_ξ
dξt+μξdt+σξdzξ其中
μ
ξ
μ_ξ
μξ和
σ
ξ
σ_ξ
σξ分别是长期均衡价格水平的漂移率和波动率。
ξ
t
\xi_t
ξt表示为Ornstein Uhlenbeck(均值回复)过程,如下所示:
d
χ
t
=
−
κ
χ
t
d
t
+
σ
χ
d
z
χ
d\chi_t=-κ\chi_tdt+σ_\chi dz_\chi
dχt=−κχtdt+σχdzχ其中,
κ
κ
κ是回归率,
σ
χ
σ_\chi
σχ是短期偏差的波动率,
d
z
χ
dz_\chi
dzχ和
d
z
ξ
dz_ξ
dzξ是维纳过程的相关增量,因此
d
z
χ
d
z
ξ
=
ρ
d
t
dz_\chi dz_ξ = ρ dt
dzχdzξ=ρdt。到这里我们使用Schwartz-Smith模型计算价格就完了。
3.3、用Cox-Ingersoll-Ross Model计算利率
Cox-Ingersoll-Ross模型是用于解决Vasicek模型出现负利率问题的单因素模型。计算公式如下所示:
d
r
=
κ
(
θ
−
r
)
d
t
+
σ
r
d
z
dr=κ(\theta-r)dt+σ\sqrt{r}dz
dr=κ(θ−r)dt+σrdz式中κ是逆转率、
θ
\theta
θ是利率回复水平、
σ
σ
σ是波动率。
使用卡方自动交互检测算法估算:
前面我们已经使用方法一为每个参数使用对应的合适的模型估算出了参数的值,接下来我们就介绍方法二——使用卡方自动交互检测。
首先要知道使用方法一储罐模型估算生产率时需要的参数可以在勘探钻井之前估计假设得出(比如:形状因子、井半径等),但是有些参数只能在勘探钻井之后进行测量得出(孔隙率、原油饱和度等),对于这些参数,我们也可以使用钻井前一些可用的参数开发一个预测模型来预测参数值。
预测变量的选择如下:
1.岩性 ,分四类:(1)未知 (2)砂岩 (3)碳酸盐岩 (4)白云石
2.深度
3.沉积体积以及置信度:(置信度分成高、中、低)
4.成岩叠加的类别以及置信度
5.结构划分以及置信度
5.异质性
6.油气圈闭类型
之后我们就对储罐模型需要但在勘探钻井前得不到的参数使用卡方自动交互检测建立一个该参数的预测模型。预测的模型会使用我们上面定义的几个预测变量来估计每个参数值。
我们将
O
e
∈
0
,
1
O_e∈{0,1}
Oe∈0,1定义为勘探结果,0代表没有石油,1代表有石油。我们要估计油田的价值,油田价值取决于勘探结果
O
e
O_e
Oe、生产率
q
t
q_t
qt、油价
S
t
S_t
St、利率
r
t
r_t
rt、相关成本向量
C
C
C、财政制度
F
F
F和税率
P
P
P,以上变量满足关系式:
X
=
f
(
F
,
P
,
O
e
,
q
t
,
S
t
,
C
,
r
t
)
X=f(F,P,O_e,q_t,S_t,C,r_t)
X=f(F,P,Oe,qt,St,C,rt)
我们勘探和开发需要花费
T
e
T_e
Te和
T
d
T_d
Td年。开发完成到结束生产之间有
T
p
T_p
Tp年。我们将勘探开始时间表示为t=0。整个勘探将在t=
T
e
T_e
Te完成,开发将在t=
T
e
+
T
d
T_e+T_d
Te+Td完成,生产将在t=
T
e
+
T
d
+
T
p
=
T
T_e+T_d+T_p=T
Te+Td+Tp=T之前完成。为了方便计算,我们将整个开发周期离散分为N个
Δ
t
Δt
Δt,则整个开发周期所需要的时间T=
N
∗
Δ
t
N*Δt
N∗Δt
第一步:令t=
Δ
t
、
2
Δ
t
、
3
Δ
t
、
.
.
.
、
T
Δt、2Δt、3Δt、...、T
Δt、2Δt、3Δt、...、T,如果我们的勘测结果
O
e
=
1
O_e=1
Oe=1说明有石油,就去执行步骤二,否则的话就计算勘测和收购油田的成本,还要计算出投入的成本与收入的差额。
**第二步:**生成储层参数并计算时间(这里我不是很懂他说的什么意思)
t
=
T
e
+
T
d
t=T_e+T_d
t=Te+Td到
t
=
T
t=T
t=T的每天的生产率。并且求和。
第三步:在开发到结束生产这段时间内,如果开发成本大于了收入额我们可以放弃期权。
到这里文中所描述的CHAID算法就执行完了。(文中结论和讨论部分建议去阅读原文)
总结
使用CHAID算法建设出来的参数估算模型的性能优于高斯copula模型性能。但是对油田产量和油田价值的估计波动仍然较大。所以我们未来应该开发出一个更加精确的机器学习模型。