Google OR-Tools:驱动程序中断了几个小时的服务规定

问题描述

每个驾驶员(车辆)在上班8小时后需要休息30分钟。引用previous issue,这是我的代码

# Add breaks
node_visit_transit = {}
for n in range(routing.Size()):
    if n >= len(data['node_name']):
        node_visit_transit[n] = 0
    else:
        if n in data['pickups']:
            node_visit_transit[n] = int(data['load_time'][n])
        else:
            node_visit_transit[n] = int(data['unload_time'][n])

break_intervals = {}
for v in range(data['num_vehicles']):
    break_intervals[v] = [
        routing.solver().FixedDurationIntervalVar(
            MAX_TIME_BETWEEN_BREAKS,MAX_TIME_BETWEEN_BREAKS,BREAK_DURATION,False,'Break for vehicle {}'.format(v))
        ]
    time_dimension.SetBreakIntervalsOfVehicle(
        break_intervals[v],v,node_visit_transit)

但是,添加代码段时找不到解决方案,而以前存在解决方案。一些问题:

  1. node_visit_transit的用途是什么?从Github代码来看,它似乎考虑了某种形式的加载时间(基于负载需求),因此我在这里将其调整为适合加载/卸载时间。
  2. 我可以正确使用FixedDurationIntervalVar吗?我希望驾驶员在BREAK_DURATION小时内上班后休息MAX_TIME_BETWEEN_BREAKS,无论开始时间如何。我担心这会迫使他们在绝对时间MAX_TIME_BETWEEN_BREAKS休息一下,即如果MAX_TIME_BETWEEN_BREAKS = 8,那么他们都会在08:00休息一下。

似乎有人想出了here,但没有解决方案的例子。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)