模拟退火算法----学习反馈

IT教程 4年前 (2020) https://www.55wd.com

模拟退火算法

简介

模拟退火算法是启发式算法的一种,启发式算法就是从对自然现象的直观感觉或人类的工作经验中启发出来的算法。有些实际问题根本就没有最优解,或者最优解几乎是不可能被求出来,这种情况使用启发式算法可以求得较优解,或者是与最优解差别不是很大的较优解,然后由于最优解是无法得知的,所以启发式算法也就无法描述所求解与最优解的差别。启发式算法所求得解无法保证可行性和最有性,这是启发式算法的特点。

模拟退火算法是一种概率算法,也就是它依概率求得最优解。退火来源于冶金学的专有名词退火。它主要是模拟这样的一种过程:将金属材料加热后,再经缓慢速率冷却,这样粒子就可以在特定的温度下,达到热平衡状态。金属材料经过加热后,粒子会离开原来的使内能具有局部最小值的状态,然后达到一种比较内能比较高的状态,在冷却的过程中,温度退却速度较慢,那么粒子就会有更多的机会停留在使得内能更低的位置,最终达到内能更低的晶体。

算法模型

算法思想

模拟退火算法主要的步骤:

  1. 将实际问题抽象到解空间中,解空间一般是离散的一些点。
  2. 初始化变量:包括初始温度,特定温度下的迭代次数,结束温度, α \alpha α,
  3. 随机生成一个初始解,初始解对算法的结果没有影响。
  4. 计算初始解的目标函数值,可以理解为初始解的代价
  5. 对初始解进行扰动,生成一个新解(邻解),计算邻解的代价,并跟原解进行比较。
  6. 如果代价变小,则接受新解,并且代价更新为新解的代价。如果代价变大,则依据Metropolis准则接受新解,这是一个依概率接受的过程。
  7. 在特定的温度下循环一定的次数。循环结束后进行一次降温。
  8. 温度不满足结束条件时,继续循环。

    模拟退火算法的核心是新解的产生和接受,几乎在任何时候,算法都在进行这样的工作。也就是邻解生成函数,接受准则。

主要元素

  • 解空间:就是从实际问题中抽象出来的描述解的数学表达,一般是一个数组。
  • 目标函数:描述邻解和原来解的差距的数学函数。一般就是指新解和原解的增量差。通常目标函数就是优化的对象,这里的目标函数也不例外。不过这里的目标函数的优化并不是通过求导(梯度下降)等方法进行优化,而是通过遍历完尽可能多结果,来取这些结果中的最小值,那么这么多尽可能的结果是怎么产生的呢,这就要依靠一种生成函数。
  • 生成函数:生成函数可以叫做邻解生成函数,叫什么无所谓,关键看它是否便于理解这个过程。生成函数用于生成原解在邻域内的一个解。邻域应该尽可能的小,并且生成函数应该充分探测到邻域中的所有情况。邻解生成函数应尽可能保证产生的侯选解能够遍布解空间。当遍历完邻解内的所有可能的情况时,算法能得到这些情况中的最小值,并且更新原来的数据,这样我们就可以认为在这种温度下,我们达到了热平衡状态,接下来就要进行降温,在下一个温度下再去找它的热平衡状态。
  • 降温方式:降温方式有很多种。比如:

    经典降温方式 T ( t ) = T 0 l o g ( 1 + t ) T(t)=\frac{T_0}{log(1+t)} T(t)=log(1+t)T0​​快速降温方式: T ( t ) = T 0 1 + t T(t)=\frac{T_0}{1+t} T(t)=1+tT0​​常用降温方式: T ( t + Δ t ) = α × T ( t ) T(t+\Delta t)=\alpha\times T(t) T(t+Δt)=α×T(t)

  • 结束条件:当循环温度降低到一定程度后,可以认为达到了最优,而这个一定程度的温度就是结束条件,一般是温度大于1。

注意问题

  • 初始解:初始解最好是随机从解空间中获取。如果初始解经过挑选,那么初始温度应该设置的较低一些,这样可以减少计算时间。初始解如果太好也容易导致算法很难在这个初始解的邻域中跳出。
  • 邻解生成函数:尽可能的产生邻域内所有的情况。邻域应该尽可能的小,以保证能够探测到邻域内的所有情况。每次的改变不应该引起较大的变化,这样逐步进行。
  • 确定初始温度:一般来说,初始温度应该设置的尽可能的大,这样可以保证最终解不受初始解的影响。但是过大的初始解又会加大计算时间,所以可以提供一种选择初始温度的方法:在正式开始退火算法前, 可进行一个升温过程确定初始温度: 逐渐增加温度, 直到所有的尝试运动都被接受, 将此时的温度设置为初始温度。
  • 确定等温步数:也就是特定温度下的迭代次数。等温步数的设置决定了产生的邻解的个数。而选择等温步数可以通过检测目标函数的均值是否稳定,当目标函数的均值稳定时,确定该等温步数。等温步数,可以是变化的,高温下等温步数可以较少,低温下等温步数可以较多。为了方便,可以确定一样的等温步数。
  • 确定降温方式:权衡降温过程和解的最优性。

算法流程图

![](https://img-blog.csdnimg.cn/20190710133251421.jpg?x-ossprocess=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjM0Mjgz,size_16,color_FFFFFF,t_70)

贪婪算法

虽然课后习题没写,但是这本书的数据结构部分总算是看完了。接下来开始算法部分。 首先简单的介绍贪婪算法:贪婪算法就是算法的每一

RSA算法过程

构造一个公钥密码系统的要求 产生一对密钥是计算可行的 发送方利用公钥和明文,产生密文是计算可行的 接收方利用私钥和密文,产生明

[maya学习笔记(22)] 插入关节 重定骨架根 移除关节 断开

        插入关节 插入关节 : 在已有骨骼的某一位置插入新的关节。(在IK手柄/蒙皮之前做,否则会消失)。用法 : 先建立好一个关节,然

AI图像识别:人类看的是形状,算法看的是纹理

人类会关注图中对象的形状,深度学习计算机系统所用的算法不一样,它会研究对象的纹理。图片中的动物轮廓是猫,但是猫披着大象皮肤纹理

比尔盖茨警告全美必须停摆 学习中国加强封锁

站长之家(ChinaZ.com) 3月27日 消息:昨日,比尔·盖茨在接受采访时呼吁各方协同努力,有效地停摆美国各地的正常生活以阻止COVID-19的

文章回顾

大家看了本文模拟退火算法----学习反馈的精彩教程资源内容,是不是对模拟退火算法----学习反馈了解更多,真心希望模拟退火算法----学习反馈能帮助到你, 小编会一直给你带来更多教程资源文章信息。

版权声明: 发表于 2020-06-15 0:14:41。

本文由第三方用户分享仅代表作者观点,不代表本网站立场,秉承互联网开放分享的精神,目的在于传递更多信息,加强各行业互通交流,但对内容不作任何保证或承诺,请读者自行参考斟酌。网站发布的信息(包含但不限于版式、图片、字体、文章等素材)由第三方用户分享,版权归原作者所有,本站不承担任何相关的版权纠纷等相关责任。如您认为本篇内容侵犯了您的权益,请与我们联系,我们会及时处理。

豌豆资源网专注分享全网综合资源网站大全,致力于超实用的内容资源搜索。

转载请注明:
本文标题:模拟退火算法----学习反馈
本文地址:https://55wd.com/s43607/