资讯动态

【零基础学智能仿真-49】力学仿真智能体初探:从自然语言到可核查的仿真任务

发布时间:2026/10/13 9:50:42 来源:尧图企业网站定制
课程摘要前几节课我们已经能够生成 Abaqus 模型、提取 ODB 数据并检查计算结果。本节让智能体加入这条流程它负责理解需求、发现缺失条件、整理任务书却不能凭空补全材料参数或把预测值当作求解结果。我们以两单元受拉杆为例编写一个仅用 Python 标准库的输入校验程序为后续工具调用和自动化仿真建立可靠入口。一、先看一个常见请求假设工程师对智能体说“帮我算一根长 1 m、截面 100 mm² 的钢杆。左端固定右端施加 10 kN 拉力给出位移和应力。”这句话足够让人理解大意却还不能直接提交求解。至少有一个关键参数未明确弹性模量是多少“钢杆”不能自动等同于某一个确定的 \(E\) 值。智能体可以提出建议例如“本教学案例是否采用 \(E210000\ \mathrm{MPa}\)并按小变形、线弹性处理”但必须让使用者确认。它还应说明本节采用的是轴向受力杆模型不适用于弯曲、接触或塑性分析。这就是智能体与普通批处理脚本的第一个区别脚本按给定参数执行智能体还需要识别需求中没有给出什么。二、智能体在仿真流程中的位置本课程采用以下分工环节负责什么不能代替什么智能体理解文字需求、追问缺失条件、组织任务不能凭空确定材料参数校验程序检查字段、单位、数值范围和支持的模型类型不能证明模型符合真实工程Abaqus按模型进行数值求解不能判断工程需求是否被正确理解工程师确认假设判断结果是否可用于决策不应跳过结果核查因此完整链条不是“提问 → 智能体回答一个数字”而是\[ \boxed{ \text{自然语言需求} \rightarrow \text{澄清与确认} \rightarrow \text{结构化任务书} \rightarrow \text{输入校验} \rightarrow \text{求解} \rightarrow \text{结果核查} } \]这里的“输入校验通过”“求解完成”和“工程结论可靠”是三件不同的事。对 AI 系统设置明确的人机职责和验证环节也是 NIST AI 风险管理框架所强调的思路。三、把口头需求写成任务书假设使用者确认 \(E210000\ \mathrm{MPa}\)我们将请求整理为下面的task.json{ case_id: bar_demo_001, model: two_element_truss, analysis: linear_static, units: N-mm-MPa, boundary_condition: left_fixed_right_axial_pull, length_mm: 1000, area_mm2: 100, youngs_modulus_MPa: 210000, force_N: 10000 }几个字段值得特别注意units明确采用 N–mm–MPa 单位体系其中 \(1\ \mathrm{MPa}1\ \mathrm{N/mm^2}\)。model和analysis限定本次只处理前几节使用的两单元、线弹性静力杆模型。boundary_condition指向已审核过的边界条件模板而不是让语言模型随意编写约束。case_id是案例标识不应被当作可执行命令。前几节的 Abaqus 模板使用两个 T2D2 桁架单元。桁架单元只承受轴向力不提供初始横向刚度因此该二维教学模型还约束了不需要的横向自由度这不是可以省略的细节。Abaqus 桁架单元说明对此有明确说明。四、先做执行前校验下面的程序只检查任务并计算解析参考值不会调用 Abaqus。它也不是完整智能体而是未来智能体调用求解器之前必须经过的一道确定性关口。import json import math import re import sys from pathlib import Path FIELDS { case_id, model, analysis, units, boundary_condition, length_mm, area_mm2, youngs_modulus_MPa, force_N, } def validate(task): if not isinstance(task, dict): raise ValueError(任务必须是 JSON 对象) missing FIELDS - task.keys() extra task.keys() - FIELDS if missing or extra: raise ValueError( f字段不匹配缺少 {sorted(missing)}未知 {sorted(extra)} ) if not isinstance(task[case_id], str) or not re.fullmatch( r[A-Za-z0-9_-]{1,40}, task[case_id] ): raise ValueError(case_id 格式不正确) required_values { model: two_element_truss, analysis: linear_static, units: N-mm-MPa, boundary_condition: left_fixed_right_axial_pull, } for key, expected in required_values.items(): if task[key] ! expected: raise ValueError(f{key} 必须是 {expected!r}) for key in ( length_mm, area_mm2, youngs_modulus_MPa, force_N ): value task[key] if ( isinstance(value, bool) or not isinstance(value, (int, float)) or not math.isfinite(value) or value 0 ): raise ValueError(f{key} 必须是有限的正数) length task[length_mm] area task[area_mm2] modulus task[youngs_modulus_MPa] force task[force_N] u2 force * length / (2 * modulus * area) u3 force * length / (modulus * area) stress force / area return u2, u3, stress def main(): if len(sys.argv) ! 2: raise SystemExit( 用法python lesson49_validate_task.py task.json ) try: task json.loads( Path(sys.argv[1]).read_text(encodingutf-8) ) u2, u3, stress validate(task) except (OSError, json.JSONDecodeError, ValueError) as exc: raise SystemExit(fTASK_REJECTED: {exc}) from exc print(fINPUT_VALID: {task[case_id]}) print( f理论参考值u2{u2:.6f} mm, fu3{u3:.6f} mm, stress{stress:.3f} MPa ) print( f理论参考值left_reaction f{-task[force_N]:.1f} N ) print(状态等待人工确认本程序未运行 Abaqus) if __name__ __main__: main()配套文件另含一个--self-test自检入口用于检查正常案例与零截面拒绝逻辑。程序只使用 Python 标准库无须安装额外软件包。在这两个文件所在目录运行python lesson49_validate_task.py --self-test python lesson49_validate_task.py task.json预期主要输出为SELF_TEST_OK INPUT_VALID: bar_demo_001 理论参考值u20.238095 mm, u30.476190 mm, stress100.000 MPa 理论参考值left_reaction-10000.0 N 状态等待人工确认本程序未运行 Abaqus这些数字来自解析公式\[ u_2\frac{FL}{2EA},\qquad u_3\frac{FL}{EA},\qquad \sigma\frac{F}{A},\qquad R_{\mathrm{left}}-F \]它们用于检查后续求解结果不是本程序产生的有限元结果。五、校验通过后智能体才能做什么获得人工确认后智能体可以把这份任务书交给已审核的建模模板再依次执行生成.inp文件并记录所用参数。提交 Abaqus 作业确认作业正常结束。从 ODB 提取末端位移、单元应力和左端反力。将 ODB 数值与本节解析参考值比较检查受力平衡。报告模型假设、误差和未验证事项。Abaqus 的官方入门案例也以桁架自由端位移、杆件应力和约束端反力作为相互核查的量静力平衡要求节点内外力相互抵消。Abaqus 桁架静力分析示例如果任务书写成“考虑塑性和接触”当前校验程序会拒绝它。这不是程序“不够聪明”而是因为现有模板并未验证这些物理过程。智能体此时应报告能力边界不能悄悄退化成线弹性计算后仍称任务完成。同样即使位移和应力与解析解吻合也只能说明在给定假设下计算一致没有屈服强度、几何细节和实际工况就不能进一步宣称“结构安全”。六、课后练习在task.json中一次只改一个参数运行程序并解释变化把force_N改为20000。预期 \(u_30.952381\ \mathrm{mm}\)、\(\sigma200\ \mathrm{MPa}\)、左端反力为 \(-20000\ \mathrm N\)。恢复原载荷把area_mm2改为200。预期 \(u_30.238095\ \mathrm{mm}\)、\(\sigma50\ \mathrm{MPa}\)。删除youngs_modulus_MPa观察拒绝信息。想一想智能体此时应怎样向使用者提问本节的核心结论是**可靠的仿真智能体首先要知道何时不能运行。**下一节再把这份经过确认的任务书接入工具调用讨论求解器状态、失败反馈和结果回传。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑