首页 > 解决方案 > 不指定出发地点的接送学生

问题描述

我们需要为学校的校车做路线规划,任何一个学生家都可以作为校车的起点,但我们没有指定任何校车的出发地点。

我们期望的解决方案将确定每辆公共汽车的起始位置,以及每辆公共汽车从学生位置开始、在学校结束并按顺序经过学生的轮次,例如,每辆公共汽车最多可容纳 12 名学生:

我们期待这样的事情:

34, 30, 27, 38, 30, 15, 10, 5, 8, 3, 2, 1, 0

21、29、23、32、11、13、9、4、6、5、7、12、0

..

..

..

其中 0 是学校位置索引,其他是学生位置索引。

该算法已将上述 34、21 确定为公交车的起始位置,以满足时间窗约束。

这种情况是否可以实施?知道如何实施吗?还是我们可以看到类似的例子?

标签: optaplanner

解决方案


只需让 ArrivalTimeUpdatingVariableListener 以相反的顺序遍历链。

通常它会:

变量监听器

在你的情况下,你有例如这个链:

  • 车辆 A -> 学生 1(距离 31 公里)-> 学生 2(距离 25 公里)-> 学生 3(距离 20 公里)
  • 车辆 B -> 学生 7(距离 33 公里)-> 学生 8(距离 26 公里)-> 学生 9(距离 15 公里)

远离学校的意思。

然后你的 var 监听器就像:

  • 学生3到校时间=开学时间-3到学校时间(20公里)
  • 学生2的到达时间=学生3的到达时间-从2到3的时间(>=5km)
  • 学生1的到达时间=学生2的到达时间-从1到2的时间(>=6km)
  • ...

推荐阅读