我想使用模拟退火在某个预定义的间隔内找到单变量多项式函数的局部最小值。我还想尝试找到二次函数的全局最小值。
像这样的无导数算法不是解决问题的最佳方法,因此仅用于学习目的。
虽然算法本身非常简单,但我不确定如何在单维或 n 维空间中有效地选择邻居。
假设我正在寻找函数的局部最小值:2*x^3+x+1 在区间 [-0.5, 30] 上,并假设区间减少到每个数字的十分之一,例如 {1.1, 1.2 ,1.3 , ..., 29.9, 30}。
我想要实现的是随机游走和从起点到能量较低的点的收敛速度之间的平衡。
如果我每次都只是从给定的间隔中选择随机数,那么就没有随机游走,算法可能会绕圈子。相反,如果通过简单地以相等的概率加上或减去 0.1 来选择下一个点,那么算法可能会变成穷举搜索 - 基于起点。
我应该如何有效地平衡单维和 n 维空间中的模拟退火邻居搜索?