模拟退火算法(Simulated Annealing, SA)

一、简介

模拟退火算法来源于固体退火原理,是一种基于概率的算法。将固体加温至充分高的温度,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,分子和原子越不稳定。而徐徐冷却时粒子渐趋有序,能量减少,原子越稳定。在冷却(降温)过程中,固体在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法是通过赋予搜索过程一种时变且最终趋于零的概率突跳性,从而可有效避免陷入局部极小并最终趋于全局最优的串行结构的优化算法。

二、原理

模拟退火算法包含两个部分即Metropolis算法和退火过程,分别对应内循环和外循环。外循环就是退火过程,将固体达到较高的温度(初始温度T(0)),然后按照降温系数alpha使温度按照一定的比例下降,当达到终止温度Tf时,冷却结束,即退火过程结束。

 

Metropolis算法是内循环,即在每次温度下,迭代L次,寻找在该温度下能量的最小值(即最优解)。下图中所示即为在一次温度下,迭代L次,固体能量发生的变化。在该温度下,整个迭代过程中温度不发生变化,能量发生变化,当前一个状态x(n)的能量大于后一个状态x(n+1)的能量时,状态x(n)的解没有状态x(n+1)的解好,所以接受状态x(n+1)。但是如果下一状态的能量比前一个状态的能量高时,该不该接受下一状态呢?在这里设置一个接受概率P,即如果下一状态的能量比前一个状态的能量高,则接受下一状态的概率为P,下面具体讲一下如何接受下一个状态。

Metropolis算法就是如何在局部最优解的情况下让其跳出来(如图中B、C、E为局部最优),是退火的基础。1953年Metropolis提出重要性采样方法,即以概率来接受新状态,而不是使用完全确定的规则,称为Metropolis准则,计算量较低。

假设开始状态在A,多次迭代之后更新到B的局部最优解,这时发现更新到B时,能力比A要低,则说明接近最优解了,因此百分百转移,状态到达B后,发现下一步能量上升了,如果是梯度下降则是不允许继续向前的,而这里会以一定的概率跳出这个坑,这各概率和当前的状态、能量等都有关系。所以说这个概率的设计是很重要的,下面从数学方面进行解释。

假设前一个状态为x(n),系统根据某一指标(梯度下降,上节的能量),状态变为x(n+1),相应的,系统的能量由E(n)变为E(n+1),定义系统由x(n)变为x(n+1)的接受概率P为

从上式我们可以看到,如果能量减小了,那么这种转移就被接受(概率为1),如果能量增大了,就说明系统偏离全局最优值位置更远了,此时算法不会立刻将其抛弃,而是进行概率操作:首先在区间【0,1】产生一个均匀分布的随机数ϵ,如果ϵ<P,则此种转移接受,否则拒绝转移,进入下一步,往复循环。其中P以能量的变化量和T进行决定概率P的大小,所以这个值是动态的。

用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值t及其衰减因子Δt、每个t值时的迭代次数L和停止条件Tf。而温度的作用就是来计算转移概率P的。当温度每次下降后,转移概率也发生变化,因此在所有温度下迭代L次的结果也都是不相同的。在每个温度下迭代L次来寻找当前温度下的最优解,然后降低温度继续寻找,直到到达终止温度,即转移概率P接近于0。

接受状态的三条原则:
(1)在固定温度下,接受使目标函数下降的候选解的概率要大于使目标函数上升的候选解概率;
(2)随着温度的下降,接受使目标函数上升的解的概率要逐渐减小;
(3)当温度趋于零时,只能接受目标函数下降的解。

三、基本流程

先声明:上图给出的只是模拟退火算法的基本框架,针对具体问题时还需要具体的设计。

内循环模拟的是在给定温度下系统达到平衡的过程。在内循环中,每次都从当前解i的邻域(怎么构建邻域后面会讲)中随机找出一个新解j,然后按照Metropolis准则概率地接受新解。那啥时候达到热平衡呢?你可以定义为循环一定的代数,或者基于接受率定义平衡等。

外层循环是一个降温的过程,当内循环结束,即在一个温度下达到平衡后,开始外层的降温,然后再新的温度下重新开始内循环。

模拟退火算法在求解最优化问题的时候,会包含以下几个方面的基本要素。分别为:初始温度、邻域函数、接受概率、冷却控制、内层平衡、终止条件。具体意义以及设置方法如下图所示。

四、应用

1.安全投资决策

安全投入是指企业为保证生产安全、改善作业环境、处理工伤事故、预防职业危害等而消耗的人力、物力、财力。安全投入包括主动性安全投入与被动性安全投入,主动性安全投入即安全投资,是指为了提高企业的系统安全性、预防各种事故的发生、防止因工伤亡,消除事故隐患、治理尘毒的全部费用。被动性安全投人是指企业为处理事故(灾害)而支付的费用,如职业病诊治费、赔偿费、事故处理费、维修费等,安全投资越大,系统安全性越高,从而可以减少甚至避免被动性安全投人。因此,研究安全投资具有更为积极的现实指导意义。目前,安全投资不足、安全投资缺乏科学的决策等一系列问题已经成为制约一个企业能否保证安全生产的瓶颈,而保证足够的安全投资、制定合理有效的安全投资决策方案是突破这一瓶颈的有效途径。

安全投资决策间题,即如何确定安全投资的最佳组合,使有限的安全投资得到充分的利用,已成为影响企业提高安全生产水平和经济效益的重要因素,也是安全系统工程研究的一个重要课题。该问题可归结为组合优化范畴,对于安全投资项目较少情况容易求解,而对于安全投资项目较多的情况求解难度将随着问题规模增长呈现出"组合爆炸"现象,很难用传统方法求得问题的最优解或满意解智能计算作为一类新颖的计算方法,由于其理论基础不断巩固、应用领域不断扩展、新算法不断出现研究成果层出不穷,已受到学术界的广泛关注,将智能计算中的模拟退火算法引人到安全工程领城中[1],用于求解安全投资决策问题,可以为企业进行安全投资提供科学有效的方法。

2.图像处理

从嵌入载体的形式上分,基于图像的数据隐藏包含空域隐藏算法,变换域隐藏算法以及与编码相结合的隐藏算法。与编码结合的嵌入算法是指在编码过程中或编码后的码流中嵌入数据。JPEG是当前互联网上通用的一种高效的压缩编码方法,它利用图像分块和二维DCT变换并结合编码方法实现图像数据的压缩。因此如何在JPEG的压缩码流中实现高容量高安全性的数据嵌入是十分有意义的研究。

JPEG图像的数据隐藏算法虽取得了一些进展,但在平衡安全性和隐藏容量上仍存在着一些不足。戴跃伟等人[2]提出一种基于可调整量化的嵌入算法,并以嵌入前后AC系数的统计分布的平均相对炼作为优化指标,使用模拟退火算法求解对统计分布破坏最小的调整变量能在保持较大信息容量的同时.取得更高的安全性能。

3.神经网计算机

玻尔兹曼机(Boltzmann机)是一种随机神经网络,借鉴了模拟退火思想。普通玻尔兹曼机是一种递归神经网络,受限玻尔兹曼机则不是。它具有一定的“爬山能力”(跳出局部最优)。

Boltzmann机是一种“基于能量的模型”,其为网络状态定义一个“能量”,当能量最小化时网络达到理想状态。它的特点是:两层结构,显层与隐层,显层即代表输入也代表输出,隐层则被理解为数据的内部表达;神经元是布尔型。

模拟退火算法具有跳出局部最优陷阱的能力。在Boltzmann机中,即使系统落入了局部最优的陷阱,经过一段时间后,它还能再跳出来,系统最终将往全局最优值的方向收敛。

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

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

相关文章

幻兽帕鲁Linux私服搭建备份迁移指南

幻兽帕鲁Linux私服搭建指南 文档参考 &#xff01;&#xff01;&#xff01;说明&#xff1a;不只是幻兽帕鲁&#xff0c;后续大家想自己搭私服玩别的Steam游戏&#xff0c;大部分内容都可以做一个参考 Linux安装steamcmd Linux开服步骤 游戏配置修改 Youtobe视频教程 配…

阿里十年 “帕鲁” 手把手带你学习 CompletableFuture

阿里十年 “帕鲁” 手把手带你学习 CompletableFuture 文章目录 阿里十年 “帕鲁” 手把手带你学习 CompletableFutureFuture 介绍CompletableFuture 介绍CompletableFuture 常见操作创建 CompletableFuturenew 关键字静态工厂方法 处理异步结算的结果异常处理组合 Completable…

Kafka(九)跨集群数据镜像

目录 1 跨集群镜像的应用场景1.1 区域集群和中心集群1.2 高可用(HA)和灾备(DR)1.3 监管与合规1.4 云迁移1.5 聚合边缘集群的数据 2 多集群架构2.1 星型架构2.2 双活架构2.2 主备架构2.2.1 如何实现Kafka集群的故障转移2.2.1.1 故障转移包括的内容1. 灾难恢复计划2. 非计划内的故…

遗传算法优化最大化效应的某些需求点可不配送的vrptw问题

标题&#xff1a;遗传算法优化最大化效应的某些需求点可不配送的vrptw问题 摘要&#xff1a; 在可不配送的车辆路径配送问题&#xff08;VRPTW&#xff09;中&#xff0c;我们面临着优化路径规划以最大化效用的挑战。本文提出了一种基于遗传算法的方法&#xff0c;旨在解决具…

信创发展之路

1、什么是信创 信创&#xff0c;即信息技术应用创新&#xff0c;以前也被称为“安可“&#xff08;安全可控&#xff09; 1.1、基本概念 信创产业主要包括四大领域&#xff1a; 基础设施&#xff0c;包括芯片&#xff08;CPU、GPU等&#xff09;、存储、服务器、云计算等&…

排序(2)——选择排序

三、选择排序 1.简介 选择排序主要采取的排序策略就是选择&#xff0c;在拿到待排序数组后&#xff0c;程序会一遍遍地遍历未排序部分数组&#xff0c;在每一次的遍历过程中会找到最小的元素&#xff0c;并在遍历完成后换到未排序数组部分的最左侧。如此循环往复&#xff0c;每…

Linux网络编程——网络初识

文章目录 1. 网络协议初识1.1 为什么要有网络协议1.2 协议分层 2. OSI七层模型3. TCP/IP五层&#xff08;或四层&#xff09;模型4. 网络传输基本流程5. 以太网通信 1. 网络协议初识 1.1 为什么要有网络协议 早期计算机是独立的&#xff0c;如果要进行数据交互&#xff0c;就…

【Shell实战案例面试题】输入网卡的名字,来输出网卡的IP

1.问题 参数后判断要加"" 名字为空时显示ip 2.分析 把本机的所有网卡名列出来&#xff0c;来引导用户输入 使用命令列出所有网卡信:ifconfig/ip a 设计一个函数&#xff0c;把网卡名作为参数&#xff0c;函数返回网卡的IP 在获取某个网卡IP时&#xff0c;考虑网…

手把手带你Git入门,从下载到精通,常用git命令

文章目录 Git概述什么是GitGit历史Git是什么 为什么要使用Git什么是版本控制系统 Git和SVN对比SVN集中式SVN优缺点 Git分布式Git优缺点 Git工作流程四个工作区域工作流程 Git下载与安装下载window版下载64位软件包安装Git Git基础环境配置设置用户信息查看配置信息 文件的两种状…

Android Clear架构最强官方指南Kotlin版

Android Clear架构最强官方指南Kotlin版 在这篇文章中&#xff0c;我将介绍关于Android应用程序架构的一些内容。尽管自从早期更稳健的Android架构方法在移动开发中变得流行以来已经说了很多话&#xff0c;但改进和演进的空间总是存在的。 基于上述文章中的清晰架构示例&…

从大模型中蒸馏功能性重排列任务的先验知识

导读 本文是VCC朱家辉同学对论文 Distilling Functional Rearrangement Priors from Large Models 的解读&#xff0c;该工作来自北京大学和中山大学&#xff0c;并已被发表在国际机器人顶会ICRA 2024上。 项目主页&#xff1a; https://sites.google.com/view/lvdiffusion…

ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口;向量数据库的挑战和未来

&#x1f989; AI新闻 &#x1f680; ChatGPT更新了Mention功能&#xff0c;集结若干GPTs作战&#xff0c;AI智能体的心智入口 摘要&#xff1a;OpenAI在ChatGPT中引入了一个新功能&#xff0c;允许用户在聊天时任意一个GPTs&#xff08;即ChatGPT最新推出的AI Agent 智能应用…