堆优化模拟退火(List-Based Simulated Annealing|LBSA)
申明
本文部分内容来自List-Based Simulated Annealing Algorithm for Traveling Salesman Problem[1]
如有侵权,请联系删除
引入
模拟退火是用于求解连续函数的极值的随机化算法,由爬山算法优化得来
普通模拟退火对参数值极为敏感,经常要调很久
最近了解到一种进阶版模拟退火,即堆优化模拟退火 LBSA ,全称 List-Based Simulated Annealing ,较于普通的的模拟退火,它对参数的敏感度较低,得到最优解的概率较高,不失为一种优秀的骗分算法
算法过程
预处理
\(LSBA\) 首先要生成初始温度堆,步骤如下:
生成初始解 \(x\) ,建立温度堆 \(L\) ,定义堆长度 \(L_{\max}\) ,定义初始接受概率 \(p_0\)
随机生成 \(x\) 的临近解 \(y\) ,如果 \(y\) 优于 \(x\) ,则令 \(x=y\)
将温度 \(t=\frac { -( f(y) - f(x) ) } { \ln{ p_0} }\) 放入 \(L\) 中
重复这一过程,直到放满 \(L_{\max}\) 个温度
求解
初始化温度堆\(L\)
取出(pop)堆中的最大值\(t_{\max}\)
随机生成 \(x\) 的临近解 \(y\) ,如果 \(y\) 比 \(x\) 优,则令 \(x=y\),跳至第5步;否则执行第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\)
重复3~4步 \(M\) 次
如果 $c \not = 0 $, 将 \(L\) 中的最大值换为 \(\frac{t}{c}\),清空 \(c\)
重复2~6步 \(K\) 次
堆优化模拟退火(List-Based Simulated Annealing|LBSA)的更多相关文章
- 模拟退火 Simulated annealing
模拟退火 Simulated annealing 看看有空把图片完善一下好了 模拟退火算法的一些背景 既然要说模拟退火算法,就应该说一下模拟退火算法的背景,模拟退火算法是局部搜索算法的一种扩展,该算法 ...
- 【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 文章声明 此文章部分资料和代码整合自网上,来源太多已经无法查明出处,如侵犯您的权利,请联系我删除. 01 什么是旅行商问题(TS ...
- uva10986 堆优化单源最短路径(pas)
var n,m,s,t,v,i,a,b,c:longint;//这道题的代码不是这个,在下面 first,tr,p,q:..]of longint; next,eb,ew:..]of longint; ...
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...
- 堆优化的Dijkstra
SPFA在求最短路时不是万能的.在稠密图时用堆优化的dijkstra更加高效: typedef pair<int,int> pii; priority_queue<pii, vect ...
- codeforces 449B Jzzhu and Cities (Dij+堆优化)
输入一个无向图<V,E> V<=1e5, E<=3e5 现在另外给k条边(u=1,v=s[k],w=y[k]) 问在不影响从结点1出发到所有结点的最短路的前提下,最多可以 ...
- POJ 1511 - Invitation Cards 邻接表 Dijkstra堆优化
昨天的题太水了,堆优化跑的不爽,今天换了一个题,1000000个点,1000000条边= = 试一试邻接表 写的过程中遇到了一些问题,由于习惯于把数据结构封装在 struct 里,结果 int [10 ...
- POJ 2502 - Subway Dijkstra堆优化试水
做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...
- Bzoj 2834: 回家的路 dijkstra,堆优化,分层图,最短路
2834: 回家的路 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 62 Solved: 38[Submit][Status][Discuss] D ...
- Dij的堆优化
#include<algorithm> #include<iostream> #include<cstdio> #include<cstring> #i ...
随机推荐
- Linux服务器下启动和关闭node
首先将node工程的代码和node_modules目录上传到服务器的某一个目录下 1.用forever 进行管理 前提:linux下已经安装了node npm install -g forever / ...
- window.location.href和this.$router.push区别
使用location.href='/url'来跳转,简单方便,但是刷新了页面:使用history.pushState('/url'),无刷新页面,静态跳转: 引进router,然后使用router.p ...
- 论文阅读:A new approach solve the multi-product multi-period inventory lot sizing with supplier selection problem
论文:A new approach solve the multi-product multi-period inventory lot sizing with supplier selection ...
- #分层图最短路,Dijkstra#洛谷 4568 [JLOI2011]飞行路线
题目 一个无向图,每条边都有花费,可以有\(k\)次挑选边去除花费的机会,问从指定起点到指定终点的最小花费 分析 考虑用分层最短路完成,也就是在同一层走需要花费,不同层走不用花费,最终走到最底层,然后 ...
- Bootstrap实战 - 评论列表
一.介绍 社交媒体网站盛行,人们常常会使用评论表达自己的观点,评论功能已然成为网站的一部分. 二.知识点 2.1 媒体对象 官方解释:这是一个抽象的样式,用以构建不同类型的组件,这些组件都具有在文本内 ...
- .NET 8使用日志功能以及自定义日志提供程序
.NET 8使用日志功能以及自定义日志提供程序 日志级别 下表列出了 LogLevel 值.方便的 Log{LogLevel} 扩展方法以及建议的用法: 展开表 LogLevel "值&qu ...
- 你不知道的java对象序列化的秘密
目录 简介 什么是序列化 重构序列化对象 序列化不是加密 使用真正的加密 使用代理 Serializable和Externalizable的区别 总结 简介 你知道序列化可以使用代理吗?你知道序列化的 ...
- Seaborn分布数据可视化---箱型分布图
箱型分布图 boxplot() sns.boxplot( x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient ...
- 探索生成式AI的未来:Chat与Agent的较量与融合
近年来,生成式人工智能(AI)不仅在技术界引起了广泛关注,更成为了推动多个行业革新的关键力量.这种技术之所以备受瞩目,不仅在于其独特的创造性和高效性,还在于它对未来商业模式和社会结构可能产生的深远影响 ...
- Android Compose 入门,深入底层源码分析
Android Compose 入门,深入底层源码分析 我是跟着AS官网学习的,但是官方的教程写的不是很详细.官网链接 首先创建一个Compose项目,目录结构是这样: ui -> theme ...