算法查询 - 多个驱动程序,多个位置
Algorithm Query - Multiple Drivers, Multiple Locations
老实说,我不确定 post 在哪里/做什么,但我将非常感谢任何人提供的任何建议。
我正在寻找一种算法,计算出租车(long-distance 私人租用)公司的最佳时间表,有多个 driver 和多个预订。
在任何一天,最多可能有大约 5-10 个工作,每个工作需要不同的时间和不同的英里数。
我可以通过Google距离API.
获取所有位置之间的坐标和距离
我想计算最小化 driver mileage/time 的最佳时间表,以便尽可能有效地完成所有作业。工作时间和地点是固定的,但是 driver 可以是最多 10 个中的任何一个。每个 driver 不一定每天都必须完成一项工作。有些 driver 可以在一天内完成多项工作,只要它们不重叠即可。
例如:
Driver A从A点到B点
当天晚些时候B点还有另一个工作,所以DriverA自然应该被分配到这个工作,因为DriverA可以在B点等待下一个工作的开始时间, 而不是浪费燃料让另一个 driver 空着车去 B 点。
我尽量做到简明扼要,抱歉篇幅过长。我不期待一个完整的答案,但如果有人尝试过类似的,一些提示将不胜感激!
我会尽力帮助您安排一些时间 pseudo-code。让我们试试吧!
首先,你需要一个N个队列,每个队列M个槽位的调度结构。您必须每天都有一个时间表,每个可能的 driver 队列和可变数量的插槽。
在我看来,我会把一天分成 15 分钟。考虑到这种结构,调度算法将是一个交互过程,每个新的交互都会尝试分配一个新的路由。
第一步是对所有待定路线进行排序,为路线中的每个终点找到最近的起点。有了这个庞大的有序路线流,下一步就是将这些路线移动到第一个可用的driver,直到他当天的所有空位都被填满。您在接下来的 driver 秒内继续执行相同的拆分,直到没有更多的交付要安排。
没有 "slots" 的所有概念也可以处理此类问题,但我认为这是避免制定不可能的超紧计划的安全措施。这个提议的算法也不处理往返起点(卡车装载的地方)所需的时间。我认为你可以有一个公平但 non-optimized 的解决方案,方法是对所有时间表进行第二次传递,并添加往返于加载点的所需路线。通过这样做,您需要将一些 driver 的最后一条路线移动到另一条 driver 以便 "back to home" 路线可以适应。
祝你工作顺利。希望它有所帮助!
老实说,我不确定 post 在哪里/做什么,但我将非常感谢任何人提供的任何建议。
我正在寻找一种算法,计算出租车(long-distance 私人租用)公司的最佳时间表,有多个 driver 和多个预订。
在任何一天,最多可能有大约 5-10 个工作,每个工作需要不同的时间和不同的英里数。
我可以通过Google距离API.
获取所有位置之间的坐标和距离我想计算最小化 driver mileage/time 的最佳时间表,以便尽可能有效地完成所有作业。工作时间和地点是固定的,但是 driver 可以是最多 10 个中的任何一个。每个 driver 不一定每天都必须完成一项工作。有些 driver 可以在一天内完成多项工作,只要它们不重叠即可。
例如:
Driver A从A点到B点
当天晚些时候B点还有另一个工作,所以DriverA自然应该被分配到这个工作,因为DriverA可以在B点等待下一个工作的开始时间, 而不是浪费燃料让另一个 driver 空着车去 B 点。
我尽量做到简明扼要,抱歉篇幅过长。我不期待一个完整的答案,但如果有人尝试过类似的,一些提示将不胜感激!
我会尽力帮助您安排一些时间 pseudo-code。让我们试试吧!
首先,你需要一个N个队列,每个队列M个槽位的调度结构。您必须每天都有一个时间表,每个可能的 driver 队列和可变数量的插槽。
在我看来,我会把一天分成 15 分钟。考虑到这种结构,调度算法将是一个交互过程,每个新的交互都会尝试分配一个新的路由。
第一步是对所有待定路线进行排序,为路线中的每个终点找到最近的起点。有了这个庞大的有序路线流,下一步就是将这些路线移动到第一个可用的driver,直到他当天的所有空位都被填满。您在接下来的 driver 秒内继续执行相同的拆分,直到没有更多的交付要安排。
没有 "slots" 的所有概念也可以处理此类问题,但我认为这是避免制定不可能的超紧计划的安全措施。这个提议的算法也不处理往返起点(卡车装载的地方)所需的时间。我认为你可以有一个公平但 non-optimized 的解决方案,方法是对所有时间表进行第二次传递,并添加往返于加载点的所需路线。通过这样做,您需要将一些 driver 的最后一条路线移动到另一条 driver 以便 "back to home" 路线可以适应。
祝你工作顺利。希望它有所帮助!