退火算法(Annealing)简介与详解 |
您所在的位置:网站首页 › 什么是伪代码描述算法 › 退火算法(Annealing)简介与详解 |
模拟退火算法(Simulated Annealing,SA)
秒懂爬山算法(Hill Climbing)退火算法
详解算法来源数学推导来源:metropolis准则(蒙特卡洛准则)
算法流程算法优劣例题
秒懂
爬山算法(Hill Climbing)
为了了解退火算法,这里先介绍爬山算法作为对比来抛砖引玉。 爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 如下图所示,红色曲线是我们的优化函数,现在我们的目标是找到该函数的最大值。假设初始位置是D,那么很显然根据爬山算法,我们的解会逐渐朝着E点移动,当到达E点时,由于在其周围邻域内并没有比E更高的点,算法即刻停止。但显然可以看到此时陷入了局部最优解当中,无法找到全局最优解。 那么模拟退火算法是如何解决这一问题的呢? 模拟退火其实也是一种贪心算法,但是它的搜索过程引入了随机因素。 模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以图1为例,模拟退火算法在搜索到局部最优解E后,会以一定的概率接受到F的移动。也许经过几次这样的不是局部最优的移动后会到达G点,进而上升到H点,于是就跳出了局部最大值E。 详解 算法来源模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。 模拟退火算法(Simulated Annealing,SA)最早的思想是由N. Metropolis等人于1953年提出。1983年,S. Kirkpatrick 等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。 数学推导 来源:metropolis准则(蒙特卡洛准则)本质思想为以概率接受新状态: 在温度为T时,设当前状态为i,新状态为j,若 E j E_j Ej loc2: loc1, loc2 = loc2, loc1 # 下面的三行代码将[loc1, loc2)区间的数据插入到loc3之后 tmplist = solution_new[loc1:loc2].copy() solution_new[loc1:loc3 - loc2 + 1 + loc1] = solution_new[loc2:loc3 + 1].copy() solution_new[loc3 - loc2 + 1 + loc1:loc3 + 1] = tmplist.copy() value_new = 0 for j in range(num - 1): value_new += distance[solution_new[j]][solution_new[j + 1]] value_new += distance[solution_new[0]][solution_new[51]] if value_new |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |