李雨情,潘超凡
(1. 西南交通大學(xué)制造業(yè)產(chǎn)業(yè)鏈協(xié)同與信息化支撐技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室,成都 611756;2. 西南石油大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,成都 610500)
隨著中國國民經(jīng)濟(jì)的快速發(fā)展,我國的汽車工業(yè)也得到了迅猛發(fā)展。據(jù)公安部統(tǒng)計(jì),2022 年全國機(jī)動(dòng)車保有量達(dá)4.17 億輛,其中汽車3.19 億輛[1]。伴隨著汽車保有量的增長,汽車的保養(yǎng)和維修需求也迎來高峰期。眾所周知,汽車配件是汽車售后市場獲取利潤的直接源泉。由于汽車配件種類繁多,需求呈多樣性,根據(jù)需求發(fā)生間斷程度的大小,一般將汽車配件分為兩類:連續(xù)性需求配件和非連續(xù)性需求配件[2]。面對這樣不確定的配件需求,制定合理的庫存決策是企業(yè)急需解決的重大問題,也是擴(kuò)大市場份額的重要支撐。本文根據(jù)配件的不同需求特性,通過深度強(qiáng)化學(xué)習(xí)算法研究汽車配件庫存決策問題。在現(xiàn)有研究的基礎(chǔ)上,本文的研究更貼合現(xiàn)實(shí),也為企業(yè)庫存決策提供了一定的依據(jù)。
強(qiáng)化學(xué)習(xí)(reinforcement learning,RL),是基于智能體與環(huán)境進(jìn)行交互,并從環(huán)境中獲得信息獎(jiǎng)賞并映射到動(dòng)作的一種學(xué)習(xí)方式,如圖1所示,其主要思想是根據(jù)系統(tǒng)當(dāng)前環(huán)境確定下一步?jīng)Q策應(yīng)采取的行動(dòng),行動(dòng)的結(jié)果是系統(tǒng)狀態(tài)發(fā)生轉(zhuǎn)移,而且根據(jù)行動(dòng)的后果產(chǎn)生一定的獎(jiǎng)勵(lì)評價(jià)決策的效果并進(jìn)行反饋,從而逐漸改進(jìn)決策方法[3]。RL 更接近于自然界生物學(xué)習(xí)的本質(zhì),因而在很多領(lǐng)域取得了成功的應(yīng)用。
圖1 強(qiáng)化學(xué)習(xí)基本結(jié)構(gòu)
隨著深度學(xué)習(xí)的興起,它與基于價(jià)值函數(shù)的RL算法結(jié)合產(chǎn)生了DQN[4]等深度強(qiáng)化學(xué)習(xí)算法[5]。而將深度學(xué)習(xí)與基于策略函數(shù)的RL結(jié)合,相繼產(chǎn)生了DDPG[6],PPO[7],TD3[8],SAC[9]等算法。
針對需求不確定的情況,目前大部分庫存決策研究方法通常分為兩步:首先建立需求預(yù)測模型得到預(yù)測的需求,其次設(shè)計(jì)算法求解待求問題的數(shù)學(xué)模型。這樣的研究方法需要依賴需求預(yù)測模型保證極佳的預(yù)測精度,難以考慮動(dòng)態(tài)及隨機(jī)因素[10]。
而基于強(qiáng)化學(xué)習(xí)算法的庫存決策研究不依賴高精度的需求預(yù)測模型,且可充分考慮庫存決策過程中的多階段序貫決策和不確定性。庫存決策是一個(gè)典型的多階段序貫決策問題,Stranieri 等[11]將需求表示為余弦函數(shù)來模擬季節(jié)性行為,通過實(shí)驗(yàn)比較VPG[12]、A3C[13]、PPO三種算法在兩階段供應(yīng)鏈庫存決策問題下的性能,最終得出PPO 更能適應(yīng)不同環(huán)境的結(jié)論,且PPO 的平均利潤也高于其他算法。畢文杰等[14]針對生鮮產(chǎn)品的易逝性提出了基于深度強(qiáng)化算法的生鮮產(chǎn)品聯(lián)合庫存控制與動(dòng)態(tài)定價(jià)方法,通過DQN、DDPG、Q-learning 等算法進(jìn)行對比實(shí)驗(yàn),結(jié)果表明基于DQN 算法的收益表現(xiàn)最佳。
綜上所述,考慮到產(chǎn)品需求復(fù)雜性的研究較少,而這是當(dāng)前企業(yè)面臨的現(xiàn)實(shí)問題。本文針對這些問題,基于深度強(qiáng)化學(xué)習(xí)來建模求解庫存決策問題,以最大化期望總收益,并探討了不同需求下各前沿強(qiáng)化學(xué)習(xí)算法的表現(xiàn)優(yōu)劣。
汽車制造廠內(nèi)的配件中心庫是整個(gè)配件產(chǎn)業(yè)鏈的統(tǒng)籌計(jì)劃中心,其存儲(chǔ)了上萬種可能用于自身品牌汽車售后維修保養(yǎng)的配件,企業(yè)投入了大量人力和財(cái)力用于其日常運(yùn)營。本文對由制造廠的配件中心庫和供應(yīng)商組成的兩階段供應(yīng)鏈庫存決策問題進(jìn)行建模,從供應(yīng)商訂購兩種不同需求特性的配件,滿足下級代理商的需求,如圖2所示。
圖2 供應(yīng)鏈結(jié)構(gòu)
假設(shè)供應(yīng)商可以提供無限數(shù)量的配件,從供應(yīng)商到倉庫的交貨時(shí)間為零。假定制造廠有法律義務(wù)履行所有訂單,供應(yīng)過程中允許缺貨,但是一旦缺貨,所欠的貨必須補(bǔ)上。其中各數(shù)學(xué)符號含義如表1所示。
表1 數(shù)學(xué)符號含義說明
為了更貼合現(xiàn)實(shí)壞境,需求采用每個(gè)時(shí)間段的均值(λ)的泊松分布進(jìn)行建模。連續(xù)性需求和非連續(xù)性需求的詳細(xì)設(shè)置將在第4節(jié)介紹。實(shí)驗(yàn)中考慮1080 天的需求值,每15 天為一個(gè)時(shí)間步,故有72 個(gè)時(shí)間步。連續(xù)性需求和非連續(xù)性需求配件的需求值的某個(gè)實(shí)例如圖3所示。
圖3 不同需求特性配件需求值的某實(shí)例
強(qiáng)化學(xué)習(xí)將庫存控制這類序貫決策問題建模為馬爾可夫決策過程并進(jìn)行求解。本文通過馬爾可夫決策過程將待求解問題定義為一個(gè)四元組M=(S,A,P,R),本文定義馬爾可夫決策過程的各要素如下:
狀態(tài)空間:狀態(tài)向量包括倉庫的每種配件類型的當(dāng)前庫存水平,加上歷史x個(gè)時(shí)間步的需求值,并定義如下:
其中dt-1=(d0,t-1,d1,t-1,…,di,t-1)。當(dāng)前t時(shí)間步的實(shí)際需求dt要到下一個(gè)t+1 時(shí)間步才能知道。類似于由Kemmer等[15]所做的工作,在后面加上需求值是為了使智能體可以從需求歷史中學(xué)習(xí),從而將一種需求預(yù)測直接集成到策略中。
動(dòng)作空間:通過神經(jīng)網(wǎng)絡(luò)直接生成動(dòng)作值實(shí)現(xiàn)了一個(gè)連續(xù)的動(dòng)作空間,包括在供應(yīng)商采購每種配件類型i的數(shù)量:
其中每個(gè)值的下界都是零,上限是倉庫對每種配件類型的最大容量,也即(0 ≤ai,t≤ICi)。
狀態(tài)轉(zhuǎn)移:下一狀態(tài)的更新規(guī)則定義為
在下一個(gè)時(shí)間步開始時(shí),制造廠的庫存等于初始庫存加上訂購的數(shù)量,減去當(dāng)前的需求。最后,更新包含在狀態(tài)向量中的需求值。
獎(jiǎng)勵(lì)函數(shù):每個(gè)時(shí)間步t的獎(jiǎng)勵(lì)函數(shù)定義如下:
等式右邊的第一項(xiàng)是收入,第二項(xiàng)是訂購成本,第三項(xiàng)是存儲(chǔ)成本,實(shí)現(xiàn)max 函數(shù)是為了避免負(fù)庫存(積壓訂單)被計(jì)算在內(nèi)。最后一項(xiàng)表示懲罰成本,它是用加號引入的,因?yàn)樵诓粷M足訂單的情況下,庫存水平已經(jīng)為負(fù)。因此,智能體的目標(biāo)是利潤最大化。
強(qiáng)化學(xué)習(xí)中的狀態(tài)抽象是指將環(huán)境狀態(tài)映射到一個(gè)更低維的表示形式的過程。具體來說,在庫存決策環(huán)境中進(jìn)行狀態(tài)抽象指的是對庫存狀態(tài)中與訂單決策不相關(guān)的狀態(tài)值進(jìn)行映射,以達(dá)到狀態(tài)空間壓縮的效果。
本文針對庫存決策的環(huán)境提出一種基于狀態(tài)抽象的狀態(tài)歸一化模塊,該模塊設(shè)計(jì)了一個(gè)針對庫存決策的狀態(tài)抽象函數(shù),使智能體能以更快的速度做出決策?;谟唵螖?shù)量僅與一定范圍內(nèi)的庫存水平相關(guān)的思想,本文設(shè)計(jì)了如下的狀態(tài)抽象函數(shù):
其中s表示環(huán)境的狀態(tài)向量,狀態(tài)向量分為庫存水平和歷史需求兩部分,因此狀態(tài)向量的下限也分為兩部分,其中,需求下限為0,當(dāng)積壓的訂單數(shù)大于制造廠每個(gè)t時(shí)間步訂購的數(shù)量at時(shí),智能體都需要最大化訂單數(shù)量,因此狀態(tài)向量的下限需求的上限dh取決于需求的具體分布,當(dāng)庫存水平高于兩倍需求的上限時(shí),決策系統(tǒng)都需要將訂單數(shù)量設(shè)為0,以減小庫存成本,因此狀態(tài)向量的上限sh=(2dh,dh)。通過該狀態(tài)抽象函數(shù)可以將原始狀態(tài)空間S映射到新的狀態(tài)空間S′=[-1,1]中。
強(qiáng)化學(xué)習(xí)方法應(yīng)用于庫存管理領(lǐng)域已經(jīng)有一定研究,Q-learning 算法與DQN 算法應(yīng)用較為廣泛。DQN 算法適用于離散動(dòng)作空間,為了適用于連續(xù)動(dòng)作空間,產(chǎn)生了DDPG 算法。和DDPG 相比,SAC 算法使用的是隨機(jī)策略,目標(biāo)是最大化帶熵的累積獎(jiǎng)勵(lì),使其具有更強(qiáng)的探索能力,且更具有魯棒性,面對干擾的時(shí)候能更容易做出調(diào)整。
結(jié)合第2 節(jié)所設(shè)的庫存決策環(huán)境的SAC 算法流程如下:
輸入:環(huán)境
使用參數(shù)θ1、θ2、φ初始化策略網(wǎng)絡(luò)πφ、第一個(gè)評價(jià)網(wǎng)絡(luò)Qθ1和第二個(gè)評價(jià)網(wǎng)絡(luò)Qθ2。初始化經(jīng)驗(yàn)池B,設(shè)置其大小為N。
對于每一幕執(zhí)行:
(1)初始化環(huán)境和狀態(tài)抽象后的狀態(tài)S0;
(2)從t= 1到t=T,執(zhí)行以下操作:
①觀察狀態(tài)S從策略網(wǎng)絡(luò)中選擇動(dòng)作A。
②執(zhí)行所選動(dòng)作A,觀察下一個(gè)狀態(tài)S′和獎(jiǎng)勵(lì)r。
③在經(jīng)驗(yàn)池中存儲(chǔ)四元組(S,A,R,S′)。
④如果經(jīng)驗(yàn)池中存儲(chǔ)經(jīng)驗(yàn)的數(shù)量大于批次大小,執(zhí)行以下操作:
(a)從經(jīng)驗(yàn)池中隨機(jī)采樣經(jīng)驗(yàn)批次(Si,Ai,Ri,S′i),?i= 1,…,N。
(b)使用兩個(gè)評價(jià)網(wǎng)絡(luò)中最小的Q值來計(jì)算目標(biāo)值,利用梯度下降算法最小化評估值和目標(biāo)值之間的誤差,從而更新兩個(gè)評價(jià)網(wǎng)絡(luò)Qθi。
(c)通過梯度上升算法更新策略網(wǎng)絡(luò)πφ。自動(dòng)調(diào)整熵的系數(shù)α,讓策略的熵保持一種適合訓(xùn)練的動(dòng)態(tài)平衡。
(d)引入動(dòng)量τ,用軟更新穩(wěn)定訓(xùn)練,更新目標(biāo)網(wǎng)絡(luò)θ′i←τθi+(1 -τθ′i)。
SAC 算法是異策略的隨機(jī)策略梯度算法,在異策略的確定性策略梯度算法中,本文采用了相對于DDPG 算法優(yōu)化的TD3 算法進(jìn)行對比實(shí)驗(yàn)。此外,同策略算法中也采用了較先進(jìn)的PPO算法進(jìn)行對比實(shí)驗(yàn)。
引入了深度神經(jīng)網(wǎng)絡(luò)的算法模型的超參數(shù)一般需要手動(dòng)設(shè)置,其中,學(xué)習(xí)率和gamma 值是深度強(qiáng)化學(xué)習(xí)模型訓(xùn)練中非常重要的參數(shù),影響到智能體訓(xùn)練的穩(wěn)定性和收斂性。因此,本文通過控制變量法,分別測試了學(xué)習(xí)率α=0.005、α= 0.001、α= 0.0005 的情況,最終選定α= 0.0005。固定其他參數(shù),分別測試了gamma 值γ= 0.9、γ= 0.95、γ= 0.99 的 情 況,最終選定γ= 0.95。由于篇幅有限,具體效果圖不做展示。
本文設(shè)計(jì)并進(jìn)行了一組豐富的實(shí)驗(yàn),分不同需求特性設(shè)定了三個(gè)場景,比較PPO、TD3、SAC 三種深度強(qiáng)化學(xué)習(xí)算法在不同場景下的性能,以此分析算法在仿真庫存決策環(huán)境中的表現(xiàn),并判斷算法能否應(yīng)用于現(xiàn)實(shí)環(huán)境。實(shí)驗(yàn)中對i類配件的通用參數(shù)常量設(shè)置如表2所示。
表2 實(shí)驗(yàn)環(huán)境常量
本場景下的連續(xù)性需求配件的需求服從于均值為10 的泊松分布,結(jié)合上述參數(shù)設(shè)置進(jìn)行實(shí)驗(yàn),對比分析TD3、SAC、PPO 三種深度強(qiáng)化學(xué)習(xí)算法在連續(xù)性需求下的性能。實(shí)驗(yàn)結(jié)果如圖4所示,在連續(xù)性需求場景下,SAC和TD3算法的最終獎(jiǎng)勵(lì)都比PPO 算法高,且SAC 算法和TD3 算法都比PPO 算法收斂穩(wěn)定。SAC 算法比TD3 算法先收斂。盡管TD3 算法比SAC 算法先達(dá)到較高的獎(jiǎng)勵(lì),但TD3算法前期比較震蕩。
圖4 TD3、SAC、PPO在連續(xù)性需求下的實(shí)驗(yàn)對比結(jié)果
本場景下的非連續(xù)性需求配件的需求依然服從于泊松分布,均值每120天從[10,15,20,0]中等概率隨機(jī)選取。本研究結(jié)合上述參數(shù)設(shè)置進(jìn)行實(shí)驗(yàn),對比分析了TD3、SAC、PPO 三種深度強(qiáng)化學(xué)習(xí)算法在非連續(xù)性需求下的性能。實(shí)驗(yàn)結(jié)果如圖5 所示,在非連續(xù)性需求場景下,SAC 和TD3 算法都比PPO 算法獎(jiǎng)勵(lì)高,且SAC算法和TD3 算法都比PPO 算法收斂穩(wěn)定。SAC算法比TD3算法先收斂也先達(dá)到較高的獎(jiǎng)勵(lì)。
圖5 TD3、SAC、PPO在非連續(xù)性需求下的實(shí)驗(yàn)對比結(jié)果
本場景下配件的需求結(jié)合前兩節(jié)的需求設(shè)置,獎(jiǎng)勵(lì)為這兩類配件的利潤之和。本研究結(jié)合上述參數(shù)設(shè)置進(jìn)行實(shí)驗(yàn),對比分析TD3、SAC、PPO 三種深度強(qiáng)化學(xué)習(xí)算法在混合連續(xù)性需求和非連續(xù)性需求下的性能。實(shí)驗(yàn)結(jié)果如圖6所示,在混合連續(xù)性需求和非連續(xù)性需求場景下,SAC 算法達(dá)到的獎(jiǎng)勵(lì)最高,最先收斂,穩(wěn)定性也最強(qiáng);TD3算法其次,PPO算法最后。
圖6 TD3、SAC、PPO在混合連續(xù)性及非連續(xù)性需求下的實(shí)驗(yàn)對比結(jié)果
綜合上述三幅圖可得,SAC 算法的收益表現(xiàn)和穩(wěn)定性無論在連續(xù)性需求、非連續(xù)性需求,還是混合連續(xù)性及非連續(xù)性需求上表現(xiàn)都最佳,其次是TD3算法,PPO算法的收益最低。
現(xiàn)實(shí)中的需求變化極其復(fù)雜,各種因素導(dǎo)致需求呈現(xiàn)隨機(jī)性強(qiáng)、非穩(wěn)態(tài)的波動(dòng)變化。SAC 算法能夠解決動(dòng)態(tài)需求問題,也能為企業(yè)提供近似最優(yōu)的訂貨策略。由此可見,基于SAC 算法的庫存決策模型具有非常廣泛的應(yīng)用價(jià)值。
目前汽車后市場規(guī)模相應(yīng)擴(kuò)大,配件需求也逐年遞增,對于制造廠而言如何合理控制庫存是非常重要的決策問題。本文研究了汽車配件的庫存決策問題,根據(jù)配件的需求特性,分為連續(xù)性需求配件和非連續(xù)性需求配件并制定了三個(gè)場景。通過將庫存決策問題建模為馬爾科夫決策過程,本文在更現(xiàn)實(shí)的實(shí)驗(yàn)下評估了多個(gè)深度強(qiáng)化學(xué)習(xí)算法的有效性和穩(wěn)健性。本文還設(shè)計(jì)了一個(gè)針對庫存決策的狀態(tài)抽象函數(shù),從而有效減少無用狀態(tài)信息,簡化庫存決策環(huán)境,提高決策效率。
本文改進(jìn)的深度強(qiáng)化學(xué)習(xí)算法,可以根據(jù)當(dāng)前可用庫存來動(dòng)態(tài)調(diào)整訂貨量,使預(yù)期利潤最大化。然而,由于條件限制,本研究只關(guān)注了兩階段供應(yīng)鏈的庫存決策問題,未考慮運(yùn)輸及訂購提前期等因素。未來可以在考慮運(yùn)輸和訂購提前期等情況下的庫存決策方面進(jìn)行深入的研究。