专栏名称: 吴师兄学算法
和程序员小吴一起从初学者的角度学习算法,以动画的形式呈现解题的思路。每周四篇原创文章,期待你的鉴赏!
目录
相关文章推荐
十堰晚报  ·  价格大跳水!还要继续降!很多人爱吃 ·  昨天  
成都本地宝  ·  成都再添一座大型高铁站!建成时间→ ·  2 天前  
润农畜牧报价  ·  2025年2月23日 小麦彻底起飞,行情要反转? ·  2 天前  
51好读  ›  专栏  ›  吴师兄学算法

618 快递当天到,算法是如何实现的?

吴师兄学算法  · 公众号  ·  · 2020-06-19 10:00

正文

点击上方“ 五分钟学算法 ”,选择“星标”公众号

重磅干货,第一时间送达


1998 年 6 月 18 日,刘强东在中关村创业,成立京东公司。
从此,每年的 6 月成为了京东的店庆月。在店庆月,京东会推出一系列大型促销活动,其中 6 月 18 日是促销力度最大的一天。电商让利、营销炒作与广大剁手党共同形成了得天独厚的天时地利人和三大条件,6.18 迅速崛起,与双十一遥相呼应,成为又一大全民购物狂欢节。去年的 6.18 与双十一销售额均突破 2000 亿大关,今年战况如何,我们拭目以待。
每年的购物节来临前,由于网购订单瞬间激增,多家快递公司均会通过紧急增调飞机来解决订单货运问题。在物流行业,京东后来居上,已经做到了行业先驱地位,京东物流自 2018 年起,90% 的自营订单就已实现当日达或次日达。今年南通机场集团入股京东航空,进一步为京东物流提速。
有趣的是,每年的购物狂欢节前,不少快递员通过辞职或转行规避风头。全民购物狂欢顺带引爆出一场电商基层离职潮。

物联网时代

物联网,简称 IOT(The Internet of Things),是指通过信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等装置与技术,实时采集需要监控、 连接、互动的物体或过程,再通过网络接入,实现物与物、物与人的连接,实现对物品和过程的智能化感知、识别和管理。

在智能物流管理过程中,大量运用了物联网技术。在科技赋能的浪潮下,人工智能的应用越来越广泛,无人化仓储、无人化配送越来越多,各种算法应用到物流领域的每一个细节。包括:
  • 供应链网络优化算法 :商家在全国范围内,选择合适的仓库入仓,并确定仓库的覆盖范围,工厂的铺货线路,使用的是混合整数规划模型算法;
  • 供应链分仓补货 / 调拨算法 :确定每个仓库是否需要补货,同时确定每个仓的补货量,减少跨区域发货的订单;
  • 仓储算法 :负责仓库内所有未完成订单拣选任务,合并同一个拣选单,规划出最短行走距离;
  • 箱型推荐算法 :对于每一个订单的所有商品,推荐用几个快递箱、哪种型号的快递箱。目的是最小化成本,提升包装效率,减少包装浪费。由此问题还引申出一个新的问题:根据历史订单数量,提前设计每个仓库最合适的箱型。
  • 车辆的路径规划问题 :根据要配送的包裹(或者是需要揽收的货物),在地理上分布的不同位置,计算出需要从物流中心派几辆车、走什么路线,分别去派送(或者分别去揽收)这些包裹,才能最省时省力。
正是在大量算法的支撑下,机器逐渐替代人工,无人物流带来的提升也显而易见:
  • 运输量越大,机器相对人工的成本也就越低;
  • 无人物流可实现全天派送,防风雨,方便高效、节省资源;
  • 对于偏远地区和急件,无人物流能大大提高物流配送效率;
  • 无人物流准确率高达 99%,有效避免了人为的失误。

物流配送算法

虽然物流行业在近些年随着电商的火爆才逐渐兴起,但在数学中,物流相关算法早已有相关的研究。最早的物流算法可追溯到 1759 年欧拉研究的骑士环游问题:即对于国际象棋棋盘中的 64 个方格,按照马走 “日” 字的规则走访 64 个方格一次且仅一次,并且最终返回到起始点。
对于骑士环游问题,通常的做法是采用回溯算法求解。
  • 从起点开始,依次尝试跳到下一个位置,并记录骑士已走的步数;
  • 如果所有的下一个位置都已经走过一次,且骑士已走步数少于 63, 则说明此种走法不可行。回溯到上一步尝试下一个可走位置;
  • 当骑士不重复地走到 63 步时,判断下一步能否回到起点,只有下一步能回到起点的方案才是可行方案,否则继续回溯寻找路线。
回溯虽然能解决这类问题,但这实际上是一种非常暴力的算法,我们必须对比所有可行方案,从而找到最优解。在物流算法中,我们将这类求解算法称之为精确算法。除此之外的精确算法还有割平面法、分支定界法、动态规划法等。
在实际应用中,由于精确算法的计算量会跟随问题规模的增大呈指数级增长,导致这类算法在现有计算设备中无法用于复杂的组合优化问题的求解。
长久以来,人们一直在寻找一种这类问题的通用解,使得我们不需要穷举所有的情况,就能直接找出问题的答案。比如:
  • 如果一个人告诉你 13,717,421 可以写成两个较小的数的乘积,你想要知道这个说法是否正确的话,必须枚举出所有的情况,挨个数字尝试。但如果他告诉你,这个数可以写成 3607 乘上 3803 ,你只需要计算一次便可以知道他说的是对的。

  • 在求质数时,我们可以用 与 n 依次相除来判断 n 是否是质数,或者用筛掉质数的倍数的方式来过滤出质数,但我们并不能找到一个通用的公式,能直接计算出下一个质数是多少。

这类问题都属于不确定问题,由此引申出一个重要的数学难题 —— NP 完全问题。

# NP 完全问题

NP 完全问题(NP-C 问题),是世界七大数学难题之一。NP-C 的英文全称是 Non-deterministic Polynomial Complete,即多项式复杂程度的非确定性问题。简单的写法是 NP=P? ,问题就在这个问号上,到底有没有让 NP=P 的算法,或是如何证明 NP≠P
再举一个通俗的例子:当我们用数字密码解锁手机时,如果我们不知道密码是多少,必须将所有的数字组合依次尝试。但如果知道了密码,我们可以轻易地验证这个密码是对是错。
这听起来像是一句废话,如果将它抽象一点的表述,就是:能用电脑快速验证一个解的问题,是否也能够用电脑快速地求出解。
如果能解决 NP 问题,世界上所有的密码都将被轻易破解。虽然直觉告诉我们不可能,但 NP 完全问题至今还没有被下定论。近年来人工智能、机器学习的发展均与这个猜想有些关系。人们尝试用启发式算法替代精确算法,使得 NP 逐渐趋近于 P。

启发式算法的思想是:在不断解决问题的过程中寻找解决问题的最优方案。启发式算法实际上是通过不断地选择调优,以寻找到近似的最优解。在物流算法中,人们也是以此来解决经典的旅行商问题。

# 旅行商问题

旅行商问题,又称为 TSP 问题(Traveling Salesman Problem),是一个经典的组合优化问题。描述为:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。他应如何选择行进路线,以使总的行程最短。
从图论的角度来看,该问题实质是在一个带权完全无向图中,找一个权值最小的哈密顿回路。
哈密顿回路 :由天文学家哈密顿提出,由指定的起点前往指定的终点,途中经过所有其他节点且只经过一次。
上文已说到,该问题的可行解就是所有顶点的全排列,随着顶点数的增加,可行解的数量会呈指数级增长,也就是组合爆炸,它本质上是一个 NP 完全问题。

TSP 问题在交通运输、电路板线路设计以及物流配送等领域内有着广泛的应用,国内外学者对其进行了大量的研究。由于这类问题数据规模太大,想要用精确算法求解往往显得无能为力。因此,在后来的研究中,国内外学者重点使用启发式算法来寻找近似最优解,这类算法主要有模拟退火算法、遗传算法、蚁群算法等。

# 模拟退火算法

模拟退火算法由 N. Metropolis 等人于 1953 年提出,简称 SA(Simulated Annealing)。它是对局部搜索算法的一种扩展,模拟了金属从高温降到低温的过程中,分子状态逐渐趋于稳定的过程。
退火是一种物理过程,当金属物体在加热至一定温度后,它的所有分子在其状态空间中自由运动,处于高能量状态。随着温度的下降,这些分子逐渐停留在低能量状态,此时结构趋于稳定。
在退火过程中,所有的分子状态并不是完全相同的,而是有一定的概率处于高能量状态或低能量状态。温度越高,分子处于高能量状态的概率就越大;温度越低,分子处于低能量状态的概率就越大。
模拟退火算法便是基于这一点,它在寻找最优解的过程中,有概率的接受比当前最优解差一点的次等解,这个概率值随着搜索深度的增加逐渐减少。如果每一步都选择当前最优解,它就变成了贪心算法,而贪心算法极有可能陷入局部最优。模拟退火算法接受次等解的过程中,随着搜索深度的增加,次等解有概率超过局部最优解,从而跳出局部最优,获得全局最优解。

美中不足的是,模拟退火算法为了获得全局最优解,要求较高的初始温度,要求退火的速度足够慢,要求较低的终止温度和各种温度下足够多次的抽样,这就使得优化过程长,特别是对于规模大的实际问题。因此,优化效率不高是标准模拟退火算法的主要缺点。其次,由于模拟退火算法对初始温度很敏感,参数的选择也是应用该算法的难题之一。

# 遗传算法

1975 年,John holland 受生物进化论的启示提出了遗传算法,简称 GA(Genetic Algorithms)。GA 借鉴于“适者生存”的理论,在求解优化问题时,通过可行解的一代代交叉、变异,不断进化,最终得到最适应环境的个体,从而模拟出问题的近似最优解。
遗传算法的基本运算过程如下:
  • 初始化






请到「今天看啥」查看全文