浅谈模拟退火

核心思想

模拟退火十分好写,它的核心思想就是:

每一次降温都可以从当前状态转移到另一种相近状态(没有严格定义,可以自己想产生相近解的方法)

如果那个相近状态的答案更优,当然转移到那种状态!

但如果更劣,也需要一定的概率转移到那种状态(防止陷入局部最优解)

那个概率就是:

\[ P=e^{\frac{nowVal-nextVal}{T}} \]

这里的T就是当前温度,Val是对应状态的答案

要注意\(\frac{nowVal-nextVal}{T}\)是一个负值,因此必定有\(0<P<1\)

可以看出,当那种相近状态越劣(\(nowVal-nextVal\)越小),就有越小的概率转移到那种状态

而当前温度越低,也是越稳定的

(这里针对的是答案越小越优的题目)

参数设置

模拟退火是一个十分依赖参数的随机化算法,大致有以下几个参数

①初始温度\(startT\)

②温度变化率\(deltaT\)

③温度下限\(lowT\)

④随机种子\(seed\)

初始温度大致可以设在100~10000,防止一开始活跃性太高,陷入太劣的解

温度变化率宜设置在0.99~0.999

温度下限可以很小,大概在1e-15~1e-10之间

至于\(seed\)...

大致流程

综上,模拟退火的大致流程就是:

①初始化温度

②产生相近状态

③利用上述方法判断是否转移,并同时改变记录的答案值

④降温,goto ②

直到温度低于下限结束

最后说一下,四个参数的调整对算法效率影响很大,可以自己做题体会一下

例题

提供几道例题练手

[JSOI2004]平衡点

[NOIp提高组2017]宝藏

转载于:https://www.cnblogs.com/ytxytx/p/9705916.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何应用前端技术唤起app及判断用户来源及与原生交互的原理

做唤起时需要native端进行配合&#xff0c; h5唤起app这种需求是常见的。在移动为王的时代&#xff0c;h5在app导流上发挥着重要的作用。 目前我们采用的唤起方式是url scheme(iOS&#xff0c;Android平台都支持)&#xff0c;只需原生APP开发时注册scheme&#xff0c; 那么用户…

mysql 设置client char_mysql编码问题:show variables like “%char%”

mysql编码设置mysql> SHOW VARIABLES LIKE character_set_%;------------------------------------------------------| Variable_name | Value |------------------------------------------------------| character_set_client | latin1 || character_set_connection | la…

虾扯蛋之函数防抖和节流

背景 今天在coding的时候&#xff0c;做了一个搜索框&#xff0c;也正是这个搜索框&#xff0c;让我和后台小伙伴直接由铁磁变为塑料兄弟。那到底发生啥了呢&#xff1f;其实很简单&#xff0c;其实很无奈&#xff0c;就是我用王者的手速把他的接口访问崩了&#xff01; 我们在…

四川省内二本计算机公立好的大学排名,四川有哪些二本院校是公立的?附四川省公立二本大学排名及分数线...

选择科目测一测我能上哪些大学选择科目领取你的专属报告>选择省份关闭请选择科目确定v>四川省内的公办大学一直以来都是历年高考生及家长关注的重点&#xff0c;本篇文章我将针对“四川省有多少所二本公立大学&#xff1f;有哪四川省内的公办大学一直以来都是历年高考生及…

NetBeans 7.4 Beta提示警告无效的异常处理

有许多例子说明Java异常处理可能比首次出现时要困难得多&#xff0c;Josh Bloch专门将一整章的《 Effective Java》 &#xff08;两个版本&#xff09;专门用于异常处理。 Java中的检查异常模型 仍然 “ 有争议” 。 我很高兴看到我最近下载的NetBeans 7.4 beta有一些提示&…

平心静气

昨天做一个功能的时候需要修改ofbiz代码,增加关联的表和查询字段,本以为很简单,照着写一下就好了,但是一直报错.临近下班,苦思冥想没有找到原因,八点左右不得已回家了. 第二天早上半个小时搞定.关键还是要平心静气,其实只是一个大小写的问题,由于大小写不匹配,没有匹配到对应的…

mysql5.7.17解压版安装_Windows中 MySQL5.7.17解压版安装步骤

1、先去MySQL官网下载。当前最新版是5.7.19&#xff0c;可能安装方法不同了&#xff0c;本人测试没有安装成功&#xff0c;若有安装成功的朋友&#xff0c;希望分享一下安装步骤。2、将下载的压缩包解压出来&#xff0c;然后在“MySQL解压目录”中新建“data”文件夹。如下图&a…

大学计算机结课论文怎么写,大学本科计算机论文格式_大学本科计算机毕业论文范文...

导读&#xff1a;如何撰写出满意的大学本科计算机论文是现在很多人都为之苦恼的问题之一&#xff0c;而论文的撰写也并非易事&#xff0c;必定是需要花费很多心思和汗水的&#xff0c;本论文分类为大学计算机论文&#xff0c;下面是小编为大家整理的几篇大学本科计算机论文范文…

关于Java和Scala同步的五件事你不知道

实际上&#xff0c;所有服务器应用程序都需要在多个线程之间进行某种同步。 大多数同步工作是在框架级别为我们完成的&#xff0c;例如通过我们的Web服务器&#xff0c;数据库客户端或消息传递框架。 Java和Scala提供了许多组件来编写可靠的多线程应用程序。 这些包括对象池&am…

Keepalived详解之 - LVS(IPVS)管理工具ipvsadm使用指南

ipvsadm是什么? ipvsadm是用来配置、维护或者查看Linux内核当中virtual server table的一个工具, LVS(Linux virtual server)能基于一个集群当中的两个或者多个节点来创建弹性网络服务, 集群中的处于激活状态的节点能将服务请求重定向到一组实际提供服务的主机当中, 提供包括T…

精读《你不知道的javascript》中卷

前言 《你不知道的 javascript》是一个前端学习必读的系列&#xff0c;让不求甚解的JavaScript开发者迎难而上&#xff0c;深入语言内部&#xff0c;弄清楚JavaScript每一个零部件的用途。本书《你不知道的javascript》中卷介绍了该系列的两个主题&#xff1a;“类型和语法”以…

mysql触发器区分新增 修改_MySQL触发器 , 判断更新操作前后数据是否改变

改动表为user , 改动后将部分信息写入cfq_tab表1. 新增触发器create TRIGGER cfq_on_user_addafter insert on userfor each ROWBEGINinsert into cfq_tab(id,type_id,type,status) values (null,new.UID,1,0);end;2. 修改触发器 , 判断修改前后数据是否变动//DROP TRIGGER IF…

三年级计算机课画曲线,三年级上册信息技术曲线工具教案

教材分析《嬉戏山水间—曲线工具》本课教学时间一课时&#xff0c;主要内容是学习在Windows下学会画图软件中“曲线”工具的使用方法。根据教材的编排&#xff0c;本课之前&#xff0c;学生已学会了画图软件中椭圆和直线工具、多边形工具的使用&#xff0c;已经具备了画图软件的…

如何使用不同的记录器实现配置SLF4J

将slf4j库用作Java应用程序日志记录API层有很多好处。 在这里&#xff0c;我将展示一些示例&#xff0c;说明如何与不同的记录器一起使用和配置它。 您可以将slf4j视为Java接口&#xff0c;然后在运行时需要一个实现&#xff08;仅一个&#xff09;来提供实际的日志记录详细信…

Presto 学习

Presto 基础知识与概念学习可以参考这些博客&#xff1a; presto 0.166概述 https://www.cnblogs.com/sorco/p/7060166.html Presto学习-presto介绍 https://blog.csdn.net/paicMis/article/details/78516475 Presto必知必会 https://blog.csdn.net/jiangshouzhuang/article/de…

4月24号

今天老师讲了好多理论&#xff0c;首先讲了一个程序运行多次就是多个进程&#xff0c; from multiprocessing import Processimport time import osdef task(): print(%s:父进程%s%(os.getpid(),os.getppid())) time.sleep(3)if __name____main__: pProcess(targettas…

撸个微信小程序的省市区选择器

起因 微信小程序虽然已经有现成的封装好的省市区选择器给开发者使用&#xff0c;然鹅不幸的是&#xff0c;微信地址库的数据和公司用的地址库数据很难一一对上&#xff0c;那就只能撸起袖子自己写个组件了。 最终效果 思维导图 主要代码 组件 region-picker.js /* region-pic…

docker build 变量_DockerFile 设置环境变量

镜像的Layer 在docker docs里面有一句话: We’ve already seen that Docker images are read-only templates from which Docker containers are launched. Each image consists of a series of layers. Docker makes use of union file systems to combine these layers into…

计算机巧用剪纸做画册教案,大班绘画剪纸制作的教案总结

大班绘画剪纸制作的教案总结第一篇&#xff1a;写生画&#xff1a;目标&#xff1a;培养幼儿细微的观察能力&#xff0c;进一步引导幼儿能抓住人物的典型特征&#xff0c;大胆表现。准备&#xff1a;不同脸型人物的范画两张。过程&#xff1a;一、导入。1&#xff0e; 组织游戏…

python之路_day6

本节内容&#xff1a;面向对象编程介绍为什么要用面向对象进行开发&#xff1f;面向对象的特性&#xff1a;封装、继承、多态类、方法、引子 你现在是一家游戏公司的开发人员&#xff0c;现在需要你开发一款叫做<人狗大战>的游戏&#xff0c;你就思考呀&#xff0c;人狗作…