找到未知表面的全局最大值

时间:2013-08-05 17:36:33

标签: matlab optimization non-convex

我有一个已解决的模型,返回单个输出值并绘制它。根据这些值,我使用从1-35变化的x值和从1-39变化的y值绘制曲面,并将返回值作为z轴上的值。见下文。

此图不符合定义的函数,它只是输出值的图。

我一直在尝试使用我创建的随机优化算法来尝试找到全局最大值,但它需要很长时间并且并不总是正确的(与网格搜索算法相比,我用作比较)。创建的表面有微妙的变化,足以创建多个麻烦的局部最小值和最大值。我正在寻找一种以相对快速的方式找到这个非凸面的全局最大值的方法。

graph of function values

编辑:

35-by-39是搜索区域,它的大小就是它。 x轴和y轴的值是模型的输入值(可能应该提到),因此每个z值都与x和y输入坐标相关联。我最初的猜测通常是在搜索区域中间轻拍。

此图的创建大约需要50分钟,因为1365个z值中的每一个都需要大约3秒的时间来计算。我想这样做而不必使用详尽的枚举(评估每个点的z值)。我想这需要大约5分钟而不是50分钟。

EDIT(2):

很抱歉这个混乱。下图是一个35乘39的z值网格,用于纯粹用于参考。在程序的实际执行中,我所拥有的只是x坐标和y坐标,并且我试图在尽可能少的函数评估中找到全局最大z值以节省时间。关于你的评论,后者是如此的凶悍。

EDIT(3):

这个数字只是一个例子。当我使用来自单独源的数据时,形成了多个不同的图形(即,在该示例中左侧可能是不感兴趣的,但是对于单独的数据集,它可能包含或可能不包含全局最大值)。这增加了复杂性。从数据中可以看出全局最大值的位置。 有些表面非常光滑,有些表面整个都有大而频繁的峰值。

0 个答案:

没有答案