客服系统的运筹学优化案例学习

今天我们讨论的客服系统配置优化问题从本质上来讲类似于运筹学里面常见的物流运输优化问题,我们将在这个客服优化问题上尝试几种运筹学里面有名的解决方法。

现在的情况是这样的:

你有一个呼叫中心,里面总共有1000号人。里面每个人都已经经过了不同系列的训练。这些训练的组合有ABCDEF

举个例子,系列A包含了训练1,2,3,4,5,6,而系列B包含了其他的一些训练内容,大家可以将各个组合理解为受过不同训练的客服小组。

各小组的人员数量分布如下:

A200

B200

C100

D100

E250

F150

同样,日常你接到的呼叫请求也可以分为不同的类型。这里我们将其分为4类,并称之为 XYZ W。每一个类型的呼叫会在客服接听前的IVR环节(即咨询业务请按1,查询话费请按2....”blablabla这个环节),你需要尽力将每一个客服对应上这些客服并提供服务。通过日常的数据收集你得到了下面各类型的比例分布情况:

X : 20%

Y : 30%

Z :  15%

W : 35%

呼叫数量每天都可能有比较大的变化,但整体各类型所占比例上基本保持不变。你发现各小组的客服人员帮助客户解决不同类型的问题时所花费时间是不相同的(可能是训练内容不同导致的,解决不同类型的问题需要的技巧也不同)。举个栗子,小组A的客服人员解决一个X型呼叫需要10分钟。下面是各小组处理各类问题所花费时间的分布表格:

好,那问题来了,你的目标是在最短的总时间内解决所有来自客服的呼叫任务。总的来说,你需要规划一个动态系统,它能够帮助你实时地分配各类呼叫任务给受过不同训练的各小组。但是,第一步,现在你得手动考虑下如何分配任务来最小化处理所有呼叫任务的总时间(最终目的是降低客服中心的成本)。

为了简化问题,我们假设一下手头上是一个平衡运输问题。

下面是当天各类呼叫的数量分布:

X : 200 calls

Y : 300 calls

Z : 150 calls

W : 350 calls

合计 : 1000 calls

这样,呼叫数和客服数总数上就是相等的。即使呼叫总数增加,我们目前的解决方案依然有效(因为比例不变)。

运输问题

这是一个经典的运输问题,用时间作为成本的替代属性。这里,我们希望通过做出合理的分配来最小化整体的成本。运输问题一般分为两步来解决:

  1. 找到最基本的可行方案;
  2. 寻找优化方案;

在这篇文章中,我主要聚焦在完成第一步,我将会把第二步留给读者(大家可以自己试试找出最佳的分配方案,并回复在留言里)。

寻找最基本的可行方案可以尝试下面三种方法:

  1. 西北角规则(最简单)
  2. 最低成本法
  3. 成本差额法

西北角规则

这个规则非常简单,我们只需要从表格的西北角(即第一行第一列)开始为西北角分配对应行与列的最小值,直到我们分配完所有客服为止。

首先,如下图所示:

在这一行,类型X的呼叫需求是200,我们将对应的200A组客服全部分配给类型A,这样的话,第一行和第一列便刚好满足了,因此,我们把第一行和第一列划掉,这时候,表格的西北角变成了第二行第二列。

类型Y需求是300B组只有200,全部填上,Y需求没有被满足,B组全部用完,因此划掉第二列,这时,西北角变成了第二行第三列。

依次计算,最终得到如下表格:

根据之前的叙述中各组处理各类型问题需要花费的对应时间表格,我们可以计算出当前分配方案的整体时间成本为 7550 分钟。这个便是常用的最基本优化方案,在后面的两种方法中我们会获得更好的结果。

最低成本法

在这个方法中,我们直接根据各组处理各类型问题需要花费的对应时间表格为各类呼叫需求分配处理该类型需求最快的小组去处理。

上面是各组处理各类型问题需要花费的对应时间表格,根据这个表格中的数据,我们发现解决X类呼叫最快的小组是D组,那么我们将D组全部分配给X类呼叫,

D组人数不够,我们发现第二快的是F组,所以我们把F组其中的100人也分配给X型。依次计算,可以得到如下的分配方案:

这种方案的总时间成本现在已经降到了 3900 分钟,几乎只有第一种方案的一半。

成本差额法

这个方法采用最大差额成本(即利用每行或列中最小成本与第二小成本之间的差额选最大)优先分配的原则进行分配。下面是我们的成本差额表:

我们发现差额最大的一项是D组,因此我们立刻把D组优先对应的最小值所在行。最后,我们可以得到如下表格:

这里总时间成本是4400,看起来并不比上一种方法好。

大家一定要记住,就像机器学习算法一样,这里并不保证哪一个算法会在所有问题中是最佳的,现实情况复杂,不同场景不同目的都对方案的选择都有很大的影响。

思考

通过上面的介绍,我们已经叙述完了各种最基础的可行配置方案,同样的,其实还有很多种算法可以解决这个问题,比如:Stepping stone, MODI等等。

然而,我希望你可以试试使用 单纯形法( simplex 优化)去找到最终的方案。当然你也可以再看看有没有其他的方法。

如果你找到了这个问题的最终解决方案,我希望你可以在这篇文章下面留言,说说你的方法以及优化结果。

结语

运输问题已经被广泛的使用于运筹学中,但很少有人在分析过程中使用。然而,我看到很多分析问题其实都可以转化成类似的运输问题。我写这篇文章的动机是为了让大家意识到这些运筹学的工具是多么的强大。

同样,如果你在运筹学的应用领域一块有自己的看法,我希望你也可以在下面的留言中进行叙述。

英文原文:https://www.analyticsvidhya.com/blog/2016/06/operations-analytics-case-study-level-hard/

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: