OptaPlanner 将多辆车部署到同一位置

OptaPlanner deploy multiple vehicles to same location

我使用了 OptaPlanner VRP web 示例并根据我的需要对其进行了自定义。除了以下情况外,它工作正常:

可用车辆数量:2。
每辆载具容量为6辆。
而客户需求是7.

在上述场景中,OptaPlanner 无法解决问题。我认为它应该将 2 辆车部署到同一客户位置,但它没有按预期工作。

我不知道如何配置 OptaPlanner 规则以使其工作。

一种解决方法是 将客户 与需求 7 分开:

  • 分为需求 3 和 4 的 2 个客户(都在同一位置)。
  • 或需求 3、2 和 2 的 3 个客户(都在同一位置)。

您会看到,只要有可能,同一辆车就会拜访同一地点的所有客户。为了更好的设计,您甚至可能希望将 Customer 重构为 Customer(每个位置仅 1 个)和 CustomerPart(每个客户的单独需求 1 个)。

请注意,在原始需求中,一个需求不能拆分为 2 辆车(不是因为约束规则,而是因为域设计)。所以用原来的实现来解决你的需求,自然排除了一些可行的和可能更优的方案。

你分裂的越多,你就越能找到新的可行的和潜在的新的最优解。当然,您将每个客户的需求拆分得越多,搜索 space 就会增加更多。而且增加的很厉害。用需求 1 的 7 个客户替换该客户(并为所有客户这样做)将是完美的,但会遇到主要的可扩展性问题。

为了实用,我将所有高于最小车辆容量一半(甚至是该容量的三分之一)的需求拆分,但不会超过。 使用OptaPlanner Benchmarker 用于衡量(而不是猜测)当拆分限制参数发生变化时结果质量和数据集可扩展性,因此您可以对其进行调整。 (哦,如果您最终进行了这些基准测试,请在此处分享您的最佳参数值。)