我有一个已解决的模型,返回单个输出值并绘制它。根据这些值,我使用从 1-35 变化的 x 值和从 1-39 变化的 y 值绘制一个曲面,并将返回值作为 z 轴上的值。见下文。
该图不根据定义的函数运行,它只是输出值的图。
我一直在尝试使用我创建的随机优化算法来尝试找到全局最大值,但这需要很长时间并且并不总是正确的(与我用作的网格搜索算法相比比较)。创建的表面有细微的变化,足以产生多个麻烦的局部最小值和最大值。我正在寻找一种以相对快速的方式找到这个非凸面的全局最大值的方法。
编辑:
35 x 39 是搜索区域,它尽可能大。x 和 y 轴的值是模型的输入值(可能应该提到过),因此每个 z 值都与 x 和 y 输入坐标相关联。我最初的猜测通常是在搜索区域的中间轻拍。
该图的创建大约需要 50 分钟,因为 1365 个 z 值中的每一个都需要大约 3 秒来计算。我想这样做而不必使用详尽的枚举(评估每个点的 z 值)。我希望这需要大约 5 分钟而不是 50 分钟。
编辑(2):
对困惑感到抱歉。下图是一个 35×39 的 z 值网格,仅供参考。在程序的实际执行中,我所拥有的只是 x 和 y 坐标,并且我试图在尽可能少的函数评估中找到全局最大 z 值,以节省时间。所以horchler,关于你的评论,后者。
编辑(3):
这个数字只是一个例子。当我使用来自单独来源的数据时,会形成多个不同的图形(即左侧在此示例中可能无趣,但对于单独的一组数据,它可能包含也可能不包含全局最大值)。这增加了复杂性。从数据中无法判断全局最大值的位置。一些表面非常光滑,而另一些表面则具有大而频繁的峰值。