堆优化模拟退火(List-Based Simulated Annealing|LBSA)

申明

本文部分内容来自List-Based Simulated Annealing Algorithm for Traveling Salesman Problem
如有侵权,请联系删除

引入

模拟退火是用于求解连续函数的极值的随机化算法,由爬山算法优化得来

普通模拟退火对参数值极为敏感,经常要调很久

最近了解到一种进阶版模拟退火,即堆优化模拟退火 LBSA ,全称 List-Based Simulated Annealing ,较于普通的的模拟退火,它对参数的敏感度较低,得到最优解的概率较高,不失为一种优秀的骗分算法

算法过程

预处理

LSBA 首先要生成初始温度堆,步骤如下:

  1. 生成初始解 x ,建立温度堆 L ,定义堆长度 Lmax ,定义初始接受概率 p0

  2. 随机生成 x 的临近解 y ,如果 y 优于 x ,则令 x=y

  3. 将温度 t=(f(y)f(x))lnp0 放入 L

  4. 重复这一过程,直到放满 Lmax 个温度

求解

  1. 初始化温度堆L

  2. 取出(pop)堆中的最大值tmax

  3. 随机生成 x 的临近解 y ,如果 yx 优,则令 x=y,跳至第5步;否则执行第4步

  4. 设概率 p=exp((f(y)f(x))tmax) ,随机一个 r[0,1) ,若 r<p ,则令t=t+(f(y)f(x))lnr并累计执行次数 cx=y

  5. 重复3~4步 M

  6. 如果 c0, 将 L 中的最大值换为 tc,清空 c

  7. 重复2~6步 K


  1. https://www.hindawi.com/journals/cin/2016/1712630/ ↩︎

posted @   lnw143  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示