问题标签 [vehicle-routing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
integer - 如何在 CPLEX 中制定这些 ConVRP 约束?
我正在尝试构建具有硬时间窗口约束的 conVRP 模型。但是,我被流入和流出限制所困扰。
我有四套:
然后我有一些其他的输入参数
三个决策变量:
//客观的
我遇到的限制是:
我收到这些错误消息:
我很想知道如何解决这个问题。您的帮助将不胜感激!
optaplanner - 多场站车辆路线问题 Optaplanner
我正在尝试为我的特定用例定制Optaplanner 。到目前为止我一直很成功,但现在我感到震惊的是,我需要拥有多个仓库和多个位置。all the vehicle will start from a particular location
他们的主要用例似乎是在称为仓库/仓库的假设下。
在我的用例中,条件略有不同,车辆可以从各自的位置开始,这意味着将有多个站点和多个客户位置可以访问。{ MDVRP 问题}
例如->
我的用例有点像这样
到目前为止,我已经尝试过对他们的算法进行自定义输入。但它不能以预期的方式工作。有没有人用多个仓库尝试过这个工具。任何形式的帮助表示赞赏。
optaplanner - Optaplanner VRP 示例,同一时间窗口内每次停靠需要多辆车
我们正在使用定制的VRP教程示例来优化服务工程师前往客户那里执行某些维修和安装任务的日常路线。我们确实有时间窗口,我们会在未来数周内优化 1000 多项任务。
我们的(简化的)领域模型包括:
- 工程师- 做所有工作的人
- 任务- 在某个位置完成的单个工作任务
- DailyRoute - 给定日期的工程师路线,由任务的链接列表组成
作为一项新要求,我们现在必须支持两名工程师在同一任务上并行工作。
我们目前的计划是通过为第二个工程师创建子任务来实现这一点,并实施一个规则,即他们的到达时间必须与主要任务相同。然而,这是有问题的,因为将相互依赖的任务之一移动到不同的时间(例如,不同的 DailyRoute)将主要违反上述约束。
到目前为止,我们已经提出了以下想法:
- 仅允许单个任务在与其他任务分配的路线
同一天移动到 DailyRoute
- 可以通过 SelectionFilter 完成
- 使用CompositeMoves将两个并行任务同时移动到不同的日期
- 我们是否需要自定义 MoveIteratorFactory 来选择连接的任务?
- 或者这可以用 CartesianProductMoveSelector 代替吗?
- 我们可以使用附近的选择来进行第二步,以选择与第一步的新指定日期相同的日期(当时是否已经完成了一步)?
optaplanner - 用于车辆路线的 OptaPlanner
我正在尝试使用 OptaPlanner 解决 VRP。我用约束提供者、规划实体和规划解决方案等编写了所有代码。问题是,我试图通过以下方式获取解决方案
但这会导致无休止的等待解决方案。有什么想法是什么原因吗?提前致谢。
optaplanner - optaplanner 中的总距离和行驶时间(车辆路线)
我正在尝试使用 OptaPlanner 解决 VRP,在获得最佳解决方案后,有没有办法获得解决方案的每辆车的总距离和驾驶时间?另外,如何获取特定客户的车辆到达时间和服务完成时间?提前致谢。
or-tools - 多个时间窗口 vrp [or-tools]
我有一个应该为装运设置多个时间窗口的实现:
逻辑上似乎没有错,但 or-tools 无法返回解决方案,除非我删除该行time_dimension.CumulVar(index).RemoveInterval(time_window_end, next_time_window_start)
。任何想法我在这里做错了什么?
这time_windows
是一个 lis,例如: [[100, 200], [300, 400]] 并且index
是从 检索到的索引NodeToIndex
。
optaplanner - OptaPlanner 求解器:多种最佳解决方案
我正在使用 OptaPlanner 解决规划问题。配置求解器后,我调用 solve() 方法并等待它产生解决方案。问题是,如果我想将求解器方法创建的几个最佳解决方案相互比较并选择其中之一,该怎么办。是否可以?我想通过比较最后两个解决方案并查看它们之间的差异来设置终止条件。这就是为什么我要实现这一点。先感谢您。
or-tools - 如何在 OR-Tools Routing Solver 中实现自定义软约束?
我已经使用 Python 中的 OR-Tools 路由求解器工作了几个月,但我仍然不明白如何实现自定义软约束,或者即使它在路由求解器中是可能的。
我知道以下方法会增加累积值的惩罚:
我无法实施的约束之一如下:
- 我想惩罚空车消耗的距离/时间。例如,在取货和交付场景中,如果车辆进行交付并变空,我想惩罚空车行驶的距离,直到车辆到达取货节点(下一个节点)或结束路线。
使用上述方法,我只能在超出界限时用固定值进行惩罚,但我想惩罚消耗的距离或时间来转移到下一个节点。
同时,考虑到找到的解决方案的状态(例如,下一个节点和维度的累积量),有没有办法实现具有明确惩罚值的自定义软约束?
c# - 使用带有 C# 的 OR 工具修复了位置加载时间
我正在尝试使用带有 C# 的 OR 工具来解决带有时间窗口的车辆路由问题。是否可以将装载时间(固定持续时间,车辆到达后必须停留在该位置)添加到每个位置(没有仓库,但位置)?
python - 按连续数字对由两个数字组成的元组列表进行排序
元组列表是有能力的车辆路线优化的输出,表示从一个站点到另一个站点的弧线,其中0
表示车辆的站点(车辆的起点和终点)。由于车辆必须行驶几圈,它可能会在所有停车前返回站点。求解器将始终首先返回起始弧,在下面的示例中,这意味着第一个以 开头的连续元组0
,(0, 3), (0, 7), (0, 8)
即将确定有多少圈(= 3)。
如何按连续顺序对弧进行排序,以便一辆车可以一个接一个地驱动弧?
输入:
li = [(0, 3), (0, 7), (0, 8), (3, 0), (4, 0), (7, 3), (8, 4), (3, 0)]
输出:
[(0, 3), (3, 0), (0, 7), (7, 3), (3, 0), (0, 8), (8, 4), (4, 0)]
到目前为止我尝试了什么: