模拟退火(SA)总结:算法流程,实例,思路

您所在的位置:网站首页 什么是启发式算法的遗传实例 模拟退火(SA)总结:算法流程,实例,思路

模拟退火(SA)总结:算法流程,实例,思路

2024-02-26 06:41| 来源: 网络整理| 查看: 265

本文是偏应用的简要总结。 

关于模拟退火的基础知识和具体代码,网上有很多,不重复写了。本文没有代码,而是展示一个实例中的代码运行产生的中间结果,用于辅助理解算法流程。

本文分为四个部分: 第一部分,算法简要流程 第二部分,简单实例,按照第一部分的流程整理的代码运行时的迭代过程 第三部分,关于算法的全局搜索和局部搜索的理解 第四部分,算法思路整理

1. 简要流程

Step 1. 产生一个初始解,作为当前解 (开始进入迭代,迭代环节为Step 2 ~ Step 3)Step 2. 创建随机增量,添加到当前解上,产生一个新解Step 3. 如果新解的目标函数值优于当前解的目标函数值,当前解更新为新解 否则,以概率接受当前解更新为新解 (当满足迭代终止条件时,跳出迭代环节,执行Step 4)Step 4. 输出搜索到的最优解

2. 流程应用实例——求一元函数最小值

例子:求函数最小值

函数为y = (x-π)^2 + 20cos(x), x∈[-5,5] 

最小值:取x=π时,目标函数最小值为-20

自定义: 等差降温 (算法里的每种操作都可以自由设计,而且设计方式非常多)

代码运行迭代过程:(按第一部分的流程整理标注)

Step 1. 初始化时 当前解:0.3029  对应目标函数值:27.1473 此时最优解:0.3029  对应目标函数值:27.1473

第一轮迭代: 温度值:100Step 2. 创建的新解:-0.7255  新解的目标函数值:29.9173Step 3. 新解的目标函数值劣于当前解的目标函数值,计算出新解的接受概率:0.9726 此时,接受新解为当前解了 当前解:-0.7255  对应目标函数值:29.9173 此时最优解:0.3029  对应目标函数值:27.1473 

第二轮迭代: 温度值:99Step 2. 创建的新解:1.3722  新解的目标函数值:7.0760Step 3. 新解的目标函数值优于当前解的目标函数值,接受新解为当前解 当前解:1.3722  对应目标函数值:7.0760 此时最优解:1.3722  对应目标函数值:7.0760

第三轮迭代: 温度值:98Step 2. 创建的新解:-0.2304  新解的目标函数值:30.8419Step 3. 新解的目标函数值劣于当前解的目标函数值,计算出新解的接受概率:0.7846 此时,接受新解为当前解了 当前解:-0.2304  对应目标函数值:30.8419 此时最优解:1.3722  对应目标函数值:7.0760

迭代以此类推

3. 全局搜索 VS 局部搜索 全局搜索:理论上通过不断的随机变化得到的解也能覆盖全部的解空间 局部搜索:偏向于局部搜索,不断的把当前的一个解通过随机增量变化为新的解

4. 核心思路 搜索到比当前解好的解,一定接受,搜索到比当前解差的解,以一定的概率接受



【本文地址】


今日新闻


推荐新闻


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