optaplanner - 不指定出发地点的接送学生
问题描述
我们需要为学校的校车做路线规划,任何一个学生家都可以作为校车的起点,但我们没有指定任何校车的出发地点。
我们期望的解决方案将确定每辆公共汽车的起始位置,以及每辆公共汽车从学生位置开始、在学校结束并按顺序经过学生的轮次,例如,每辆公共汽车最多可容纳 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 确定为公交车的起始位置,以满足时间窗约束。
这种情况是否可以实施?知道如何实施吗?还是我们可以看到类似的例子?
解决方案
只需让 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)
- ...
推荐阅读
- javascript - 防止默认后实际做默认
- proxy - 将 yum 与代理一起使用
- visual-studio-2017 - vsts 构建失败缺少 dll
- mysql - 使用 JDBC 驱动程序从 ElasticSearch 中的 MySQL 表中加载动态数据
- python - 在 DataFrame 中返回 - Python
- phpmyadmin - 如果 session.auto_start 开启,phpMyAdmin 不会登录
- c# - 糟糕的设计:访问附近的集合元素
- java - 因为我的 pojo 类表没有在数据库中创建
- c# - WPF ListViewItem 事件未在触摸屏上正确触发
- typescript - 使用nestjs身份验证时身份验证失败