如何用随机方法求解组合优化问题(六)

这篇具有很好参考价值的文章主要介绍了如何用随机方法求解组合优化问题(六)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

模拟退火算法的参数选择

这是一篇笔记,是对于B站up主马少平的视频(第四篇 如何用随机方法求解组合优化问题(六))的学习与记录。

算法实现需要确定的参数:

  • 初始温度 \(t_0\)
  • 温度 \(t\) 的衰减函数,即温度的下降方法;
  • 算法的终止准则,终止温度 \(t_f\) 或者终止条件;
  • 每个温度 \(t\) 下的马尔可夫链长度 \(L_k\),即算法的内循环次数。

原则上初始温度越高越好,但是温度太高可能会导致求解效率下降。

初始温度 \(t_0\) 的选取(1)

基本原则:

  • 足够高的初始温度,使系统可以等概率处于任何一个状态;

“足够高”这个标准与具体的问题有关。

按照模拟退火算法,遇到好解则百分之百接受,遇到差解则按概率接受,设概率为 \(P_0\),则有:

\[e^{-\frac{\Delta f(i,j)}{t_0}} = P_0 \approx 1 \]

由此可推出:

\[t_0=\frac{\Delta f(i,j)}{\ln(P_0^{-1})} \]

这里的 \(P_0\) 需要设置为一个比较大的数,比如0.95、0.98......需要根据具体的问题做一些试验。

通过设置一个较大的 \(P_0\),就可以计算出足够大的初始温度 \(t_0\)

其中 \(\Delta f(i,j)\) 为状态 \(j\) 与状态 \(i\) 的指标函数差,可由随机产生的序列 \(S\) 计算

\[\begin{align*} \Delta f(i,j) &= \max\limits_{i\in S}(f(i))-\min\limits_{i\in S}(f(i)) \\ \Delta f(i,j) &= \frac{\sum\limits_{i,j\in S}|f(i)-f(j)|}{|S|^2} \\ \Delta f(i,j) &= \frac{\sum\limits_{i=0}^{|S|-1}|f(S(i))-f(S(i+1))|}{|S|} \end{align*} \]

\(\Delta f(i,j)\)有多种计算方式,可以是:

  1. 最大值与最小值的差;
  2. 两两做差取绝对值,再除以状态数的平方(实际上是求平均值);
  3. 两个相邻的状态做差取绝对值,再除以状态数。

初始温度 \(t_0\) 的选取(2)

假设在 \(t_0\) 下随机地生成一个状态序列,分别用 \(m_1\)\(m_2\) 表示指标函数下降的状态数和指标函数上升的状态数,\(\overline{\Delta f(i,j)}\) 表示指标函数增加的平均值。则 \(m_2\) 个状态中,被接受的个数为:

\[m_2e^{-\frac{\overline{\Delta f(i,j)}}{t_0}} \]

则有平均接受概率:

\[P_0 = \frac{m_1 + m_2 e^{-\frac{\overline{\Delta f(i,j)}}{t_0}}}{m_1 + m_2} \]

求解有:

\[t_0 = \frac { \overline{\Delta f(i,j)} } { \ln\left(\frac{m_2}{m_2P_0-m_1(1-P_0)}\right) } \]

这种选取方法与前一种方法类似,也是需要先确定一个较大的 \(P_0\),然后计算出 \(t_0\)

温度的下降方法

基本原则:温度下降足够缓慢。

  • “足够缓慢”这个标准与实际问题有关。

  • 也不能太缓慢,否则会使计算效率下降。

等比例下降

\[t_{k+1} = \alpha t_k \quad\quad 0 < \alpha < 1 \]

\(\alpha\) 是一个需要提前确定的常数,比如:0.99或0.95......

等值下降

\[t_{k+1} = t_k - \Delta t \]

在等值下降方法中,对于 \(\Delta t\) 的选取非常重要。如果太小,对于一开始来说太慢;如果太大,对于后期来说难以收敛。

等比例下降较为常用。

每一温度下的停止准则

  • 在每个温度下要有足够的交换次数

    在模拟退火算法的内循环是在保持温度不变的情况下,反复地进行状态的交换。

    理论上来说,在每一个温度下都应该有足够的交换次数,这样才能保证不同状态的指标函数值都能达到一个平稳的分布状态。

    但是交换次数过多将影响计算效率,因此需要折中选择。

    一般来说问题越复杂,则交换次数应该越多。

    下面介绍一种常用的方法叫做固定长度方法,这里的“长度”是指“交换次数”。

  • 固定长度方法文章来源地址https://www.toymoban.com/news/detail-655783.html

    • 在每一个温度下,都使用相同的 \(L_k\)(即每一个温度下,都使用相同的交换次数);
    • \(L_k\) 的选取与具体的问题相关,一般与邻域的大小直接关联,通常选择为问题规模 \(n\) 的一个多项式函数。

算法的终止原则

  • 基本原则:温度足够低;
  • 零度法:温度小于某个给定值 \(\varepsilon>0\) 时结束;
  • 循环总控制法:温度下降次数达到给定次数 \(K\) 时结束;
  • 无变化控制法:在相邻的 \(n\) 个温度中得到的指标函数值无变化时结束。

到了这里,关于如何用随机方法求解组合优化问题(六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何用随机方法求解组合优化问题(二)

    组合问题由于其可能的解的数量十分庞大,无法用穷举法求解最优解。 局部搜索算法旨在减少复杂度的情况下寻找最优解,尽管其不一定能够找到全局最优解,但是往往可以找到满意的局部最优解。 类似于盲人爬山,无法看到全局的景象,但是有拐杖可以探测临近的区域。

    2024年02月13日
    浏览(32)
  • OM | 强化学习 + 约束规划求解组合优化问题

    组合优化在航空航天、交通规划以及经济学等众多学科领域中有广泛应用,其目标是在有限集中寻找最优解。然而状态空间过大的问题让目前组合优化变得棘手。在过去的几年中,使用深度强化学习(deep reinforcement learning,DRL)解决组合优化问题受到广泛关注。然而,现有的

    2024年02月10日
    浏览(38)
  • 模拟退火算法与遗传算法求解多目标优化问题的算法实现(数学建模)

    模拟退火算法是一种全局优化算法,解决的问题通常是找到一个最小化(或最大化)某个函数的全局最优解。它通过模拟物理退火的过程来搜索解空间,在开始时以一定的温度随机生成初始解,然后一步步降低温度,同时在当前解的周围随机搜索新的解,并根据一定概率接受

    2024年02月02日
    浏览(36)
  • 机器学习笔记之最优化理论与方法(九)无约束优化问题——常用求解方法(下)

    上一节介绍了 牛顿法、拟牛顿法 。本节将继续以 拟牛顿法 为基础,介绍 DFP , BFGS text{DFP},text{BFGS} DFP , BFGS 方法 。 经典牛顿法缺陷与修正牛顿法 关于 经典牛顿法 中关于 下降方向 D k ( k = 1 , 2 , ⋯   , ∞ ) mathcal D_k(k=1,2,cdots,infty) D k ​ ( k = 1 , 2 , ⋯ , ∞ ) 的 数学符号 表

    2024年02月09日
    浏览(41)
  • 机器学习笔记之最优化理论与方法(七)无约束优化问题——常用求解方法(上)

    本节将介绍 无约束优化问题 的常用求解方法,包括 坐标轴交替下降法、最速下降法 。 本节是对优化算法(十~十七)最速下降法(梯度下降法)的理论补充,其中可能出现一些定理的 证明过程 这里不再赘述,并在相应位置 附加链接 。 从本节开始,将介绍 四大类 无约束优化问

    2024年02月10日
    浏览(38)
  • 优化|一阶方法:求解不具有凸性和lipschitz连续性的复合问题

    论文解读者:陈康明,赵田田,李朋 对于大多数一阶算法,我们会在收敛性分析时假设函数是凸的,且梯度满足全局 Lipschitz 条件。而本文中,对于某一类特殊函数。我们不仅不要求函数是凸的,也不再要求梯度满足全局 Lipschitz 条件。 考虑复合优化问题 ( P ) min ⁡ { Ψ ( x

    2024年02月12日
    浏览(37)
  • 【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 2.1 CCGKKT 2.2  CCGSD 2.3  SPKKT 2.4 SDSP 2.5 

    2023年04月15日
    浏览(44)
  • C# PSO 粒子群优化算法 遗传算法 随机算法 求解复杂方程的最大、最小值

    复杂方程可以自己定义,以下是看别人的题目,然后自己来做 以下是计算结果

    2024年02月09日
    浏览(33)
  • 运筹系列87:julia求解随机动态规划问题入门

    随机动态规划问题的特点是: 有多个阶段,每个阶段的随机性互不相关,且有有限个实现值 (finite realizations) 具有马尔可夫性质,即每个阶段只受上一个阶段影响,可以用状态转移方程来描述阶段与阶段之间的变化过程。 我们使用julia的SDDP算法包来求解随机动态规划问题。

    2024年01月16日
    浏览(31)
  • C# 随机法求解线性规划问题 蒙特卡洛

    线性规划问题: max=3 x1+2 x2 x1+2 x2=5 2 x1+x2=4 4 x1+3 x2=9 x1=0 x2=0 正确的结果:x1=1.5; x2=1, max z=6.5

    2024年02月13日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包