如何自动化优化物理对象设计的过程?

计算科学 优化
2021-12-16 07:11:32

我正在尝试优化罐中的流量分配器,以使任何横截面的速度和温度分布相对均匀。我可以调整许多参数以达到最大横截面均匀性,例如进水管的数量、它们的位置、方向和方向。我知道我可以创建许多不同的几何图形并单独测试每个几何图形,但这非常耗时。我希望能够编写一个程序,该程序可以一次迭代测试多个案例(并行),并根据先前的结果自适应地选择一组新的几何进行测试。我怎样才能最好地做到这一点?

4个回答

如果您适当地参数化您的几何构造部分,这是一个具有混合离散和连续参数的黑盒优化问题。

DAKOTA http://dakota.sandia.gov/和 NOMAD http://www.gerad.ca/NOMAD/Project/Home.html是两个有用的软件包,可让您自动选择最佳参数选择。(DAKOTA 有更好的应用程序支持,但 NOMAD 可能有更好的优化器。)

要改变几何图形,请为要影响几何图形的每个控件引入离散或连续参数,并从控件集合中自动构建几何图形。请注意,无导数方法在高维度上非常慢,因此请保持参数数量合理地少。

在使用上述软件包之一完成空间探索后,您可以通过更精确的优化来优化分析,其中所有离散参数和所有连续参数都是固定的,您无法获得解析导数。但是您可以增加可以计算解析导数的连续形状参数的数量,因为基于梯度的优化器(例如 IPOPT https://projects.coin-or.org/Ipopt)可以有效地处理更大的问题.

如果你不知道如何得到导数但依赖是平滑的,你可以考虑使用自动微分程序,或者在 AMPL 中编码你的连续问题,在这种情况下,求解器接口将处理导数。

有关形状优化的基础知识,请参见 Haftka, RT 和 Grandhi, RV, structural shape optimization--Asurvey, Computer Methods in Applied Mechanics and Engineering 57 (1986), 91-106。(相信关于建模的描述;但不要使用他们推荐的求解器,因为从那时起优化技术已经有了很大的改进。)

您要做的是使用基于梯度的方法进行形状优化。这本质上意味着您需要计算目标函数对模型参数的梯度。

对于少量参数,您可以使用 FD,但对于大量参数,您需要查看伴随方法。如果您使用的商业代码或其他人的代码无法解决伴随方程,那么 FD 是您唯一的选择。

查看基本的基本形状优化书籍。

编辑:对于结构有限元问题,您可以查看 Choi 和 Kim I 和 II 的书

至于参数化几何是有问题的(正如 Geoff 指出的那样) - 我可以真诚地推荐Brenda Kulfan - Universal Parametric Geometry Representation Method, J. Aircraft, Vol.45, No.1,2008

所描述的方法适用于飞机的空气动力学优化。

还有伴随空间优化,这似乎比 CFD 中的标准参数优化要快很多。最近,它在 CFD 社区中的流行度有了很大的提高,尤其是在 OpenFOAM 中。我们目前正在组织一个关于 OpenFOAM 的研讨会,我们收到了很多关于这种方法的摘要提交。如果您有兴趣,请查看内容,有关其他信息,只需谷歌“CFD 中的伴随空间形状优化”。

附加信息:

如果您可以使用 OpenFOAM,那么有一个基于 Python 的库可用于此类事情,用于处理大量案例并更改其参数,称为PyFoam对于简单的几何体,您可以将网格定义为简单的块网格并迭代您喜欢的任何内容。对于一个简单的情况,这是一个在 Python 中编写几个循环的问题。如果您更改“入口”边界条件速度,脚本如下所示。简单的网格几何更改将是几行代码......