【问题标题】:OR-Tools: VRPTW with resource constraints and without solutionOR-Tools:有资源限制但没有解决方案的 VRPTW
【发布时间】:2019-09-04 11:30:20
【问题描述】:

我正在尝试使用仓库使用限制测试 VRPTW 示例 - from here。 如果我将 VehicleNumber 更改为不同的值(例如从 4 到 6),将永远找不到解决方案。此示例仅适用于指定的属性值。为什么?

我检查了 C# 和 Python 示例,结果是一样的。

【问题讨论】:

  • 一般性评论(针对一个非常笼统的问题;没有给出详细信息):NP-hard 问题在本质上就求解器而言非常不稳定。例如,虽然 SAT 求解器通常解决具有 1 亿个变量的问题,但理论向我们保证(如果假设 P != NP),也会有一个只有 100 个变量的实例我们无法解决。这也意味着,对实例的微小更改通常会使问题无法解决(我们无法先验地认识到这一事实;也有理论保证)。路由求解器大量基于启发式。
  • or-tools 的这个功能不稳定怎么用?在我当前的项目中,这个约束全部放弃了

标签: or-tools vehicle-routing


【解决方案1】:

因为问题被 6 辆车过度限制了。

此代码为每辆车创建一个间隔。这些间隔具有固定的持续时间和最大的结束时间。 4 个这样的间隔适合允许的时间,6 个不适合。

【讨论】:

  • 为什么算法可以用 4 辆车给出解决方案,而不能用 6 辆车?它可以使用 6 个中的 4 个,并将 2 个保留为未使用。我该如何解决?
  • 您需要创建固定间隔变量作为可选。为此,您需要传递一个指示车辆是否处于活动状态的布尔变量。您可以使用求解器->MakeIsDifferentCstCt(start_var_of_vehicle_i, index_of_end_route_for_vehicle_i)
  • 我可以看一些例子来理解吗?我找到了间隔的可选标志,当我设置为 true 时,break 停止为解决方案工作。
  • @LaurentPerron,在 MakeIsDifferentCstCt 中,“CstCt”代表什么?恒定约束?演员表约束?
  • ConstantConstraint: MakeIsDifferentFromConstantConstraint
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 2019-08-01
  • 2019-10-15
  • 2016-04-30
相关资源
最近更新 更多