爬山算法是一种开导式搜索算法,在观察题目特点的底子上,模拟人在爬山过程中,一些可以或许指导求解过程的经验或知识,通过迭代搜索和互换操作,渐渐改进当前解的质量,直到满足停止准则(可以是最优解亦或是迭代停止条件)。用于在给定的搜索空间中寻找全局最优解或充足好的解。它属于局部搜索算法,通常用于办理优化题目,包括连续和离散题目。前文七种改进爬山算法的方法,都是在迭代和互换过程中,接纳不同的策略搜索下一个最合适的解。具体可以看我的文章:七种改进爬山算法的方法-CSDN博客
(1)随机化爬山法(Stochastic Hill Climbing):通过引入随机性来选择下一个移动的邻近解,而不是总是选择最好的一个。这种方法可以资助算法逃离浅层局部最优,探索更广泛的解空间。
(2)初次爬山法(First-Choice Hill Climbing):简化邻人选择步调,选择第一个比当前节点好的选项,而不是在每次迭代中评估所有邻人以找到最好的一个。
(3)最陡上升爬山法(Steepest-Ascent Hill Climbing):使用质量度量Q来量化邻人和当前节点之间的差异,而不但仅是查抄它是否更好。选择具有最大正Delta Q的邻人作为下一步。
(4)概率爬山法(Probabilistic Hill Climbing):引入概率P,答应移动到一个更差的邻人,避免在每一步严格选择更好的邻人。这种控制的向下移动可以资助逃离浅层局部最优。
(5)自顺应爬山法(Adaptive Hill Climbing):算法(其中的一些参数)在搜索过程中动态调整,根据一些度量(如没有改进的迭代次数)调整参数,如步长。
(6)随机重启爬山算法(Random-Restart Hill Climbing):通过多次从不同的随机初始解运行爬山算法,增加了找到全局最优解的时机。
(7)动态邻域法(Dynamic Neighborhood):通过在搜索过程中渐渐扩大邻域大小,以提高算法的全局搜索本领。
以上爬山法的变体,有个共同点,并没有使用有规则的方法来选择下一个最合适的解。 2.梯度法