首页 > 其他分享 >模拟退火

模拟退火

时间:2022-12-02 19:34:57浏览次数:39  
标签:Max 物体 降温 结晶 模拟退火 now

\(1.\) 作用

找到函数的极值。

\(2.\) 原理

为了解决这一问题,科学家们想到了物理的退火降温的过程——
一个处于很高温度的物体,现在要给它降温,使物体内能降到最低。
我们常规的思维是,越快越好,让它的温度迅速地降低。
然而,实际上,过快地降温使得物体来不及有序地收缩,难以形成结晶。而结晶态,才是物体真正内能降到最低的形态。
正确的做法,是徐徐降温,也就是退火,才能使得物体的每一个粒子都有足够的时间找到自己的最佳位置并紧密有序地排列。开始温度高的时候,粒子活跃地运动并逐渐找到一个合适的状态。在这过程中温度也会越降越低,温度低下来了,那么粒子也渐渐稳定下来,相较于以前不那么活跃了。这时候就可以慢慢形成最终稳定的结晶态了。
那么,我们可不可以把找到最优解,与形成结晶态,这两个过程联系在一起呢?
于是,模拟退火诞生了

\(3.\) 步骤

若 \(f_{now} ? f_{Max}\) 直接接受。

若 \(f_{now} ¿ f_{Max}\) 在 \(e^{\dfrac{-|f_{now}-f_{Max}|}{T}}\) 的概率内通过。

?根据题目来,¿表示与?相反的运算符。

\(4.\) 代码

一种不需要脑子的判断。

能直接接受就直接接受。

不行的话若满足 if (exp(-fabs(Delta) / t) >= (double)rand()/RAND_MAX) ... 就接受

标签:Max,物体,降温,结晶,模拟退火,now
From: https://www.cnblogs.com/Hovery/p/16945434.html

相关文章

  • codes for 模拟退火
    伪代码:#include<bits/stdc++.h>usingnamespacestd;signedmain(){ ios::sync_with_stdio(0); cin>>初始解; 认为当前为最优解; for(由前解扰动生成新......
  • 模拟退火(退役前怒学骗分)
    代码是\([这题](https://www.luogu.com.cn/problem/P3878)\)的。模拟一个退火的过程,最开始温度为\(100\)不断降低,常数可以自己设计这里为\(99\)。每次随机一个转移,如......
  • 【模板】模拟退火 Simulated Annealing
    postedon2021-05-0418:16:24|under学术|source模拟退火适用于:你不会正解能写出估价函数,而且最优解的估价最大/小估价函数不单调,不能二分人品好由于是个带......
  • 模拟退火
    模拟退火(SimulateAnneal)是一种通用概率演算法,在大的搜索空间内寻找最优解,若新的状态优于当前状态,则将新的状态作为最优解,否则以一定概率接受新的状态。模拟退火有三个因......
  • 基于粒子群优化和模拟退火算法增强传统聚类研究(Matlab代码实现)
    ......
  • 模拟退火
    模拟退火很多时候我们会被要求求一些函数的最值问题,但是又因为值域很大,是连续的乃至无穷的,那么搜索是搜不出来的,对于这种问题,一般来说爬山算法是很可以的,比如下边的图......
  • 模拟退火学习笔记
    1.简介模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在......
  • 模拟退火学习笔记
    虽然说考前不应该碰这些随机化算法,容易影响思考,但是还是写一写吧,对于一些问题还是很好用的。概念什么是模拟退火。一句话解释,我们从一个旧状态随机出一个新状态,要从旧状......
  • 分治理 + 模拟退火(因为博客归档有问题,这两个就放一起了,以后有机会搬一下)
    分治本篇重点讲三个东西,线段树分治,点分治,以及CDQ分治。TOP1线段树分治这个算法主要是针对于一些对在线算法很不友好的题,其模型大概是维护一张图,其中的边在某个固定......
  • 学习常用模型及算法1.模拟退火算法
    title:学习常用模型及算法1.模拟退火算法excerpt:学习数学建模常用模型及算法tags:[数学建模,matlab]categories:[学习,数学建模]index_img:https://picture-......