使用Optaplanner确定我们自己运送的包裹和我们外包的包裹

时间:2015-07-07 19:31:52

标签: algorithm optaplanner

我在英国的一家大型在线零售商工作。我们每天发货接近2000个订单,而且发展很快。

我们目前使用多家配送公司来处理我们的所有配送。我们计划很快推出我们自己的送货车队,以便我们的配送中心当地送货。

我们正在寻找一种解决方案,以确定我们自己运送哪些包裹以及我们将哪些包裹外包给我们的交付合作伙伴,以及解决车辆路径问题(VRP)或容量VRP(CVRP)。我们计划将Optaplanner用于CVRP的实际道路时间(基于OSRM)。我想我们可以使用Optaplanner来解决我们自己和我们外包的交付问题,但我真的不知道从哪里开始。

有人可以指出我正确的方向使用Optaplanner来确定哪些交付是我们自己的货车进行的,哪些是使用第三方交付公司进行的?

您可以假设我们知道所有宗地的以下内容:

  1. 每个交货点的纬度/长度。
  2. 任何两个交付点(和/或我们的配送中心)之间的实际驾驶时间和距离。
  3. 使用第三方进行每次交付的费用。
  4. 如果需要,我们也可能知道其他事情。

    我还问了related question on Programmers,但这是关于整个概念,而这个问题特别是使用Optaplanner来解决这个问题。我非常感谢您提供的任何帮助。谢谢。

2 个答案:

答案 0 :(得分:3)

我从不同的车辆类型和硬/软评分规则开始,衡量成本。

自有车队规则(常规CVRP):

  • 硬约束:负载不能超过车辆容量
  • 硬约束:车辆必须及时返回
  • 钱的软分数:车辆和司机的每日/每小时费用
  • 钱的软分数:行驶距离的燃料成本

外包交付规则:

  • 硬约束:限制通过第三方提供的包裹数量?
  • 钱的软分数:每件套的成本

答案 1 :(得分:2)

如果您在询问如何让OptaPlanner决定是否外包路线,答案就是评分规则。

您需要有一个标准规则,鼓励引擎最小化驾驶时间,第二个规则鼓励它降低成本。第二条规则将根据货车是否外包来应用不同的成本计算。

然后,您需要在评分规则中添加权重因子,以告知引擎与最小化驱动时间相比,降低成本的重要性。您可以将此值设置为可自定义并柚木,直到找到生成所需结果的值。

我相信cheap time schedulin g示例中有一些成本计算。