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_family_random_hard...

177 lines
9.8 KiB
YAML

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: 10000 # 目标有效样本数量
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
targeted_sampling: # 困难区域定向采样设置
enabled: true # 是否启用该功能或固定该参数
strategies: # 按参数分别定义定向采样策略
k:
components: # 分段采样组件列表
- {prob: 0.55, range: [1.0e-4, 1.0e-1], scale: "log"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
- {prob: 0.30, range: [1.0e-1, 1.0], scale: "log"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
- {prob: 0.15, range: [1.0, 100.0], scale: "log"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
skin:
components: # 分段采样组件列表
- {prob: 0.35, range: [-10.0, -3.0], scale: "linear"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
- {prob: 0.30, range: [-3.0, 3.0], scale: "linear"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
- {prob: 0.35, range: [3.0, 10.0], scale: "linear"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
wellboreC:
components: # 分段采样组件列表
- {prob: 0.60, range: [1.0e-4, 5.0e-2], scale: "log"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
- {prob: 0.25, range: [5.0e-2, 5.0e-1], scale: "log"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
- {prob: 0.15, range: [5.0e-1, 2.0], scale: "log"} # 定向采样组件prob 为概率range 为范围scale 为采样尺度
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: "family_random" # 流量制度生成模式
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_last" # 流动段索引选择策略名称
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.10} # 平稳生产后关井的流量制度族
- {name: "inc_tail_shutin", prob: 0.40} # 递增生产后关井的流量制度族
- {name: "dec_tail_shutin", prob: 0.15} # 递减生产后关井的流量制度族
- {name: "mild_step_tail_shutin", prob: 0.35} # 轻微阶跃变化后关井的流量制度族
n_prod_sections_range: [3, 5] # 生产流量段数量范围
prod_total_time_range: [24.0, 220.0] # 生产阶段总持续时间范围
shutin_dt_range: [12.0, 140.0] # 关井段持续时间范围
q_range: [50.0, 500.0] # 随机生成产量范围
duration_lognormal_mu: 1.6 # 生产段持续时间对数正态分布均值参数
duration_lognormal_sigma: 0.7 # 生产段持续时间对数正态分布标准差参数
max_rel_step: 2.0 # 相邻生产段产量最大相对跳变倍数
mult_noise_sigma: 0.05 # 产量乘性随机扰动强度
step_jump_rel_range: [1.20, 1.60] # 阶跃型流量制度的跳变幅度范围
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 # 余弦退火最小学习率