Skip to content

shadowbatcode/TL-CladOpt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TL-CladOpt

TL-CladOpt 是一个面向激光熔覆/DED-LB 工艺硬度预测的 MATLAB 项目,当前主脚本为 tlgnn_v3_multisource.m。它结合多源域迁移学习、小样本目标域回归和交叉验证评估,用已有实验数据预测目标工艺参数组合对应的显微硬度,并给出已观测组合的排序推荐。

当前仓库已经包含一组已生成结果文件。根据 tlgnn_v3_summary_metrics.csv,现版本在目标域上的交叉验证结果为:

  • R2 = 0.8060
  • RMSE = 81.24
  • MAE = 49.50
  • 迁移分支参考结果:R2 = 0.4952RMSE = 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_*/                  # 备份结果

数据说明

1. 目标域数据

运行脚本时,当前工作目录下必须存在 target_domain.csv。推荐列名如下:

material_code, power_W, speed_mm_min, overlap_ratio,
powder_feed_g_min, defocus_mm, hardness_HV

脚本对列名做了别名兼容,例如:

  • speed_mm_s 会自动换算为 mm/min
  • hardnessHVMicrohardness (HV) 可映射到 hardness_HV
  • powder_feeding_speedfeed 可映射到 powder_feed_g_min

有效样本行至少需要 6 行;缺失关键字段的行会被自动过滤。

2. 源域数据

主脚本默认尝试从当前工作目录读取以下源域文件:

  • source_domain_main_from_ann.csv
  • source_domain_25runs_geometry.csv
  • source_domain_thirdpaper_hardness.csv
  • source_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.mdefaultConfig() 的路径配置。

方法概览

主流程如下:

  1. 读取多个源域文件,提取共享特征 P / V / F / line_energy / feed_per_length
  2. 在源域共享特征上训练自编码器。
  3. 如果源域存在足够多的硬度标签,则继续做源域 HV 监督预训练。
  4. 读取目标域数据,构造完整 6 维工艺特征: material_code, power_W, speed_mm_min, overlap_ratio, powder_feed_g_min, defocus_mm
  5. 按固定 5-fold 协议做目标域交叉验证。
  6. 目标域强回归头优先使用: fitrgp -> fitrensemble -> 精确组合均值回退
  7. 用全量目标域数据训练最终模型,并生成预测、指标汇总和推荐结果。

环境要求

  • 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_HVcv_pred_hardness_HVtransfer_cv_pred_hardness_HV
  • tlgnn_v3_fold_metrics.csv 每折 R2 / MSE / MAE / RMSE 以及迁移参考指标。
  • tlgnn_v3_summary_metrics.csv 全部样本上的交叉验证汇总指标与选中模型类型。
  • tlgnn_v3_top_recommendations.csv 对已观测参数组合按预测硬度降序排序,默认保留前 15 条。

当前结果解读

现有结果文件显示,当前最佳目标域头为 gpr_raw6,即在完整 6 维目标特征上使用高斯过程回归。与仅保留迁移分支参考结果相比:

  • R20.4952 提升到 0.8060
  • RMSE131.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=2
  • material_code=35, power_W=1000, speed_mm_min=500, overlap_ratio=0.7, powder_feed_g_min=12, defocus_mm=2
  • material_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.75
  • RMSE < 90

注意事项

  • 主脚本默认从“当前工作目录”读取数据文件,因此最稳妥的做法是在仓库根目录中运行。
  • target_domain.csv 中若速度列使用 speed_mm_s,脚本会自动乘以 60 转成 mm/min
  • 部分 data/ 中的数据文件只是参考或待整理数据,不会自动参与当前训练。
  • tlgnn_v3_readme.txt 是旧版简要说明;README.md 作为面向仓库协作的中文主文档更完整。

后续可扩展方向

  • data/ 中的补充源域表统一整理为可直接读取的标准格式。
  • 把数据路径从“当前目录约定”改为“仓库相对路径配置”。
  • 增加对未观测参数组合的批量搜索与约束优化,而不仅是已观测组合排序。

About

Multi-source transfer learning for laser cladding parameter optimization (MATLAB)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages