运筹系列66:tsp问题求解器concorde介绍

Concorde是一个用纯C编写的解决对称TSP问题的工具,最大处理过85900个城市。它利用线性规划求解器QSopt进行边界优化。文章介绍了分枝定界法的原理,列生成和行生成方法,以及如何在Julia环境中使用Concorde。此外,还提供了Mac应用的使用方法和编译、调试代码的步骤。

1. 简介

纯C语言编译,用于对称TSP问题求解。目前最大的应用案例为85900个城市。Concorde支持使用QSopt线性规划求解器获得bound。

1.1 求解算法简介

TSP问题模型如下,第二个约束条件是为了去除环,称为connect cut:
在这里插入图片描述
使用分枝定界法进行求解的原理如下:
首先将整数约束和去除环约束进行松弛,得到lp问题。
在这里插入图片描述

我们使用列生产方法来求解这个问题,令E‘是E的子集,比如说只允许最近的一些点参与组环。
在这里插入图片描述
获得的最优解x‘是原LP问题的可行解。我们通过对偶问题来寻找需要添加进来的变量:
在这里插入图片描述
对偶问题为:
在这里插入图片描述
在这里插入图片描述
同时我们还需要用行生成法添加防止子环的约束条件。举例如下,为如图的边添加comb约束:
在这里插入图片描述
其他常用的cuts包括:
*

  • Blossom (Padberg and Rao 1982)
  • Path inequalities (Naddef and Rinaldi 1998)
  • 2-handled clique tree (Padberg and Rinaldi 1991)
  • Star inequalities (Fleischmann 1988)

在这里插入图片描述

1.2 添加cut的例子

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值