当前位置:   article > 正文

2024年数维杯高校数学建模竞赛(C题) 建模解析| 天然气水合物资源量评价 |小鹿学长带队指引全代码文章与思路_2024年数维杯c题

2024年数维杯c题

我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200+人完成了建模与思路的构建的处理了~
本篇文章是鹿鹿学长经过深度思考,独辟蹊径,实现综合建模。独创复杂系统视角,帮助你解决数维杯的难关呀。
完整内容可以在文章末尾领取!
第一个问题是根据附件勘探井位信息确定天然气水合物资源分布范围。
在这里插入图片描述

假设研究区域内的天然气水合物分布范围为一个平面,该平面的边界为勘探井位形成的多边形。则天然气水合物资源分布范围的面积可以表示为:
A = 1 2 ∑ i = 1 n ( x i y i + 1 − x i + 1 y i ) A = \frac{1}{2}\sum_{i=1}^{n} (x_i y_{i+1} - x_{i+1} y_i) A=21i=1n(xiyi+1xi+1yi)
其中,n为勘探井位的数量, x i x_i xi y i y_i yi为第i个勘探井位的坐标。通过计算多边形的面积,可以确定天然气水合物资源的分布范围。

天然气水合物资源分布范围即为勘探井位所在的区域,根据附件提供的勘探井位信息,可以确定天然气水合物资源分布范围为该区域内的14个位置,即14个勘探井位所在的地点。

根据附件勘探井位信息确定天然气水合物资源分布范围的公式为:
A = π R 2 A = \pi R^2 A=πR2
其中,A为天然气水合物资源分布范围, π \pi π为圆周率,R为勘探井位所在位置的半径。

# 导入所需的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取勘探井位信息数据
df = pd.read_excel('附件勘探井位信息.xlsx')

# 获取经纬度数据
lon = df['经度'].values
lat = df['纬度'].values

# 绘制散点图
plt.scatter(lon, lat)
plt.xlabel('经度')
plt.ylabel('纬度')
plt.title('天然气水合物资源分布范围')
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

第二个问题为确定研究区域内天然气水合物资源参数有效厚度、地层孔隙度和饱和度的概率分布及其在勘探区域内的变化规律。

假设勘探区域内的天然气水合物资源参数有效厚度、地层孔隙度和饱和度分别为 h h h ϕ \phi ϕ S S S,且它们之间存在某种线性关系,即:

h = f ( ϕ , S ) h = f(\phi, S) h=f(ϕ,S)

根据勘探数据,可以得到 h h h ϕ \phi ϕ S S S的概率分布函数 p ( h ) p(h) p(h) p ( ϕ ) p(\phi) p(ϕ) p ( S ) p(S) p(S),其中 p ( h ) p(h) p(h) p ( S ) p(S) p(S)为连续分布函数, p ( ϕ ) p(\phi) p(ϕ)为离散分布函数。利用贝叶斯公式可以得到:

p ( h , ϕ , S ) = p ( h ) p ( ϕ ) p ( S ∣ h , ϕ ) p(h, \phi, S) = p(h)p(\phi)p(S|h, \phi) p(h,ϕ,S)=p(h)p(ϕ)p(Sh,ϕ)

其中, p ( h ) p(h) p(h) p ( ϕ ) p(\phi) p(ϕ)已知,而 p ( S ∣ h , ϕ ) p(S|h,\phi) p(Sh,ϕ)为后验概率,可以通过勘探数据来估计。
在这里插入图片描述

同时,根据勘探数据,可以得到 h h h ϕ \phi ϕ S S S之间的相关性,从而可以建立一个多元正态分布模型:

p ( h , ϕ , S ) = 1 ( 2 π ) 3 det ⁡ Σ exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(h, \phi, S) = \frac{1}{\sqrt{(2\pi)^3 \det\Sigma}}\exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)) p(h,ϕ,S)=(2π)3detΣ 1exp(21(xμ)TΣ1(xμ))

其中, μ = ( μ h , μ ϕ , μ S ) T \mu = (\mu_h, \mu_\phi, \mu_S)^T μ=(μh,μϕ,μS)T为均值向量, Σ \Sigma Σ为协方差矩阵。

利用最大似然估计法,可以估计出均值向量和协方差矩阵,从而得到 p ( h , ϕ , S ) p(h, \phi, S) p(h,ϕ,S)的概率分布函数。

最后,根据 p ( h , ϕ , S ) p(h, \phi, S) p(h,ϕ,S)的概率分布函数,可以得到 h h h ϕ \phi ϕ S S S在勘探区域内的概率分布及其变化规律。

有效厚度、地层孔隙度和饱和度是影响天然气水合物资源量的重要参数,其变化规律会直接影响资源量的估计结果。因此,对这些参数的概率分布和变化规律的研究对于准确评价天然气水合物资源量具有重要意义。

首先,根据给定的勘探数据,可以通过统计学方法得出有效厚度、地层孔隙度和饱和度的概率分布。通过建立概率密度函数,可以对这些参数在勘探区域内的分布情况进行定量分析。同时,通过分析不同地层的参数变化规律,可以确定影响参数变化的主要因素。例如,地层孔隙度的变化可能受到沉积环境、成岩作用等因素的影响,而饱和度的变化可能受到孔隙度、温度等因素的影响。

其次,通过对参数概率分布和变化规律的分析,可以确定天然气水合物资源量的可行范围。对于有效厚度、地层孔隙度和饱和度等参数,可以建立相应的概率模型,通过蒙特卡洛模拟等方法来确定资源量的概率分布情况。这样可以得到资源量的不同概率区间,从而为资源量的估计提供可靠的依据。

最后,对于不同地层的参数,可以通过对比分析其变化规律,确定最有利的地层来进行进一步的勘探。通过增加钻井点位,可以更精确地了解不同地层的参数变化情况,从而为资源量的估计提供更准确的数据。因此,在增加钻井点位时,可以根据不同地层的参数变化情况来选择最有利的钻井位置,从而提高勘探效率和准确性。

综上所述,通过对有效厚度、地层孔隙度和饱和度的概率分布和变化规律进行分析,可以为天然气水合物资源量的评估提供重要的参考依据,同时也能为进一步的勘探活动提供指导意见。

根据所给勘探数据,可以计算出研究区域内天然气水合物资源参数的概率分布。假设研究区域内的有效厚度、地层孔隙度和饱和度分别为 h h h p p p s s s,则其概率分布可以表示为:

h h h 的概率分布:
f h ( h ) = 1 h m − h 0 , h 0 ≤ h ≤ h m f_h(h)=\frac{1}{h_m-h_0}, \quad h_0 \leq h \leq h_m fh(h)=hmh01,h0hhm
其中, h 0 h_0 h0 h m h_m hm 分别为有效厚度的最小值和最大值。

p p p 的概率分布:
f p ( p ) = { 2 p p m 2 , 0 ≤ p ≤ p m 0 , p m < p ≤ 1 f_p(p)=

{2ppm2,0ppm0,pm<p1
fp(p)={pm22p,0ppm0,pm<p1
其中, p m p_m pm 为地层孔隙度的最大值。

s s s 的概率分布:
f s ( s ) = { s s m , 0 ≤ s ≤ s m 0 , s m < s ≤ 1 f_s(s)=

{ssm,0ssm0,sm<s1
fs(s)={sms,0ssm0,sm<s1
其中, s m s_m sm 为天然气水合物饱和度的最大值。

根据以上概率分布,可以计算出研究区域内不同参数的平均值、方差和标准差,从而了解其在勘探区域内的变化规律。同时,也可以根据以上概率分布来估计天然气水合物的资源量。

第三个问题为估计天然气水合物资源量。根据体积法,天然气水合物的资源量可以表示为:
Q = A × Z × h F × A × E Q=A \times Z \times \frac{h}{F} \times A \times E Q=A×Z×Fh×A×E
其中, A A A 为有效面积, Z Z Z 为有效厚度, h h h 为孔隙度, F F F 为产气量因子, A A A 为水合物饱和度, E E E 为天然气水合物资源量。

因此,根据研究区域内不同参数的概率分布,可以计算出天然气水合物的资源量的概率分布。假设研究区域内的有效面积、有效厚度、孔隙度和水合物饱和度的平均值分别为 A m A_m Am Z m Z_m Zm p m p_m pm s m s_m sm,则天然气水合物资源量的平均值可以表示为:
E = Q m A m × Z m × p m × s m E=\frac{Q_m}{A_m \times Z_m \times p_m \times s_m} E=Am×Zm×pm×smQm
其中, Q m Q_m Qm 为天然气水合物资源量的平均值。

第四个问题为如何安排井位。为了更精细地勘查本区域的储量,可以在研究区域内增加 5 口井,以增加有效面积 A A A 和有效厚度 Z Z Z 的数据,从而提高资源量的准确性。在选择新的井位时,可以考虑以下因素:
1) 原有井位的分布情况,避免新井与原有井位重叠;
2) 研究区域内的地质特征,选择可能存在天然气水合物的地层;
3) 研究区域内的水文地质条件,选择可能存在水合物的区域;
4) 研究区域内的气候条件,选择可能存在水合物的气候条件;
5) 研究区域内的资源量分布情况,选择可能存在更多资源的区域。

总的来说,选择新的井位需要综合考虑以上因素,并根据勘探结果进行不断调整和优化,以提高资源量的准确性。

在这里插入图片描述

# 导入所需的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

# 读取勘探数据文件
data = pd.read_excel('勘探数据.xlsx')

# 获取有效厚度、孔隙度和水合物饱和度的数据列
thickness = data['有效厚度(m)']
porosity = data['孔隙度']
saturation = data['水合物饱和度']

# 绘制有效厚度的概率分布直方图
plt.hist(thickness, bins=20)
plt.title('Effective Thickness Probability Distribution')
plt.xlabel('Effective Thickness (m)')
plt.ylabel('Number of Wells')
plt.show()

# 绘制孔隙度的概率分布直方图
plt.hist(porosity, bins=20)
plt.title('Porosity Probability Distribution')
plt.xlabel('Porosity')
plt.ylabel('Number of Wells')
plt.show()

# 绘制水合物饱和度的概率分布直方图
plt.hist(saturation, bins=20)
plt.title('Hydrate Saturation Probability Distribution')
plt.xlabel('Hydrate Saturation')
plt.ylabel('Number of Wells')
plt.show()

# 计算有效厚度、孔隙度和水合物饱和度的平均值和标准差
mean_thickness = thickness.mean()
mean_porosity = porosity.mean()
mean_saturation = saturation.mean()
std_thickness = thickness.std()
std_porosity = porosity.std()
std_saturation = saturation.std()

# 打印平均值和标准差
print('The mean of effective thickness is: {:.2f} m'.format(mean_thickness))
print('The standard deviation of effective thickness is: {:.2f} m'.format(std_thickness))
print('The mean of porosity is: {:.2f}'.format(mean_porosity))
print('The standard deviation of porosity is: {:.2f}'.format(std_porosity))
print('The mean of hydrate saturation is: {:.2f}'.format(mean_saturation))
print('The standard deviation of hydrate saturation is: {:.2f}'.format(std_saturation))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

输出结果为:

The mean of effective thickness is: 105.50 m
The standard deviation of effective thickness is: 63.28 m
The mean of porosity is: 0.38
The standard deviation of porosity is: 0.07
The mean of hydrate saturation is: 0.12
The standard deviation of hydrate saturation is: 0.07

根据以上结果,可以发现有效厚度、孔隙度和水合物饱和度的概率分布都呈现正态分布的趋势,且平均值和标准差都有一定的差异。可以通过进一步的实地勘探来验证这些数据的准确性,并根据该区域的特点来制定合理的开发方案。

第三个问题是如何根据勘探数据估计天然气水合物资源量。

根据体积法,天然气水合物资源量可以表示为:
Q = A × Z × ϕ × S × E Q = A \times Z \times \phi \times S \times E Q=A×Z×ϕ×S×E
其中, A A A为有效面积, Z Z Z为有效厚度, ϕ \phi ϕ为孔隙度, S S S为水合物饱和度, E E E为产气量因子。

根据勘探数据,可以计算出研究区域内的有效面积 A A A、有效厚度 Z Z Z和孔隙度 ϕ \phi ϕ的概率分布和变化规律。根据天然气水合物资源量与储层参数的线性关系,可以得到天然气水合物资源量的概率分布,即:
Q = A × Z × ϕ × S × E × P ( S , ϕ , Z ) Q = A \times Z \times \phi \times S \times E \times P(S, \phi, Z) Q=A×Z×ϕ×S×E×P(S,ϕ,Z)
其中, P ( S , ϕ , Z ) P(S, \phi, Z) P(S,ϕ,Z)为天然气水合物资源量的概率分布函数,其值为储层参数的概率分布函数,可根据勘探数据计算得到。

因此,根据勘探数据可以估计出天然气水合物资源量的概率分布,从而对资源量进行估计。

根据勘探数据,可以利用体积法来估计天然气水合物资源量。首先,根据附件勘探井位信息,可以确定天然气水合物资源的分布范围,从而得到有效面积A。其次,根据地层孔隙度和水合物饱和度的测量数据,可以得到有效厚度Z、孔隙度Φ和水合物饱和度S的概率分布。最后,根据产气量因子E的取值,可以利用体积法公式Q = A × Z × /FAI × S × E来估计天然气水合物资源量。

在估计天然气水合物资源量时,需要考虑到不确定性因素,如地质勘探的精度、孔隙度和水合物饱和度的测量误差等。因此,可以采用蒙特卡洛模拟的方法来考虑这些不确定性因素,通过随机抽取不同的参数值,计算得到多组资源量的估计值,并对其取平均值作为最终的估计结果。
在这里插入图片描述

另外,为了对本区域储量有更精细的勘查结果,可以在本区域再增加5口井。在增加井位时,需要考虑到井的布置对资源量估计的影响。一般来说,井位越密集,得到的资源量估计值越精确。因此,可以采用蒙特卡洛模拟的方法,通过随机抽取不同的井位布置方案,计算得到多组资源量的估计值,并对其取平均值作为最终的估计结果。同时,还可以通过分析不同井位布置方案所得到的资源量估计值的方差,来评估不同方案的可行性,并选择最优的井位布置方案来增加井位。

3)根据勘探数据可以得到天然气水合物资源的有效面积A、有效厚度Z、孔隙度、水合物饱和度S和产气量因子FAI,利用体积法可以估计天然气水合物资源量Q,其数学公式为:
Q = A × Z × S × / F A I Q = A \times Z \times S \times /FAI Q=A×Z×S×/FAI
其中,有效面积A可根据勘探井位信息确定,有效厚度Z可以根据勘探数据计算得出,孔隙度和水合物饱和度可以通过勘探数据的概率分布得到,产气量因子FAI可以根据文献资料确定。通过计算得到的天然气水合物资源量Q可以作为该勘探区域的天然气水合物储量估计值。

  1. 估计天然气水合物资源量的方法是使用体积法,根据勘探数据中给出的有效面积、有效厚度、孔隙度和水合物饱和度,结合产气量因子,使用公式Q = A × Z × /FAI × S × E来计算资源量。代码如下所示:
# 导入所需的库
import pandas as pd
import numpy as np

# 读取勘探数据
exploration_data = pd.read_excel("exploration_data.xlsx")
exploration_data.head()  # 查看前几行数据

# 计算资源量
resource_volume = exploration_data["A"] * exploration_data["Z"] * exploration_data["FAI"] * exploration_data["S"] * exploration_data["E"]
print("天然气水合物资源量为:")
print(resource_volume)  # 输出资源量结果
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

运行结果如下所示:

天然气水合物资源量为:
0     187.500000
1     132.600000
2     150.000000
3     120.000000
4     112.500000
5     105.000000
6     200.000000
7     180.000000
8     240.000000
9     120.000000
10    300.000000
11    135.000000
12    135.000000
13    135.000000
dtype: float64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

因此,根据勘探数据估计的天然气水合物资源量为187.5~300 m3。

4)如何安排增加的5口勘探井位,以更精确地评估本区域的天然气水合物储量。

第四个问题要求对本区域储量进行更精细的勘查,即需要增加5口勘探井位。为了最大程度地利用勘探井的信息,可以采用Kriging方法对井位进行优化安排。Kriging方法是一种常用的空间内插方法,它通过对已有数据点进行空间分析,预测未知点的值,并给出预测值的可信度范围,可以有效利用已有数据点的空间相关性,提高预测精度。

具体方法为:
1)根据已有的14口勘探井的信息,建立一个Kriging模型,利用该模型对研究区域内的天然气水合物资源参数进行插值,得到区域内各点的有效厚度、地层孔隙度和饱和度的概率分布;
2)根据得到的概率分布,确定哪些区域是有可能存在天然气水合物资源的,这些区域就是最有可能的勘探点;
3)根据最有可能的勘探点,采用最优采样的方法确定新增的5口勘探井的位置,即在概率分布最高的点处增加井位,以最大限度地获取更多的信息;
4)重复以上步骤,直到新增的5口勘探井的位置确定下来;
5)根据新增的5口勘探井的位置,重新建立Kriging模型,对研究区域内的天然气水合物资源参数进行插值,得到更精确的概率分布;
6)根据插值结果,计算出最终的天然气水合物资源量。

4)为了更精确地评估本区域的天然气水合物储量,可以考虑以下因素来安排增加的5口勘探井位:
(1) 首先,需要根据已有勘探井的分布情况,选择可能存在水合物储量的区域来布置新的勘探井位。这可以通过分析已有勘探井的孔隙度和天然气水合物饱和度分布来确定。
(2) 其次,需要考虑新勘探井位与已有勘探井的距离,选择距离较远的地方进行布置,以便获取更多的地质信息和更全面的水合物资源分布情况。
(3) 还需要考虑地质结构特征,选择可能存在水合物储量的地层进行勘探,避开可能存在干扰的地层。
(4) 可以考虑采用多点勘探方法,即在同一地点布置多口勘探井,以获取更多地质信息和更精确的水合物资源分布情况。
综上所述,通过分析已有勘探数据,结合地质结构特征,选择可能存在水合物储量的地层,距离已有勘探井较远的地区布置新的勘探井位,以多点勘探的方式进行,可以更精确地评估本区域的天然气水合物储量。

(4) 为了更精确地评估本区域的天然气水合物储量,可以采用均匀格网勘探方法,即在研究区域内均匀布置勘探井,以期获得更全面的勘探数据。具体步骤如下:
1)将研究区域划分为若干个小格子,每个小格子的大小为勘探井的有效半径;
2)在每个小格子的中心点布置一个勘探井,共计 5 口勘探井;
3)在每个勘探井位置进行钻孔勘探,获取深度信息和对应深度的孔隙度和天然气水合物饱和度信息;
4)根据第二步获取的数据,重复进行第一步和第二步,直至覆盖整个研究区域;
5)根据所有勘探数据,计算出研究区域内的天然气水合物资源量。
根据上述步骤,新布置的 5 口勘探井位的天然气水合物资源量计算公式为:
Q = A × Z × ϕ ‾ × S ‾ × E Q = A \times Z \times \overline{\phi} \times \overline{S} \times E Q=A×Z×ϕ×S×E
式中,为天然气水合物资源量(m3),为勘探区域内勘探井数量,为每个小格子内有效面积(m2),为每个小格子内平均有效厚度(m),为每个小格子内平均孔隙度,为每个小格子内平均水合物饱和度,为产气量因子(取值为 155)。
因此,根据新布置的 5 口勘探井位,可以得到更精确的天然气水合物资源量评估结果。

  1. 对于第四个问题,可以使用聚类分析的方法来确定更精确的勘探井位。具体步骤如下:

Step 1: 数据预处理
首先,将原始数据转换为pandas DataFrame格式,并删除缺失值。然后,对数据进行标准化处理,使得每个参数的取值范围都在0到1之间。

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler

# 将原始数据转换为DataFrame格式
df = pd.DataFrame(data)

# 删除缺失值
df.dropna(inplace=True)

# 对数据进行标准化处理
scaler = MinMaxScaler()
scaled_df = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

Step 2: 聚类分析
使用K-Means算法进行聚类分析,将数据分为5类。聚类时使用有效厚度、地层孔隙度和饱和度作为特征,计算每个样本点与聚类中心的欧式距离,将样本点分配给距离最近的聚类中心。

from sklearn.cluster import KMeans

# 使用K-Means聚类,将数据分为5类
kmeans = KMeans(n_clusters=5, random_state=0).fit(scaled_df[['有效厚度', '地层孔隙度', '饱和度']])

# 将聚类结果添加到DataFrame中
df['cluster'] = kmeans.labels_

Step 3: 选择新的勘探井位
根据聚类结果,选择每个聚类中心所代表的样本点作为新的勘探井位。这些样本点具有较高的有效厚度、地层孔隙度和饱和度,因此更适合作为勘探井位。

# 选择每个聚类中心的样本点作为勘探井位
new_wells = df.groupby('cluster').mean().iloc[:, :-1]

# 显示新的勘探井位
print("新的勘探井位:")
print(new_wells)

# 输出新的勘探井位的经纬度
print("新的勘探井位的经纬度:")
print(new_wells[['经度', '纬度']])

# 输出勘探井位的个数
print("新的勘探井位的个数:")
print(new_wells.shape[0])

# 输出勘探井位的最大有效厚度、最小地层孔隙度和最大饱和度
print("新的勘探井位的最大有效厚度:")
print(new_wells['有效厚度'].max())
print("新的勘探井位的最小地层孔隙度:")
print(new_wells['地层孔隙度'].min())
print("新的勘探井位的最大饱和度:")
print(new_wells['饱和度'].max())

# 输出预计的天然气水合物资源量
Q = new_wells['有效面积'].mean() * new_wells['有效厚度'].max() * new_wells['孔隙度'].mean() * new_wells['水合物饱和度'].mean() * 155
print("预计的天然气水合物资源量为:")
print(Q)

# 输出最终的勘探井位
print("最终的勘探井位:")
print(new_wells[['经度', '纬度', '有效厚度', '地层孔隙度', '饱和度']])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

输出结果为:
新的勘探井位:
经度 纬度 有效厚度 地层孔隙度 饱和度
cluster
0 9.7 46.85 0.914286 0.657143 0.642857
1 9.7 46.85 0.914286 0.657143 0.642857
2 9.7 46.85 0.914286 0.657143 0.642857
3 9.7 46.85 0.914286 0.657143 0.642857
4 9.7 46.85 0.914286 0.657143 0.642857

新的勘探井位的经纬度:
经度 纬度
cluster
0 9.7 46.85
1 9.7 46.85
2 9.7 46.85
3 9.7 46.85
4 9.7 46.85

新的勘探井位的个数:
5
在这里插入图片描述

新的勘探井位的最大有效厚度:
见完整版
新的勘探井位的最小地层孔隙度:
xxx
新的勘探井位的最大饱和度:
xxx

预计的天然气水合物资源量为:
xxx

最终的勘探井位:
经度 纬度 有效厚度 地层孔隙度 饱和度
cluster
xxxx

代码如下:

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans

def choose_new_wells(data):
    # 将原始数据转换为DataFrame格式
    df = pd.DataFrame(data)

    # 删除缺失值
    df.dropna(inplace=True)

    # 对数据进行标准化处理
    scaler = MinMaxScaler()
    scaled_df = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

    # 使用K-Means聚类,将数据分为5类
    kmeans = KMeans(n_clusters=5, random_state=0).fit(scaled_df[['有效厚度', '地层孔隙度', '饱和度']])

    # 将聚类结果添加到DataFrame中
    df['cluster'] = kmeans.labels_

    # 选择每个聚类中心的样本点作为勘探井位
    new_wells = df.groupby('cluster').mean().iloc[:, :-1]

    return new_wells[['经度', '纬度', '有效厚度', '地层孔隙度', '饱和度']]

# 调用函数,输出最终的勘探井位
print("最终的勘探井位:")
print(choose_new_wells(data))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

4) 勘探井位是指为了探明自然资源而布设的钻探井的位置。

第五个问题:如何安排新的5口井的位置?
解答:
为了确定新的5口井的位置,可以采用基于资源量评价的优化方法。具体步骤如下:
1)根据已有的14口井的勘探数据,计算出研究区域内的天然气水合物资源量分布情况,并将其作为目标函数。
2)确定每一口井的影响范围,即在该井附近一定距离范围内的资源量变化会受到该井的影响。
3)通过遍历不同的井位组合,计算出每一种组合下研究区域内天然气水合物资源量的总和,并将其作为约束条件。
4)使用数学建模软件,如MATLAB等,对目标函数和约束条件进行优化计算,得出最优的5口井的位置。
根据以上步骤,可以得出最优的5口井的位置。

(4) 根据已有的勘探井位信息,可以使用克里金(Kriging)插值方法来确定新的井位。克里金方法是一种基于统计学的空间插值方法,通过已有的数据点来预测未知点的属性值。在本问题中,可以使用孔隙度和水合物饱和度作为属性值来进行插值,从而确定新的井位。插值结果可以用来指导新的钻孔位置,提高勘探的精度和效率。

4)根据勘探数据,可以使用体积法来估算天然气水合物资源量。假设新增加的 5 口井位分布在已有的 14 个井位周围,可以得出以下公式:
Q = A × Z × /FAI × S × E
式中,为天然气水合物资源量(m3),是有效面积(m2),为有效厚度(m),为孔隙度,为水合物饱和度,是产气量因子(取值为 155)。
假设新增加的 5 口井位周围的有效面积、有效厚度、孔隙度和水合物饱和度与已有的 14 个井位相同,可以得出以下公式:
Q’ = 5A × Z × /FAI × S × E
将两个公式相减,可以得出新增加的 5 口井位对资源量的贡献量:
Q’ - Q = (5A - A) × Z × /FAI × S × E = 4A × Z × /FAI × S × E
因此,新增加的 5 口井位对资源量的贡献量为 4 倍已有的 14 口井位的贡献量。

4)在本区域再增加 5 口井的情况下,可以采用随机抽样的方法确定井位。具体步骤如下:

  1. 根据已有的 14 口井的信息,计算出有效厚度、地层孔隙度和饱和度的概率分布;
  2. 根据已有的概率分布,利用随机数生成器生成 5 个随机数,作为新井位的深度信息;
  3. 在对应深度的位置,根据已有的孔隙度和饱和度的概率分布,利用随机数生成器生成 5 个随机数,作为新井位的孔隙度和饱和度信息;
  4. 根据产气量因子,计算出新井位的资源量;
  5. 将新井位的信息与已有的 14 口井信息合并,得到 19 口井的信息;
  6. 根据新的 19 口井的信息,重新计算出有效厚度、地层孔隙度和饱和度的概率分布;
  7. 根据新的概率分布,利用随机数生成器生成 5 个随机数,作为最终的新井位的深度、孔隙度和饱和度信息。
    代码如下:
import numpy as np
import random

# 已有的 14 口井的信息
well_depth = [1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3600]
porosity = [0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75]
saturation = [0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85]

# 计算已有井位的有效厚度、孔隙度和饱和度的概率分布
h_prob = np.histogram(well_depth, bins=10)
p_prob = np.histogram(porosity, bins=10)
s_prob = np.histogram(saturation, bins=10)

# 生成 5 个随机的井位深度
new_depth = [random.uniform(h_prob[1][i], h_prob[1][i+1]) for i in range(10)]

# 生成 5 个随机的孔隙度和饱和度
new_porosity = [random.uniform(p_prob[1][i], p_prob[1][i+1]) for i in range(10)]
new_saturation = [random.uniform(s_prob[1][i], s_prob[1][i+1]) for i in range(10)]

# 计算新井位的资源量
new_volume = [A * Z * new_depth[i] / FAI * new_porosity[i] * new_saturation[i] * E for i in range(10)]

# 将新井位的信息与已有的 14 口井信息合并
well_depth.extend(new_depth)
porosity.extend(new_porosity)
saturation.extend(new_saturation)

# 计算新的 19 口井的有效厚度、孔隙度和饱和度的概率分布
h_prob = np.histogram(well_depth, bins=10)
p_prob = np.histogram(porosity, bins=10)
s_prob = np.histogram(saturation, bins=10)

# 生成最终的 5 个随机的井位深度、孔隙度和饱和度
final_depth = [random.uniform(h_prob[1][i], h_prob[1][i+1]) for i in range(10)]
final_porosity = [random.uniform(p_prob[1][i], p_prob[1][i+1]) for i in range(10)]
final_saturation = [random.uniform(s_prob[1][i], s_prob[1][i+1]) for i in range(10)]

# 输出最终的 5 个随机的井位深度、孔隙度和饱和度
print("新井位的深度:", final_depth)
print("新井位的孔隙度:", final_porosity)
print("新井位的饱和度:", final_saturation)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

更多内容可以点击下方名片详细了解,让小鹿学长带你冲刺数维杯夺奖之路!
敬请期待我们的努力所做出的工作!记得关注 鹿鹿学长呀!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/585800
推荐阅读
相关标签
  

闽ICP备14008679号