• 现实中遇到的业务状况记录


    外卖平台,订单的自动派发.

       业务背景: 外卖平台,订单的自动派发.

       流程:

          1,顾客下单

          2,平台收到订单,分配订单给配送员,

          3,商家出餐

          4,配送员取货

          5,配送员配送

          6,用户收货,反馈评价

          ps: 2,3,4同步进行

      讨论的问题: 如何做到订单的自动派发(订单自动分配给最合适的配送员)?

       理想化的前提:

          1,配送员速度恒定

          2,不考虑路况,天气等外部原因

          3,任何已知坐标的两点距离可以计算(使用直线)

       已知条件:

          1,配送员速度v,坐标点point

          2,配送员已有订单列表order1,order2...,ordern-1,ordern,订单列表可以为空

          3,每个订单order包含两个重要部分,该订单提供货物的商家坐标pointn商,该订单需要配送到的用户坐标 pointn用,

          4,新来订单的商家坐标 point新商,用户坐标point新用.

          5,所有订单的商家统一的出餐时间是 t, 所有的订单的配送时长不允许超过 t

       要求算法结果:

          1:匹配出最短路径(时间或者长度作为衡量标准,或者两者掺杂作为衡量标准都可以),

            最佳路径:

              最佳路径不一定是最短路径,例如A路径是最短的路径但是先送订单3再送2再送1,B路径不是最短路径,但是先送订单2,再送1,再送3

              在不超时,A,B路径相差不大的情况下 B路径算作是比A路径友善,因为考虑了 用户体验.

          2:尽量避免来回跑(真的非常难定义)

           ps:1是硬性要求,2是尽量满足.

       可能涉及的方面

          1,最短路径dijkstra算法

          2,floyd最短路径算法

          3,路径的动态规划,因为不可能一个订单先去用户所在的点再去商家所在的位置

          4,带权的无向图的遍历

          5,树的遍历

          

        

  • 相关阅读:
    【学习】CodeUi
    【C#】权限修饰符
    链表_初步认识
    关于mysql8.0及以上版本连接navicat时候报错(密码加密方式需要修改)
    docker 运行mysql最新版本用navicat连接报错:1251
    spring5的基本组成(6个模块)
    关于java中设计原则总结(7)
    java中String中的endsWith()方法
    mysql中基本的语句
    mysql中索引类型
  • 原文地址:https://www.cnblogs.com/coldridgeValley/p/4874758.html
Copyright © 2020-2023  润新知