ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

模擬Δεῦρο fire

2021-10-15 09:34:33  阅读:193  来源: 互联网

标签:RP fire 模擬 兔子 随机 exp 就是 red


0、抱歉标题党。
其实是模拟退火……

众所周知,检验 \(\huge\color{red}{RP}\) 的最佳方式就是退火。。。

然而有时并不是 \(\huge\color{red}{RP}\) 的问题,可能就是写挂了。。。

为了有效地提升 \(\huge\color{red}{RP}\) 并减少因写挂而带来的RP--的心理创伤,还是有必要注意一下的。

1、原理

一点也不高大上。

  1. 产生随机答案
  2. 计算答案
  3. 若比当前答案更优则接受,否则以一定概率接受
  4. 进行下一次随机计算

然后就是退火的精髓所在了:

  1. 产生随机答案时采用局部调整的方式,且调整量 随着枚举次数增多而减少
  2. 接受较劣解的概率 随着枚举次数增多而减少

然后保证 随着枚举次数增多而减少 的方式就是每次降温,温度越低越稳定。

2、写法 && 坑点

1、关于时间的判断

while((double)clock()/(double)CLOCKS_PER_SEC<=0.8){
	sa();
}

2、初始值

初温T=1e8,降温常数dn=0.996,终止值eps=1e-10

3、概率

if(exp((pans-anss)/T)*RAND_MAX>rand()){
	接受;
}

exp是一个指数函数,

exp(10)=22026.46579481
exp(2)=7.38905610
exp(1)=2.71828183
exp(0.2)=1.22140276
exp(0)=1.00000000
exp(-0.2)=0.81873075
exp(-1)=0.36787944
exp(-2)=0.13533528
exp(-10)=0.00004540

所以exp里面是一个(负数/T)的形式,保证了 "温度越高越容易接受较劣解" 且函数值在0~1之间。

注意是大于号,函数值越大越容易进入大括号。

4、调参

如果一直得不到最优解,可以增加T和dn。精度不够可以减小最终温度。
关于SA()的次数,可能不是那么有所谓……
剩下你要做的就是 少打兵兵球 以增加RP……

3、一些废话

用来骗分。。。想切掉一道数据较强的题基本在想桃子……

然后就是网上有一段话:

  • 兔子朝着比现在高的地方跳去。他们找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山算法,它不能保证局部最优值就是全局最优值。

  • 兔子喝醉了。他随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,他渐渐清醒了并朝最高方向跳去。这就是模拟退火。

  • 兔子们被发射到太空,然后随机落到了地球上的某些地方。他们不知道自己应该向上爬。但是,如果你过几年就杀死一部分海拔低的兔子,多产的兔子们自己就会找到珠穆朗玛峰。这就是遗传算法。

  • 兔子们知道一个兔的力量是渺小的。他们互相转告着,哪里的山已经找过,并且找过的每一座山他们都留下一只兔子做记号。他们制定了下一步去哪里寻找的策略。这就是记忆化搜索。

标签:RP,fire,模擬,兔子,随机,exp,就是,red
来源: https://www.cnblogs.com/zjjjj/p/15409623.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有