背景:本项目的组员提交了一个名为
问题一问题二源代码附录_去路径版.docx的文件作为”源代码”,但该文件实际上 不是解题算法脚本,而是论文自动排版/生成工具。本文档对两类代码进行明确区分。
一、什么是「解决问题的源代码」—— 真正的算法
这类代码的核心特征是:接收输入数据 → 执行数学/物理计算 → 输出结果。它们包含完整的建模逻辑、公式推导、数值求解过程。
本项目中真正的解题代码
1. 问题 1 & 2 的求解代码(缺失 / 未提供)
问题 1(扭矩系数 K 回归、临界预紧力矩识别)和问题 2(三约束 Tmax 模型、工况 A/B 计算)的 原始求解脚本目前未找到。
.docx 文件中的 PowerShell 脚本只是把这两个问题的 计算结果硬编码后填入 Word,并非求解过程本身。也就是说:
- 回归分析怎么做的? → 代码不在
- Chow 断点检验怎么算的? → 代码不在
- Tmax1/Tmax2/Tmax3 的具体数值是怎么算出来的? → 只有最终数字,没有计算过程
结论:问题 1 & 2 的真正求解代码,组员没有交。
2. 问题 3 & 4 的求解代码(存在且完整)
(a) problem_3_4_solver.py — 物理解析解主程序(1306 行)
这是 标准的数学建模求解代码,结构清晰:
| 类/函数 | 功能 | 对应问题 |
|---|---|---|
EccentricityAnalyzer | 基于 Von Mises 准则的偏心受力分析器 | 问题 3.1 |
EccentricityAnalyzer.solve_Tmax_analytical() | 解析解推导 Tmax(e) 公式 | 问题 3.1 |
EccentricityAnalyzer.solve_Tmax_numerical() | 数值解(二分法)验证解析解 | 问题 3.1 |
ModifiedTmaxModel | 综合三种失效模式的修正模型 | 问题 3.2 |
RockClassificationOptimizer | 围岩分类 + Topt(f) 关系建模 | 问题 4 |
ResultVisualizer | 结果可视化(matplotlib 绘图) | 全部 |
关键特征:
- 包含完整物理公式推导(应力计算、Von Mises 等效应力准则)
- 有解析解和数值解双重验证
- 从参数输入到结果输出的 完整计算链路
- 输出 CSV 数据文件和 PNG 图表
(b) transformer_solver.py — 深度学习加速求解程序(995 行)
这是用 PyTorch + Transformer 对物理模型进行学习加速的代码:
| 模块 | 功能 |
|---|---|
PhysicsEngine | 封装精确物理解(作为训练标签生成器) |
TransformerRegressor | Transformer 回归模型架构 |
DataGenerator | 生成训练数据(用物理模型产生标签) |
TrainingEngine | 训练引擎(支持 AMP 混合精度、早停等) |
关键特征:
- 用神经网络学习物理模型的输入→输出映射
- 与解析解对比验证精度(MAPE 指标)
- 属于 进阶求解方法(非必须,但加分)
总结:真·源代码长什么样
输入: 原始数据 / 工程参数
↓
【核心】数学公式、物理模型、数值算法
↓
输出: 计算结果、图表、CSV
判断标准:如果删掉这个文件,你还能从别的地方拿到同样的计算结果吗?
- 能 → 那它可能只是排版代码
- 不能 → 那它就是真正的求解代码
二、什么是「生成 Word 文件的代码」—— 排版脚本
这类代码的核心特征是:把已经算好的数字和文字,按格式写入 Office 文档。不包含任何算法逻辑。
本项目中的排版代码
这是一个 PowerShell 脚本(约 590 行),做的事情:
已算好的数字(硬编码)
↓
拼接成 XML 字符段(段落、表格)
↓
插入 Word 文档的 document.xml 中
↓
重新打包为 .docx 文件
具体来说,脚本里的内容全是这样的:
# 不是在算 K 值,而是直接写死:
$q11Rows = @(
@("18", "7", "12.68~115.74", "50~350"), # ← 这些数字哪来的?别的程序算的
@("20", "7", "10.46~93.09", "50~350"),
...
)
# 不是在解方程,而是直接写死结果:
@("A", "4.750", "334.265", "400.000", "622.540", ...),
@("B", "1.500", "169.646", "123.077", "514.191", ...)
它的角色 = 一个自动化的”复制粘贴机器人”。
三、对比总览
| 维度 | 解题算法代码 (problem_3_4_solver.py) | 论文生成代码 (问题一问题二源代码附录) |
|---|---|---|
| 语言 | Python | PowerShell |
| 输入 | 工况参数 (d, E, K, …) | 已算好的数字字面量 |
| 核心工作 | 物理公式推导 + 数值计算 | XML 字符串拼接 |
| 有公式吗? | 有(Von Mises、Winkler 地基…) | 无(只有公式的文字描述) |
| 能独立运行出结果吗? | 能 | 不能(依赖外部计算结果) |
| 删除后影响 | 无法复现计算结果 | 只是麻烦点,手动也能填 |
| 本质 | 厨师做菜 | 服务员摆盘 |
| 是否为”源代码” | 是 | 否(是辅助脚本) |
四、当前项目代码完整性评估
| 问题 | 真正的求解代码 | 状态 |
|---|---|---|
| 问题 1.1(K 值回归) | 缺失 | 组员只给了填好结果的排版脚本 |
| 问题 1.2(临界力矩识别) | 缺失 | 同上 |
| 问题 2.1(Tmax 参数化模型) | 缺失 | 同上 |
| 问题 2.2(工况 A/B 计算) | 缺失 | 同上 |
| 问题 3.1(偏心受力分析) | problem_3_4_solver.py | 完整 |
| 问题 3.2(综合修正模型) | problem_3_4_solver.py | 完整 |
| 问题 4(围岩分类 Topt-f) | problem_3_4_solver.py | 完整 |
| 进阶方法(Transformer) | transformer_solver.py | 完整(加分项) |
五、建议
- 找组员要问题 1 & 2 的 Python/MATLAB 求解脚本,不是 .docx
- 如果组员说”就是用 Excel 算的”,那就让他把 Excel 公式截图或录屏
- 如果确实只有手算/Excel,那就在论文中注明”使用 Excel 进行数据处理”
- 提交时,
problem_3_4_solver.py和transformer_solver.py应作为 正式附录代码 .docx里的 PowerShell 脚本可以作为 辅助说明,但不应作为主要源代码提交