模拟退火 - 学习笔记

前置知识:爬山算法

从爬山算法的局限到模拟退火

对于爬山算法所求解问题:计算一个函数的最大/小值。

我们知道它的核心目标是求解函数的最大值或最小值 —— 就像人沿着山坡向上爬,始终朝着 “更高”(求最大值)或 “更低”(求最小值)的方向移动,直到无法找到更优的下一步。

但爬山算法有个致命局限:极易陷入局部最优解。比如在连绵的山脉中,它可能爬到一座小山的山顶(局部最优),就误以为那是整个山脉的最高峰(全局最优),却看不到不远处更高的山峰。为了突破这个瓶颈,科学家们借鉴了物理中 “固体退火” 的原理,设计出一种看似 “玄学”、实则逻辑严谨的优化算法——模拟退火。

模拟退火的核心思路:主动接受 “不完美” 以跳出局限。

模拟退火的关键突破,在于它不执着于每次都选择更优解,而是在一定概率下主动接受 “非最优解”。这种 “退一步” 的策略,正是它能跳出局部最优、向全局最优靠近的核心。

如图所示:即使当前处于一个局部高点,算法也可能暂时 “向下走”,探索周围区域,最终找到真正的全局最高点。

接受非最优解的依据:Metropolis 准则

刚才提到的 “接受非最优解的概率”,并非随机决定,而是遵循严格的Metropolis准则——其概率计算公式为:\(P=e^{-\frac{\Delta E}{T}}\)

我们来拆解公式中两个关键参数的含义:

  • \(\Delta E\)(能量差):在函数极值问题中,可理解为新解与当前解的目标函数值之差。若我们求函数最大值,\(\Delta E=f(新解)-f(当前解)\)
    \(\Delta E \gt 0\) 时,新解更优,算法会必然接受这个新解(类似爬山算法的逻辑);
    当\(\Delta E \leq 0\)时,新解是 “非最优解”,算法会根据\(e^{-\frac{\Delta E}{T}}\)的概率决定是否接受它。

  • \(T\)(当前温度):模拟退火的 “温度” 是一个动态变化的参数,并非物理中的温度,但其核心作用类似 —— 温度越高,分子运动越剧烈,算法越容易接受非最优解;温度越低,算法越谨慎,接受非最优解的概率越小。

模拟退火的三大关键参数

算法的效果很大程度上依赖于三个核心参数的设置,它们共同控制着 “温度下降” 和 “解的探索” 过程:

  1. 初始温度 \(T_0\):算法开始时的 “初始温度”。\(T_0\) 需要设置得足够高——此时算法接受非最优解的概率大,能更自由地探索整个解空间,避免一开始就被局部最优 “困住”。

  2. 降温系数 \(\Delta T\):控制温度下降的 “速度”,最常用 0.99。每次迭代后,当前温度 \(T\) 会更新为$ T=T \times \Delta T$。降温系数不能太小(否则温度降得太快,容易提前陷入局部最优),也不能太大(否则算法效率太低,耗时过长)。

  3. 最终温度 \(T_t\):算法停止的 “终止条件”,通常是一个极小值(如 \(10^{-8}\)\(10^{-10}\))。当当前温度 \(T\) 降至 \(T_t\) 以下时,算法对非最优解的接受概率已趋近于0,解也基本稳定在全局最优(或近似全局最优)附近,此时算法停止。

模拟退火的核心流程

简单梳理一下算法的执行逻辑,就能更清晰地理解它的工作方式:

  1. 初始化:设定初始温度 \(T_0\)、降温系数 \(\Delta T\)、最终温度 \(T_t\),并随机生成一个初始解;

  2. 迭代探索:在当前温度 \(T\) 下,通过微小扰动生成一个新解,计算新解与当前解的 \(\Delta E\)

  3. 接受判断:若 \(\Delta E \gt 0\)(新解更优),直接接受新解;
    \(\Delta E \leq 0\)(新解非最优),则根据\(e^{-\frac{\Delta E}{T}}\) 的概率决定是否接受;

  4. 降温更新:完成一次迭代后,将当前温度T更新为 \(T \times \Delta T\)

  5. 终止判断:重复步骤2至4,直到 \(T \lt T_t\),此时保留的解即为最终的优化结果。

总结

通过 “高温探索、低温收敛” 的策略,模拟退火既避免了爬山算法 “一叶障目” 的局限,又能在后期稳定到最优解附近,成为解决复杂函数极值、组合优化(如旅行商问题)等问题的经典算法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做长尾词优化去哪些网站asp.net网站改版 旧网站链接

VSCode安装Go 1.点击Go官网,根据自己环境下载go安装包,我这里为Windows 2.双击安装包,一直点击【Next】即可 VSCode配置Go基础环境 1.创建Go的工作目录: C:\Code\GoCode 2.创建Go的环境变量: GOPATH (1)右键【此电脑】,点击…

图册

为了节省一些博客的篇幅并方便查看,将一些高清大图放在这里以供查阅。 有一些图是摘自别处,我对此致歉。 p1

实用指南:FreeRTOS 事件组详解

实用指南:FreeRTOS 事件组详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

大型网站开发方案网站设计面试问题

论文题目:Vision Transformers Need Registers 论文链接:https://arxiv.org/abs/2309.16588 视觉Transformer(ViT)目前已替代CNN成为研究者们首选的视觉表示backbone,尤其是一些基于监督学习或自监督学习预训练的ViT&a…

宁夏考试教育网站oa电子办公系统

根据上面一篇随笔所介绍的PC购买流程的项目,在项目中,需要有一个生成订单的功能,能够使得Admin很方便的在获得批准的申请中选取一些来生成订单,要求界面操作简单明了,大概的效果图如下: 点击checkbox&#…

[ABC425C] Rotate and Sum Query 题解

思路 对于操作二,多次求 $ \displaystyle \sum_{i=l}^r A_i $,不难想到前缀和。所以先记录 \(A\) 的前缀和。 对于操作一,我们不用按题意模拟,直接记录一共偏移了多少。以后出现操作二时直接根据偏移量输出偏移前 …

C语言网站开发pdf音乐网页设计材料加字加图片

本次由快手刘建刚老师分享,内容主要分为三部分。首先介绍流式计算的基本概念, 然后介绍 Flink 的关键技术,最后讲讲 Flink 在快手生产实践中的一些应用,包括实时指标计算和快速 failover。 一、流式计算的介绍 流式计算主要针对 u…

用名字做壁纸网站哪里有创建网站的

String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的。 String转换为int String 字符串转整型 int 有以下两种方式: Integer.parseInt(str)Integer.valueOf(str).intValue()注意:Integer 是一个类,是…

制作高端网站公司排名网络营销推广seo

关于单引号和双引号 当输出的字符串内部没有单引号的时候,外面可以用单引号, 但是如果内部有了单引号,那么外部只能用双引号。 dict {Name: Zara, Age: 7, Class: First} print(dict) print (dict[Name]: , dict[Name]) print ("dic…

线程--基本使用、线程常用方法

2.2 继承Thread vs 实现 Runnable 的区别从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thread类本身就实现了Runnable接口 实现Runnable接口方式更加适合…

酵母表面展示技术:从蛋白分析到多领域应用,解锁可持续发展的生物新工具

在细胞表面展示技术家族中,酵母表面展示(YSD)技术凭借 “功能集成度高、应用场景广” 的特性,成为生物技术领域的 “多面手”。它通过将目的蛋白精准锚定在酵母细胞表面,既赋予酵母宿主新的生物学功能,又能结合流…

9/28数学错题分析

数学错题分析 1.漏解。在做的时候知道还有别的解,但是想不出来怎么算了所以就有一个没算出来。 原因:思路不够开拓,没有用上所有的运算方法 2.不等式是否取等号检验的方式有问题,导致没有发现有问题的地方。 需要重…

linux查找指定字符串的三种方法 - 指南

linux查找指定字符串的三种方法 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

给你一个网站怎么做的西安网站设计建设公司 交通

引言 在开发我的笔记系统时,我遇到了一个问题。问题是,在api-gate服务中,我需要验证用户的access_code,但是access_code的生成逻辑是在auth2服务中实现的。这个问题从架构设计的层面上看,就是一个高耦合度问题。高耦合…

task

task1.c// 打印一个字符小人 #include <stdio.h> int main() {printf(" O \n");printf("<H>\n");printf("I I\n");return 0; }task1_1.c// 打印一个字符小人 #include <…

深入解析:自动驾驶中的传感器技术53——Radar(14)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

9/28

9/28今天学习了离散的自反,对称等性质。进一步了解了马克思主义的形成,当该说不说这个理论好难理解

实用指南:嵌入式面试高频(十二)!!!C++语言(嵌入式八股文,嵌入式面经)c++11新特性

实用指南:嵌入式面试高频(十二)!!!C++语言(嵌入式八股文,嵌入式面经)c++11新特性pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

2025 年陶瓷配件厂家 TOP 企业品牌推荐排行榜,电子,氧化铝,氧化锆,氮化铝,工业,精密,结构陶瓷配件,陶瓷柱塞配件,陶瓷刀片配件,陶瓷导轮配件公司推荐

在高端制造产业快速升级的当下,陶瓷配件凭借耐磨、耐高温、绝缘等优异特性,成为电子、航空航天、新能源等领域的核心组件。然而,市场上陶瓷配件品牌数量众多,产品质量参差不齐,材料性能差异显著,从普通氧化铝制品…

做视频网站 视频放在哪多地优化防控举措方便民众生活

团队管理规划有4个互相关联的要素&#xff1a; 职能目标团队路径在未来的3个月&#xff0c;6个月&#xff0c;1年&#xff0c;2年&#xff0c;3年&#xff0c;5年中&#xff0c;你希望带着你的团队抵达一个什么样的目的地&#xff0c;也就是团队的目标。 更加清楚目标意味着什么…