浅谈随机化算法

news/2024/11/29 15:47:24/文章来源:https://www.cnblogs.com/Torrentolf/p/18576889

用处

在很多情况下,我们很难想到一道题目的正解,这时候,,我们不应什么都不干,我们可以骗分!

随机化——一种最常用的骗分方式,而且它在大部分情况下只要使用方式正确,就能获得非常高的部分分,有时甚至能骗过整道题

分类

我所知道的随机化算法大致分三种,分别是纯随机、爬山算法与模拟退火算法

纯随机

纯随机看似是纯随机,但是它的作用非常大,只是在一些最优解问题中的表现要略逊于另外两种方法,因为在很多存在解问题中其他两种根本没有必要使用,因为只要找出一组解即可。

纯随机化作用很大,而且写法简单,这里就不再赘述,重点讲其他两种

爬山算法

爬山算法是一种局部择优的方法,采用启发式方法,是对深度优先搜索的一种改进,它利用反馈信息帮助生成解的决策。

直白地讲,就是当目前无法直接到达最优解,但是可以判断两个解哪个更优的时候,根据一些反馈信息生成一个新的可能解。

所以说,爬山算法就是在当前最优的方案下选找下一个更优方案,如果下一次找的的方案没有更优,就会会退回来,类似于一个爬山的过程。

但是,爬山有一个缺点,就是它容易陷入局部最优解,如下图:

image

绿色箭头表示全局最优解,而红色的表示爬山可能会陷入的最优解。

为了解决此问题,我们可以多次爬山,取其中最优解。

模拟退火

但是,多次爬山仍然可能出现问题,如下图:

image

假设红色箭头指向我们现在爬山的到的最优解,灰色箭头指向现在找到的一个可能解,但是灰色箭头要低于红色的,根据爬山,我们现在会放弃灰色部分,但是注意!!!看上面的图,从红色只能爬到蓝色,但是灰色可以爬到当前峰最优解的绿色!!!

为什么会这样?因为爬山只更新更优的解,但是没有考虑如果接受劣解可能会得到更优的结果!!!

因此,我们就有了模拟退火,它的原理类似于下图:(来自oi.wiki)

image

随着温度的降低,跳跃越来越不随机,得到的最优解也越来越稳定。

所以模拟退火的实现就要求我们接受劣解,但是显然,我们并不能接受所有劣解,因为这样会不断更新答案,正确率极低,甚至会不如纯随机。

所以,我们需要设置一个阈值\(ex\),一般的,我们令\(ex = (1.0\times rand()) / RAND\_MAX\)

\(exp(-abs(cur - ans) \div T) \geq ex\),则接受当前劣解,其中\(cur\)表示当前峰前面求得的解,\(ans\)表示本次结果,\(-abs\)是为了保证\(cur - ans > 0\)(也可以看情况而定减的顺序来减小常数),\(T\)表示当前温度参数,一般来说,温度参数变化幅度越小,深度越深,得到的结果就会越精准。

然而,模拟退火的参数十分重要,要多造几组检查稳定性,实在不行就尝试多参数退火。

一般来说,退火跑得会比爬山慢很多,但是只要参数调的好,正确概率就会大大提升。

完结★,°:.☆( ̄▽ ̄)/$:.°★ 。~~~~~~

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

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

相关文章

高效安全迁移:PG高可用集群实战方案深度解析

PostgreSQL是一个开源的数据库管理系统,相比于其他开源数据库系统,PostgreSQL有更加丰富的数据类型和可扩展性,并因此被广泛采用。在实际工作中,若企业业务需求变动,则有可能面临PG高可用集群迁移的情况。 云掣具备丰富的帮助企业迁移数据平台的实战经验,提供专业的数据库…

pip 下载包失败(特定版本eg: torch==2.2.1+cu118)

背景介绍: 有时候要复现其项目的实验时,环境需要尽量与原作者实验的环境靠近,这样结果浮现的也更加准确。 这里当需要安装torch==2.2.1+cu118等特定版本的时,出现了报错:解决办法: 根据 PyTorch 官方推荐,可以使用以下命令来安装 torch 2.2.1+cu118 版本 pip install to…

智慧工地算法视频分析服务器物料堆放识别算法:提升建筑工地环境保护与效率的关键技术

随着经济的发展和城市化进程的加速,建筑工地数量急剧增加,物料堆放管理成为工地管理中至关重要的一环。裸露的物料堆不仅会造成扬尘污染,影响空气质量,还可能引发一系列环境问题。为了解决这一难题,视频分析服务器的物料堆放识别算法成为了一项关键技术。物料堆放识别算法…

【NLP高频面题 - LLM架构篇】大模型为何使用RMSNorm代替LayerNorm?

【NLP高频面题 - LLM架构篇】大模型为何使用RMSNorm代替LayerNorm? 重要性:★【NLP高频面题 - LLM架构篇】大模型为何使用RMSNorm代替LayerNorm? 重要性:★★★ 💯NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、…

LLM大模型: CV领域常见attention思路变种及其作用(一)

多年前做传统的机器学习,主要用的是LR、SVM、bayes、浅层nerual network、decision tree、random forest、GBDT等,这些分类或回归模型要想AUC、ROC等指标高,最核心的就是构造特征了!为此还专门诞生了一个细分领域:feather enginering,专门研究怎么构造好的feather!就实战…

[Vue] Vue optimization

Table of contentUse key Feeze object Use composition function (Vue2) Use computed lazy v-model v-model 保持对象引用稳定 Use v-show instead of v-if defer keep-alive 长列表优化 打包体积优化Use key Normally use key when you have v-for, and this keyshould be u…

启动第三方程序并嵌入到指定容器中

通过调用API 方法实现嵌入第三方程序窗口到指定容器 Code using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Win…

centos7定时备份mysql发送邮件

前几天搞服务器备份发邮件的功能,搞了好长时间都没调通,想必有很多人和我遇到过一样的问题,今天分享出来帮大家解决燃眉之急。我不允许还有不会的童鞋出现。安装mailx(邮件服务) yum install mailx -y编辑配置文件 vim /etc/mail.rcset from=xxx@qq.com #发信人地址 set s…

RSA2048生成及使用

RSA2048 小编最近裸辞了,以前工作中涉及到的RSA加密使用方法一直没有总结。 所以把RSA2048的密钥生成和使用方法写一写免得以后忘记(而且网上好多碎片化信息没有总结成一套)。 我选择的开源代码是包含了除N,P,Q,E,D之外还需要E1,E2,C的处理方式。其实大差不差,因为按照我的…

WPF从如何动态从本地文件加载界面

在前面的文章中,我介绍过一种报告模板的实现思路。就是用的XAML本地加载。 https://www.cnblogs.com/zhaotianff/p/18254574在另外一篇文章中,介绍了XAML是如何被转换成对象的。 https://www.cnblogs.com/zhaotianff/p/18363828在这篇文章中,简单介绍了InitializeComponent函…

Python 爬虫必备杀器,xpath 解析 HTML

最近工作上写了个爬虫,要爬取国家标准网上的一些信息,这自然离不了 Python,而在解析 HTML 方面,xpath 则可当仁不让的成为兵器谱第一。 你可能之前听说或用过其它的解析方式,像 Beautiful Soup,用的人好像也不少,但 xpath 与之相比,语法更简单,解析速度更快,就像正则…

视频调色 LUT 教程 All In One

视频调色 LUT 教程 All In One Lookup tables (LUTs) 在图像处理中,查找表通常称为 LUT(或 3DLUT),并为一系列索引值中的每一个提供输出值。一种常见的 LUT,称为颜色图或调色板,用于确定特定图像将显示的颜色和强度值。在计算机断层扫描中,“窗口化”是指用于确定如何显…