迫于领导/甲方/内心的压力,我们在做结构仿真时,经常要算很多案例。每算一次,都要调整几何,重画网格和再次求解。
虽然没技术含量,但谁做谁知道,很磨人。
本文展示个更快的方法,用代理模型快速评估一个新方案的结构强度。
案例背景是航天飞船的一个薄壁承力结构。结构本身就复杂,受力后还牵涉到非线性和屈曲。用常规的有限元方式去评估它的结构强度,计算成本有亿点高。
下面这个表格就是用有限元计算得到的结果,其中X1~X12是结构的设计参数。后面几列是输出值,其中就包括我们最关心的应力。
差不多200组,仿真工程师要熬多少个日夜。
我们这个案例要做的,就是基于这些数据,训练得到一个代理模型。之后再遇到新的结构就直接用代理模型计算,那速度相比有限元不知道快到哪里去了。
创建代理模型第一步,打开数据建模软件DTEmpower,没安装的可以去天洑软件官网下载,安装就自带免费试用。
软件启动后,新建项目导入数据表格。
然后创建流程,选择专业模式。之后在画布依次拖入数据读取、空值处理、变量设定、数据清理AIOD、重要性分析MDA,以及数据分割节点。
然后连线,表示数据传递。
这些节点都什么作用呢?
数据读取不说了。
空值处理,将存在空值的数据行删除。你打开数据表细看,能发现有些行的数据是存在空值的。那这一行就不能用来做模型训练,需要删除。
变量设定,确定模型的自变量和因变量。显然,X1~X12这12列是自变量,应力就是因变量。
数据清理AIOD,删除异常数据。AIOD会给每组数据的风险值打个分,分数越高表示它是异常值的风险越大,要抓紧删除,防止影响模型精度。
MDA节点,删除不重要的变量。模型的自变量很多,但并不是每个都重要。MDA会评估自变量的重要性,对那些不重要的,也要抓紧删除,防止影响模型精度。
数据分割节点的作用,是把数据分成两部分,一部分用来做模型训练,一部分用来测试模型精度,软件默认按照3:1的比例分割。
接下来,关键的一步:生成代理模型。
但生成过程用什么算法呢?不知道,需要尝试。
所以我们干脆用多种算法同时训练,最后做模型精度对比,选精度高的。
然后连线。注意,数据分割到模型对比节点这一条线,别忘了做调整。要注意传递的数据应该是测试集,test data,而不是训练集。
流程搭建好,点击开始跑起来。软件运行到某一个节点,需要你输入时会弹出来。
在数据清理节点,散点图能看出来有两个点的风险值明显偏高,那就把这两个点剔除,害群之马不可留。
在重要性分析节点,发现大部分变量的重要性都很低,只有X4、X8和X12比较重要。到X3,重要性就只有0.0063了。那我们就把重要性阈值设置为0.01,不重要的都删了,只保留三个。
运行结束,点开模型对比结果,可查看几个代理模型的精度。
一般我们看决定系数R2,越大越好,GBDT胜。
平均绝对百分比误差mape,越小越好,GBDT胜。
接下来,见证奇迹的时刻——用GBDT代理模型评估新结构的应力。
找到GBDT模型,点击评估,输入三个设计值,点击计算,一瞬间就知道了应力结果,快如闪电。
只要新的输入相比训练数据没有过度外推,即范围不相差太大,评估精度是有保证的。
你还能把这个模型保存或者下载下来,通过模型读取和模型计算节点调用,批量计算新结构强度。
大功告成,有没有发现数据建模全程都没有写代码?对代码过敏者非常友好。
欢迎到天洑软件官网下载DTEmpower,零门槛上手数据建模,免费试用。
(提示:本案例所用数据在DTEmpower安装目录的ApplicationData文件夹下)