首页 > 其他分享 >模拟退火与爬山法

模拟退火与爬山法

时间:2024-10-12 23:11:49浏览次数:7  
标签:sum 爬山 lst 模拟退火 del Delta

通过向 chatGPT-4o-mini 提问,我注意到所有爬山法可以解决的问题模拟退火都可以解决,所以爬山法死了我不想学爬山法。

具体的,对于一个多峰函数求解最值的题目都可以用模拟退火来做。

如果现在在较优解 \(x\),发现了一个新的解 \(x'\),如果 \(x'\) 比 \(x\) 优那么 \(x\gets x'\) 否则有一定概率接受 \(x'\),这就是模拟退火的核心思想。

考虑 \(x'\) 没有 \(x\) 优秀的概率是怎么计算的:

令 \(\Delta x=x-x'\),那么我们就有 \(e^{\frac{\Delta x}{T}}\) 的概率更新 \(x\),其中 \(T\) 是当前的温度。在进行了一次操作之后就进行降温操作,即 \(T\gets T\times 0.999\)。

下面的内容很重要!!!!!!

我们令新算出的结果为 \(f\),原本的答案为 \(lst\)。

对于求解最小值的问题,取 \(\Delta=f-lst\),那么:

  • 如果 \(\Delta<0\),那么就直接接受。
  • 否则如果 exp(-del/t)>Rand(),那么接受。

对于求解最小值的问题,一样取 \(\Delta=f-lst\),那么:

  • 如果 \(\Delta>0\),那么就直接接受。
  • 否则如果 exp(del/t)>Rand(),那么接受。

需要注意的是 exp(x)\(=e^x\),其中 \(x\) 就是自然函数,其图像如下:

发现对于 \(x>0\) 的情况 epx(x) 始终大于 \(1\),这个概率就是没有意义的,所以 \(\Delta\) 的值一定是负数才有意义。

所以上面的公式在 epx 中是取 del 还是 -del 就十分好理解了,所以这并不需要死记硬背。

形象的,放一张从 OI-Wiki 偷的图:

JSOI2004 平衡点 / 吊打XXX

练手题,但是题目太困难了,考虑给一个形式化题意:

找到一个 \((x,y)\) 使 \(\sum\limits_{i=1}^n dis((X_i,Y_i),(x,y))\times Weight_i\) 最小,输出 \(x,y\)(可以是小数),其中 \(1\le n\le 1000\)。

就是模板,按照上面的思路写就行了。

AHOI2014/JSOI2014 保龄球

考虑每一次随机交换 \(x,y\) 的位置,跑模拟退火就行了。

JSOI2016 炸弹攻击

直接随机放炸弹的位置,因为函数长得奇丑无比所以要求扰动的范围较大,生成的时候需要使用:

double xx=(rand()*2-RAND_MAX)*t+x;

而不是:

double xx=(2.0*rand()/RAND_MAX-1)*t+x;

HAOI2006 均分数据

考虑先随机分组,然后模拟退火随机改变一个元素的分组就行了。

JSOI2008 球形空间产生器

设一个变量 \(r\),表示这个高维球体的半径,由公式 \(r=\sqrt{\sum_{i=1}^n(a_i-b_i)^2}\) 可得 \(\sum_{i=1}^n(a_i-b_i)^2= r^2\),其中 \(a_i\) 是高维球面上某一个点的坐标,\(b_i\) 是球心的坐标。

化简得:

\[\sum_{i=1}^n({a_i}^2-2a_ib_i+{b_i}^2)=r^2 \]

移项得:

\[\sum_{i=1}^n(-2a_ib_i)+\sum_{i=1}^n{b_i}^2-r^2=\sum_{i=1}^n({-a_i}^2) \]

其中 \(\sum_{i=1}^n{b_i}^2-r^2\) 与球面上的点无关,因此我们可以将其看做一个系数为 \(1\) 的变量,右边是常量。

标签:sum,爬山,lst,模拟退火,del,Delta
From: https://www.cnblogs.com/liudagou/p/18461656

相关文章

  • 探索优化的艺术:深入理解模拟退火算法
    探索优化的艺术:深入理解模拟退火算法在解决复杂优化问题的过程中,选择合适的算法至关重要。模拟退火算法(SimulatedAnnealing,SA)作为一种基于概率的启发式搜索方法,因其在处理大规模和复杂优化问题时表现出的卓越能力,近年来受到了广泛关注。本文将带您深入了解模拟退火算法的原理、......
  • 选址模型 | 基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容(Matlab)
    目录效果一览基本介绍程序设计参考资料效果一览基本介绍基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容(Matlab)问题建模:首先,需要将电动汽车充电站选址与定容问题进行数学建模,确定目标函数和约束条件。混沌模拟退火粒子群优化算法:实现该算法需要考虑混沌模拟退火和粒......
  • 多维时序 | 融合模拟退火和自适应变异的混沌鲸鱼优化算法(AAMCWOA)优化LSTM长短期记忆网
    多维时序|融合模拟退火和自适应变异的混沌鲸鱼优化算法(AAMCWOA)优化LSTM长短期记忆网络结合AdaBoost时间序列预测(AAMCWOA-LSTM-AdaBoost时序预测)目录多维时序|融合模拟退火和自适应变异的混沌鲸鱼优化算法(AAMCWOA)优化LSTM长短期记忆网络结合AdaBoost时间序列预测(AAMCWOA-LSTM-A......
  • 优化算法(三)—模拟退火算法(附MATLAB程序)
    模拟退火算法(SimulatedAnnealing,SA)是一种基于概率的优化算法,旨在寻找全局最优解。该算法模拟金属退火过程中的物质冷却过程,逐渐降低系统的“温度”以达到全局优化的效果。它特别适用于解决复杂的组合优化问题。一、模拟退火算法基本原理模拟退火算法(SimulatedAnnealing,......
  • 基于SA-BP模拟退火算法优化BP神经网络实现数据预测Python实现
        在数据分析和机器学习领域,时间序列预测和多输入单输出系统的预测是重要且复杂的问题。传统的BP(反向传播)神经网络虽然具有强大的非线性函数逼近能力,但在处理这些问题时容易陷入局部极小值、训练速度慢以及过拟合等问题。为了克服这些不足,我们引入了SA-BP(模拟退火算法......
  • 模拟退火模型 —— 入门案例
    简介模拟退火算法(SimulatedAnnealing,SA)是一种概率型全局优化算法,它受到物理退火过程的启发。在固体材料的退火过程中,材料被加热到一定温度后缓慢冷却,其内部结构逐渐趋于稳定,最终达到能量最低的平衡状态。模拟退火算法正是模仿这一过程,用于寻找数学问题中的全局最优解。特点......
  • 玄学乱搞算法——模拟退火,SA
    \(\texttt{0x00:}\)前言在此之前只对模拟退火的大名有所耳闻,但并未在我的认知上激起太大的风浪,直到……在外培的一场模拟赛上,队内大佬yyc在丝毫没有思路的情况下用SA骗了70pts,赛后使得给我们上课的清华姚班老师惊掉下巴。至此,在感叹SA的神力的同时,它也进入了我的学习计......
  • 基于模拟退火算法求解物流选址问题(附word文档)
    基于模拟退火算法求解物流选址问题(附word文档)......
  • 模拟退火算法的理论基础
    模拟退火算法是一种基于概率的,可以有效避免陷入局部极小并最终趋于全局最优的串行结构的优化算法。通常用于解决:可行解过多、传统算法运算时间过长、筹款组合方案过多和NP-hard等问题目录一、模拟退火的思想与提出1.基本思想2.贪心算法失效--陷入局部最优3.模拟退火如何解决解决......
  • 模拟退火算法
    模拟退火算法1.模拟退火算法概述1.1算法起源与发展模拟退火算法(SimulatedAnnealing,SA)最早由N.Metropolis等人于1953年提出。该算法的思想来源于固体物理中的退火过程,1983年,S.Kirkpatrick等人将其引入到组合优化问题中。模拟退火算法是一种基于概率的启发式搜索算法,......