龙空技术网

基于深度强化学习的组合优化方法在工业应用中的实践

ML OR 智能决策 86

前言:

今天兄弟们对“离散型优化问题例题及答案”都比较注意,同学们都想要了解一些“离散型优化问题例题及答案”的相关资讯。那么小编也在网上收集了一些有关“离散型优化问题例题及答案””的相关内容,希望大家能喜欢,我们一起来了解一下吧!

《统筹方法平话》中有一个例子曾被收录到语文课本中,讲“烧水泡茶”有五道工序:1、烧开水,2、洗茶壶,3、洗茶杯,4、拿茶叶,5、泡茶,其中前四道工序是泡茶的前提,且各道工序耗时不同。不同的工序安排,会直接影响喝上茶的时间。

上图中两种“烧水泡茶”的排序方法,显而易见方法一用时最少,效率最高。

我们在日常生活中还会遇到很多类似的问题,比如衣服的穿搭、菜品的组合、做家务的次序等等,这些看似很简单的事很可能会让我们陷入“选择困难症”。在此类情景中,由数个简单选择问题排列组合在一起,就会产生出呈几何速度增长的大量可行解决方案的集合(通常具有巨大的数量)。而我们试图从中寻找一个或一组方案,达成收益最高、用时最少、成本最低等目标,这类问题就是最优化问题中的组合优化问题。

俄罗斯方块其实就是一个动态的组合优化问题

01 常见的组合优化问题

除了日常生活,在工业领域,对组合优化问题的研究有着更加广泛的应用意义,涉及交通运输、信息技术、经济管理、工业工程、通讯网络等诸多领域,这里我们仅讨论最常见的离散型组合优化问题。

尽管行业各有不同,但万变不离其宗,经典的组合优化基本模式问题,按照优化操作的不同,基本上可以分为四大类:选择问题,分配问题,排序问题和混合问题。在实际的应用场景中,通常会存在多因素、多操作模式的情况,例如往往既需要选择又需要排序,因此混合问题是最为常见的一类现实问题。

常见的组合优化问题

交通运输领域

网约车调度问题就是一个典型的选择(接单)-分配(乘客到司机)-排序(路径规划)相结合的混合型组合优化问题。在实际出行场景中,乘客需求、车辆分布、接驾距离、拥堵情况等因素,使得决策场景非常复杂,不仅需要同时满足快速高效地对司机和乘客进行实时、动态的调度,还需要能兼顾订单收益等一系列利润要求。

网络通信领域

资源分配是网络通信领域典型的组合优化问题之一,也是一个混合型问题。资源分配是指将有限的CPU、内存、带宽等资源分配给不同的用户或者任务需求,在如今网络通信需求高度多样化、复杂化的环境下,充分优化利用服务资源、维持通信网络高效率运作,是能够提升用户体验的非常重要的问题。

生产制造领域

生产制造领域存在大量组合优化问题。比如在现代大规模制造业中,多品种、小批量的个性化消费需求正在取代单一品种、大批量的规模化生产,由于生产和供应链的复杂性,如何用更少的资源、更短的时间、更少的库存,做出更多的产品,成为排产过程中需要面对的组合优化问题之一。

金融投资领域

金融投资的组合优化问题一直是投资者关心的问题之一。在现代金融市场上,投资者想获取较高收益同时又避免过高风险,就需要将其所有的资产按合适的比例分别投放到不同的证券市场及产品上,以实现某一时间段内的期望收益最大化。“不要把鸡蛋放在同一个篮子里”就是投资组合优化问题中对“风险最小化”指标最朴素的一条启发式规则。

02 传统组合优化问题的求解方法

尽管现实生产生活中的组合优化问题往往规模大、约束复杂、目标多样,但如果能够对此类问题实现高效求解,则可以做到不追加额外成本的情况下从“决策策略”上进一步提高收益,这使得组合优化理论与算法在学界和工业界的不断研究中得到了发展,目前主流的组合优化应用求解方法主要包括以下三类:

精确算法:以分支定界法为代表,理论上能够获得问题的精确最优解,通常会和特殊设计的启发式方法结合使用来降低求解的时间复杂度,是大部分求解器的最基本方法。这类方法缺陷是当问题规模扩大时,算法将消耗巨大的计算量,难以求解大规模问题。启发式算法:基于为场景特殊设计的规则进行优化操作,可以在远低于多项式时间内给出问题的近似最优解,能够对解的质量提供一定范围内的保证。缺陷是有些逻辑非常复杂的问题很难设计出有效的启发式规则,同时求解性能并不稳定。元启发式算法:以群搜索算法为代表,由于主要依赖适应度函数的设计和编码设计,不依赖求解过程的设计,因此对某些复杂问题的优化有奇效,可以得到问题的近似最优解,比如粒子群算法、模拟退火算法、进化算法、禁忌搜索、邻域搜索等。缺陷同样是大规模问题搜索时间慢,对最优解的探索带有随机性。

这三类求解算法虽然有各自的优势及适用场景,但它们的共同缺陷是当问题规模很大时,将会消耗巨大的计算量,或者根本无法在规定时间内给出足够最优性的解。而随着大规模组合优化问题在实际生产生活中的出现,这三类传统求解方法在求解大规模组合优化问题时已经心有余而力不足。

比如在生产制造领域的计划排产决策中,现代大规模制造业中的排产问题异常庞大。以PC销量全球第一的联想为例,在联想最大的PC制造基地——合肥联宝工厂的排产场景中:

“每天有两个班次,每班的平均订单数是5000以上,产品种类500-600种,共有4个厂区、43条不同设备配置的生产线可供选择。而考虑联宝工厂日常的排产规模,排产方案总共会有10的190次方的方案总数。”

排产问题与棋类游戏的博弈树复杂度对比

联宝工厂的一个工单的主要数据,包括机型、生产数量、交货期、物料备齐时间等。除此之外,排产规划还需要关于产能的信息,即生产线的数据,典型特征包括当前生产线能够生产哪些机型、生产不同机型的速度(每小时的台数,由设备和人员的差异决定)、生产线开线时间等等。在以上的问题描述下,这就是一个大规模、多约束、多指标的优化问题。面对如此复杂的排产问题,传统制造业在以往都是通过人工排产,联宝工厂在进行人工排产时,每天耗时长达6小时,而且排产的合理性和准确率很难保证。

联宝工厂正在进行智能化升级,对排产时间有着近乎苛刻的要求:15分钟以内完成推送排程结果。考虑前后数据处理和报表生成的时间,只有不到10分钟的时间就要完成求解,如果交给组合优化的求解算法来解决,当前的主流方法无一例外不能够胜任这项任务,因此在技术上这是一个相当大的挑战。

03 基于深度强化学习的组合优化方法

近年来随着深度强化学习技术的发展,其在围棋、机器人等领域展现出强大的学习能力与决策能力,不仅在特定领域超过了人类专家水平,甚至有实现通用人工智能(AGI)的潜力,因此人们开始使用深度强化学习技术来进行求解组合优化问题的探索。这也使得基于深度强化学习的组合优化方法成为近年来的研究热点,涌现出了一系列相关研究和案例。因此联想的研究人员把视野扩充到传统运筹优化方法的领域之外,考虑基于深度强化学习技术进行大规模生产排程问题的高效求解。

建立排产问题模型

对于排产问题建模来说,实际上是将一个一个的工单进行排序,然后再一个接一个地放在生产线合适位置的过程,也就是一个把无序序列变成有序序列的问题。这样的建模方式,在传统的运筹优化领域中,叫做分配模型,是一种非常低效率的建模方式。但是,由于机器学习方法解决问题的方法本身就与传统方法不同,因此分配模型反而是一种另辟蹊径的解决思路。

如果利用深度神经网络作为决策映射模型,其中一种方案就是序列到序列的求解方法。研究人员设计了一种序列到序列的排产AI,有这样的一种结构:首先这个AI模型的输入是两部分信息:其一是工艺数据、生产日历、工单数据和设备数据等排产信息,其二是没有顺序的工单序列及其相应的信息特征。AI模型在收到这些信息之后,能够把工单的次序重新排列,并在工单中间插入一些表示切换生产线的标识,这样就可以完全地表达各条生产线上各个工单的完整排程,实现同时完成前面提到的工单在哪条生产线上生产、生产线上的工单次序如何确定这两步决策。

序列到序列排产模型的输入-输出关系

AI模型-Pointer Network(指针网络)

研究人员采用的AI模型是一种叫做指针网络(Pointer Network)的深度学习网络,组合优化问题很多时候就是进⾏序列决策,而指针网络是⾮常适合求解组合优化问题的⼀种神经⽹络。其特点是:1)输入是一个无序序列;2)输出序列是输入序列序号的一个重排序;3)对同类问题具有规模泛化性。这个网络原版是用来求解车辆路径规划问题的,而排产问题与车辆路径规划问题在模型结构上具有相似性,如果把生产线类比为车辆,把工单类比为客户地点,排产决策实际上就是车辆路径规划的决策。

指针网络(Pointer Network)的工作原理

在求解排产优化问题时,研究人员用相似的方法来使用指针网络。因为指针网络支持问题规模的泛化性,其输出序列长度等于输入序列长度,因此不管输入有多少个工单,只要正向传入一遍网络就能得到相应的排产结果,没有任何额外的计算量,因此非常适合大规模的计算。经过实验,这种模型实际处理一个班次规模的排产问题(5000-10000工单,15条生产线)时,只需要10秒钟左右就能完成计算。但是接下来的重要问题是:任何网络都是要经过训练才能具备这个能力,那么网络如何训练?这个实际上是两个方面的问题:

1)因为真实规模的排产问题几乎不可能得到最优方案作为答案,一般来说不可能在10的190次方的个案里遍历出最好的然后当成范例,交给网络进行训练,因此是不能通过监督学习(Supervised learning)算法进行网络训练的;

2)联宝工厂每天有两个班次的数据,项目进行的两年最多只能收集700个数据,对于深度学习网络,这样的数据规模是远远无法支持训练的。

强化学习技术的应用

在这个时候,就需要强化学习(Reinforcement Learning,RL)来完成这个挑战了。需要强调的是,强化学习的概念并不是单指一类算法,是真实存在于现实生活中的一大类学习问题或任务:我们学会一件事,并不一定都是先要知道“该怎么做”,更多情况是通过在行为结束后的有限回报信号(reward)来驱动我们进行学习的。因此能够利用强化学习技术合理地解决问题,前提条件是这个问题本质上是不是属于强化学习问题。

与监督学习相比,强化学习不一定需要具体行为的标签信号,任何尝试性的行为都可以进行尝试,并通过正向回报信号来强化好的行为,负向的回报信号来弱化不好的行为,通过这样的机制实现自我学习。关于强化学习的成功案例,最著名的就是Google DeepMind研究小组的围棋AI项目AlphaGo,排产优化AI使用的就是与AlphaGo相同的训练模式,构建类似的强化学习问题进行求解。

智能排产与围棋AI在强化学习方法中的类比

实际获取的训练数据,支持深度学习的真实数据是不够的,但是排产问题恰好有一个特点就是容易仿真,由于生产过程不涉及动态性,无需求解复杂的微分方程组,因此通过对工单和生产线的各个参数进行分布拟合,就可以产生非常多的虚拟数据,然后在仿真的基础上进行虚拟排产交互,这样就可以产生任意多的数据训练深度网络。在实际的开发中,每一个训练轮次中用到的虚拟数据是10的6次方级别,并且在每一个轮次都重新生成数据,真实数据只在拟合分布时使用,反而并不直接参与到训练中来。于是研究人员借用这种非常奢侈的方法使用数据进行训练,保证了排产AI的最优性和泛化性。

对于种类多样、数量又多的约束条件,研究人员通过在指针网络的输出端设置mask机制,并以张量运算的方式来实现策略空间的约束。在指针网络的输出解码过程中,mask机制会根据当前状态,判断任意待排工单被安排在生产线的指定位置时,会不会触发约束,并用0-1掩码来控制工单是否能够被安排到生产线上。例如,用生产线剩余时间,减去工单中机器台数,再除以这条生产线的生产效率,就会得到这条生产线是否有足够的时间完成这个订单的判断。

如在下图的示例中,在mask机制和softmax函数的作用下,解码过程输出了0-5-1-0-0-3-2-0-4-0这一串序列,也就是说,工单5、1被安排在L1生产线上,工单3、4被安排在L3生产线上,而L4生产4号工单。通过设计mask来实现约束,使得输入特征的数量大大减少,因此数据规模也就减小了。联宝排产问题实际上只使用一块2080显卡的11G显存,就可以完成训练了。

Mask机制进行约束处理的原理

应用效果

AI排产算法在联宝工厂的部署完成后,从测试效果来看,排产耗时从每天6个小时降低到5分钟以内,首班次的产量提升23%,积压生产订单数量减少20%。同时当日订单完成数量提升到原来的3.5倍,圆满实现了既定目标。在之后的实际落地阶段, 研究人员为AI排产项目持续进行实用化功能升级:例如降低排产员人工调整排程结果的工作量、完成所有治具限制逻辑、与制造和质量部门完成KPI整合等,同时还增加了多厂区联合排产的业务功能。

04 总结与展望

由于许多组合优化问题属于NP-hard问题,目前传统的组合优化方法很难做到精确求解,受算法能力限制,只能够在有限范围内对求解速度、求解性能和功能实现等方面进行折衷和取舍。特别是在面对规模大、复杂度高的组合优化问题时,传统方法就很难在可接受时间内得出最优解。

基于深度强化学习来求解组合优化问题的方法,具有求解速度快、模型泛化能力强的优势,为组合优化问题的求解提供了一种新的思路,上面介绍的联宝工厂复杂排产场景中求解组合优化问题的例子,就是近年来基于深度强化学习的组合优化方法的应用案例之一。

数百万年来,一项项新技术和新发明的出现,使得人们的社会生活愈加复杂化,由此推动了运筹学的兴起和发展,组合优化方法作为运筹学的一部分,其相关研究理论、方法、模型也随之出现并得以快速发展及广泛应用。而在科技日新月异的当下,随着各类规模化、复杂化的组合优化问题的出现,基于深度强化学习的组合优化方法,不仅成为近年来研究热点之一,也将成为今后一个极具潜力的研究方向。

标签: #离散型优化问题例题及答案 #离散组合优化问题分析