Optimization 多目标优化,但函数方程未知?

Optimization 多目标优化,但函数方程未知?,optimization,mathematical-optimization,Optimization,Mathematical Optimization,首先,我完全超出了我的专业范围,所以请容忍我 我开发了一个流体动力发动机,有5个暴露参数(比如a、B、C、D、E)。当你给这个引擎这5个参数时,它会变魔术并给出一个值“Z” 我想写一个脚本,它可以探索a-E的哪些组合给出最低(或接近最低)的Z值 我知道存在优化算法,但从我所有的搜索示例来看,它们使用了一些函数 我猜我的函数就是最小化Z?但是A-E去哪里?你可以使用遗传算法,你的染色体由你必须优化的变量的5个候选值组成,以最小化Z,你的优化/适应度“函数”是模拟本身输出Z 其他可行的选择是粒子群优

首先,我完全超出了我的专业范围,所以请容忍我

我开发了一个流体动力发动机,有5个暴露参数(比如a、B、C、D、E)。当你给这个引擎这5个参数时,它会变魔术并给出一个值“Z”

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

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


我猜我的函数就是最小化Z?但是A-E去哪里?

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


其他可行的选择是粒子群优化算法或蚁群优化算法。所有这些都是针对此类优化问题的可用算法。

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

如果你观察给定A…E值的Z值,参数值的微小变化是否会使Z值跳跃很多,或者Z值的变化是否相当平稳

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

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

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


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

我认为您感到困惑。仅仅最小化Z并不会给出一个多目标优化问题。