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

您所在的位置:网站首页 双循环的英文表达是什么意思 一文搞懂什么是模拟退火算法SImulated Annealing【附应用举例】

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

2024-07-14 04:58| 来源: 网络整理| 查看: 265

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

本文来源: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的关键过程如图所示: 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3