Optaplanner:具有TimeWindow的Multi-Depot VRP以及多个拾取和交付

时间:2015-10-30 19:10:49

标签: optaplanner

我正在研究VRP的一个变体,并希望使用Optaplanner来解决它。

我有一家运输公司,其中列出了第二天需要履行的所有工作(因此需求至少提前一天生成)。该公司有多个驱动程序可能适合维护一个或多个工作。

每项工作都有以下要素:

  • JOB_ID

  • 取件时间(作业必须在此时或之后取件)

  • 取件地点

  • 交货时间(作业必须在此时或之前下降)

  • 送货地点,

  • 有资格执行此项工作的可能驱动程序列表(其中只有一名司机最终会完成这项工作。)

一个驱动程序可以为一个或多个作业提供服务,但每个作业必须只由一个驱动程序提供服务。

目标是:尽可能少地使用驱动程序,为每个驱动程序提供作业分配以及他/她应该接收的顺序并提供最小化总交付时间的作业。

请注意,司机可以拿起作业1,然后是作业2,然后是作业3,然后下载作业2,然后取出作业4,然后下载作业1,4和3.所以没有订购需要提取或放弃工作。无论哪种序列最小化时间都是优选的。唯一明显的限制是必须首先获取作业才能将其删除。

此外,每个司机都可以从他们的家庭位置开始(因此没有一个固定的仓库),在他/她提供最后一份工作后,公司并不关心他/她去哪里(因此无需计算最后一次下车和司机回家之间的时间。)

我使用Watchmaker框架使用遗传算法解决了这个问题。但我希望使用Tabu搜索或模拟退火等其他元启发式算法。

我在这里阅读了许多讨论VRP的论坛主题,但我仍然在寻找答案。我的问题是如何构建CHAINING并使用SHADOW VARIABLES,以便您拥有一个有效的拾取位置和下落位置序列链。

任何指针都将非常感谢...

谢谢,

维卡斯

0 个答案:

没有答案
相关问题