李 鋒,許 偉
(華南理工大學(xué) 工商管理學(xué)院, 廣東 廣州 510640)
隨著人口紅利的逐漸消失,中國經(jīng)濟(jì)增長逐漸面臨著勞動(dòng)力緊缺的問題。對于勞動(dòng)力密集型的傳統(tǒng)制造行業(yè)而言,招工難成為企業(yè)普遍面臨的困境,甚至成為企業(yè)生存與發(fā)展的瓶頸。以廣州市海珠區(qū)大塘村的紡織產(chǎn)業(yè)為例,即便是開出月薪1萬元的條件也難以招到熟練的制衣工人,2019年此處的產(chǎn)業(yè)集群面臨著迅速萎縮的尷尬局面。因此,如何通過合理調(diào)度企業(yè)的現(xiàn)有員工,在人員數(shù)量不增加的前提下滿足企業(yè)的用工需求,成為企業(yè)迫切需要解決的現(xiàn)實(shí)問題。同時(shí),多品種、小批量的產(chǎn)品生產(chǎn)特點(diǎn),以及資源調(diào)度問題混合整數(shù)規(guī)劃的計(jì)算復(fù)雜性(NP-Hard)天性,造成了當(dāng)前企業(yè)所面臨的人員調(diào)度問題非常復(fù)雜,難以求解。而市場需求的不確定性,特別是其隨機(jī)性難以采用傳統(tǒng)數(shù)學(xué)建模的方式建立其隨機(jī)分布函數(shù),使得資源調(diào)度問題難以建立其數(shù)學(xué)模型,模型求解更是無從下手。
然而,大數(shù)據(jù)技術(shù)的不斷發(fā)展,“數(shù)據(jù)驅(qū)動(dòng)+模型驅(qū)動(dòng)”逐漸成為此類復(fù)雜應(yīng)用問題的分析和求解范式。“數(shù)據(jù)驅(qū)動(dòng)+”能夠解決調(diào)度前端產(chǎn)品需求不確定性引發(fā)的需求建模困難問題,即并不強(qiáng)求于建立隨機(jī)因素的分布密度函數(shù)或累計(jì)分布函數(shù)(數(shù)學(xué)表達(dá)式);而“模型驅(qū)動(dòng)”能夠?qū)崿F(xiàn)應(yīng)用問題的原始數(shù)據(jù),而不是簡化后的數(shù)學(xué)模型,與現(xiàn)有求解算法和算法引擎的無縫銜接。因此,大數(shù)據(jù)推動(dòng)下的“數(shù)據(jù)驅(qū)動(dòng)+”研究范式逐漸替代傳統(tǒng)數(shù)學(xué)建模方法。本文也正是在此市場牽引、技術(shù)推動(dòng)下,以具體制造企業(yè)的維修人員調(diào)度問題為研究對象,探索“數(shù)據(jù)驅(qū)動(dòng)+”研究范式下的理論、方法和工具。
資源調(diào)度問題是運(yùn)營管理領(lǐng)域中的經(jīng)典優(yōu)化問題。由于此類問題中資源(如員工、機(jī)器、設(shè)備等)通常要求取整數(shù)值,構(gòu)建出的模型通常是NP-Hard問題,即問題求解的時(shí)間隨著問題規(guī)模的增加呈現(xiàn)指數(shù)型增長。因此,各種啟發(fā)式算法、智能優(yōu)化算法被提出用于求解各種具體資源調(diào)度問題。其中,代表性研究工作包括:劉振元等[1]將啟發(fā)式算法引入到分支定界法中,用于求解多技能資源時(shí)間窗約束下的人員調(diào)度問題;張揚(yáng)等[2]設(shè)計(jì)了多條規(guī)則,采用啟發(fā)式算法求解訂單隨機(jī)調(diào)度問題;袁彪等[3-4]在分支定界算法基礎(chǔ)上采用分支定價(jià)算法求解家庭護(hù)理問題中的人員調(diào)度問題。然而,更多的求解算法是基于智能優(yōu)化算法。例如,遺傳算法[5-6]、啟發(fā)式算法與遺傳算法相結(jié)合的混合算法[7-8]、候鳥優(yōu)化算法[9]、模擬退火算法[10]、粒子群算法[11-12]、離散煙花算法[13]與螢火蟲膜算法[14]等。
將資源調(diào)度問題建模為一個(gè)混合整數(shù)規(guī)劃問題,采用以上智能優(yōu)化算法進(jìn)行求解,能夠?qū)崿F(xiàn)問題求解。但是,隨著研究的深入,現(xiàn)實(shí)問題中的不確定性和隨機(jī)性因素導(dǎo)致問題的數(shù)學(xué)建模成為研究工作的瓶頸:問題中的隨機(jī)性因素通常難以用一些常見的隨機(jī)模型進(jìn)行擬合。如果刻意為了數(shù)學(xué)建模而對研究問題進(jìn)行簡化,必然導(dǎo)致模型脫離了實(shí)際,模型的解釋力度下降。例如,張揚(yáng)等[2]將訂單的生產(chǎn)時(shí)間和服務(wù)時(shí)間都分別簡化為一個(gè)正態(tài)分布隨機(jī)量,袁彪等[4]將服務(wù)時(shí)間簡化為正態(tài)分布隨機(jī)量,陳蓉等[5]將員工狀態(tài)刻畫為一個(gè)簡單的馬爾可夫鏈。而李磊等[12]則指出常見的理論模型難以刻畫應(yīng)用問題中的非線性和隨機(jī)性,必須采用更加“復(fù)雜”的刻畫模型。
隨著大數(shù)據(jù)技術(shù)的不斷發(fā)展和成熟,“數(shù)據(jù)驅(qū)動(dòng)+模型驅(qū)動(dòng)”的研究范式逐漸興起[15]。在此研究范式下,應(yīng)用問題中難以采用數(shù)學(xué)建模的部分直接用原始數(shù)據(jù)進(jìn)行分析。因此,“數(shù)據(jù)驅(qū)動(dòng)+”是對傳統(tǒng)“模型驅(qū)動(dòng)”研究范式的一個(gè)重要且有益的補(bǔ)充。但是,由于“數(shù)據(jù)驅(qū)動(dòng)+”的研究范式對該領(lǐng)域?qū)<姨岢隽诵碌囊?,目前對于此研究范式的?yīng)用主要集中在背景相對簡單的場景。例如,許鵬程等[16]對網(wǎng)上用戶的用戶畫像建模;宋小康等[17]對網(wǎng)絡(luò)上信息(情報(bào))的文本進(jìn)行分析,對信息進(jìn)行存儲;尹忠博等[18]對科技類電子文獻(xiàn)的文本進(jìn)行分析等。這些應(yīng)用領(lǐng)域即便在“數(shù)據(jù)驅(qū)動(dòng)+”研究范式尚未提出之前就采取了類似的數(shù)據(jù)分析范式[19-20]。對于一些更加復(fù)雜的應(yīng)用領(lǐng)域,“數(shù)據(jù)驅(qū)動(dòng)+”研究范式的應(yīng)用相對較少。其中,代表性工作包括:陳彬等[21]對社會問題的數(shù)據(jù)驅(qū)動(dòng)和仿真模型驅(qū)動(dòng)進(jìn)行了論述何康樂[22]對網(wǎng)絡(luò)安全領(lǐng)域的網(wǎng)絡(luò)節(jié)點(diǎn)采取了數(shù)據(jù)驅(qū)動(dòng)的在線篩選李勝會等[23]對基本醫(yī)療保險(xiǎn)領(lǐng)域中的問題進(jìn)行了分析等。本文鑒于研究問題的復(fù)雜性,探索“數(shù)據(jù)驅(qū)動(dòng)+”研究范式在運(yùn)營管理領(lǐng)域中的經(jīng)典問題應(yīng)用。
本文以一個(gè)代工制造企業(yè)的維修部門為例,研究該維修部門的維修工人的調(diào)度問題。從企業(yè)信息系統(tǒng)中獲取維修部門的工作記錄。整理后數(shù)據(jù)字段如表1所示。
表1 數(shù)據(jù)字段及含義對照表
表中,故障類型(C1)分為機(jī)械故障和電氣故障兩類;是否停機(jī)(C2)表明了故障對設(shè)備運(yùn)行的影響;故障設(shè)備銘牌(C4)是發(fā)生故障設(shè)備的唯一標(biāo)識,其分屬不同的故障設(shè)備類型(C3);故障維修時(shí)間(C5)和故障解除時(shí)間(C7)記錄了故障的實(shí)際維修時(shí)間。
原始記錄數(shù)合計(jì)5 969條,時(shí)間跨度一年(2017年9月27日至2018年9月26日)。從數(shù)據(jù)中剔除重復(fù)的設(shè)備故障維修記錄,并剔除維修工人工號(C6)為空的記錄數(shù),最終得到一年統(tǒng)計(jì)數(shù)據(jù)如表2所示。
表2 預(yù)處理后維修記錄的匯總統(tǒng)計(jì)
對企業(yè)的維修員工進(jìn)行工作量統(tǒng)計(jì),發(fā)現(xiàn)30名員工中,部分維修員工全年的維修時(shí)間不超過100小時(shí)。過濾這些工作時(shí)間較短的員工后,對維修時(shí)間超過100小時(shí)的維修員工(人數(shù)為16人)進(jìn)行每月和全年的工作時(shí)間統(tǒng)計(jì)。統(tǒng)計(jì)的結(jié)果如圖1所示。
(a)部分員工每月工作時(shí)間統(tǒng)計(jì)
(b)部分員工全年工作時(shí)間統(tǒng)計(jì)
從圖1可以看出,企業(yè)維修部門的16名員工實(shí)際工作時(shí)間差異較大,工作沒有實(shí)現(xiàn)平均分配。因此,需要對維修部門的員工調(diào)度方案實(shí)施優(yōu)化。
為了實(shí)現(xiàn)對員工調(diào)度管理,需要對設(shè)備維修的“需求”進(jìn)行分析和建模,即對設(shè)備維修任務(wù)進(jìn)行分析。對設(shè)備維修任務(wù)的數(shù)量和工時(shí)需求進(jìn)行統(tǒng)計(jì)分析,如圖2所示。
(a)每日需要維修的設(shè)備數(shù)量
(b)每日維修需要的工時(shí)
對這兩組數(shù)據(jù)采用常見的隨機(jī)分布模型進(jìn)行擬合。結(jié)果表明,每天設(shè)備維修的所需工時(shí)不服從常見的分布形式,成為數(shù)學(xué)建模分析的瓶頸。
繼續(xù)根據(jù)維修記錄中的故障類型對每天維修所需工時(shí)進(jìn)行分類統(tǒng)計(jì),具體如表3所示。
表3 每日維修任務(wù)的分類統(tǒng)計(jì)
表3中無論是機(jī)械故障還是電氣故障維修所需工時(shí)差異性較大,并且兩類故障的日統(tǒng)計(jì)也無法采用常見的隨機(jī)分布函數(shù)擬合,每日維修任務(wù)的分類統(tǒng)計(jì)直方圖如圖3所示。
(a)每日機(jī)械故障維修需要的工時(shí)
(b)每日電氣故障維修需要的工時(shí)
如果按照自然月進(jìn)行維修工時(shí)統(tǒng)計(jì),得到的時(shí)間序列如圖4所示。
(a)每月機(jī)械故障維修需要的工時(shí)
(b)每月電氣故障維修需要的工時(shí)
從以上對機(jī)器故障的分類和分時(shí)統(tǒng)計(jì)可以發(fā)現(xiàn),維修部門每個(gè)月的工時(shí)需求基本穩(wěn)定。但是也存在少數(shù)幾個(gè)月工時(shí)需求低于平均值50%,或高于平均值50%的現(xiàn)象。這個(gè)結(jié)果說明工廠設(shè)備維修員工的人數(shù)可以較好地被預(yù)測。但是,這些員工可能需要通過加班的方式應(yīng)對部分工時(shí)需求較多的情況。
進(jìn)而,對維修記錄中維修總工時(shí)最長的設(shè)備進(jìn)行維修時(shí)間統(tǒng)計(jì),得到排名前4的設(shè)備單次維修時(shí)間的分布情況,如圖5所示。
(a)排名第1位的設(shè)備54#
(b)排名第2位的設(shè)備19#
(c)排名第3位的設(shè)備24#
(d)排名第4位的設(shè)備10#
從圖5可以看出,即使是同一類設(shè)備,單次維修的時(shí)間差異也較大。為了檢驗(yàn)維修時(shí)間的長短是否與故障類型相關(guān),我們以排名第1位的設(shè)備54#為例,進(jìn)行分類統(tǒng)計(jì)。設(shè)備54#維修時(shí)間的分類統(tǒng)計(jì)如圖6所示。
圖6中,設(shè)備維修時(shí)間與故障類型無關(guān),維修時(shí)間都呈現(xiàn)比較復(fù)雜的分布形式。
根據(jù)以上數(shù)據(jù)統(tǒng)計(jì)和分析,可以得到以下結(jié)論:企業(yè)維修部門的每日維修需求數(shù)量和工時(shí)呈現(xiàn)較強(qiáng)的隨機(jī)性,差異性較大;每日維修需求無論是維修數(shù)量(故障數(shù)量),還是維修工時(shí)都難以用常規(guī)的數(shù)學(xué)模型進(jìn)行擬合;即使是同一類設(shè)備,無論是機(jī)械故障還是電氣故障,其維修時(shí)間同樣難以用常規(guī)的數(shù)學(xué)模型進(jìn)行擬合。
鑒于維修需求數(shù)學(xué)建模遇到的實(shí)際困難,下面將以“數(shù)據(jù)驅(qū)動(dòng)+”的研究范式,即根據(jù)維修需求原始數(shù)據(jù)進(jìn)行人員調(diào)度問題求解。
(a)機(jī)械、停機(jī)故障
(b)機(jī)械、非停機(jī)故障
(c)電氣、停機(jī)故障
(d)電氣、非停機(jī)故障
根據(jù)當(dāng)前企業(yè)一線員工的工作安排,可以知道部門每位員工:每周工作6天,每天正常工作8小時(shí);每位每月總加班工時(shí)不超過20小時(shí)。據(jù)此,以月為基本單位,構(gòu)建求解最優(yōu)維修員工數(shù)量和調(diào)度的數(shù)學(xué)模型。以2017年11月為例,定義周一至周日每天休息的員工數(shù)量分別為xi(i=1,2,…,7),每天員工的總加班工時(shí)為yj(j=1,2,…,30),每天的實(shí)際維修工時(shí)需求為dj(j=1,2,…,30),目標(biāo)為總員工人數(shù)Z最小:
(1)
用AMPL軟件并調(diào)用混合整數(shù)規(guī)劃C-PLEX求解引擎,求解問題[24]363-369。得到最優(yōu)解為:
(2)
在這個(gè)月的30天中,有23天員工的實(shí)際工作時(shí)間要低于8個(gè)小時(shí),7天員工需要加班。2017年11月最優(yōu)的維修員工的實(shí)際工作情況如圖7所示。
(a)28名員工正常工作時(shí)間和維修任務(wù)工時(shí)需求
(b)28名員工加班情況
作為對比,如果不加班,僅以員工的正常工作時(shí)間滿足維修工時(shí)需求(yj=0.00,j=1,2,…,30),在式(1)基礎(chǔ)上構(gòu)建的問題模型如下,
(3)
求解得到的最優(yōu)解為:
X*=[0, 5, 0, 0, 15, 26, 0],Z*=46
(4)
此計(jì)算結(jié)果遠(yuǎn)遠(yuǎn)高于最佳的人員配置,即企業(yè)按照維修工時(shí)峰值配置的員工數(shù)量,必然導(dǎo)致人力資源的浪費(fèi)。
由于員工加班總時(shí)長為530.30小時(shí),考慮到加班工資是正常工作時(shí)間工資的1.50倍,如果多招1名員工(1名員工能夠工作25天,即工作200個(gè)正常工時(shí)),嘗試以29名員工滿足工作需求。此時(shí),以員工的總加班時(shí)間最短為優(yōu)化目標(biāo),得到調(diào)整后的問題模型如下:
(5)
求解得到的最優(yōu)解為:
(6)
對比(6)與(2)的計(jì)算結(jié)果,可以知道增加1名員工只能降低加班時(shí)間52.53小時(shí)(530.30-477.77)。如果考慮加班成本,可以知道雇傭第29名員工,維修部門的成本實(shí)際增加了253.82%[200÷(52.53×1.5)]。
(7)
式(7)中,為了完成2017—2018年的維修任務(wù),最為合理的員工數(shù)量為29個(gè)人(max{Z*(k)})。因此,設(shè)定員工數(shù)量為29人,以式(5)為模板重新計(jì)算每月的加班時(shí)間,最終得到加班時(shí)間為:
(8)
假定維修部門的員工分為兩類,一類員工僅能夠完成機(jī)械故障的修理工作,另一類員工也僅能夠完成電氣故障的修理工作(在此設(shè)定下,原模型中維修員工為“全能型”員工,既可以維修機(jī)械故障,又可以維修電氣故障)。因此,將每天的維修任務(wù)按照機(jī)械故障和電氣故障進(jìn)行分類,然后重新計(jì)算所需的員工數(shù)量。
計(jì)算得到機(jī)械故障維修員工的人數(shù)和加班情況如下:
(9)
同樣,計(jì)算得到電氣故障維修員工的人數(shù)和加班情況為:
(10)
將機(jī)械故障維修人員和電氣故障維修人員的數(shù)量加在一起,可以發(fā)現(xiàn)當(dāng)員工的專業(yè)技能有限時(shí),企業(yè)的用工和加班工時(shí)都在增加。為滿足全年的機(jī)械故障維修需求,需要24名機(jī)械故障維修人員。同樣,為滿足全年的電氣故障維修需求,需要12名電氣故障維修人員。
以24名機(jī)械故障維修人員和12名電氣故障維修人員,重新計(jì)算每月的加班工時(shí),得到結(jié)果如下:
(11)
(12)
將式(11)和(12)的結(jié)果與式(8)的結(jié)果對比,可以知道,專業(yè)分工及人數(shù)增加后,加班工時(shí)略有減少(2 559.65=2 014.10+545.55),但是加班狀況并未實(shí)質(zhì)解決。
從前文對2017年11月的員工調(diào)度分析中,可以知道通過增加員工數(shù)量來減少加班工時(shí),其成本更高。因此,設(shè)定維修部門的維修員工具有不同的專業(yè)技能,但是工資水平有所差異。在此差異下,研究工資水平對人員調(diào)度的影響。
為了簡化計(jì)算,本文設(shè)定每位員工的每月工資以200工時(shí)計(jì)算。并且,假定機(jī)械故障維修人員的工資水平為1.00,電氣故障維修人員的工資水平為k1(0.70≤k1≤100),而原模型中“全能型”維修人員的工資水平為k2(0.70≤k2≤100)。
根據(jù)式(8)(11)(12)的結(jié)果,計(jì)算原模型全年的員工成本和專業(yè)分工后全年的員工成本的差值。該差值大于0,表明原模型成本更低,反之則專業(yè)分工的成本更低。具體結(jié)果如圖8所示。
(a)電氣故障維修人員工資系數(shù)k1對調(diào)度方案的影響
(b)“全能型”維修人員工資系數(shù)k2對調(diào)度方案的影響
如圖8所示,當(dāng)“全能型”維修人員的工資水平k2顯著高于電氣故障維修人員的工資水平時(shí),根據(jù)故障類型調(diào)度不同維修人員,運(yùn)營總成本會更低(圖8(b)中,成本差值小于0);如果電氣故障維修人員的工資水平顯著低于機(jī)械故障維修人員的工資水平時(shí),根據(jù)故障類型調(diào)度不同維修人員,運(yùn)營總成本會更低(圖8(a)中,成本差值小于0)。
為了進(jìn)一步檢驗(yàn)“數(shù)據(jù)驅(qū)動(dòng)”對人員調(diào)度問題的影響,繼續(xù)以2017年11月的數(shù)據(jù)為例,對比“模型驅(qū)動(dòng)”與“數(shù)據(jù)驅(qū)動(dòng)”的差異性。
假定以星期為單位,統(tǒng)計(jì)得到一個(gè)星期中每天的設(shè)備維修工時(shí)需求的平均值。接著,以此平均值作為“模型驅(qū)動(dòng)”下人員調(diào)度問題中需求數(shù)據(jù),并以此構(gòu)建問題模型(模型中假定一個(gè)月只有4個(gè)星期,因此員工的最多加班工時(shí)為5小時(shí))。
對此問題進(jìn)行求解,得到問題的解如下:
(14)
將此結(jié)果與式(2)所示的實(shí)際結(jié)果對比會發(fā)現(xiàn):如果忽略實(shí)際問題中的波動(dòng)性因素,工廠在人員配置上一定會出現(xiàn)短缺的情況。
如果將此人員配置應(yīng)用到2017年11月,得到實(shí)際情況如下:
(a)供需情況對比
(b)供需差異對比
從圖9中可以看出,在11月的30個(gè)工作日中,總共有10天維修能力不足,并且有3天維修能力的缺口接近或超過150小時(shí)。
通過對以上應(yīng)用問題的分析過程,明確了“數(shù)據(jù)驅(qū)動(dòng)+”研究范式下問題的研究思路:對研究問題的模型參數(shù)進(jìn)行數(shù)據(jù)分析和挖掘,嘗試發(fā)現(xiàn)數(shù)據(jù)的模式或數(shù)學(xué)模型;如果數(shù)據(jù)的數(shù)學(xué)模型能夠被建立,那么可采用數(shù)學(xué)模型刻畫該參數(shù);如果數(shù)據(jù)的數(shù)學(xué)模型難以建立,那么可采用原始數(shù)據(jù)刻畫該參數(shù);以模型和數(shù)據(jù)共同構(gòu)建應(yīng)用問題模型(數(shù)學(xué)),并對模型進(jìn)行求解。
以前文所示的對具體應(yīng)用問題的分析和求解,得出“數(shù)據(jù)驅(qū)動(dòng)+”研究范式的優(yōu)勢:能夠突破數(shù)學(xué)建模方法在面對復(fù)雜企業(yè)實(shí)際情況的應(yīng)用瓶頸(數(shù)學(xué)建模的困境),并實(shí)現(xiàn)問題的優(yōu)化求解;如果單獨(dú)以數(shù)學(xué)模型驅(qū)動(dòng)問題求解,必然導(dǎo)致實(shí)際問題中的不確定性/隨機(jī)性因素被忽視,最終導(dǎo)致研究問題的解并非最優(yōu)解;不僅能夠解決具體應(yīng)用問題,還可以從多個(gè)角度對問題進(jìn)行擴(kuò)展研究;通過大數(shù)據(jù)分析,能夠?qū)?yīng)用問題分解或整合,并進(jìn)行對比。
本文以一個(gè)企業(yè)維修部門的實(shí)際維修需求為例,通過數(shù)據(jù)分析確認(rèn)了傳統(tǒng)數(shù)學(xué)建模方法應(yīng)用上的困境。進(jìn)而采取“數(shù)據(jù)驅(qū)動(dòng)+”的研究范式,以數(shù)據(jù)驅(qū)動(dòng)克服數(shù)學(xué)建模無法解決的瓶頸,最終以模型驅(qū)動(dòng)實(shí)現(xiàn)問題求解。在此研究范式和理論框架下,不僅能夠?qū)崿F(xiàn)問題求解,還能夠用數(shù)據(jù)驅(qū)動(dòng)的研究方法,對問題深入挖掘,從而給出更加細(xì)致的管理啟示。