问题标签 [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.
cplex - VRP中的二元决策变量约束问题
我想在我的 VRP 中创建非线性违规成本。我已经创建了带有时间窗口的整个 VRP,其中我有这些决策变量:
这些 dvar 正在工作,但现在我想与违规成本决策变量建立链接,这些变量是:
我想强制:
然后我有:
但是,这些约束仍然存在问题。
它为所有约束设置 a5==1 。
此外,w 在模型中用作:
其中 y[i][d] 是到达时间变量
java - 使用 VrpXMLReader 从文件中读取 jsprit 解决方案
我正在用jsprit解决VRP。我使用 VrpXmlReader 从文件中读取解决方案
但是当解决方案包含车辆中断时,我得到一个错误
我怎样才能解决这个问题?
java - 关于 OptaPlanner 配置以解决车辆路由(实时)的提示
对于车辆路径问题的这种设置,我很乐意提出任何意见。
首先,这是我使用这个工具的第一步,所以如果我完全超出范围,请原谅我:-) 我已经制作了一个没有 optaplanner 的算法,以测试基本规则设置。它适用于单个车辆,但 optaplanner 看起来与我最初的想法非常相似,即为每个满意的规则分配分数,然后选择得分最高的车辆。它也是可配置的,而且肯定比我之前做的要好。
让我们开始
查看文档和一些视频,似乎当所有拾取点都已经在输入到Solver
.
实时为每个请求找到一个车辆,如果没有车辆可以满足约束,拒绝它呢?考虑到对外部(付费)地图服务的调用,这会使过程变慢,并且有成本。最好避免这些调用中的冗余。
取件请求可以在任何未来日期完成,但不能在当天完成。
计划实体 - 取货请求
每个请求中涉及的计算
我已经阅读了有关影子变量的文档,但我仍然远未理解如何定义它们,但我认为这对我来说很有用:如前所述,对于每个请求我需要调用地图服务(谷歌, OpenStreetMaps, ...)以计算从车辆所在位置到取货地址的距离。
获取车辆原点位置,逻辑的一些伪代码:
像这样的计算还有很多,但没必要一一列举,大同小异。
我正在研究所有可用的算法类型,以找到更适合此问题的算法类型。
约束提供者实现
最后一部分,
解决方案类
好的,所以我认为所有的代码都在这里。我正在寻找有关正确方法的建议: - 调用地图服务器以有效的方式获取距离 - 避免重复相同的计算 - (重要!)如果车辆满足某些规则,例如它没有分配的订单选定日期,直接结束评估过程(找到车辆!)
是的,我可能要求太多了,但是文档有点难以适应这种情况,我认为随着时间的推移我会变得更好,但我想很快用 Optaplanner Workbench 进行一些模拟:-)
感谢任何会提出任何建议的人!
routes - 基于最小需求或更短距离解决 VRP。优化其他变量的路线
我正在尝试对节点覆盖问题进行建模,在我的情况下,我使用的是每辆车的容量,routing.AddDimensionWithVehicleCapacity
但我想根据最佳路线或使用最少容量的路线来更改解决方案。用例是除雪情况下的盐。
据我所知,有first_solution_strategy
但local_search_metaheuristic
没有其他东西可以定义要找到什么样的解决方案。使用 OR-Tools 可以做到这一点吗?
simulation - 如何从 RSU (Omnet++ VEINS) 发送消息?
我正在尝试在收到来自汽车的消息后实现将 RSU 消息转发到相邻 RSU 的功能。
查看 RSU 节点时,只有一个venesradioIn门转发到 NIC radioIn门。在 RSU 应用程序类型实现端 ( DemoBaseApplLayer ),我看到handleLowerMsg函数将在消息选项类型(bsm、wsa、wsm)之间转换消息。我没有看到用于发送消息的内容。另外,我在 RSU 模块中没有看到静脉广播输出门。
如何从 RSU 发送消息?更进一步,与节点(汽车)相比,我如何区分从 RSU 发送的消息?
python-3.x - 或工具拾取交付问题不适用于从数据库导入距离矩阵
我正在使用 Google OR Tools 来解决与取货和送货有关的载人车辆路线问题。我正在从 psql 数据库中导入距离矩阵,并确保它是一个整数列表。即使这样,我也收到以下错误-
警告:在将 InitGoogleLogging() 写入 STDERR F0618 10:57:31.900391 8448 routing.cc:1554 之前记录日志检查失败:交付 < 大小(34359738369 与 13) * 检查失败堆栈跟踪:* 中止(核心转储)
有人可以帮我吗?
这是我的代码的提货交付版本(无要求)以供参考-
java - 减少在同一地点连续取货/送货的服务时间
在解决方案搜索过程中,是否可以减少在同一坐标上连续取件/交付的服务时间?
例如:有四批货物 = 4 次取件和 4 次交货。所有货物均从同一地点挑选,并从同一地点交付。
默认取件/送货服务时间 = 60 秒。
默认结果:
连续活动减少服务时间的结果:
如何根据上述结果生成具有服务时间的解决方案?也许有一种方法可以以缩短服务时间的方式影响算法?
python - 如何让每辆车在 Or Tools 中做点什么?
在 VRP 的几个问题中,当通知车辆总数时,妥协的是所有车辆都被使用并且至少它们访问一个节点。实际上,这甚至可能不是最好的,但我想了解为什么以及如何根据需要进行调整。下面的示例涉及根据 OR Tools 的简单 VRP 示例,距离矩阵中有一个小版本,并根据网站(博客)进行了一些更改 - https://activimetrics.com/blog/ortools/counting_dimension/。根据后者,可以进行路线的公平分配,这似乎非常有吸引力,因为通常,求解器会最小化最长的路线并最终使用更少的车辆并为其分配多个节点。一个重要的需求是使用一种使车辆行动的方法,确保它至少被使用一次。但是,如果使用 5 辆车来解决问题,根据逻辑和得到的结果,他到达那里,为每辆车放置一个节点,如果没有这个版本是不可能的。问题是,仅使用 4 辆车,求解器不再存在,它设法分配路线,但总是留下一辆车。
也许它一定是一个已经讨论过的话题,但我想了解和理解什么是最好的路径,以及采取什么措施来改变这个例子和其他例子,以更好地遵循。我提前感谢您的关注,我正在等待反馈。谢谢你。
python-3.5 - 使用容量和时间窗口约束来解决提货和交付问题
我是 OR-Tools 库的新手。我正在尝试解决容量和时间窗口限制的提货和交付问题。该代码在 5 个位置节点(2 个提货和 2 个交付位置以及 1 个仓库位置)上运行良好。但是,当我将节点数更改为 17(具有 1 个仓库位置)时,代码不起作用,并且内核在 Python 3.5 的 Spyder 编辑器中死机而没有给出任何错误。而且,如果我在终端中运行它,它会产生以下输出。
系统规格为:OS-Ubuntu 16.04 LTS,Python 版本 - 3.5.2,OR-Tools 版本 - 7.7,RAM - 8GB,图形 - 2GB AMD Radeon。我通过结合 OR-Tools 网站上给出的示例代码的相关部分来编写代码。以下是 16 个节点不工作的代码:
我正在用以下 5 个节点的情况替换 create_data_model() 函数,这是有效的:
java - 允许车辆在装运时间窗口结束后到达
据我所知,使用 .setPickupTimeWindow() 和 .setDeliveryTimeWindow() 将时间窗口应用于 Shipment 将对解决方案搜索过程施加硬约束。如果我理解正确,这意味着这些窗户不应该被打破。
另一方面,我想允许车辆在时间窗口之外取件/交付货物(假设他们可以在时间窗口结束后的 5 分钟内到达并交付货物)。在寻找可能的解决方案时,我查看了 SoftActivityConstraint 类,并考虑对路线中的每个插入作业应用软约束,如果车辆迟到不到 5 分钟,则成本为 0。
我可以影响车辆的到达和完成时间吗?可以使用 SoftActivityConstraint 来实现吗?提前致谢。