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

模拟退火

时间:2024-05-17 20:57:35浏览次数:8  
标签:ansx ansy lim 模拟退火 ansd dou

模拟退火

一个基于随机的算法,多用于求解最优解问题。

对于一个多峰函数,该算法会在函数上不断跳跃并记录最优。

#include<bits/stdc++.h>
#define dou double
const dou lim = 1e-15, D = 0.9996;
using namespace std;

dou ansx, ansy, ansd;

dou clac(dou x, dou y){

}
void SA(){
	dou t = 3000;
	while(t > lim){
		dou X = ansx + (2 * rand() - RAND_MAX) * t;
		dou Y = ansy + (2 * rand() - RAND_MAX) * t;
		dou dis = clac(X, Y);
		dou d = ansd - dis;
		if(d < 0){
			ansx = X, ansy = Y, ansd = dis;
		}else if(exp(-d / t) * RAND_MAX > rand()){
			ansx = X, ansy = Y;
		}
		t *= D;
	}
}
int main(){
	
	srand(time(NULL));
	dou sx, sy, st = clock();
	ansx = sx, ansy = sy;
	ansd = clac(ansx, ansy);
	while((clock() - st) / CLOCKS_PER_SEC < 0.8) SA();
	
	return 0;
}

主要参数包括\(t,D,lim\)。

\(t控制跳跃的幅度\)

\(D,lim控制跳跃的次数\)

标签:ansx,ansy,lim,模拟退火,ansd,dou
From: https://www.cnblogs.com/Peng1984729/p/18198596

相关文章

  • 68文章解读与程序——电力自动化设备EI\CSCD\北大核心《基于混沌模拟退火粒子群优化
    ......
  • 67文章解读与程序——《基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容》
    ......
  • 模拟退火(simulated annealing,SA)算法解决TSP问题
        模拟退火(simulatedannealing,SA)算法    该算法的思想最早是由Metropolis等提出的。其出发点是基于物理中固体物质的退火过程与一般的组合优化问题之间的相似性。模拟退火法是一种通用的优化算法,其物理退火过程由以下三部分组成:    (1)加温......
  • TSP旅行商问题——SA模拟退火算法,SA+GA组合算法(代码解释)
    SA代码直接用就行,成功率极高importrandomimportnumpyasnpimportmatplotlib.pyplotasplt#randomlygeneratethemapwithconstraintof[-100,100]defgen_cities(city_num,random_state=True):ifrandom_state:cities=(np.random.uniform(0......
  • 模拟退火学习笔记
    模拟退火,优雅的暴力我认为有必要摘抄一下提单上的简介ZX写的前言:本片适用于模拟退火入门-进阶模拟退火(SA)是一种随机化算法。当一个问题的方案数量极大(甚至是无穷的)而且不是一个单峰函数时,我们常使用模拟退火求解。一般的,很多题都可以用模拟退火水过,在OI界称之[优雅的暴......
  • 模拟退火学习笔记
    Whatis%你退火说到%你退火我就会想到一个人,那就是\(S.Kirkpatrick,C.D.Gelatt\)和\(M.P.Vecchi\)。(wy2024届传奇oi/数学大师,@yanxu_cn)模拟退火是一种基于物理冶金学中固体物质退火过程的启发式优化算法。它是一种全局优化算法,通常用于求解复杂的组合优化问题。该算法的灵感......
  • 模拟退火模板
    模拟退火模板#include<bits/stdc++.h>#defineMAX_TIME0.9//时间限制(s)#defineFu(i,a,b)for(registerinti=(a);i<=(b);i++)usingnamespacestd;doubleRand(){return1.0*rand()/RAND_MAX;}intcalc(intz,ints[605],intx){//计算差值 if(ans<=)//更新按时......
  • 模拟退火
    引入模拟退火,一种由金属退火启发的随机化(玄学)算法,。当问题的方案数及其巨大甚至是无穷,而且不是一个线性或单峰函数时,模拟退火是一个较好的解决方案。解释先介绍一下它的前置算法——爬山算法。爬山算法爬山算法是一种局部择优的方法,采用启发式方法,是对深度优先搜索的一种改......
  • 模拟退火
    番外曾经看CY用模拟退火大杀四方,所以今天也来看一下这个算法,看了之后相见恨晚啊!我也不晓得为什么这么晚才学,多么优秀(暴力)的东西,QwQ在这里声明并不是完全原创,大部分选自Darth_Che的博客,介绍简介模拟退火算法(SimulateAnneal,SA)是一种通用概率演算法,用来在一个大的搜寻空间......
  • 【复建笔记】模拟退火
    简述一下我的理解:为什么要有那一行一定概率下接受答案?因为如果没有就会在当前峰下爬山,有的话才能跳到别的峰上,这一行与温度有关,当温度越低,跳的概率越低。退火随机一个二维点:nowx=limx+((rand()<<1)-RAND_MAX)*T;nowy=limy+((rand()<<1)-RAND_MAX)*T;......