回顾一下

  1. 分配好的订单, 需要派送员配送, 这个配送是从仓库出发, 也就是一个起点, n(<30)个无差别的到达点, 这是一个标准的tsp问题.
    1. 蚁群是不合适的.
      1. 因为他本身比较慢,
      2. 并且大尺度路线对小尺度路线的干扰非常强烈.
      3. 需要做交换类的优化操作.
    2. 直接使用最远插入就是个不错的决定.
    3. 直接上一个交换类算法(Lk )也是不建议的做法, 虽然他是tsp的3个主流算法之一, 因为快递业, 取件时依赖于发件的, 也就是说, 2个点之间很可能有先后限制.
    4. 生成树类的算法也可以搞, 未来生成树会有很多作用.
    5. 遗传算法, 这个可以考虑用. tsp的3个主流方向之一. 并且还是比较灵活的.
    6. 线性规划, 这个也可以考虑用, 也是tsp的3个主流算法之一.
    7. 动态规划, 因为宽度太大, 所以不适合解决这个问题.
    8. 神经网络, 这个其实可以考虑使用.
  2. 单一发货点的订单分配问题.
    1. 这其实是一个最小生成树问题.
    2. 克鲁斯卡尔或者普利姆都可以, 普利姆的效果更好一些.
  3. 多个发货点, 发货点数量: 收货点数量 趋近于1:1的情况下第订单分配.
    1. 这是一个定义了订单到订单之间距离的最小生成树.
    2. 同样是prim解决.
    3. 这里最核心的是: 订单到订单的距离的合理定义=两个订单形成的总距离- (订单1距离+订单2距离)
  4. 预约取件时间窗的订单.
    1. 实话说, 丰巢就是做这件事的.
    2. 虽然, 我们可以用算法解决他. 但是, 这个并不应该用算法解决.
  5. 由于用户是一单一单的下单, 导致我们每次的分配虽然都是最优解, 但是, 整体看就不是最优解了.
    1. 一个直观的思路是: 用重新分配来解决问题, 每次司机上线或者用户下单, 我们就把所有的订单都重新分配一下.
    2. 但是, 机器学习(神经网络)+蒙特卡洛方法其实可以解决这个问题, 我们用大量的历史数据进行训练, 最后的结果是, 用户下单的时候, 系统直接分配的就是最终最优可能性最大的分配方法, 并且系统不停地重算, 当发现偏差过大的时候, 再进行重分.

阶段总结: 蒙特卡洛方法+机器学习(神经网络)这个也就是alpha go的方法, 用在快递业的最终形态的订单分配中也是王道.

终极问题

终极问题是: 全局点到点的配送, 没有仓库概念, 只有订单概念, 也就是在配送某单的终点之前, 必须先访问起点. 也就是多起点, 多终点, 多批次的全局优化. 这样才能做到同城配送的最优化, 以及全球干线的最优化.

终极答案

传统的运筹规划类方法走到了终点, 因为, 无论如何, 他都是针对当前局面的优化, 几乎没有前瞻性, 所以, 总是需要重分, 如果一天分下来, 我们看他的最终的运行情况, 很可能距离全局最优解很遥远.

但是, 机器学习就不一样了. 因为, 快递业是有终局的规划问题, 由此, 我们可以用类似alpha go的解决方案, 用机器学习+蒙特卡洛(或者类似的尝试性方法), 基于历史数据进行训练, 只要训练量够了, 那么, 分配方案很可能接近top5%的优化结果. 而且, 可以一次优化, 降低了调度系统复杂度, 并且如果是干线运输, 其实, 包括货机调度, 都是需要前瞻性的, 在这种需要前瞻的分配中, 机器学习的优势是巨大的.