责任编辑:
沐小月
时间:2021-05-08
来源:方永利 CAE数值优化轻量化
责任编辑:
沐小月
时间:2021-05-08
来源:方永利 CAE数值优化轻量化
本文介绍基于Python环境的元模型技术,包括DOE生成、灵敏度分析、代理模型生成、机器学习模型生成等内容。对比优化软件相应的技术方案,基于Python环境的参数优化具有更高的灵活性和高效性。案例选取白车身模态计算模型做为素材:


一.DOE分析
本文基于模态分析参数优化模型为例。设计变量包括26个部件属性厚度,设计响应包括扭转模态和弯曲模态。为了避免模态跳阶失踪,需要在程序中加入模态追踪函数。

设置26个厚度参数的上下限值,并生成240个拉丁方DOE样本点。

全部DOE样本点数据集:

读取nastran计算文件,并获取所有属性集。

这里需要对对应的部件属性进行厚度修改,修改数值为DOE样本点中数值。

定义一个生成DOE计算点的函数,并生成DOE样本计算文件。

调用Nastran进行求解计算,并通过meta生成模态相关系数矩阵结果,用于模态追踪。这里通过pool函数来设置nastran多线程计算。即Pool(N)调用N个线程进行DOE分析求解计算。

计算后会在每个DOE样本文件夹下生成模态相关系数矩阵结果文件Mac.csv。

定义一个模态追踪函数,通过每个DOE样本点的结果文件mac来获得弯曲模态和扭转模态结果。并将所有结果汇总到一个数组结果中。
二.机器学习模型训练

通过机器学习库sklearn将所有DOE结果拆分为训练集和测试集。这里测试集为百分之二十。后续通过这些学习进行机器学习模型训练,并用同样的数据集进行传统代理模型的创建,本例中使用Kriging代理模型。

通过训练集进行支持向量机模型的训练,并通过测试集进行对模型精度的测试。通常CAE分析优化代理模型精度是使用R2值进行评价的,一般要求大于95%。

这里定义一个计算R2值的函数。

绿色曲线为真实CAE计算值,红色曲线点为支持向量机机器学习模型预测值。

绿色曲线为真实CAE计算值,红色曲线点为贝叶斯岭回归机器学习模型预测值。

以上数据中第一列为真实CAE计算结果,第二列为AI模型预测结果,第三列为差异百分比。可以看出精度很高。 本例中实质是在进行回归分析,因此回归机器学习模型都可以用于本例中数据的处理。如多项式回归、岭回归、决策树回归和神经网络回归等。
三.代理模型(元模型)
传统的代理模型包括径向基函数、多项式、Kriging等等模型。本例中介绍Kriging代理模型生成。

定义Kriging代理模型生成函数,并通过训练集进行代理模型生成。然后通过训练集进行模型精度测试。


可以发现,在小数据集时传统的代理模型要比机器学习模型精度高的多,而随着数据集的增大时,机器学习模型的精度会随着数据集的增大而提高。
为了进行对比,使用优化软件进行相关分析。本例中使用modefrontier进行。通过将数据集按8:2分为训练集和测试集数据。


为了进行对比,选择Kriging模型。Modefrontier同样有机器学习模型,如支持向量机回归,K近邻、多层感知机等等。这方面modefrontier较其他优化软件要先进的多。包括数据处理等内容也较其他优化软件更加丰富。

在测试集中进行分析后,代理模型计算结果和真实结果偏差曲线。
四.敏感度分析

使用增量矩阵法进行灵敏度分析


为进行对比,同样在modefrontier软件中进行灵敏度分析。Modefrontier软件灵敏度分析使用的是平衡样条法(Smoothing Spline ANOVA)。

灵敏度分析主要进行设计空间缩减,这与机器学习的降维的目标是一样的。如机器学习的主成分分析,因子分析等。
通过建立的高精度的代理模型或机器学习模型可以进行后续的参数优化分析。
本文通过Python环境进行以上分析。主要包括以下内容:1.通过doepy库进行DOE创建,如拉丁方DOE;2.通过pyNastran库对nastran求解文件进行模型更新;3.通过sklearn库进行机器学习模型训练,如支持向量机模型、贝叶斯岭回归模型;4.通过smt库进行代理模型创建,如Kriging模型;5.通过SALib库进行灵敏度分析。