[英]Using Optaplanner for long trip planning of a fleet of vehicles in a Vehicle Routing Problem (VRP)
我正在应用带有时间 windows 的 optaplanner 的 VRP 示例,每当我在 24 小时(00:00 到 23:59)的范围内定义时间 windows 时,我都会得到可行的解决方案。 但我需要:
我想我应该拿每个客户的每个 TW 并添加更多的 TW,计划的每一天一个。 例如,如果我计划进行为期 3 天的旅行,那么我将在每个客户中有 3 次 windows。 像这样:如果客户 1 在 [08:00-10:00] 可用,那么说它也将在 [32:00-34:00] 和 [56:00-58:00] 可用,它们是相当于接下来几天的相同 TW。 同样,我处理时间很长,转换为毫秒。
我不知道这是否是正确的方法,我的咨询将更多地是关于解决这个约束的一些想法,也许你有类似的问题,对我来说任何想法都会非常感激。
抱歉措辞,我是说西班牙语的人。 谢谢你。
在没有检查示例的情况下,处理多天不应该很复杂。 这完全取决于您如何 model 您的时间变量。
例如,您可以:
long
值,表示为自纪元以来的秒数。 如果我没记错的话,这就是大多数示例的 model。 请注意,这不是人类可读的,但计算速度最快LocalTime
,这是一种人类可读的时间格式,但将在 24 小时范围内工作,并且比使用原始数据类型慢LocalDateTime
,这也是人类可读的,并且可以在任何时间范围内工作,并且也比使用原始数据类型慢。我强烈建议不要简单地将当前日期或当前时间的 map 归零并从那里开始计数。 因此,在您的示例中,您将时间表示为 [32:00-34:00]。 这使它看起来就像您使用当天的午夜作为第 0 个小时并从那里开始计数一样。 虽然您可以这样做,但它会影响代码的调试和可维护性。 这只是我的一般建议,您不必遵循它。
我的建议是拥有自己的域模型和 map 到 Optaplanner 模型,在其中您对任何时间戳使用long
值,表示为自纪元以来的秒数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.