当前位置: 首页 > 知识库问答 >
问题:

带OptaPlanner的自行车信使/TSPPD

曹驰
2023-03-14

我想使用OptaPlanner(或类似的开源Java框架)来优化自行车信使服务的路线。让我们假设5个信使必须从某个来源地拿起30个信封,并将它们送到某个目的地:

            X(FROM) Y(FROM) X(TO)   Y(TO)
envelope 1  13745   55419   13883   55756
envelope 2  8406    53246   13937   55854
envelope 3  15738   57396   35996   79499
envelope 4  12045   60418   19349   57118
envelope 5  13750   56416   35733   78403
envelope 6  13190   57068   11860   59749
envelope 7  15021   55768   14098   57379
envelope 8  11513   58543   11501   59683
envelope 9  12013   64155   14120   59301
envelope 10 15006   57578   35511   78426
envelope 11 11450   58819   11916   58338
envelope 12 13728   56304   35524   79013
envelope 13 15104   60923   17937   57066
envelope 14 11373   58388   13983   53804
envelope 15 18575   55186   18718   54381
envelope 16 11639   50071   17363   58375
envelope 17 11273   53410   10860   60441
envelope 18 13766   59041   13963   57769
envelope 19 16138   55801   16183   56024
envelope 20 13728   56146   14301   61694
envelope 21 12848   57059   13586   59734
envelope 22 13645   56488   13955   55859
envelope 23 12896   56838   13937   55908
envelope 24 13341   58150   35709   78924
envelope 25 13483   57303   13614   57820
envelope 26 12741   63478   15230   59838
envelope 27 14676   51691   16501   48361
envelope 28 13748   54933   14120   56110
envelope 29 17875   59565   20453   61903
envelope 30 9772    56424   6404    55601

我的五个信使分布在整个城市(所以我没有一个仓库),他们不必回到他们开始的地方:

            X       Y
messenger A 13750   57578
messenger B 15104   53410
messenger C 13728   55801
messenger D 12741   63478
messenger E 14676   18575

我将使用以下硬约束:

    null
    null

共有1个答案

祁嘉言
2023-03-14

我不是OptaPlanner专家。但是我想把你在括号里提到的(或者类似的开源框架)拿起来。但是,如果OptaPlanner已经为您提供了一个合理的解决方案,您可能可以忽略这一点。如果不是或者你只是想比较结果,这可能对你很有趣。

首先,你描述的问题听起来很简单,但却是更具挑战性的问题之一。它基本上是一个有能力的VRP,有取货和送货、多个仓库、开放的路线和时间窗口/限制。对于这类问题,您可能找不到许多开源解决方案。

我创建了一个名为JSPRIT的项目。jsprit可以解决您的问题。它既不类似于OptaPlanner,也不是Framework。它非常关注车辆路径问题,是一个Java工具包(即一组库)。我解决了你的问题。在这里你可以找到注释的代码。

 类似资料:
  • 我有一个问题来写我的代码。这是一个代码,我必须创建一个对象类,并使用另一个类对象运行它。这个程序被称为自行车和自行车测试。我得到了自行车程序(它已经被写好了),我所需要的就是我写自行车测试来利用自行车。现在,问题是,我已经创建了2个对象,称为Nice自行车和酷自行车。我需要将我的NiceBCycle名称更改为“肯尼·麦考密克,但我不能这样做。我一直收到错误消息,说“错误:变量Nice自行车可能没有

  • 我正在使用optaplanner解决一个调度问题。我想从AWS Lambda调用调度代码(我知道Lambda的最大执行时间是5分钟,这对这个应用程序来说没关系) 为了实现这一点,我构建了一个带有两个模块的maven项目:模块1:调度优化代码模块2:aws lambda处理程序(从模块1调用调度代码) 当我在IntelliJ Idea for mod-1(具有optaplanner代码)中运行我的测

  • 要求 我有一个车队。每辆车都有一个容量和它的存款,这个存款有一个时间窗口。从VRP的OptaPlanner的例子来看,我只对我作为浮点处理的容量做了一个变化。据我所知,OptaPlanner示例中的所有车辆都被移动到一个仓库。在我的情况下,每辆车都有自己的车辆段,每辆车都有自己固定的车辆段,有可能几辆车都有同一个车辆段。 R2-我有访问(送货服务)。每次访问都有一个需求和一个时间窗口。从VRP的O

  • 我已安装woocommerce来处理产品输入 商店页面是自定义构建的,允许用户从列表中选择产品并自定义它,根据存储在数据库中的信息以javascript输出价格。 存储在数据库中的产品价值为0.00,因为它们的价格取决于所选择的变量。 我准备传递给wooCommerce的输出数据如下: WC产品ID(与数据库中的产品匹配) 定制价格 自定义图像 自定义说明(例如100mm x 100mm) 生成数

  • 我想用Optaplanner解决VRP问题(添加一些内容)。在文档中,人们经常说,预先计算位置之间的距离,然后对每个位置使用

  • 目前是否有一种方法可以将流量模式合并到OptaPlanner中并解决包装和交付VRP问题? 比如说,我需要在30辆车中优化500辆今天和明天的提货和交付,其中每辆提货都有1-4小时的时间窗口。如果可能的话,我想在高峰时间避开城市的繁忙地区。 还可以添加(或同时取消)新的皮卡。 我相信这是一个常见的问题。OptaPlanner中是否有合适的解决方案? 谢啦!