You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/ML/nmWTAI-ML/configs/data_gen_case_neighborhood....

159 lines
8.2 KiB
YAML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

project: # 项目基础信息
name: pta_surrogate # 项目名称或流量制度族名称
paths:
project_root: ".."
data_dir: "data"
temp_dir: "data/temp"
samples_dir: "data/samples"
processed_dir: "data/processed"
models_dir: "models"
cpp:
training_exe: "../Training/Release/training.exe"
runner_exe: "../Training/Release/runner.exe"
hx_dll: "../Training/Release/HX_NWTM.dll"
license_dat: "../../Bin/Res/license/HXNWTM_license.dat"
dataset_runtime:
auto_build_dataset_bin: true # 缺少 dataset.bin 时是否自动调用 training.exe 生成
use_runner_server: true # 是否使用常驻 runner 进程加速批量正演
runner_timeout_sec: 240 # 单次 C++ 正演求解超时时间,单位秒
streaming_hdf5: # HDF5 样本文件流式写入设置
write_batch_size: 2000 # HDF5 每累计多少条样本批量写入一次
chunk_rows: 2048 # HDF5 数据分块行数,影响读写效率
compression: null # HDF5 压缩方式null 表示不压缩
parallel: # 并行样本生成设置
n_workers: 36 # 并行生成样本的工作进程数量
max_in_flight: 48 # 同时提交但尚未完成的最大任务数
checkpoint_every_n: 5000 # 每生成多少条样本输出一次检查点
checkpoint_every_sec: 180.0 # 每隔多少秒输出一次检查点
generation: # 数据集生成规模与随机性设置
n_samples: 50000 # 目标有效样本数量
random_seed: 42 # 随机种子,用于复现实验
max_rounds: 999999 # 最大采样轮数,防止生成过程无限循环
max_total_requested: 6000000 # 最多请求求解器计算的候选样本数
max_fail_examples_per_reason: 50 # 每类失败原因最多保存的示例数量
params: # 储层与井筒物理参数采样设置
all_physical_param_names: ["k", "skin", "wellboreC", "phi", "h", "Cf"] # 写入数据集的完整物理参数列表
active_param_names: ["k", "skin", "wellboreC", "phi", "h"] # 参与采样变化的物理参数列表
log_params: ["k", "wellboreC", "h"] # 采样时采用对数尺度的物理参数
ranges: # 各物理参数采样范围
k: [1.0e-4, 100.0] # 渗透率采样范围
skin: [-10.0, 10.0] # 表皮系数采样范围
wellboreC: [1.0e-4, 2.0] # 井筒储集系数采样范围
phi: [1.0e-2, 0.50] # 孔隙度采样范围
h: [2.0, 100.0] # 储层厚度采样范围
Cf: [1.0e-6, 5.0e-3] # 岩石压缩系数采样范围
fixed_params: # 固定不参与采样的物理参数
Cf:
enabled: true # 是否启用该功能或固定该参数
value: 4.315e-4 # 固定参数取值
sampling_method: "sobol" # 参数空间采样方法,如 Sobol、LHS 或 uniform
curve_processing: # 双对数曲线清洗与重采样设置
n_time_points: 160 # 每条双对数曲线统一重采样的时间点数
min_valid_points: 40 # 有效曲线至少需要的原始点数
feature_epsilon: 1.0e-12 # 取对数和除法时使用的最小保护值
use_slope_feature: true # 是否额外拼接压力曲线斜率特征
max_time_cap: 3000.0 # 曲线重采样允许的最大时间上限
min_time_floor: 1.0e-6 # 曲线重采样允许的最小时间下限
fixed_time_range: null # 固定重采样时间范围null 表示按样本自身范围
max_nonpos_deriv_frac: 0.80 # 允许非正压力导数点占比的最大阈值
p_log10_max: 6.0 # 压力曲线最大值的 log10 上限,用于过滤异常样本
d_log10_max: 6.0 # 导数曲线最大值的 log10 上限,用于过滤异常样本
outlier_factor: 3.0 # 异常值过滤系数,当前主要作为保留配置
schedule: # 流量制度生成与写入设置
write_schedule_to_params_bin: true # 写入 params.bin 时是否附带流量制度
max_points: 512 # 单个流量制度最多保留的流量段数量
generation_mode: "case_neighborhood" # 流量制度生成模式
case_schedule: # 固定基准流量制度
timeQ: [12.0, 12.0, 12.0, 48.0, 72.0] # 各流量段持续时间序列
q: [158.987, 190.785, 222.582, 238.481, 0.0] # 各流量段产量序列,末段为 0 通常表示关井
default_section_index: 5 # 默认用于计算双对数曲线的流动段索引
section_policy: # 流动段索引选择策略
mode: "fixed_value" # 流动段索引选择策略名称
fixed_value: 5 # 固定流动段索引取值
case_neighborhood: # 基准流量制度邻域扰动设置
dt_jitter_rel: 0.30 # 流量段持续时间相对扰动幅度
q_jitter_rel: 0.25 # 产量相对扰动幅度
shutin_dt_jitter_rel: 0.20 # 关井段持续时间相对扰动幅度
keep_monotonic_prod: false # 扰动后是否保持生产段产量单调
keep_last_q_zero: true # 是否强制最后一个流量段产量为 0
min_dt: 0.05 # 流量段最小持续时间
q_min: 10.0 # 扰动后产量下限
q_max: 5000.0 # 扰动后产量上限
family_random: # 随机流量制度族生成设置
families: # 流量制度类型及抽样概率
- {name: "flat_tail_shutin", prob: 0.25} # 平稳生产后关井的流量制度族
- {name: "inc_tail_shutin", prob: 0.35} # 递增生产后关井的流量制度族
- {name: "dec_tail_shutin", prob: 0.20} # 递减生产后关井的流量制度族
- {name: "mild_step_tail_shutin", prob: 0.20} # 轻微阶跃变化后关井的流量制度族
n_prod_sections_range: [3, 5] # 生产流量段数量范围
prod_total_time_range: [24.0, 160.0] # 生产阶段总持续时间范围
shutin_dt_range: [12.0, 96.0] # 关井段持续时间范围
q_range: [50.0, 500.0] # 随机生成产量范围
duration_lognormal_mu: 1.6 # 生产段持续时间对数正态分布均值参数
duration_lognormal_sigma: 0.6 # 生产段持续时间对数正态分布标准差参数
max_rel_step: 1.6 # 相邻生产段产量最大相对跳变倍数
mult_noise_sigma: 0.03 # 产量乘性随机扰动强度
step_jump_rel_range: [1.10, 1.35] # 阶跃型流量制度的跳变幅度范围
canonicalize_for_model: # 输入模型前的流量制度规范化设置
remove_shutin: false # 模型编码前是否移除关井段
q_thr: 1.0e-6 # 判断关井或零产量的阈值
merge_same_q: true # 是否合并相邻近似相同产量的流量段
merge_rel_tol: 1.0e-4 # 判断相邻产量相同的相对容差
timegrid_encoding: # 流量制度时间网格编码设置
n_u_points: 256 # 流量制度编码的统一时间网格点数
grid: "log" # 流量制度编码使用的时间网格类型
include_cum: true # 是否在流量编码中加入累计产量通道
include_dq: true # 是否在流量编码中加入产量变化量通道
include_shutin: false # 是否在流量编码中加入关井标志通道
q_eps: 1.0e-12 # 流量归一化时的最小保护值
normalize_mode: "global" # 流量制度编码归一化方式
q_global_max: 5000.0 # 全局产量归一化上限
cum_global_max: 25000000.0 # 累计产量归一化上限
shutin_thr: 1.0e-6 # 关井通道判定阈值
dataset_split: # 训练/验证/测试集划分设置
test_ratio: 0.15 # 测试集比例
val_ratio: 0.15 # 验证集比例
random_seed: 42 # 随机种子,用于复现实验
forward_model: # 正演代理模型结构配置
activation: "gelu" # 网络激活函数类型
norm: "layernorm" # 网络归一化层类型
dropout: 0.10 # Dropout 比例
hidden_dims: [512, 512, 256] # 正演代理模型 MLP 隐藏层维度
training: # 模型训练超参数设置
seed: 42 # 训练随机种子
learning_rate: 1.0e-3 # 初始学习率
weight_decay: 5.0e-4 # 权重衰减系数
batch_size: 256 # 训练批大小
epochs: 220 # 最大训练轮数
patience: 30 # 早停或调度器等待轮数
min_delta: 1.0e-6 # 认为验证集有改进所需的最小变化量
grad_clip_norm: 1.0 # 梯度裁剪范数上限
loss_beta: 0.5 # Huber/SmoothL1 损失的 beta 参数
scheduler: # 学习率调度器设置
type: "plateau" # 学习率调度器类型
factor: 0.5 # 学习率衰减倍数
patience: 8 # 早停或调度器等待轮数
threshold: 1.0e-6 # 调度器判定改进的阈值
cooldown: 0 # 学习率衰减后的冷却轮数
min_lr: 1.0e-6 # 学习率下限
T_max: 50 # 余弦退火调度周期参数
eta_min: 1.0e-6 # 余弦退火最小学习率