7.模拟退火算法

一.介绍:
模拟退火算法是启发式算法的一种。由N. Metropolis 等人于1953年提出。1983 年,S. Kirkpatrick 等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。(百度百科)

一般来说,模拟退火算法可以优化蒙特卡洛方法,因为当n过大时,蒙特卡洛的计算量太大,而模拟退火算法可以改善这个情况。

个人认为,模拟退火算法是一种在搜索过程中加入随机因素的贪心算法,这使其避免陷入局部最优。那么,什么是贪心算法,随机有又是如何体现的,我将在下文中简要说明:

二.爬山法:
爬山法的思路:首先生成一个初值,然后选择步长,比较初值左边与右边一个步长处的函数值,然后更新函数值。如下图所示,在三个不同的范围(红圈)内选取不同的初值可能得到不同的结果。
在这里插入图片描述
显然,全局最大点为星星处的点,因此爬山法较容易得到局部最优。
如何解决这个问题?我们可以通过多次选取初值然后运行代码,最后选择多个结果中的最大值。当然,后文中的模拟退火算法也可以很好地解决这个问题。

三.模拟退火法:
思路:
在这里插入图片描述
x(i)为初值点,当x(i+1)大于x(i)时,我们接受更大的值,进行更新。当x(i+1)小于x(i)时,我们给x一个接受的概率p。p与两个值的差异大小决定,当差别越大时,我们接受的概率越小。
在这里插入图片描述
因为p越大,搜索范围越大,p越小,搜索范围越小,因此我们可以使得前期的p比较大,后期的p比较小。(优先考虑搜索范围,进行全局的搜索,再提高搜索精准性,进行有针对性的搜索)。我们可以引入一个与时间相关的变量ct,使得ct随着时间递增(系数为负,即物理退火中的降温),公式如下(变形前后的含义相同)
在这里插入图片描述
对于值f(i+1)来说,因为p在0到1范围内,我们随机生成一个数r,如果r<p,那么接受这个值。否则再生成新的f(i+1)与r进行下去。

流程图:
在这里插入图片描述
我们可以设置数百个t,每个t进行数百个搜索,直至结束。

运行结束的条件:
1.达到迭代次数
2.达到指定的数值
3.多次迭代无更新

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值