申明

本文部分内容来自List-Based Simulated Annealing Algorithm for Traveling Salesman Problem[1]

如有侵权,请联系删除

引入

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

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

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

算法过程

预处理

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

  1. 生成初始解 \(x\) ,建立温度堆 \(L\) ,定义堆长度 \(L_{\max}\) ,定义初始接受概率 \(p_0\)

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

  3. 将温度 \(t=\frac { -( f(y) - f(x) ) } { \ln{ p_0} }\) 放入 \(L\) 中

  4. 重复这一过程,直到放满 \(L_{\max}\) 个温度

求解

  1. 初始化温度堆\(L\)

  2. 取出(pop)堆中的最大值\(t_{\max}\)

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

  4. 设概率 \(p = \exp{ (\frac{-(f(y)-f(x))} { t_{\max} } )}\) ,随机一个 \(r\in[0,1)\) ,若 \(r \lt p\) ,则令\(t=t+\frac{-(f(y)-f(x))}{\ln r}\)并累计执行次数 \(c\) ,\(x=y\)

  5. 重复3~4步 \(M\) 次

  6. 如果 $c \not = 0 $, 将 \(L\) 中的最大值换为 \(\frac{t}{c}\),清空 \(c\)

  7. 重复2~6步 \(K\) 次


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

堆优化模拟退火(List-Based Simulated Annealing|LBSA)的更多相关文章

  1. 模拟退火 Simulated annealing

    模拟退火 Simulated annealing 看看有空把图片完善一下好了 模拟退火算法的一些背景 既然要说模拟退火算法,就应该说一下模拟退火算法的背景,模拟退火算法是局部搜索算法的一种扩展,该算法 ...

  2. 【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 文章声明 此文章部分资料和代码整合自网上,来源太多已经无法查明出处,如侵犯您的权利,请联系我删除. 01 什么是旅行商问题(TS ...

  3. uva10986 堆优化单源最短路径(pas)

    var n,m,s,t,v,i,a,b,c:longint;//这道题的代码不是这个,在下面 first,tr,p,q:..]of longint; next,eb,ew:..]of longint; ...

  4. 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)

    关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...

  5. 堆优化的Dijkstra

    SPFA在求最短路时不是万能的.在稠密图时用堆优化的dijkstra更加高效: typedef pair<int,int> pii; priority_queue<pii, vect ...

  6. codeforces 449B Jzzhu and Cities (Dij+堆优化)

    输入一个无向图<V,E>    V<=1e5, E<=3e5 现在另外给k条边(u=1,v=s[k],w=y[k]) 问在不影响从结点1出发到所有结点的最短路的前提下,最多可以 ...

  7. POJ 1511 - Invitation Cards 邻接表 Dijkstra堆优化

    昨天的题太水了,堆优化跑的不爽,今天换了一个题,1000000个点,1000000条边= = 试一试邻接表 写的过程中遇到了一些问题,由于习惯于把数据结构封装在 struct 里,结果 int [10 ...

  8. POJ 2502 - Subway Dijkstra堆优化试水

    做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...

  9. Bzoj 2834: 回家的路 dijkstra,堆优化,分层图,最短路

    2834: 回家的路 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 62  Solved: 38[Submit][Status][Discuss] D ...

  10. Dij的堆优化

    #include<algorithm> #include<iostream> #include<cstdio> #include<cstring> #i ...

随机推荐

  1. ps去除图片中间部分并拼合

    今天分享一个用ps去除图片中间部分后,把剩下的部分拼合的技术. 需求 下面这张图,需要去掉第三列(顺丰包邮价) ps处理过程 1.导入图片到ps软件 快捷键方式:Ctrl + O: 手动打开方式:点击 ...

  2. C#词云生成器

    GitHub - sdcb/Sdcb.WordCloud: Generate WordCloud image from .NET/.NET Core 效果 根据mask生成

  3. sql语句TRUNCATE 清空表数据

    清空表数据 TRUNCATE TABLE zzsfp_hwmx;

  4. 使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频(未完待续)

    使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频 1. 背景 最近项目上有个需求,需要实现:录音.回放录音.实现音频可视化效果.上传wav格 ...

  5. #floyd,分治#D 路径之和

    题目 对于每个\(y\),求除了\(y\)之外,其余的所有点组成的有序点对\((x,z)\) 不经过\(y\)的最短路长度之和(不存在即为-1).\(n\leq 320\) 分析 太妙了,首先用flo ...

  6. C#实现文件加密、解密及文件拖拽至程序图标直接打开

    引用:https://www.cnblogs.com/longqi293/archive/2010/07/23/1783672.html 下载源码:http://files.cnblogs.com/l ...

  7. Pyside2简单案例

    代码: from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit app = QAppl ...

  8. MogDB/openGauss学习笔记-获取对象DDL

    MogDB/openGauss 学习笔记-获取对象 DDL 本文出处:https://www.modb.pro/db/399230 内置函数 omm2=# \df *def List of funct ...

  9. DevEco Studio新特性分享-跨语言调试,让调试更便捷高效

     原文:https://mp.weixin.qq.com/s/JKVLQXu1z1zAoF5q49YEGg,点击链接查看更多技术内容.   HUAWEI DevEco Studio是开发Harmony ...

  10. Mysql之备份工具

    一.备份工具 1. mysqldump mysql服务自带的备份工具:mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适 ...