📅  最后修改于: 2020-09-23 09:39:12             🧑  作者: Mango
以下是爬坡算法的一些主要功能:
状态空间景观是爬山算法的图形表示,它显示了算法的各种状态与目标函数/成本之间的关系图。
在Y轴上,我们采用的函数可以是目标函数或成本函数,而在x轴上则是状态空间。如果Y轴上的函数是成本,则搜索的目标是找到全局最小值和局部最小值。如果Y轴的函数是Objective函数,那么搜索的目标是找到全局最大值和局部最大值。
局部最大值:局部最大值是一个比其邻居状态更好的状态,但是还有另一个状态高于其邻居状态。
全局最大值:全局最大值是状态空间景观的最佳可能状态。它具有最高的目标函数值。
当前状态:这是景观图中当前存在代理的状态。
平坦的局部最大值:这是景观中的平坦空间,当前状态的所有相邻状态都具有相同的值。
肩膀:这是一个高原地区,有上坡的边缘。
简单的爬山是实现爬山算法的最简单方法。它一次仅评估邻居节点状态,然后选择第一个优化当前成本的状态并将其设置为当前状态。它仅检查它的一个后继状态,如果发现比当前状态更好,则将其他状态转移到相同状态。该算法具有以下特点:
最陡峭上升算法是简单爬山算法的一种变体。该算法检查当前状态的所有相邻节点,并选择一个最接近目标状态的邻居节点。该算法在搜索多个邻居时会消耗更多时间
随机爬山不会在移动之前检查所有邻居。而是,该搜索算法随机选择一个邻居节点,并决定是将其选择为当前状态还是检查另一状态。
1.局部最大值:局部最大值是景观中的一个峰值状态,它比其相邻状态中的每个状态都好,但是也存在另一个状态,该状态高于局部最大值。
解决方案:回溯技术可以作为状态空间景观中局部最大值的解决方案。创建有希望的路径的列表,以便算法可以回溯搜索空间并探索其他路径。
2.高原:高原是搜索空间的平坦区域,当前状态的所有相邻状态都包含相同的值,因为该算法无法找到任何最佳移动方向。在高原地区爬坡搜索可能会丢失。
解决方案:高原的解决方案是在搜索时采取大步或很少步来解决问题。随机选择一个远离当前状态的状态,因此该算法有可能找到非平稳区域。
3.脊:脊是局部最大值的一种特殊形式。它的面积比周围的区域高,但它本身具有坡度,无法一口气到达。
解决方案:通过使用双向搜索或沿不同方向移动,我们可以改善此问题。
爬山算法永远不会朝着较低的值移动,因为它可能会卡在局部最大值上,因此它保证是不完整的。如果算法通过移动后继者来应用随机游走,则它可能会完成但效率不高。模拟退火是产生效率和完整性的算法。
在机械术语中,退火是将金属或玻璃硬化至高温然后逐渐冷却的过程,因此这使金属达到低能晶体状态。在模拟退火中使用相同的过程,在该过程中,算法选择随机移动,而不是选择最佳移动。如果随机移动改善了状态,则它遵循相同的路径。否则,该算法将遵循概率小于1的路径,或者它会下坡并选择另一条路径。