关于外卖配送最短路径问题补充

简介: 关于外卖配送最短路径问题补充

欢迎订阅关注公众号:赵KK日常技术记录

首先区分各种场景

从配送源区分为

单源正权值最短路径

多源正权值最短路径

从配送场景区分

单源正权值配送时效最短路径

多源正权值配送时效最短路径

针对单源正权值最短路径有了基本代码,亲测5000+客户用时7043ms,时间复杂度O(N*(N-1))。代码如下

private static void backTracking(HashMap<String, String> map, String warehouse, List<String> list1) {

        HashMap<String, BigDecimal> hashMap = new HashMap<>();
        BigDecimal temp = BigDecimal.ZERO;
        if (map.isEmpty()) {
            return;
        } else {
            for (Map.Entry<String, String> entry : map.entrySet()) {

                Random random = new Random();
                BigDecimal db = new BigDecimal(random.nextInt(100));

                BigDecimal baseKilometreNum = db.setScale(2,BigDecimal.ROUND_DOWN);
                if (temp.compareTo(BigDecimal.ZERO) == 0) {
                    temp = baseKilometreNum;
                    hashMap.put(entry.getKey(), baseKilometreNum);
                } else {
                    boolean flag = true;
                    for (Map.Entry<String, BigDecimal> entry1 : hashMap.entrySet()) {
                        flag = entry1.getValue().compareTo(baseKilometreNum) > 0 ? true : false;
                    }
                    if (flag) {
                        hashMap.clear();
                        hashMap.put(entry.getKey(), baseKilometreNum);
                    }
                }
            }
            for (Map.Entry<String, BigDecimal> entry1 : hashMap.entrySet()) {
                warehouse = map.get(entry1.getKey());
                map.remove(entry1.getKey());
                list1.add(entry1.getKey());
                log.info("开始送达至->{}",entry1.getKey());
            }

        }
        //移除此元素,且最短距离设置为下一次仓库
        backTracking(map, warehouse, list1);

    }

面对多源正权值最短路径时,首先考虑外卖员自身距离商家的位置,然后按照最短路径来看把每个商家也视为客户,这样就是先去第一个最近的商家取餐,然后看下一个距离最近的点,有可能是客户点,有可能是商家,但最终就转化为第一种情况了,如果加入权重为配送时效的话就不一样了,从距离优先转化为最近时效问题。
image.png

涉及算法如下

动态规划(dynamic programming )、

列生成算法(column generation)、

分支切割(branch-and-cut)、

分支切割定价(branch-and-cut-and-price)等精确计算算法,

禁忌搜索(tabu search)、

模拟退火(simulated annealing algorithm)、

基于插入搜索的算法(insertion-based heuristic)、

自适应大邻域搜索(adaptive large neighborhood search)、

变深度搜索(variable-depth search algorithm)

以及启发式算法(Two-Stage Fast Heuristic)

目录
相关文章
|
8月前
|
存储 安全 数据挖掘
外卖跑腿/同城跑腿/校园跑腿/同城配送外卖系统开发规则玩法/案例设计/逻辑方案/需求程序/源码
外卖跑腿、同城跑腿、校园跑腿和同城配送外卖系统开发,是指开发一个用于管理和协调外卖送餐和快递物品的平台或应用程序。该系统能够连接顾客、骑手和商家,提供顾客下单、骑手接单、派送商品等功能。
L2-028 秀恩爱分得快 (25 分)
L2-028 秀恩爱分得快 (25 分)
130 0
|
11月前
|
缓存 测试技术
[蓝桥杯 2019 省 A] 外卖店优先级
[蓝桥杯 2019 省 A] 外卖店优先级
77 0
|
11月前
|
前端开发
瑞吉外卖剩余功能实现(八)
1.菜品的停售合起售 在dishController中编写该方法 2.菜品的批量起售和停售 在dishController中编写该方法
|
缓存
(模拟)1241. 外卖店优先级
(模拟)1241. 外卖店优先级
38 0
upc2021个人训练赛第22场A. 联通数(思维)
upc2021个人训练赛第22场A. 联通数(思维)
40 0
L2-007 家庭房产 (25 分)(并查集)
L2-007 家庭房产 (25 分)(并查集)
111 0
|
供应链 算法
从“货”出发 重构“人—货”关系
从“货”出发 重构“人—货”关系
107 0
|
存储 传感器 人工智能
全球第一个机器人配送站来了,无人配送真的可行吗?
“你的外卖已经到楼下了,麻烦你下楼取一下。”
全球第一个机器人配送站来了,无人配送真的可行吗?
通过搜索运营和场景拉新,货拉拉抓稳了8成流量盘子 | C位小程序访谈
由于支付宝具有紧贴场景、重服务的工具属性,货拉拉的运营策略也是基于场景实现精准拉新:以货运服务为基点,货拉拉入驻了同样具有物流属性的支付宝“我的快递”频道中的同城直送板块。目前“我的快递”是货拉拉支付宝小程序第二大流量入口;此外在毕业季,货拉拉会跟校园频道等相关场景做活动,发掘高转化率的用户群。
3654 0
通过搜索运营和场景拉新,货拉拉抓稳了8成流量盘子 | C位小程序访谈