模拟退火收敛证明

计算科学 优化 算法 迭代法 随机
2021-12-06 23:33:16

我实现了下坡单纯形模拟退火算法。算法很难调整,参数包括冷却计划、启动温度......

我的第一个问题是关于收敛的。一般来说,独立于初始参数的选择,算法是否会收敛到全局最优解?

更准确地说:我将 SA 与基于 Num.recipes 的下坡单纯形一起使用,但是,我正在添加一些特定的操作来观察约束。你认为我的额外约束条件是导致收敛性差的原因吗?

然后,我想请您就如何继续求解器概念提出建议:例如,我的算法在 10 维空间(10 个参数)中的数据上进行了测试。它是这样的:预处理(蒙特卡罗)选择了一个很好的起点。然后我下坡运行单纯形-> 不收敛。我运行了模拟退火(单纯形下坡进入下一步),但距离解决方案还很远(RMSE == 0.001)。这些数据的 Excel 求解器做得很好。Excel方法是广义的减少梯度。我应该继续对 SA 进行微调,还是使用非导数方法 sa GRG?

最后,说同样的语言:在我的例子中,收敛是根本达不到的。我也没有时间达到局部最小值,因为当单纯形卡住时我已经设置了一些退出条件。“求解器不收敛”一般是什么意思?这是否意味着满足终止条件(sa低于公差值)并且解决方案是次优的,还是意味着永远不会满足终止条件?

感谢和问候。

编辑

我的目标函数是明确给出的。例如,它可以看起来像

F(p)=j=1n(yj(p1+p2exp((xip3)2p4)+p5exp((xjp6)2p7)+p8exp((xjp9)2p10\大))\大)2

因此,使用“三个高斯 + 步长”模型的平方残差。

这是一个例子,求解器应该使用“合理”数量的参数求解高斯、指数、幂、多项式、线性、有理函数之间的任何函数组合。

指定参数的框约束,形式为 $l_{i} \leq p_{i} \leq u_{i}$。lipiui.

4个回答

有一个定理表明,当且仅当它在搜索空间中密集地采样点时,黑盒算法可以保证找到任意平滑(即,两次连续可微)函数的全局最小值。

这里密集是指拓扑意义上的,即它必须在每个点的任意小的邻域中采样点。

在这种情况下,最坏情况的复杂度是 $O(\Big(\frac{d}{\delta}\Big)^{-n})$,[ Latex 解析器被嵌套的大括号阻塞] 其中 $d$ 是搜索空间的直径和 $\delta$ 在 $x$ 中的保证误差。O((dδ)n), [d is the diameter of the search space and δ the guaranteed error in x.

编辑:虽然这看起来是定位 $\delta$-accurate $x$ 而不是定位 $\epsilon$-accurate $f$ 的点的最坏情况复杂性,但后者的复杂性同样糟糕(即使对于 $\epsilon=(f_{first}-f_{global})/2$) 的相当大的值,因为人们可以很容易地构造一个平滑函数,它插入到目前为止的所有数据点,但在中心取小得多的值不包含评估点之一的最大空位球。δ-accurate x rather than for locating a point for a ϵ-accurate f, the complexity for the latter is as bad (even for the rather big value of ϵ=(ffirstfglobal)/2), as one can easily construct a smooth function which interpolates all data points so far but takes much smaller values in the center of the largest open ball not containing one of the points evaluated.

因此,保证收敛到全局最小值在实践中是毫无价值的。(例如,均匀随机搜索对全局最小化器有收敛保证,而大多数实际快速算法都没有。)

请注意,模拟退火的性能通常比现代方法差得多。而是使用推荐的代码:

无导数优化算法的比较 (2012,Nick Sahinidis)

黑盒优化基准测试 (BBOB) 2012 (由 Auger、Hansen 等人撰写)

不它不是。对于非凸优化问题,很少有方法可以证明是收敛的。如果您正在寻找这样的方法,您可能会研究分支定界方法。

您最好切换到确定性方法而不是模拟退火。只要您可以将数据导入文本文件,您就可以毫不费力地学习代数建模语言GAMS的基础知识,并使用BARON求解器尝试解决您的问题。BARON 是由 Nick Sahinidis 和 Mohit Tawarmalani 开发的非常好的(虽然不是万无一失的)非凸非线性规划求解器。十个决策变量和框约束仍应在免费 GAMS 许可的能力范围内,但如果不是这种情况,您可以在NEOS 优化服务器上提交 GAMS 作业(使用 BARON 求解器)并以这种方式获得结果。

随机优化求解器虽然在某些情况下很有用,但在调整参数时可能非常挑剔。尝试使用传统的凸或最小二乘求解器解决最小二乘问题可能会更好;即使它可能会陷入局部最小值,使用明智的初始猜测或多启动可以为您提供足够好的解决方案来满足您的目的。

你有盒子约束,还是你的约束至少定义了一个凸区域?如果不是,它们肯定会导致收敛不良。

我在我的 Num.recipes 副本中使用下坡单纯形法查找 SA。这不是一个正常的 SA 实现,可能更像是一个改进的下坡单纯形,而不是一个“改进的”SA 实现。

以我自己的经验,一个简单的 SA 实现的收敛性可能非常强大,即使如此,对于 10 个参数,您可能至少需要 100000 步。一个简单的 SA 实现会随机选择一个轴,然后沿着该轴进行“小”随机移动。我自己尝试做一些比这更聪明的事情总是会显着减慢收敛速度,甚至完全破坏它。下坡单纯形的 SA 可能会发生类似的情况,即使如此,它仍然应该比纯下坡单纯形更好地收敛。

为了检查收敛性,我发现始终进行三个独立的 SA 优化运行并查看它们是否产生相似的结果很有帮助。我不得不承认,大多数时候,当三个运行产生显着不同的结果时,我实际上在目标函数的实现中的某个地方有一个错误。

Arnold Neumaier 的(隐含)建议在您的问题上尝试不止一种优化算法(例如来自 DAKOTA 项目)可能也是一个好主意。但是这些算法也有调整参数,因此熟悉一些优化算法的真实世界行为及其调整参数似乎仍然有用。