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


9

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


1
对我来说,参数搜索部分很容易。不平凡的部分是参数化几何。
Geoff Oxberry 2012年

Answers:


4

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

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

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

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


其中一些参数仅是整数...基于梯度的方法是否仍然适用?
保罗

您是否推荐任何有关形状优化的好的教程/书籍?
保罗

对于简短的内容,您可以阅读:acdl.mit.edu/mdo/mdo_06/EulerAdjoint.pdf。就像我在FD上所说的那样,它很简单,因为您只需要计算梯度(这意味着要多次运行CFD代码,具体取决于参数的数量),然后使用梯度进行优化。通常,在参数估计收敛之前,需要进行几次迭代。对于较大的参数,这将变得很昂贵,您将不得不借助伴随方法来计算梯度。
stali 2012年

谢谢你,斯塔利。那是对伴随方法的很好的介绍。
保罗

5

如果您适当地设置几何构造零件的参数,则这是使用离散和连续参数混合进行黑盒优化的问题。

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,结构形状优化-调查,《应用力学和工程学的计算机方法》 57(1986),第91-106页。(请信任有关建模的描述;但是不要使用他们建议的求解器,因为从那时起,优化技术已经有了很大的改进。)


我可以采用哪些方法来设置几何参数?
保罗

看到我的答案的补充。
阿诺德·诺伊迈耶

@Paul:我刚刚纠正了一个愚蠢的错误-几何参数当然可以是离散的或连续的!
阿诺德·纽迈耶


3

还有伴随空间优化,这似乎比CFD中的标准参数优化快得多。最近,它在CFD社区中,特别是在OpenFOAM中,已大大普及。目前,我们正在组织有关OpenFOAM的研讨会,并且我们收到了许多有关此方法的抽象意见。如果您有兴趣,请查看信息,以获取其他信息,只需谷歌“ CFD中的伴随空间形状优化”。

附加信息:

如果可以使用OpenFOAM,则有一个基于Python的库可用于处理此类情况,以处理大量案例并更改其参数PyFoam。对于简单的几何体,可以将网格定义为简单的blockMesh并遍历任何所需的对象。在一个简单的情况下,这是在Python中编写一些循环的问题。这是更改“入口”边界条件速度时脚本的外观。简单的网格几何形状更改将需要多几行代码...


2

您将需要:

  1. 优化器和
  2. 一种CFD工具,具有足够的能力(灵活)来处理具体概念内甚至属于不同概念的不同设计。

以下功能对于CFD工具至关重要:

  • 高计算效率(速度),以便在合理的时间范围内处理大量单独的设计。
  • 数字技术的高度灵活性和易用性,以便将人工干预排除在搜索/分析过程之外。
  • 程序几何处理。

因此,我可以推荐以下软件:

  1. Insight工具包提供了大量可与之结合使用的优化器
  2. 高级仿真库的提议

    • 高性能:

      • 该库是硬件加速的,即能够利用GPU或FPGA硬件(如果可用),这意味着与基于CPU的程序相比,可以提高10-100的速度。同样,在常规CPU上,它使用SIMD等高级功能。
      • 它基于动态编译方法,这意味着无需为了灵活性而牺牲性能。与标准编译技术相比,这可以使速度提高10倍。
      • ASL可用于群集基础架构和多GPU计算机中。
    • 高度的灵活性和友善性:

      • 网格数值技术基于矩形网格和浸入边界方法。这些功能可实现自动设计优化,因为不需要生成网格。
      • 该库基于动态编译方法,这意味着无需为了灵活性而牺牲性能。这允许针对不同的设计/概念制定单一的通用高效算法。
    • 几何图元的生成和处理

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.