【资源调度】2-如何解决资源调度问题?

导读:本期是全网最全【资源调度】系列推文的第2期(共50期左右)。上期我们在《何为调度?》中,对调度的定义与作用、计划与调度的关系、调度问题的拆解做了详细介绍。从本期开始,我们选择【客服调度】场景作为【资源调度】问题的具象化代表,为大家展开后续一系列推文。本期将为大家详细介绍 【客服调度】的业务背景、问题抽象、技术路径和解决方案等内容。


作者1:张哲铭,某互联网大厂算法专家
作者2:向杜兵,某制造业龙头算法专家


大家好!我们是IndustryOR团队,致力于分享业界落地的OR+AI技术。欢迎关注微信公众号/知乎/CSDN【运筹匠心】

诚邀大家 【加入粉丝群】,群里经常分享硬核内容,且大佬多多,说不定你未来的leader就在其中!【加群方式附在文章结尾】~~

本篇文章共分为5个部分,依次为:
01 业务背景
02 问题抽象
03 技术路径
04 解决方案
05 小结


01 业务背景

当今的企业普遍面临客户服务的挑战,特别是在高度竞争和不断变化的市场环境下。为了提供卓越的客户体验和满意度,有效的客服调度成为关键。随着业务规模的由小到大,客服调度技术也随之由易到难。对于一些超大型toC企业,可以说客服调度技术的成熟与否直接影响了其业务发展,甚至决定企业的生死存亡。


02 问题抽象

1)问题描述

在客服调度场景中,一个客户的需求从产生到满足的业务流程可被拆解为以下4步:

  • 请求发起:客户通过电话咨询、工单填报等方式向调度系统发出请求,希望自身的某些需求能被满足。
  • 调度决策:调度系统或通过人工、或通过规则、或通过算法为客户请求分配最合适的客服人员。
  • 需求履约:客服人员为客户提供服务,直至用户需求被满足。
  • 用户反馈:客户对客服的服务进行评价反馈。

由于客户请求随时随地都有可能产生,因此客服调度场景的业务流程就是在时间上连续且并行的重复这个过程。

2)调度本质

我们在《何为调度?》的中已经为【资源调度】问题的本质做出了定义,即:调度问题的本质就是求解供给和需求在时空上的最优匹配,【客服调度】问题也是如此。

  • 供给方面:客服调度场景中的供给通常是指提供服务的人,如:接线员、售后专家、家政阿姨、机场地勤等服务人员。客服人员通常具备用户需要的一些职业技能,以便解决客户需求的问题,同时同一行业不同经验的人往往具有不同的技能熟练度

  • 需求方面:客服调度场景中的需求一般指是用户的需求,通常以任务的形式出现,如:接线任务、售后任务、保洁任务、地勤任务等。任务通常具有任务类型、最早/最晚开始(结束)时刻、任务时长等属性,需要具有匹配技能的人去执行

  • 匹配方面:客服调度一般是指人去完成任务,即服务客户。线上场景的业务重点关注人和任务在时间上的最优匹配,如:接线、售后咨询等场景;线上场景的业务需同时关注人和任务在时间和空间上的最优匹配,如:上门保洁、地勤保障等场景

3)调度目标

最优匹配是定性的概念,需要调度目标的方式定量表示。场景不同,调度目标也有很大不同,我们可以将调度目标归纳为以下5类:

  • (系统)成本型指标:周期内(年/月/周/日),最少用工人数、最少资源消耗等;
  • (系统)效率型指标:周期内(年/月/周/日),最大工时利用率、最短完工时间、最大服务任务数、最快响应时间、最快服务时间等;
  • (客户)体验型指标:周期内(年/月/周/日),最高客户满意度、最少投诉率等;
  • (客服)公平型指标:周期内(年/月/周/日),服务时长公平、休息天数公平、早晚班公平、服务任务数公平、服务任务难度公平、薪资水平公平等;
  • (系统)安全型指标:周期内(年/月/周/日),最高系统可用率、最低系统故障率等(这一部分属于调度系统稳健性方面的内容,与调度算法关系不大);

小到几乎所有的调度问题,大到整个社会的治理问题,都是紧紧围绕 “如何平衡成本、效率、体验、公平、安全等多目标之间的关系” 而展开的。

4)调度规则

调度需要在一定的业务规则下进行。与调度目标类似,尽管不同场景下的调度规则千差万别,但我们也可以将其归纳为以下4类:

  • 数值类规则:周期内(年/月/周/日),在岗时长上下限、服务时长/任务数上下限、休息天数上下限、特种任务服务时长/次数上下限等
  • 时间类规则:用餐时间窗、间休时间窗、请假日等
  • 空间类规则:任务间地点衔接、人与任务地点匹配、人随任务空间位移相关要求等
  • 技能类规则
    • 匹配类规则:人与任务之间的技能匹配,即具备某些技能的人才能服务特定的任务。
    • 搭配类规则:人与人之间的技能搭配,即服务某些特定任务需要不同技能的人相互配合。

03 技术路线

实际生产中的客户调度问题通常属于NP-Hard问题,其需求(甚至是供给)一般呈现强随机性特征,其核心的矛盾是:问题的复杂性与调度的实时性之间的矛盾,其落地技术大致需要经历以下迭代过程:

  • 业务初期:这个阶段业务刚开始起步试点,业务规模小且复杂程度低,粗放式管理即可满足当时的发展需求,最紧迫的任务是基于人工规则实现业务的自动化运转,在此之上能有些许的OR技术应用即可。
  • 业务发展期:随着业务的扩张,业务精细化管理的需求逐渐显露出来,OR相关的技术和人员储备也跟了上来。此时,便是传统OR技术大显身手的时候。但这个时期由于信息化、数字化基建设施尚未建设完成,导致数据积累不足,还无法采用数据驱动的方法解决问题。
  • 业务成熟期:随着业务数据的不断积累以及数据治理能力的不断提升,业务被海量的数据精准量化,数据驱动的智能决策技术开始逐步应用,该阶段会融合OR、ML、DL、RL等各类算法技术解决该问题。

因此,我们【客服调度】系列推文的内容也将围绕上图的技术路径展开,力争还原整个技术路径的发展。


04 解决方案

1)方案设计

由于没有真实业务场景,且人手有限,因此整个解决方案不会以还原线上系统为目标,而是紧紧围绕我们最关注的调度算法展开。除了讲解最核心的调度算法外,我们还将讲解调度衍生问题、指标检验系统以及仿真系统等内容,方案图如下:

下面分模块介绍一下各模块及其之间的关系:

  • 仿真系统模块
    • 数据仿真模块:主要负责生成历史数据和实时数据,历史数据用于调度算法迭代测试,实时数据用于模拟真实调度场景,为调度仿真提供输入。
    • 调度仿真模块:只进行数据仿真,不进行物理世界仿真(成本太高,也没必要)。模拟真实调度场景,调度算法运行在仿真系统中,以便于对比不同版本算法间的效果。
  • 调度算法模块
    • 静态问题求解算法模块:这是整个调度算法模块中最重要的部分。尽管从整体上看,调度问题是实时的动态问题,但从局部上看(每一个调度决策的时间段内),调度问题是静态的,也就是说求解动态的实时调度问题可以看成是一连串静态调度问题的序列决策过程,上个时间段的调度决策执行结果是下个时间段调度决策的输入,即整个调度决策过程可以看做是 马尔可夫决策过程(Markov Decision Process, MDP) 。因此静态问题求解算法效果好坏对线上实时调度的效果影响很大。该模块的作用主要就是指导实时调度算法设计,使其不断逼近最优调度。
    • 实时调度算法模块:该算法是真正在线上发挥作用的算法,其算法形态与静态问题求解算法相同。与静态问题求解算法更偏重于求解质量不同,实时调度算法更关注求解质量与求解效率之间的平衡。
  • 指标检验模块:该模块属于调度算法的外围模块,主要用于算法上线前业务指标和技术指标的检验。
  • 衍生问题模块:该模块包含的问题主要是调度算法依赖的上游问题,如:需求预测问题、资源规划问题、人员排班问题等。

2)推进节奏

为了便于读者理解,我们对各模块的内容进行的适当的编排,按照由浅入深、由易到难的建设节奏有序推进,详情如下:


05 小结

上篇(何为调度?):我们对调度的定义与作用、计划与调度的关系、调度问题的拆解做了详细介绍,使大家对【资源调度】问题有了一个整体的认识。

本篇(如何解决资源调度问题?):我们选择【客服调度】场景作为【资源调度】问题的具象化代表,为大家详细介绍了该问题的 业务背景、问题抽象、技术路径和解决方案等内容。

下篇(问题领域建模):我们将对【客服调度】进行领域建模,为后续的数据仿真的算法建设奠定基础。敬请期待~~~


06 加群方式

请加管理员微信进群:IndustryOR

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机(STC8H8K64U/STC8051U34K64)_RA8889_8080参考代码(v1.3)

硬件:STC8H8K64U/STC8051U34K64 RA8889开发板 硬件跳线变更为并口8080模式,PS00x,R143,R142不接,R141无关 8080接口电路连接图: 实物连接图: RA8889开发板外接MCU连接器之引脚定义&…

IMS架构中的注册与会话流程:RTPEngine集成及消息路由详解

目录 S-CSCF 调用 RTPengine 整体路由 注意 IMS 注册流程 和 IMS 会话流程 的区别 IMS注册流程 IMS会话流程(如INVITE请求) 这种设计的原因 P-CSCF 调用 RTPengine S-CSCF 调用 RTPengine 整体路由 UA a生成SDP offer,发送SIP INVITE请求(包含SDP offer)&…

核密度估计KDE和概率密度函数PDF(深入浅出)

目录 1. 和密度估计(KDE)核密度估计的基本原理核密度估计的公式核密度估计的应用Python中的KDE实现示例代码 结果解释解释结果 总结 2. 概率密度函数(PDF)概率密度函数(PDF)是怎么工作的:用图画…

RDNet实战:使用RDNet实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

ubuntu显卡驱动重启后失效的解决办法

写在前方:ubuntu系统,显卡重启后驱动失效,显卡不可用。网上冲浪之后得以有效解决,以下是解决方案 查看显卡nvidia-smi;驱动失效消息: (base) rootnode:~# nvidia-smi NVIDIA-SMI has failed because it c…

AI大模型走进汽车车机,智驾将是未来

车机里的AI大模型在汽车行业中的应用越来越广泛,主要体现在智能座舱和自动驾驶系统的深度融合上。通过将AI大模型应用于车机系统,可以实现更高智能化的人车交互体验。AI大模型作为人工智能发展的核心引擎,正在成为汽车智能化发展的关键之一。…

基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将FPGA仿真结果导入到matlab显示结果: 测试样本1 测试样本2 测试样本3 2.算法运行软件版本 vivado2019.2 …

MySQL配置数据库的连接命令

MySQL配置数据库连接命令 在MySQL中,配置数据库连接的命令涉及创建用户、授予权限、配置主从复制等多个方面。以下是常用的命令及其用途: 创建用户 创建一个新的数据库用户并为其设置密码: CREATE USER usernamehost IDENTIFIED BY passwo…

mysql中的存储过程

存储过程的作用:有助于提高应用程序的性能。存储过程可以不必发送多个冗长的SQL语句 废话不说多,直接实操 ##实现num的相加 delimiter $$ CREATE PROCEDURE test1 () begindeclare num int default 0; -- 声明变量,赋默认值为0select num20;end $$ delimiter ; …

计算机网络高频面试题

从输入URL到展现页面的全过程: 用户在浏览器中输入URL。浏览器解析URL,确定协议、主机名和路径。浏览器查找本地DNS缓存,如果没有找到,向DNS服务器发起查询请求。DNS服务器解析主机名,返回IP地址。浏览器使用IP地址建立…

Kafka配置SASL认证

Kafka加密 Kafka认证方式 在本博客中我们使用SASL/PLAIN的方式来进行Kafka加密 环境准备 Kafka集群环境 请参考之前的Kafka集群搭建 kafka-broker1kafka-broker2 集群配置SASL/PLAIN认证 用户校验 修改server.properties 让其支持Kafka的认证(每一个broker节点都需要修改这…

jail内部ubuntu apt升级失败问题解决

在FreeBSD jail 里安装启动Ubuntu jammy系统,每次装好执行jexec ubjammy sh进入Ubuntu系统后,执行apt update报错。 这个问题困惑了好久,突然有一天仔细去看报错信息,查看了(man 5 apt.conf) ,才搞定问题。简单来说就是…

MySQL 数据库(基础)- 函数

MySQL 数据库(基础)- 函数 介绍 函数 是指一段可以被另一段程序调用的程序或代码。也意味着,这一段程序或代码在 MySQL 中已经给我们提供了,我们需要做的就是在合适的业务场景调用对应的函数,完成对应的业务需求即可…

python的简单爬取

需要的第三方模块 requests winr打开命令行输入cmd 简单爬取的基本格式(爬取百度logo为例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回应 #保存到本地 with open(&…

中国物流信息软件系统(WMS等)行业概览,2027年将达到235.1亿元

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是《2023年中国物流信息软件系统行…

【Python】下载与安装

目录 一、 下载安装Python 1. 配置环境变量 2. 检查是否配置成功 一、 下载安装Python 在我上传的资源可以免费下载!!! https://download.csdn.net/download/m0_67830223/89536665?spm1001.2014.3001.5501https://download.csdn.net/dow…

浅谈后置处理器之JSON提取器

浅谈后置处理器之JSON提取器 JMeter 的 JSON 提取器(JSON Extractor)是一个强大的后置处理器,它允许用户从HTTP响应、数据库查询或其他类型的响应中提取JSON数据,并将这些数据存储为变量,以便在后续的请求中重用。这对…

Mojo AI编程语言(三)数据结构:高效数据处理

目录 1. Mojo AI编程语言简介 2. 数据结构在数据处理中的重要性 3. Mojo AI中的基础数据结构 3.1 数组 3.2 列表 3.3 字典 4. 高效数据结构的实现与优化 4.1 哈希表 4.2 树结构 4.3 图结构 5. 高效数据处理技术 5.1 并行处理 5.2 内存优化 5.3 数据压缩 6. 实战…

【Redis】哨兵(sentinel)

文章目录 一、哨兵是什么?二、 哨兵sentinel文件参数三、 模仿主机redis宕机四、哨兵运行流程和选举原理SDOWN主观下线ODOWN客观下线 五、 使用建议 以下是本篇文章正文内容 一、哨兵是什么? 哨兵巡查监控后台master主机是否故障,如果故障了…

js项目生产环境中移除 console

1、terser-webpack-plugin webpack 构建的项目中安装使用 安装: npm install terser-webpack-plugin --save-dev 配置 在webpack.config.js文件中 new TerserPlugin({terserOptions: {output: {comments: false, // 去除注释},warnings: false, // 去除黄色警告,co…