一文搞懂什么是模拟退火算法SImulated Annealing【附应用举例】

本文参考了很多张军老师《计算智能》的第十章知识。

本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453

模拟退火算法

1.1 算法思想

一听这个名字我想多数人头脑都会冒出“???”,这咋还得退火嘞,难不成还能上火的吗?

其实模拟退火(SImulated Annealing)算法的思想就是来源于物理的退火原理,也就是降温原理。先在一个高温状态下(相当于算法随机搜索),然后逐渐退火,在每个温度下(相当于算法的每一次状态转移)徐徐冷却(相当于算法局部搜索),最终达到物理基态(相当于算法找到最优解)。

不多说,上图:
在这里插入图片描述
1.2 基本流程

先附上模拟退火算法求解最优化问题的基本流程图和伪代码
在这里插入图片描述
先声明:上图给出的只是模拟退火算法的基本框架,针对具体问题时还需要具体的设计。

从图中我们不难发现发现,模拟退火其实有两层循环,分为内循环和外循环。

内循环模拟的是在给定温度下系统达到平衡的过程。在内循环中,每次都从当前解i的邻域(怎么构建邻域后面会讲)中随机找出一个新解j,然后按照Metropolis准则(后面会给公式)概率地接受新解。那啥时候达到热平衡呢?你可以定义为循环一定的代数,或者基于接受率定义平衡等。

外层循环是一个降温的过程,当内循环结束,即在一个温度下达到平衡后,开始外层的降温,然后再新的温度下重新开始内循环。

模拟退火算法在求解最优化问题的时候,会包含以下几个方面的基本要素。分别为:初始温度、邻域函数、接受概率、冷却控制、内层平衡、终止条件。具体意义以及设置方法如下图所示。

在这里插入图片描述
1.3 应用举例

问题:已知背包的装载量为c=8,现有n=5个物品,它们的重量和价值分别是(2, 3, 5, 1, 4)和(2, 5, 8, 3, 6)。试使用模拟退火算法求解该背包问题,写出关键的步骤。

在开始求解之前我们先分析一下问题。

分析:背包问题本身是一个组合优化问题,也是一个典型的NP难问题。如果使用枚举的方法,我们需要找到n个物品的所有子集,然后在那些满足约束条件的子集中比较物品的总价值,找到总价值最大的子集,也就是问题的最优解。但是我们知道,大小为n的集合的子集数目为 2 n 2^n 2n ,所以当背包问题的规模变大(n变大)的时候,要找出所有的子集是一个不现实的做法,因为计算复杂度的指数级增长已经使得问题在规模稍大的时候就无法在可以接受的时间内得到解决。因此背包问题需要采用一些计算复杂度较低的,但是能够提供令人满意的解的算法,而模拟退火算法是解决背包问题的重要手段。

大量的实验证明,模拟退火算法能够处理规模较大的背包问题,而且能够鲁棒地得到满意的解。

求解:假设问题的一个可行解用0和1的序列表示,例如i=(1010)表示选择第1和第3个物品,而不选择第2和第4个物品。用模拟退火算法求解例10.1的关键过程如图所示:
在这里插入图片描述

  • 22
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
模拟退火算法Simulated Annealing)是一种全局优化算法,用于在搜索空间中寻找最优解。它的灵感来源于固体退火过程,通过模拟金属在高温下退火冷却的过程来逐步降低系统能量,从而达到寻找最优解的目的。 模拟退火算法的基本思想是通过接受一定概率的劣解来避免陷入局部最优解,以便更好地探索搜索空间。它模拟了固体退火过程中的三个阶段:加热、冷却和平衡。在加热阶段,算法会接受较差的解,以便跳出局部最优解;在冷却阶段,算法逐渐降低接受较差解的概率,以便逐渐收敛到全局最优解;在平衡阶段,算法会在搜索空间中进行随机搜索,以便更好地探索解空间。 模拟退火算法的核心是定义一个能量函数(目标函数),通过计算当前解的能量来评估其优劣。算法通过随机生成新的解,并计算新解的能量与当前解的能量之差(称为能量差)。如果新解的能量差小于0,则接受新解作为当前解;如果能量差大于0,则以一定的概率接受新解。这个概率与能量差以及当前的温度有关,随着温度的降低,接受较差解的概率逐渐减小。 模拟退火算法在组合优化、参数优化、图形识别等领域有广泛应用。它的优点是可以避免陷入局部最优解,全局搜索能力较强。但是,算法的效率较低,需要进行大量的随机搜索和计算。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

报告,今天也有好好学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值