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

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

局部搜索应用:百万皇后问题

皇后问题

皇后问题

在一个 \(n\times n\) 的棋盘上,每行每列有且只有一个皇后棋子,每对角线至多一个皇后棋子。

如果使用回溯法,计算10皇后、20皇后问题还是可行的。

但是当皇后数增加到一百万个时,又该如何求解呢?

局部搜索算法用于求解组合优化问题,而皇后问题是组合问题,和优化没有关系,我们可以先将皇后问题转化为最优化问题

  • 指标函数:棋盘上皇后的冲突数。

  • 表示:

    \(S=\{S_i\}\)表示一个可能解,其中 \(S_i\) 表示在第 \(i\) 行,第 \(S_i\) 列有一个皇后。

    如四皇后问题的一个解:\(S=(2,4,1,3)\)

皇后搜索算法

  1. 随机地将 \(n\) 个皇后分布在棋盘上,使得棋盘的每行、每列只有一个皇后;
  2. 计算皇后间的冲突数 \(c\)
  3. 如果冲突数 \(c\) 等于0,则转 (7)
  4. 任选两个皇后交换他们在序列中的位置;
  5. 如果交换后的冲突数 \(c\) 减少,则接受这次交换,更新冲突数 \(c\) ,转(3);
  6. 如果陷入了局部极小,即交换了所有的皇后后,冲突数仍然不能下降,则转1;
  7. 输出结果;
  8. 结束。

可以使用局部搜索算法解决大规模皇后问题(并找到全局最优解)的关键在于:我们知道冲突数这个指标有最小值,并且最小值为0,从而我们可以判断某一时刻是否陷入了局部极小,或者是否已到达最优解。

而对于另一个著名的组合问题,旅行商问题来说,我们也可以用局部搜索算法来求解,但是我们不知道指标(路径长度)的最小值是多少,因此我们只能求得局部最优解,无法判断求得的局部最优解是否全局最优。

大多数组合问题都和旅行商问题一样,使用局部搜索算法往往是无法判断全局最优的。

局部搜索算法存在的问题

局部最优问题

最明显的问题是可能会得到局部最优解,如上图的 \(B\)\(C\),而得不到 \(A\)。而这些最终结果与初始点有关,因此需要多次随机地设置初始点,然后在得到的多个解中,找出相对较优的解。

解决思路
  • 按概率接受解(在领域中寻找解的时候,并不是只接受最优解,而是为每个解计算概率,然后随机走下一步)

  • 从邻域中随机选择一个解,如果该解的指标函数好于当前已知的最好解,则以大概率接受该解,否则就以小概率接受该解

求最大值时

概率的计算方法根据不同算法有不同实现,这里只是一个简单的例子。

\[P_{max}(x_i)=\frac{f(x_i)}{\sum\limits_{x_j\in N(x_b)}f(x_j)} \]

即 指标 除以 邻域内所有指标之和。

同理,求最小值时:

\[P_{min}(x_i)=1-P_{max}(x_i) \]

如何按概率接受一个解?

  • \(x_i\) 的接受概率为 \(P(x_i)\),当 \(random(0,1)<P(x_i)\) 时接受 \(x_i\)

步长问题

如果步长大,而“山峰”尖,则可能最终像上图中一样,结果落在了半山腰。

解决思路

改变步长

  • 如果步长太小,会导致计算效率降低。
  • 如果步长太大,可能导致错过最优解。

一种解决方法是,随着迭代次数的增加,逐渐减小步长。

不同的算法有不同的改变步长的做法。

大多数情况下还是需要多次调整初始步长,然后执行程序,多次调整。

起始点问题

起始点不同,最终的结果可能不同。可能得到全局最大值,也可能得到局部最大值。

解决思路

随机产生多个起始点,从多次运行结果中选择一个最好的结果。

综合求解

面对局部搜索算法存在的问题,应综合求解。

  • 按概率接受解;
  • 改变步长;
  • 多次运行方法。

有一种特殊的局部搜索算法叫模拟退火算法,就是基于“按概率接受解”和“改变步长”这两点的。文章来源地址https://www.toymoban.com/news/detail-647306.html

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

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

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

相关文章

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

    这是一篇笔记,是对于B站up主马少平的视频(第四篇 如何用随机方法求解组合优化问题(五))的学习与记录。 【回顾】:局部最优问题 在局部搜索问题中,可能会陷入局部最优解(如上图中的B、C),解决思路是: 以概率接受差解 。 【回顾】:退火过程中 从状态 (i)

    2024年02月12日
    浏览(30)
  • 如何用随机方法求解组合优化问题(七)

    这是一篇笔记,是对于B站up主马少平的视频(第四篇 如何用随机方法求解组合优化问题(七))的学习与记录。 一个商人要访问 (n) 个城市,每个城市访问一次,并且只能访问一次,最后再回到出发城市。 问如何规划才能使得行走的路径长度最短。 旅行商问题的解空间非

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

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

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

    上一节介绍了 牛顿法、拟牛顿法 。本节将继续以 拟牛顿法 为基础,介绍 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

领红包