机器学习之模拟退火算法

一、背景

模拟退火算法(Simulate Anneal Arithmetic,SAA)是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解。模拟退火是S.Kirkpatrick, C.D.Gelatt和M.P.Vecchi在1983年所发明。而V.Černý在1985年也独立发明此演算法。模拟退火算法是解决TSP问题的有效方法之一。

1. 算法的目的

(1)解决NP复杂性问题;

(2)克服优化过程陷入局部极小;

(3)克服初值依赖性;

2. 算法的启发

物质总是趋于最低的能态,最低能态是最稳定的状态。
先把固体加热至足够高温,使固体中所有粒子处于无序的状态(最高的熵值),然后将温度缓慢下降,粒子渐渐有序(熵值下降),这样只要温度上升得足够高,冷却过程足够慢,则所有粒子最终会处于最低能态(最低的熵值)。
同样地,模拟退火算法也是这个原理,只要初温足够高,温度下降足够慢,就一定能找到全局最优解。
在这里插入图片描述

二、模拟退火算法介绍

1. 主要环节

直接影响算法优化结果的主要环节:(1)新状态产生函数;(2)新状态接受函数;(3)退温函数;(4)退火结束准则;(5)初始温度

2. 回火技术

在这里插入图片描述
如果有uu了解爬山法,就会轻松地明白这是什么意思,如果没有听说过,也没关系。假设我们初始点是D点,(默认目标是找到全局最低点)使用爬山法的话,则只能接受比当前解小的新解,因此从D点出发只能到达A点,这显然只是个局部最优解,非全局最优解。因此,回火技术就是以一定概率接受没有当前状态好的新解,即略微震动一下,使得我们能跳出当前这个山坡,有机会朝着全局最优解移动。

3. 优缺点

在这里插入图片描述
在这里插入图片描述

4. 步骤

给定初温t=t0,随机产生初始状态s=s0,令k=0;
Repeat
     Repeat
          产生新状态sj=Generate(s)if min{1,exp[-(C(sj)-C(s))/tk]}>=randrom[0,1]    
               s=sj;
     Until 抽样稳定准则满足;
     退温tk+1=update(tk) 并 令k=k+1;
Until 算法终止准则满足; 
输出算法搜索结果

初始温度过高 —— 收敛太慢; 初始温度过低 —— 只能找到局部最优解

5. 算法的核心内容(三函数,两准则)

(1)状态产生函数

在当前状态的邻域结构内以一定概率方式产生。两个尺度:① 产生的新解应尽可能地遍布整个解空间,不能完全在某点附近抽样,防止只能找到局部最优解;② 新解的产生又不能完全毫无关系,防止不收敛。

(2)状态接受函数

在这里插入图片描述

(3)温度更新函数

首先,谈一下初温的产生。初温越大,获得高质量解的机率越大,但花费较多的计算时间。因此,需要在接受范围内,选择一个较高的初温,这里给出三种方法:👇
在这里插入图片描述
然后回归问题 —— 温度更新函数,这里给出两种温度更新的函数:
在这里插入图片描述
α越接近1温度下降越慢,且其大小可以不断变化
在这里插入图片描述其中t0为起始温度,K为算法温度下降的总次数,k是常数

(4)抽样稳定准则 (内循环终止准则)

在这里插入图片描述

(5)算法终止准则

① 零度法

给出一个较小的正数,当温度小于这个数时,算法停止,表示已经达到最低温度。

② 循环总数控制法

总的下降次数为一定值K,当温度迭代次数达到K值时,停止运算。

③ 基于不改进规则的控制法

在一个温度和给定的迭代次数内没有改进当前的局部最优解,则停止运算。模拟退火算法的一个基本思想是跳出局部最优解,直观的结论是在较高的温度没能跳出局部最小解,则在低的温度跳出最优解的可能也比较小,由此产生上面的停止原则。
简单来讲:收敛了,就终止,即好几次都不变了

④ 接受概率控制法

在这里插入图片描述
三、模拟退火案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
模拟退火算法是一种随机优化算法,可以用来解决很多实际问题。其应用领域非常广泛,以下是一些常见的实际问题,可以使用模拟退火算法进行解决: 1. 组合优化问题:如旅行商问题(TSP)、车辆路径问题(VRP)等。模拟退火算法可以找到最优的路径规划,使得旅行商或车辆的行程最短。 2. 排列问题:如任务调度、工厂生产线优化等。模拟退火算法可以确定最佳的任务或工件排列顺序,以最大化效率或最小化成本。 3. 参数优化问题:如机器学习模型的超参数调优、神经网络权重调整等。模拟退火算法可以搜索参数空间,找到最佳组合以提高模型性能。 4. 信号处理问题:如图像去噪、语音识别中的噪声消除等。模拟退火算法可以通过优化信号处理参数,提高信号质量或减少噪声。 5. 电路布局问题:如芯片设计、电路板布线等。模拟退火算法可以找到最佳的电路布局,以最小化电路面积或减少信号干扰。 6. 线性规划问题:如资源分配、产能规划等。模拟退火算法可以优化线性规划问题的目标函数,找到最佳的资源分配方案。 7. 图论问题:如最大团问题、最小生成树问题等。模拟退火算法可以找到图中的最优解,满足特定的约束条件。 除了以上列举的问题模拟退火算法还可以应用于其他领域,如组合优化、运筹学、物理学等等。其灵活性和鲁棒性使得模拟退火算法成为一种常用的优化工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天使Di María

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值