我正在使用一个有限元模型,我有兴趣在该模型中最小化表面的平均温度。我的模型中有15 个自变量,包括几何、材料、流量、工艺时间等。我的大多数变量是连续的,但有些是离散的;运行一次模拟需要大约 10 分钟。
我对哪些优化算法可用以及它们如何工作没有很好的教育,所以我想知道你是否可以帮助我找到适合这种情况的优化技术:我有一个(相对)昂贵的功能评估以及(相对)许多变量。
我正在使用一个有限元模型,我有兴趣在该模型中最小化表面的平均温度。我的模型中有15 个自变量,包括几何、材料、流量、工艺时间等。我的大多数变量是连续的,但有些是离散的;运行一次模拟需要大约 10 分钟。
我对哪些优化算法可用以及它们如何工作没有很好的教育,所以我想知道你是否可以帮助我找到适合这种情况的优化技术:我有一个(相对)昂贵的功能评估以及(相对)许多变量。
一种常用的方法是“响应曲面法”,您可以在其中对可行区域进行采样,在采样点运行完整模拟,然后使用回归技术将代理模型拟合到这些点。您将假设样本点之间的响应相对平滑。一旦您拟合了该代理模型,您就可以优化该代理模型以找到它的最小值。然后回到完整的模拟并验证代理模型对那个点的值做出了很好的预测。
这种方法的一个优点是模拟可以在不同的采样点并行运行,彼此完全独立。
您要的是一种方法,但让我为您指出一个特定的软件包 - SNOBFIT。我不认为它可以处理离散变量,但它确实可以处理嘈杂的成本函数评估,这在使用数值方法进行优化时至关重要。
这是一个 Matlab 包。最近好像没有更新。有一个 Python 端口以及描述该方法和实现的论文的链接。