免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


中国石化人工智能大赛:中高渗水驱油藏注采参数调整 算法Baseline方案

发布日期:2025-09-23 12:27:51 浏览次数: 1526
作者:Coggle数据科学

微信搜一搜,关注“Coggle数据科学”

推荐语

中国石化人工智能大赛聚焦油田开发关键难题,探索AI在水驱油藏注采优化中的创新应用。

核心内容:
1. 水驱油藏开发的技术挑战与注采参数优化痛点
2. 基于历史数据构建时空预测模型的赛题设计
3. 多维度油藏数据(井位/井斜/射孔/生产)的分析与应用

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家
  • 赛题名称:中高渗水驱油藏注采参数调整方案设计
  • 赛题类型:数据挖掘
  • 赛题任务:利用提供的油藏历史数据集,构建一个高精度的时空预测模型。

https://aicup.sinopec.com/competition/SINOPEC-03/

unsetunset赛题背景unsetunset

地下石油并非储存在巨大的油湖中,而是分布于岩石的微小孔隙内。油田开发初期依赖地层自身的天然压力进行开采,但随着压力逐渐衰竭,油井产量会大幅下降。为维持产量,工程师采用水驱开发技术,即通过注水井向油层注水,以补充地压、驱赶原油。本次竞赛的数据就来自于一个进入水驱开发中后期的油藏,其动态调控的复杂性和重要性尤为突出。

水驱开发的核心挑战在于,水的流动性比油更好。若注采调控不当,注入水会沿高渗透通道直接流窜到生产井,形成无效水循环,大幅降低石油的最终采收率。因此,如何精确地协同调控多口注水井的注水量和生产井的产液量,以最大限度地驱替石油而非“水”本身,是决定油田开发经济效益的关键技术难题。

目前,注采参数的优化主要依赖工程师的经验和耗时的数值模拟,难以实时捕捉多口井之间的动态干扰。本次竞赛旨在探索一种新的解决方案:要求选手利用提供的油藏历史数据,构建人工智能模型,精准预测在给定的未来注采计划下,油井的含水率将如何变化,从而为油田的智能化决策提供支持。

unsetunset赛题任务unsetunset

参赛选手需利用提供的油藏历史数据集,构建一个高精度的时空预测模型。

依据油藏的静态及动态数据,在给定各油井日度数据作为输入条件的前提下,精准预测出油井日度含水率(%)。


含水率的上升趋势和速度,可以帮助工程师判断当前的注水方案是否有效。一个理想的状态是含水率缓慢而平稳地上升,这表明水正在均匀地推进,有效地将大片区域的原油“扫”向生产井。

unsetunset赛题数据分析unsetunset

1. 井位坐标数据表

定义了每口井在地面上的精确位置,是分析井与井之间相互影响的基础。每一行数据代表一口井的地理坐标。

  • 井号: 油井或水井的唯一编号,是关联所有其他数据表的关键“ID”。
  • 横坐标(m) / 纵坐标(m): 这是一个相对坐标系下的井口位置,单位为米。

2. 井斜数据表

现代钻井技术允许井在地下弯曲穿行,以更好地接触油层。这份数据精确描述了这种三维轨迹,揭示了井在地下的真实走向,是进行精确油藏模拟和分析的关键。

3. 射孔数据表

射孔是油井完井和后期改造中的关键步骤,它是在井筒的钢制套管上打出孔眼,建立油气从地层流入井筒的通道。这份数据就是这些“通道”的建立记录。

这份数据记录了油井在不同时间点都打开了哪些“阀门”来采油。以“1号井”为例,它在2000年、2016年、2021年等多个时间点都有射孔记录。这说明这口井的“工作状态”是动态变化的。

4. 单井油井月度训练数据表

以月为单位,跟踪和记录了一口油井在生产过程中的各项关键性能指标随时间的变化。 每一行数据代表了某一口井在某一个月份的生产表现总结。

5. 单井水井月度数据表

总结了每口注水井每月向地层补充能量的“工作量”和“工作状态”,是理解整个油田压力系统变化和预测油井“水淹”规律的关键输入。

6. 单井油井日度数据表

这是油井近期的微观工作日报。它以天为单位,提供了比月度数据更精细的动态信息,尤其能反映出短期操作、设备状态变化和工程师的直接干预措施。

7. 单井水井日度数据表

详细记录了每日的注水操作和井口状态,是分析油井含水率短期波动的直接原因的重要依据。

unsetunset赛题领域知识unsetunset

石油开采方法

石油开采是一个漫长而复杂的过程,通常分为多个阶段。目前世界上绝大多数油田所采用的“水驱开发”方式。

油田开发初期,地下油藏处于高压状态。当钻井打通岩层后,这种天然压力(如岩石上覆压力、溶解气驱、边水驱动等)会像“挤海绵”一样,将石油自发地推向压力较低的井筒,并举升到地面。

水总是寻找阻力最小的路径(高渗透带或裂缝)。如果某口生产井的含水率在注水后异常快速上升,这就像一个警报,提示注入水可能没有有效地大面积驱油,而是形成了“水流优势通道”(也叫水窜)直接短路到了这口生产井。

井位坐标与井斜数据

井在地面上的位置决定了其控制的地下区域。根据油藏工程中的“井网”概念(如五点法、九点法井网),注水井和生产井的相对位置决定了水驱油的方向和效率。

直井是垂直打下去的,而定向井/水平井可以在地下拐弯、水平延伸。这样做的目的是让井筒在油层中穿行的距离更长,接触更多的原油,提高单井产量(就像让收容点的大门开得更长)。

射孔与生产层位

油井并不是整个井筒都在采油。地下的油层像千层饼一样,一层一层的。通过“射孔”这道工序,用射孔弹在特定的深度位置炸开套管和水泥环,打开油层与井筒之间的通道。

生产层位通常遵循一个层次化的命名系统:大层位(层组)-小层位(砂层组)-具体小层号

  • Es2x: 代表一个主要的地质单元,如“二叠系下统”。这是最宏观的分类,表明所有这些井都位于相似的区域地质结构中。
  • F 或 15: 可能是砂层组(Facies),代表了沉积相或更细分的层组。
  • 123456: 代表了具体的砂层编号,例如 ES2XF1 表示 Es2x 大层位下 F 砂层组的第1号小层。
  • 括号内的数字 (1)(2): 进一步细分了小层,可能代表了该小层内部的子单元。

许多条目都以 起始层位 - 终止层位 的形式出现,这表明油井同时开采了多个连续的层位。

unsetunset特征工程unsetunset

将每口生产井(油井) 视为一个独立的预测单元,但其行为受到两类信息的共同驱动:

  1. 自身历史生产规律(时序特征)
  2. 周围注水井的时空影响(空间特征)

空间特征

量化本井与外部其他井(尤其是注水井)的空间相互作用。基于well_deviation数据,计算两口井井下轨迹之间的最近距离。这是更精确的特征,因为地下井身可能是弯曲的。

此外还需要判断注水井I和生产井O的射孔层位是否有重叠。

  • is_same_layer_{layer_name}: 布尔特征,标记与注水井是否在同层注采。
  • num_injectors_same_layer: 有多少口注水井在生产井的相同层位注水。

时序特征

  • 滚动均值(捕捉近期平均水平):
    • wc_rolling_mean_7d:过去7天平均含水率。
    • wc_rolling_mean_30d:过去30天平均含水率。
  • 滚动标准差(捕捉生产波动性):
    • wc_rolling_std_7d:过去7天含水率的标准差。值突然变大可能预示水窜或生产不稳定。
    • liquid_rolling_std_7d:产液量的波动性。
  • 滚动趋势(捕捉变化方向与速度):
    • wc_rolling_trend_7d:用过去7天的数据点拟合一条线性回归线,取其斜率作为特征。
    • wc_rolling_trend_30d:过去30天的趋势,反映长期方向。
  • 滚动最大值/最小值
    • wc_rolling_max_30d:过去30天的最高含水率。
    • wc_rolling_min_30d:过去30天的最低含水率。

unsetunset赛题Baselineunsetunset

基础思路

将日度、月度和静态数据合并到一个特征表中,然后用线性回归进行预测。

  • 将日度油井数据与井位坐标数据合并,并将日期转换为月度时间戳。
  • 对井斜数据进行聚合,创建井斜统计特征。
train_set = pd.merge(train_daily_oil, well_info, on = "井号", how="left")
train_set["日期"] = pd.to_datetime(train_set["日期"])
train_set["日期"] = train_set["日期"].dt.to_period('M')
train_set["日期"] = train_set['日期'].dt.to_timestamp()

well_deviation_agg = well_deviation.groupby("井号").agg({
    "测点深度": ["min""max"],
    "井斜角": ["max""nunique"],
    "方位角": ["max""nunique"]
})
well_deviation_agg.columns = [x[0] + "_" + x[1] for x in well_deviation_agg.columns]
well_deviation_agg = well_deviation_agg.reset_index()
train_set = pd.merge(train_set, well_deviation_agg, on = ["井号"], how="left")

train_daily_water_agg = train_daily_water.groupby(["井号""日期"]).agg({
    '干 压(Mpa)': ["min""max""sum"],
    '油 压(Mpa)': ["min""max""sum"],
    '日配注(m3)': ["min""max""sum"],
    '日注水(m3)': ["min""max""sum"],
})
train_daily_water_agg.columns = [x[0] + "_" + x[1] for x in train_daily_water_agg.columns]
train_daily_water_agg = train_daily_water_agg.reset_index()
train_set = pd.merge(train_set, train_daily_water_agg, on = ["井号""日期"], how="left")

train_monthly_oil['年 月'] = train_monthly_oil['年 月'].astype(str)
train_monthly_oil['年 月'] = pd.to_datetime(train_monthly_oil['年 月'], format='%Y%m')
train_monthly_oil['日期'] = train_monthly_oil['年 月'].dt.to_period('M')
train_monthly_oil["日期"] = train_monthly_oil['日期'].dt.to_timestamp()
train_set = pd.merge(train_set, train_monthly_oil, on = ["井号""日期"], how="left")

train_set = train_set.drop(["ID""井号""日期""生产层位""年 月""层 位"], axis=1)
test_set = pd.merge(validation_daily_oil, well_info, on = "井号", how="left")
test_set["日期"] = pd.to_datetime(test_set["日期"])
test_set["日期"] = test_set["日期"].dt.to_period('M')
test_set["日期"] = test_set['日期'].dt.to_timestamp()

test_set = pd.merge(test_set, well_deviation_agg, on = ["井号"], how="left")
test_set = pd.merge(test_set, train_daily_water_agg, on = ["井号""日期"], how="left")
test_set = pd.merge(test_set, train_monthly_oil, on = ["井号""日期"], how="left")
test_set = test_set.drop(["id","井号""日期""生产层位""年 月""层 位", ], axis=1)
model = LinearRegression()
model.fit(train_set.drop(['含水'"日产油(t)"], axis=1).fillna(0), train_set["含水"])

pred = model.predict(test_set.fillna(0)).astype(int)
validation_daily_oil["predict"] = pred
validation_daily_oil[["id""predict"]].to_csv("result.csv", index=None)

进阶思路

  • 更多的特征工程

井间距离:除了简单的井口坐标距离,更精确的特征是利用井斜数据计算井筒在地下油层中的最近距离平均距离

连通性指标:将每口井视为图中的节点,井之间的空间关系(如距离、层位连通性)作为边的权重。

考虑多层位交互:射孔数据表明油井在不同层位进行生产。可以构建分层位的空间特征,

趋势与波动:除了简单的滚动均值和标准差,可以引入更复杂的时序特征,如偏度(skewness) 和峰度(kurtosis)

注水滞后效应:注水对油井含水率的影响通常存在滞后性。可以计算注水井在过去一定时间窗口内(例如,30天、90天)的累计注水量,作为当前时刻的输入特征。

交叉特征:将时序特征和空间特征进行组合。例如,计算“距离生产井最近的注水井在过去30天的平均注水量”,或者“与生产井同层位的注水井的累计注水量”。

  • 尝试决策树模型

线性模型难以捕捉油藏系统中复杂的非线性关系,树模型能够自动学习复杂的非线性关系。

  • 含水率的“递增”后处理

含水率是单调递增的,那么历史的上升速度对未来的预测至关重要。


 学习大模型 & 讨论Kaggle  #

图片


△长按添加竞赛小助手

每天大模型、算法竞赛、干货资讯

与 36000+来自竞赛爱好者一起交流~图片

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询