optaplanner_OptaPlanner –具有真实道路距离的车辆路线

optaplanner

在现实世界中,车辆路径问题(VRP)中的车辆必须走这条路:它们不能在客户之间直线行驶。 大多数VRP研究论文和演示都乐于忽略此实现细节。 和我一样,过去。 尽管使用道路距离(而不是空中距离)不会对VRP的NP硬性产生多大影响,但确实会带来一些额外的挑战。 让我们来看看这些挑战。

道路距离数据集

首先,我们需要现实的数据集。 不幸的是,在VRP研究社区中,缺乏具有道路距离的公共VRP数据集。 VRP Web很少,例如位于29个位置的巴伐利亚数据集,但没有什么严重的。 因此,我必须根据以下要求自己生成一些实际的数据集:

  1. Google Maps用作道路,在数据集中每对位置之间的真实距离以km为单位。
    • 例如,在小道路上合理的时候使用高速公路。
  2. 对于每个数据集,生成空中距离变量和道路距离变量,以比较结果。
  3. 生成多个数量级的相似数据集,以比较可伸缩性。
  4. 为VRP中的车辆容量限制添加合理的车辆容量和客户需求。

我最终生成了比利时的数据集,其中包含城市,城镇和郊区的位置。 最大的一个有2750个位置。 稍后,我可能会添加USA数据集的道路变量,这些变量最多可包含10万个位置。

比利时数据集未解决

通过使用基于OpenStreetMap的出色的Java库GraphHopper ,查询实际道路距离相对容易。 只要整个道路网(比利时只有200MB)可以加载到内存中,它也很快。 加载整个北美道路网络(6GB)更具挑战性。 我将这些数据集提交到VRP Web,以便其他研究人员也可以使用它们。

所有这一切都发生 OptaPlanner的VRP示例开始解决它之前。 在求解过程中,距离已经在查找表中可用。 一旦我们开始生成具有1000个或更多位置的数据集,预先计算每个位置对之间的所有距离可能会带来内存和性能问题。 我将在下一个博客中解释这些以及补救措施。

空中距离与道路距离

为了清楚起见,我将集中在数据集belgium-n50-k10.vrp上,该数据集具有50个位置和10个车辆,每个车辆的容量为125。 OptaPlanner有5分钟的时间来解决这两种变化(空中和道路距离)。

使用空中距离 (可根据纬度和经度计算欧几里得距离)会导致:

比利时n52-airSolution

总距离22.99并不重要,因为它不在通用的度量单位内,而且我们的车辆无论如何也无法从点到点飞行。 我们需要将此空距解决方案应用于真实道路网络 (如下所示),以了解真实距离:

比利时路N51-空气解决方案

现在,让我们比较上面的空中距离解决方案和下面的道路距离解决方案。

比利时路n50路解决方案

道路距离解决方案所需的时间减少了108.45公里,因此提高了近5%! 而且,这是世界上最密集的道路网之一(比利时的道路网):在稀疏的道路网上,收益可能会更多。

结论

使用实际距离而不是空中距离确实很重要。 用空距离求解VRP,然后应用道路距离是次优的。

但是,我们真的可以预先计算大型数据集中的每个地理位置对吗? 敬请关注。

翻译自: https://www.javacodegeeks.com/2014/09/optaplanner-vehicle-routing-with-real-road-distances.html

optaplanner

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中的jpa_JPA教程–在Java SE环境中设置JPA

java中的jpaJPA代表Java Persistence API,它基本上是一个规范,描述了一种将数据持久存储到持久存储(通常是数据库)中的方法。 我们可以将其视为类似于Hibernate之类的ORM工具的东西,除了它是Java EE规范的正式组成部分…

php中des加密cbc模式,php中加密解密DES类的简单使用方法示例

本文实例讲述了php中加密解密DES类的简单使用方法。分享给大家供大家参考,具体如下:在平时的开发工作中,我们经常会对关键字符进行加密,可能为了安全 也可能为了规范,所以要正确使用DES加密解密代码1:class DES{var $k…

java 并发线程_Java并发教程–线程之间的可见性

java 并发线程当在不同线程之间共享对象的状态时,除了原子性外,其他问题也会发挥作用。 其中之一是可见性。 关键事实是,如果没有同步,则不能保证指令按照它们在源代码中出现的顺序执行。 这不会影响单线程程序中的结果&#xff…

维持硒测试自动化的完美方法

毫无疑问, 自动浏览器测试已经改变了软件开发的工作方式。 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误Web应用程序。 但是有时,甚至IT部门也误解了自动化一词。 大多数人认为计算机将为他们完成所有测试! 他们最…

双色球霸主网络问题_霸主–统治和管理API的地方

双色球霸主网络问题今天我们生活在一个越来越分散的世界中。 如今的计算机系统不再是在随机桌子下面的某些硬件上运行单个部门项目,而是大规模,集中甚至分散地运行。 监视和管理的需求从未改变,但是随着时间的推移变得越来越复杂。 如果将所有…

php验证码 php中文网,ThinkPHP 使用不同风格及中文的验证码

使用其他风格验证码在上文《ThinkPHP 验证码详解及实例》中了解了 ThinkPHP 验证码的具体用法,本文将进一步介绍如何使用不同风格的验证码以及使用中文验证码。上文例子使用的是默认参数,也就是生成 4 位的数字验证码。buildImageVerify 方法生成验证码时…

java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具

java 开发人员工具随着Java生态系统的发展,可满足不断增长的请求和用户对高性能需求的Web应用程序成为了新型的现代开发工具。 具有快速新部署的快速节奏环境需要跟踪错误,并以传统方法无法维持的水平获得对应用程序行为的洞察力。 在本文中,…

Apache Camel 3.2 – Camel的无反射配置

在Apache Camel项目中,我们正在努力开发下一个即将发布的下一个Apache Camel 3.2.0版本。 我们在Camel 3中努力研究的问题之一就是使其变得更小,更快。 其中一个方面是配置管理。 您可以按照12要素原则以多种方式完全配置Camel,以使配置与应…

java jsoup解析_3使用Jsoup解析Java中HTML文件的示例

java jsoup解析HTML是Web的核心,无论您是通过JavaScript,JSP,PHP,ASP或任何其他Web技术动态生成的,您在Internet上看到的所有页面都是基于HTML的。 您的浏览器实际上是解析HTML并为您呈现它。 但是,如果需要…

【AI提示词艺术】第12期 摄影艺术构图处理和人像生成的技巧

摄影艺术构图 星空宇宙 关键词: 强烈的明暗对比,8k,精细的描述,相片纸,超高分辨率,无建筑的,大自然,星空,云朵,刺眼流星,群星,银河,仰视视角,广角镜头 以下是按照提示词类别整理的相关描述&a…

Kogito,ergo规则:从知识到服务,轻松自如

欢迎阅读有关Kogito倡议的博客系列的另一集,以及我们将Drools带入云的努力。 这些文章的目的是收集用户对我们提供给Kogito的功能的早期反馈。 在本文中,我们介绍了两种实现完整智能服务的新方法 : 独立的规则服务 集成智能工作流程和规则…

linux 读取内存颗粒,Linux虚拟内存地址转化成物理内存地址

背景现代手机这种SOC(system on chip),因为功耗、Modem等功能soc上集成了很多core,他们还可以是独立的系统在运转。比如ADSP简介ADSP(Application Digital Signal Processing)就是高通的Hexagon DSP ,就是独立运转的一个coresystem。这样做不仅可以使用soc上的专用核…

primefaces_PrimeFaces扩展中的全新JSF组件

primefacesPrimeFaces扩展团队很高兴宣布即将推出的3.0.0主要版本的几个新组件。 我们的新提交者Francesco Strazzullo为该项目提供了“ Turbo Boost”,并带来了至少6个已成功集成的 JSF组件! 当前的开发状态是OpenShift上的deployet – 请查看展示柜。以…

linux中memcpy实现分析,ARM64 的 memcpy 优化与实现

如何优化 memcpy 函数Linux 内核用到了许多方式来加强性能以及稳定性,本文探讨的 memcpy 的汇编实现方式就是其中的一种,memcpy 的性能是否强大,拷贝延迟是否足够低都直接影响着整个系统性能。通过对拷贝函数的理解可以加深对整个系统设计的一…

ejb生命周期_EJB 3.x:生命周期和并发模型(第2部分)

ejb生命周期这是两部分系列的第二篇。 第一部分介绍了有状态和无状态EJB的生命周期以及并发行为。 我将在本文中介绍Singleton EJB 。 Singleton模式可以说是最常用(有时被滥用!)的模式。 单吨又爱它! Java EE使我们无需编写显…

JDK 14 / JEP 305模式匹配“ Smart Casts”实例

我通常将Java代码中instanceof运算符的存在视为“ 红色标志 ”,这意味着在某些情况下使用instanceof不一定是错误的,但是使用它有时表示可以以一种更干净的方式解决设计问题,如所述本文末尾引用的一些资源中的内容(包括有关Java以…

易流即时配送_即时大数据流处理=即时风暴

易流即时配送在Ubuntu背后的公司Canonical,每6个月进行一次技术工作,以第一手测试我们的工具并向其他人展示新想法。 这次,我创建了一个即时大数据解决方案,更具体地讲是“即时风暴”。 Storm现在是Apache基金会的一部分&#xf…

csp真题字符串匹配c语言,CCF CSP认证考试历年真题 模板生成系统 C语言实现

试题编号:201509-3试题名称:日期计算 时间限制:1.0s 内存限制:256.0MB问题描述:成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如&…

osgi架构与linux_OSGi:进入微服务架构的门户

osgi架构与linux在构建可扩展,可靠的分布式系统的背景下,“模块化”和“微服务体系结构”这两个术语如今经常出现。 众所周知,Java平台本身在模块化方面很弱( Java 9将通过交付Jigsaw项目来解决此问题),这为…

引入我们全新的YouTube频道进行视频课程编程

嘿,极客们, 收到社区的反馈并紧贴行业发展趋势,我们非常高兴宣布推出全新的Youtube频道 ! 在我们的频道上,我们将主持与Java编程有关的视频课程,但通常也会进行软件开发。 我们将介绍代码演练以及完整的…