算法 – 旅行推销员(TSP)用于线路,扫雪

在典型的TSP算法中,我们有多个点,我们希望以最佳的旅行顺序旅行.家庭,客户等点基本上都是地图上的一个点.

而不是点,我有优化的线.扫雪是一个很好的例子,你有多条街道可供旅行.最大的区别在于,对于每次旅行,您结束的点与您的起点不同.我的尝试是假设起点是每次旅行中唯一的节点.但显然,每当你的路线/线路很长时,你就会从一开始就处于一个遥远的地方.而且解决方案再也没有接近最优.

我看了一些提供路由优化的公司.他们的解决方案就是将线条划分为接近点;并将每一行视为彼此接近的节点.我认为当你不得不在街道两侧旅行时,或者当你靠近另一条街道时,这是行不通的.

我想知道是否有建模技巧或任何其他方法来解决这个问题?

最佳答案 实际上,您在问题中提出了四个完全不同的挑战,包括两个主要挑战,每个挑战有两个子挑战.

挑战1:单向街道遍历

在这种情况下,挑战是在给定一组仅需要在一个方向上移动的街道的情况下找到最佳路线.这一挑战本身可以进一步细分为两个挑战.

挑战1A:单向街道遍历,强制完成

在这一挑战中,销售人员必须在前往下一条街道之前穿过整条街道.对于这一挑战,每条街道都可以通过其两个端点建模,问题可以通过TSP算法进行一次修改来解决.当算法选择街道的一个端点以供考虑时,销售人员被重新定位到街道的另一个端点,并且两个端点被标记为已完成.

挑战1B:单向街道穿越,可选择侧行程

与挑战1A类似,除了允许推销员离开街道,以便在返回完成当前街道之前穿过一条或多条其他街道.对于这一挑战,每条街道都可以建模为一系列要访问的点,解决方案是标准的TSP算法.

挑战2:双向街道遍历

在这种情况下,挑战在于找到需要在两个方向上遍历的一组街道的最佳路线,或者至少在两侧都具有感兴趣的点.这一挑战本身可以进一步细分为两个挑战.

挑战2A:双向街道遍历,强制完成

这是邮递员问题和/或混合运输方式问题.考虑一个假想的邮递员,他从装满邮件的卡车开始.在每条街道上,一些邮件被装入一个邮递员随身携带到每个房子的包里.邮递员在街道的一侧发送邮件,然后返回卡车,同时在街道的另一侧发送邮件.换句话说,旅行推销员需要返回其原点,以便继续使用其他交通方式.对于这一挑战,每条街道都可以通过其两个端点建模,问题可以通过TSP算法进行一次修改来解决.一旦算法考虑了街道的一个终点,另一个终点就不再考虑了.

挑战2B:双向街道穿越与jaywalking

这是四大挑战中最困难的.这里的问题是,前往地理位置接近的点可能无法提供最佳解决方案.例如,在乡村公路上,jaywalking可能是合法且安全的.然而,在一条四车道的大道上,jaywalking可能是非法的,而且非常危险.此外,在等待交通中断时可能会有相当长的时间延迟,这将允许尝试jaywalking.要解决此问题,必须修改TSP算法以包含成本函数.在普通的TSP算法中,两点之间的行进成本与它们之间的距离成比例.但是对于这个挑战,算法必须首先考虑每对点,并计算在这两点之间行进的成本.然后,标准TSP算法可用于基于这些成本找到最佳路线.

点赞