TL-CladOpt 是一个面向激光熔覆/DED-LB 工艺硬度预测的 MATLAB 项目,当前主脚本为 tlgnn_v3_multisource.m。它结合多源域迁移学习、小样本目标域回归和交叉验证评估,用已有实验数据预测目标工艺参数组合对应的显微硬度,并给出已观测组合的排序推荐。
当前仓库已经包含一组已生成结果文件。根据 tlgnn_v3_summary_metrics.csv,现版本在目标域上的交叉验证结果为:
R2 = 0.8060RMSE = 81.24MAE = 49.50- 迁移分支参考结果:
R2 = 0.4952,RMSE = 131.05
- 多源域输入:支持同时读取多个源域 CSV,用共享工艺特征进行预训练。
- 保留迁移路径:先在共享特征上做自编码器和源域硬度预训练,再迁移到目标域。
- 强化目标域建模:目标域回归直接使用 6 维完整工艺向量。
- 小样本友好:优先使用 GPR;若无对应工具箱则自动回退到 bagged trees 或精确组合均值。
- 固定评估协议:默认采用按行
5-fold交叉验证,输出逐折指标和整体汇总。 - 推荐结果可解释:输出已观测参数组合的预测硬度、均值硬度、线能量和送粉/长度比。
TL-CladOpt/
├─ tlgnn_v3_multisource.m # 主脚本:训练、交叉验证、保存结果
├─ target_domain.csv # 目标域数据(必需)
├─ source_domain_main_from_ann.csv # 主源域数据
├─ source_domain_25runs_geometry.csv # 25 组几何源域数据
├─ source_domain_thirdpaper_hardness.csv # 9 组带 HV 的小型源域数据
├─ tlgnn_v3_predictions.csv # 全量预测结果
├─ tlgnn_v3_fold_metrics.csv # 每折指标
├─ tlgnn_v3_summary_metrics.csv # 汇总指标
├─ tlgnn_v3_top_recommendations.csv # 推荐组合
├─ tests/
│ └─ verify_tlgnn_v3_upgrade.m # 验证脚本
├─ data/ # 原始/补充数据与说明
├─ reference/ # 参考脚本和原始资料
└─ backup_20260419_*/ # 备份结果
运行脚本时,当前工作目录下必须存在 target_domain.csv。推荐列名如下:
material_code, power_W, speed_mm_min, overlap_ratio,
powder_feed_g_min, defocus_mm, hardness_HV
脚本对列名做了别名兼容,例如:
speed_mm_s会自动换算为mm/minhardness、HV、Microhardness (HV)可映射到hardness_HVpowder_feeding_speed、feed可映射到powder_feed_g_min
有效样本行至少需要 6 行;缺失关键字段的行会被自动过滤。
主脚本默认尝试从当前工作目录读取以下源域文件:
source_domain_main_from_ann.csvsource_domain_25runs_geometry.csvsource_domain_thirdpaper_hardness.csvsource_domain_316L_table23_geometry_only.csv(可选)
当前仓库根目录已放置前三个文件,对应样本数分别为:
source_domain_main_from_ann.csv:280行source_domain_25runs_geometry.csv:25行source_domain_thirdpaper_hardness.csv:9行
data/ 目录中还保留了补充数据和说明文件。如果你想启用 data/ 里的其他表格,需要先把文件复制到仓库根目录,或修改 tlgnn_v3_multisource.m 中 defaultConfig() 的路径配置。
主流程如下:
- 读取多个源域文件,提取共享特征
P / V / F / line_energy / feed_per_length。 - 在源域共享特征上训练自编码器。
- 如果源域存在足够多的硬度标签,则继续做源域 HV 监督预训练。
- 读取目标域数据,构造完整 6 维工艺特征:
material_code, power_W, speed_mm_min, overlap_ratio, powder_feed_g_min, defocus_mm - 按固定
5-fold协议做目标域交叉验证。 - 目标域强回归头优先使用:
fitrgp->fitrensemble-> 精确组合均值回退 - 用全量目标域数据训练最终模型,并生成预测、指标汇总和推荐结果。
- MATLAB R2021a 或更高版本
- 推荐安装
Statistics and Machine Learning Toolbox
说明:
- 若环境中存在
fitrgp,脚本会优先使用高斯过程回归(当前仓库结果对应这一分支)。 - 若没有
fitrgp但存在fitrensemble,会回退到 bagged trees。 - 若相关回归函数都不可用,脚本仍可运行,但会退回到基于完全相同工艺组合的均值预测,效果通常会明显下降。
在 MATLAB 中进入仓库根目录后运行:
results = tlgnn_v3_multisource();运行完成后,返回的 results 结构体包含:
results.cv: 当前交叉验证汇总指标results.cv_transfer: 仅迁移分支的参考指标results.selected_model: 最终选中的目标域模型类型results.files_used: 本次实际使用到的源域文件results.predictions: 预测结果表results.recommendations: 推荐组合表
脚本会在当前目录生成以下文件:
tlgnn_v3_model.mat保存最终目标模型、迁移模型、自编码器、缩放器和配置。tlgnn_v3_predictions.csv在原始目标域表上追加:pred_hardness_HV、cv_pred_hardness_HV、transfer_cv_pred_hardness_HVtlgnn_v3_fold_metrics.csv每折R2 / MSE / MAE / RMSE以及迁移参考指标。tlgnn_v3_summary_metrics.csv全部样本上的交叉验证汇总指标与选中模型类型。tlgnn_v3_top_recommendations.csv对已观测参数组合按预测硬度降序排序,默认保留前15条。
现有结果文件显示,当前最佳目标域头为 gpr_raw6,即在完整 6 维目标特征上使用高斯过程回归。与仅保留迁移分支参考结果相比:
R2从0.4952提升到0.8060RMSE从131.05降至81.24
tlgnn_v3_top_recommendations.csv 中当前排名靠前的组合包括:
material_code=35, power_W=1200, speed_mm_min=300, overlap_ratio=1, powder_feed_g_min=12, defocus_mm=2material_code=35, power_W=1000, speed_mm_min=500, overlap_ratio=0.7, powder_feed_g_min=12, defocus_mm=2material_code=35, power_W=1200, speed_mm_min=300, overlap_ratio=1, powder_feed_g_min=15, defocus_mm=2
这些条目是“已观测组合”的排序结果,不是对未出现过的新组合进行全局搜索。
仓库提供了一个简单阈值验证脚本:
run('tests/verify_tlgnn_v3_upgrade.m')该脚本要求:
R2 > 0.75RMSE < 90
- 主脚本默认从“当前工作目录”读取数据文件,因此最稳妥的做法是在仓库根目录中运行。
target_domain.csv中若速度列使用speed_mm_s,脚本会自动乘以60转成mm/min。- 部分
data/中的数据文件只是参考或待整理数据,不会自动参与当前训练。 tlgnn_v3_readme.txt是旧版简要说明;README.md作为面向仓库协作的中文主文档更完整。
- 把
data/中的补充源域表统一整理为可直接读取的标准格式。 - 把数据路径从“当前目录约定”改为“仓库相对路径配置”。
- 增加对未观测参数组合的批量搜索与约束优化,而不仅是已观测组合排序。