【问题标题】:Multi-objective optimization but the function equation is unknown?多目标优化但函数方程未知?
【发布时间】:2021-04-27 06:00:56
【问题描述】:

首先,我完全不在我的专业领域,所以请多多包涵。

我开发了一个具有 5 个公开参数(例如 A、B、C、D、E)的流体动力学引擎。当你给这个引擎这 5 个参数时,它会变魔术并给出一个值“Z”。

我想编写一个脚本,它可以探索 A-E 的哪些组合给出最低(或接近最低)的 Z 值。

我知道优化算法是存在的,但是从我搜索的所有示例中,它们使用了一些函数。

所以我想我的功能只是最小化 Z?但是 A-E 去哪儿了?

【问题讨论】:

  • 我觉得你很困惑。仅仅最小化 Z 不会给您带来多目标优化问题。

标签: optimization mathematical-optimization


【解决方案1】:

并不是真正的答案,而是一些问题和想法可能会帮助您思考解决此问题的最佳方法。我们不知道需要为这些参数探索多大范围的值,或者 Z 的行为方式,所以这非常模糊......

如果您查看给定 A...E 值的 Z 值,Z 值是否会因参数值的微小变化而跳动很多,或者 Z 值是否合理平滑地变化?

如果 Z 值不是太不稳定,您可以尝试某种梯度下降方法,使用 Z 的计算值对某些参数值进行近似梯度 - 假设将“A”的值从 1 更改为 2 给出Z 值的变化比其他参数的类似大小变化更好,然后尝试 A 的其他值,同时保持其他参数固定,直到找到给出最佳 Z 值的 A 值。然后尝试更改其他参数值看看哪一个给出了最陡的下降,并尝试为该参数找到一些更好的值。重复此过程,直到您找不到任何改进,并且您将找到(本地)最小值。然后,您可以从参数空间中的不同位置开始并重试 - 您可能会找到几个局部最小值,并且可能只选择其中最好的一个。不能证明是最佳的,但可能已经足够好了。当然,如果 Z 足够平滑,您可以变得聪明并使用共轭梯度、Newton-Raphson 或类似方法。

如果 Z 值非常不稳定,那么您可能需要对 A...E 的可能组合进行一些抽样,以获得 Z 值并选择您能找到的最佳值。同样,您可以以某种系统的方式(例如,参数空间中的网格上的点)或完全随机地执行此操作,或两者兼而有之。

如果您发现存在具有相似参数值的良好解决方案“集群”,那么也许某种本地搜索会有所帮助 - 其想法是,在已知良好解决方案的本地邻域中通常存在更好的解决方案.因此,也许可以尝试从已知解决方案中稍微扰动您的参数值,看看这是否可以导致更好的解决方案 - 通过某种梯度下降方法或随机采样。

不幸的是,如果您的 Z 计算很复杂,那么任何将其用作黑盒的方法都可能会很慢,因为它需要多次重新评估。

【讨论】:

    【解决方案2】:

    您可以使用遗传算法,其中您的染色体由您必须优化的变量的 5 个候选值形成,以最小化 Z,您的优化/适应度“函数”是模拟本身输出 Z。

    其他可行的替代方案是粒子群优化算法或蚁群优化。对于这类优化问题,所有这些都是可用的算法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 2022-06-16
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      相关资源
      最近更新 更多