量子退火算法入门(4):旅行商问题的QUBO建模「上篇」

这篇具有很好参考价值的文章主要介绍了量子退火算法入门(4):旅行商问题的QUBO建模「上篇」。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、旅行商问题(Traveling Saleman Problem,TSP)

1.旅行商问题的定义

旅行商问题,是一个经典的组合优化问题,而且是著名NP问题之一。如下图所示
,可以想象,有A,B,C,D,E 五个地点,我们想找到一条路径,从地点A出发,经过剩余四个地点,然后回到地点A,从所有可能路径中找到距离最短的一条路径。本章借用了文献[*1]的图表。

量子退火算法入门(4):旅行商问题的QUBO建模「上篇」

2.旅行商问题求解的计算量

最简单的求解方式就是,如下图所示把所有的求解路径全部计算一遍,然后算出每条路径的长度,求出最短路径。
量子退火算法入门(4):旅行商问题的QUBO建模「上篇」
如下图所示,所有的枚举路径总共有24条,我们可以很快找到最短路径。量子退火算法入门(4):旅行商问题的QUBO建模「上篇」
量子退火算法入门(4):旅行商问题的QUBO建模「上篇」
如果下面A~Z的情况,这个计算量,日本的第一超级计算机富岳,每秒的计算速度约为44.2京次(京是10的16次方,即万兆)。一年的秒数是3600×24×365=3153.6万秒。有兴趣的可以计算一下要算多少年。

量子退火算法入门(4):旅行商问题的QUBO建模「上篇」

量子退火算法入门(4):旅行商问题的QUBO建模「上篇」

二、TSP问题的建模

1.总体Hamilton量 H H H

该问题输入有两个,这里借用了文章[*2]的图表:

  • 地点数目: N N N
  • 地点之间的距离: l i , j ( i = 1 , ・・・ , N ) l_{i,j}(i = 1,・・・, N) li,j(i=1,・・・,N)

约束条件:

  • 每个时间步只能访问一个地点。
  • 每个地点都访问过一次。

整体的Hamilton量 H H H如下:

量子退火算法入门(4):旅行商问题的QUBO建模「上篇」
量子退火算法入门(4):旅行商问题的QUBO建模「上篇」
目标变量 x i , j x_{i,j} xi,j的两个下标的意思如下图👇所示,绿色的圆圈代表在某个时间步访问了某个第地点,所以我们的目标变量就可以用0或1表示了,0代表未访问,1代表访问。

量子退火算法入门(4):旅行商问题的QUBO建模「上篇」

2.约束条件

约束条件比较简单,先从约束条件解释,这里有2个约束可以解释如下:

  1. 每个时间步只能访问一个地点。
    => 上图矩阵里的每列元素之和必须为1。也就是每列中只有一个元素为1。
  2. 每个地点都访问过一次。
    => 上图矩阵里的每行元素之和必须为1。也就是每行中只有一个元素为1。

量子退火算法入门(4):旅行商问题的QUBO建模「上篇」
具体表达式如下:

量子退火算法入门(4):旅行商问题的QUBO建模「上篇」

3.目标函数

量子退火算法入门(4):旅行商问题的QUBO建模「上篇」

解析:

  • x i , t x j , t + 1 x_{i,t}x_{j,t+1} xi,txj,t+1
    这里的目标函数,最难理解的是 x i , t x j , t + 1 x_{i,t}x_{j,t+1} xi,txj,t+1。可以理解为【 t t t时间步访问地点 i i i t + 1 t+1 t+1时间步访问地点 j j j时, x i , t x j , t + 1 x_{i,t}x_{j,t+1} xi,txj,t+1=1;其他的情况, x i , t x j , t + 1 x_{i,t}x_{j,t+1} xi,txj,t+1=0】。

  • ∑ i = 1 N ∑ j = 1 N ∑ t = 1 N \sum_{i=1}^N \sum_{j=1}^N \sum_{t=1}^N i=1Nj=1Nt=1N
    该表达式代表了,【 t t t时间步访问地点 i i i t + 1 t+1 t+1时间步访问地点 j j j时,地点 i i i j j j之间的距离 ℓ i , j \ell_{i, j} i,j之和】。所以,这个目标函数就代表了,从初始地点,经过所有地点后,回到初始地点的距离总和。

总结

旅行商问题,是比较有实际意义的应用问题,大家能体会到怎么把现实问题抽象出binary变量,然后怎么把制约条件表达出来。因为,上面的建模有两种编程实现方式,为了控制篇幅,下一篇献上Python代码。

在阅读参考文献时,经常会发现资料里的一些小错误,大家以后阅读资料时也要小心啊。文章来源地址https://www.toymoban.com/news/detail-417313.html

  • 参考文献:
    [*1] : https://www.nttdata.com/jp/ja/-/media/nttdatajapan/files/news/services_info/2021/012800/012800-01.pdf
    [*2] : https://qiita.com/yufuji25/items/0425567b800443a679f7

到了这里,关于量子退火算法入门(4):旅行商问题的QUBO建模「上篇」的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 量子退火算法入门(7):如何QUBO中的三次多项式怎么转换?

    本文还是大部分截图来自于:《最適化問題とWildqatを用いた量子アニーリング計算入門》 https://booth.pm/ja/items/1415833 终于有人问到怎么将QUBO中的三次多项式转换为二次多项式了。直接以一个例题开始讲解。中间会用到之前文章里的知识,大家最好读了该系列前两篇之后,再阅

    2023年04月14日
    浏览(27)
  • Baltamatica 北太天元 —— 基于模拟退火算法的旅行商问题

    北太天元(Baltam)是一款对标矩阵实验室(Matlab)的国产通用科学计算软件,目前版本还在持续更新迭代中,并在国内不断提升知名度,营造良好的生态社区氛围。在很多外行、内行人都不看好Matlab国产化,甚至面对工业软件国产化的项目“谈虎色变”的形势下,北太天元横

    2024年02月11日
    浏览(32)
  • Matlab【旅行商问题】—— 基于模拟退火算法的无人机药品配送路线最优化

    某市引进一架专业大型无人机用于紧急状态下的药品投递,每个站点只能投放一次,可选择指派任意站点的无人机起飞出发完成投递任务,但必须在配送完毕后返回原来的站点。站点地理位置坐标(单位为公理)如下图所示。每个站点及容纳的病人数量见附件.mat数据,现要求

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

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

    2024年02月02日
    浏览(36)
  • 数学建模|通过模拟退火算法求解供货与选址问题:问题二(python代码实现)

    今天继续用模拟退火算法供货与选址问题的问题二,如果还没看过问题一的可以看我之前的博客 数学建模|通过模拟退火算法求解供应与选址问题:问题一(python代码实现)-CSDN博客 这里还是把题目放上来(题目来自数学建模老哥的视频): 那么我们可以分析一下,第一问和

    2024年01月16日
    浏览(40)
  • 计算机设计大赛国奖作品_5. 模拟退火求解旅行商问题

    本系列是2021年中国大学生计算机设计大赛作品“环境监测无人机航线优化”的相关文档,获得2021年西北赛区一等奖,国赛三等奖。学生习作,只供大家参考。 计算机设计大赛国奖作品_1. 项目概要 计算机设计大赛国奖作品_2. 报名材料 计算机设计大赛国奖作品_3. 需求分析 计

    2023年04月09日
    浏览(43)
  • 集货运输优化:数学建模步骤,Python实现蚁群算法(解决最短路径问题), 蚁群算法解决旅行商问题(最优路径问题),节约里程算法

    目录 数学建模步骤 Python实现蚁群算法(解决最短路径问题)  蚁群算法解决旅行商问题(最优路径问题)

    2024年02月09日
    浏览(36)
  • 数学建模-退火算法和遗传算法

    退火算法和遗传算法 一.退火算法 退火算法Matlab程序如下: [W]=load(\\\'D:100个目标经度纬度.txt\\\'); 二、遗传算法 [E]=xlsread(\\\'D:100个目标经度纬度\\\');  % 加载敌方 100 个目标的数据, 数据按照表格中的位置保存在纯文本文件 sj.txt 中 x=[E(:,1)]; y=[E(:,2)]; e =[x y]; d1=[70,40]; e =[d1;  e ;d1];

    2024年02月20日
    浏览(42)
  • 【数学建模学习(9):模拟退火算法】

    模拟退火算法(Simulated Annealing, SA)的思想借 鉴于固体的退火原理,当固体的温度很高的时候,内能比 较大,固体的内部粒子处于快速无序运动,当温度慢慢降 低的过程中,固体的内能减小,粒子的慢慢趋于有序,最 终,当固体处于常温时,内能达到最小,此时,粒子最为 稳

    2024年02月14日
    浏览(31)
  • 数学建模学习(9):模拟退火算法

    模拟退火算法(Simulated Annealing, SA)的思想借 鉴于固体的退火原理,当固体的温度很高的时候,内能比 较大,固体的内部粒子处于快速无序运动,当温度慢慢降 低的过程中,固体的内能减小,粒子的慢慢趋于有序,最 终,当固体处于常温时,内能达到最小,此时,粒子最为 稳

    2024年02月14日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包