陳可嘉,康 健,洪鳳莉
(福州大學(xué) 經(jīng)濟(jì)與管理學(xué)院,福建 福州 350116)
隨著供應(yīng)鏈領(lǐng)域技術(shù)的不斷推陳出新,市場(chǎng)競(jìng)爭(zhēng)已進(jìn)入一個(gè)全新的時(shí)代,時(shí)間成為企業(yè)競(jìng)爭(zhēng)的重點(diǎn)。由于越庫(kù)具有縮短配送時(shí)間和降低庫(kù)存成本等優(yōu)點(diǎn),許多企業(yè)如沃爾瑪、Costco等采用越庫(kù)來(lái)優(yōu)化供應(yīng)鏈流程??紤]到站臺(tái)等資源的限制,對(duì)越庫(kù)問(wèn)題的研究通常包括時(shí)間窗和暫存區(qū)兩個(gè)方面。由于實(shí)際越庫(kù)中存在部分貨物無(wú)法馬上轉(zhuǎn)運(yùn),需要存放在暫存區(qū),所以帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題是越庫(kù)研究的重要內(nèi)容,對(duì)其進(jìn)行研究具有較為重要的理論意義和實(shí)際價(jià)值。
目前國(guó)內(nèi)外學(xué)者對(duì)越庫(kù)的研究從戰(zhàn)略層到運(yùn)作層都有涉及,在越庫(kù)調(diào)度模型和系統(tǒng)設(shè)計(jì)方面,YAZDANI等[1]建立了針對(duì)多門越庫(kù)問(wèn)題的模型。VAHDANI等[2]研究了貨車可以多次循環(huán)使用的越庫(kù)調(diào)度模式。在越庫(kù)調(diào)度中心選址和布局方面,GOODARZI等[3]研究了基于生物地理學(xué)的越庫(kù)調(diào)度選址問(wèn)題。GONZALEZ-FELIU[4]研究了考慮貨運(yùn)成本的n級(jí)越庫(kù)選址問(wèn)題。在配送車輛路徑優(yōu)化方面,YU等[5]研究了越庫(kù)下的開放式車輛路徑問(wèn)題。MAKNOON等[6]以最小化越庫(kù)成本為目標(biāo),研究了越庫(kù)車輛路徑選擇問(wèn)題。在配送中心倉(cāng)門分配和配送車輛??宽樞蚍矫妫姵療樀萚7]研究了考慮車輛容量限制和時(shí)間窗的越庫(kù)調(diào)度問(wèn)題。強(qiáng)瑞等[8]研究了不考慮貨物裝卸時(shí)間的倉(cāng)門分配問(wèn)題。在帶暫存區(qū)的越庫(kù)調(diào)度方面,AMINI等[9]對(duì)貨物裝載、卸載過(guò)程具有學(xué)習(xí)效果的帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題進(jìn)行了研究。GHOBADIAN等[10]研究了帶有暫存區(qū)且車輛重復(fù)使用的越庫(kù)調(diào)度問(wèn)題。帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題是NP-hard問(wèn)題[11],研究的重點(diǎn)在于采用高效的啟發(fā)式算法對(duì)問(wèn)題進(jìn)行求解。文獻(xiàn)[9]采用改進(jìn)粒子群優(yōu)化算法求解帶暫存區(qū)多門越庫(kù)問(wèn)題。ASSADI等[12]用模擬退火算法對(duì)帶暫存區(qū)越庫(kù)問(wèn)題進(jìn)行了研究,目標(biāo)是最小化車輛的總早到和遲到時(shí)間。
食物鏈算法(food chain algorithm,F(xiàn)CA)由喻海飛等[13]提出,是一種通過(guò)人工生命的覓食、新陳代謝等仿真模擬生態(tài)系統(tǒng)中食物鏈現(xiàn)象進(jìn)而達(dá)到優(yōu)化目的的人工生命算法[14]。對(duì)于食物鏈算法的應(yīng)用領(lǐng)域,喻海飛等[15-16]針對(duì)食物鏈算法在供應(yīng)鏈管理、分銷網(wǎng)絡(luò)中的應(yīng)用進(jìn)行了研究。與傳統(tǒng)啟發(fā)式算法相比,食物鏈算法具有魯棒性強(qiáng)、易于并行處理等優(yōu)點(diǎn),并在車間調(diào)度、逆向物流[17]等問(wèn)題中取得一定的成果。目前食物鏈算法在越庫(kù)調(diào)度問(wèn)題中應(yīng)用較少,故筆者采用“自適應(yīng)覓食機(jī)制”設(shè)計(jì)了一種改進(jìn)食物鏈算法求解帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題,既豐富了求解帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題的優(yōu)化算法,又拓展了食物鏈算法的應(yīng)用領(lǐng)域。
越庫(kù)調(diào)度通過(guò)將入庫(kù)車輛和出庫(kù)車輛按照合理的順序分別安排到入庫(kù)站臺(tái)和出庫(kù)站臺(tái),使貨物在越庫(kù)中心的停留時(shí)間盡可能短,既減少了物流成本又提高了配送速度。越庫(kù)調(diào)度是影響越庫(kù)物流效率的關(guān)鍵問(wèn)題,考慮到在實(shí)際情況中會(huì)遇到站臺(tái)資源有限或車輛容量有限等問(wèn)題,導(dǎo)致有些貨物無(wú)法馬上配送,這便形成了帶暫存區(qū)的越庫(kù)調(diào)度問(wèn)題。帶暫存區(qū)越庫(kù)調(diào)度示意圖如圖1所示。
圖1 帶暫存區(qū)越庫(kù)調(diào)度示意圖
帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題可以描述為:一個(gè)配送中心擁有G個(gè)入庫(kù)站臺(tái)、H個(gè)出庫(kù)站臺(tái)、I輛入庫(kù)車和J輛出庫(kù)車,一個(gè)站臺(tái)只能同時(shí)為一輛車服務(wù)。入庫(kù)車輛上的貨物在入庫(kù)站臺(tái)上卸載后被重新分配路線,裝載到出庫(kù)車輛后配送,單位貨物卸載和裝載時(shí)間一致。某貨物從入庫(kù)站臺(tái)l到出庫(kù)站臺(tái)m完成越庫(kù)的時(shí)間TTlm和站臺(tái)距離有關(guān),考慮到站臺(tái)資源有限等因素,設(shè)置容量無(wú)限的暫存區(qū)。要求通過(guò)對(duì)車輛與站臺(tái)的合理分配,最小化越庫(kù)總操作時(shí)間。
食物鏈算法是一種基于生態(tài)系統(tǒng)中食物鏈現(xiàn)象的人工生命算法,其在人工生命科學(xué)思想與行為生態(tài)學(xué)理論的指導(dǎo)下,利用人工生命集來(lái)仿真現(xiàn)實(shí)生態(tài)系統(tǒng)中的生命個(gè)體,通過(guò)覓食、優(yōu)勝劣汰及新陳代謝等自主推理、智能決策行為,實(shí)現(xiàn)優(yōu)化的目的。食物鏈算法的基本步驟如下:
(1)人工生命初始化。隨機(jī)產(chǎn)生N個(gè)人工生命個(gè)體(可行解)形成人工生命集,設(shè)置初始人工生命個(gè)體的鄰域δ0、覓食次數(shù)E和最大迭代次數(shù)D。為人工生命個(gè)體賦予初始能量水平ei0,即目標(biāo)函數(shù)值(目標(biāo)函數(shù)值越小,人工生命個(gè)體的能量水平越高)。
(2)覓食。在鄰域范圍內(nèi)人工生命個(gè)體進(jìn)行覓食活動(dòng)。若覓食成功,則設(shè)當(dāng)前最優(yōu)食物資源位置為局部最優(yōu)解,若覓食失敗,則不進(jìn)行更新。所有人工生命個(gè)體均需完成E次覓食活動(dòng)。
(3)位置更新。所有人工生命個(gè)體移動(dòng)到局部最優(yōu)解的位置。
(4)新陳代謝。選擇成熟人工生命個(gè)體繁殖下一代,與成熟人工生命個(gè)體一起組成新的人工生命集,保持人工生命集規(guī)模不變。能量水平在人工生命集前Ratio的個(gè)體為成熟生命個(gè)體,有權(quán)進(jìn)行繁殖活動(dòng),淘汰其余個(gè)體。
油田專門制定并落實(shí)了《高校畢業(yè)生輪崗見習(xí)管理辦法》、《新員工教育管理辦法》等制度,規(guī)定所有新引進(jìn)的高校畢業(yè)生全部到油田勘探開發(fā)一線進(jìn)行為期1年的輪崗見習(xí),讓他們了解油田主體專業(yè)業(yè)務(wù)知識(shí),掌握主要油氣生產(chǎn)流程,拓寬知識(shí)領(lǐng)域,豐富工作經(jīng)歷,體驗(yàn)一線艱苦和基層職工拼搏奉獻(xiàn)精神,領(lǐng)會(huì)油田企業(yè)文化內(nèi)涵,錘煉思想作風(fēng),增強(qiáng)綜合素質(zhì)能力。在見習(xí)階段,為青年人才指定職業(yè)導(dǎo)師,進(jìn)行“一對(duì)一”或“多對(duì)一”指導(dǎo),讓其在不同崗位、不同業(yè)務(wù)、不同環(huán)境鍛煉,盡快適應(yīng)企業(yè)環(huán)境,加快由學(xué)生向職工的轉(zhuǎn)化進(jìn)程。
(5)循環(huán)控制。增長(zhǎng)迭代代數(shù),若迭代代數(shù)小于D,則返回步驟(2),否則計(jì)算終止。
針對(duì)帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題的特點(diǎn),設(shè)計(jì)如下改進(jìn)食物鏈算法:
(1)人工生命初始化。初始化人工生命集,定義問(wèn)題的可行解,采用元胞數(shù)組形式表示問(wèn)題的可行解。人工生命個(gè)體規(guī)模為N,記作Ω={L1,L2,…,LN}。其中,Lk={Sk1,Sk2,Ck},Sk1=[e1,e2,…,eG],Sk2=[e1,e2,…,eH]。第一部分Sk1表示G個(gè)入庫(kù)站臺(tái)對(duì)應(yīng)的入庫(kù)車輛進(jìn)站序列;第二部分Sk2表示H個(gè)出庫(kù)站臺(tái)對(duì)應(yīng)的出庫(kù)車輛進(jìn)站序列;第三部分Ck表示當(dāng)采用Sk1和Sk2進(jìn)行入庫(kù)車輛和出庫(kù)車輛的站臺(tái)分配時(shí)所對(duì)應(yīng)的目標(biāo)函數(shù)值。
初始人工生命集對(duì)算法的求解效果有很大的影響,質(zhì)量高的初始人工生命集能夠提升算法搜索速度,因此通過(guò)啟發(fā)式策略分階段產(chǎn)生初始人工生命集。在越庫(kù)問(wèn)題中,入庫(kù)車輛與入庫(kù)門的分配方法與出庫(kù)車輛和出庫(kù)門的分配方法有著密切的關(guān)聯(lián),因此規(guī)定生成初始人工生命集的規(guī)則:①先進(jìn)行入庫(kù)車輛與入庫(kù)門的分配,后進(jìn)行出庫(kù)車輛與出庫(kù)門的分配;②保證每一輛車都分配到對(duì)應(yīng)的門;③優(yōu)先給所載貨物總量較大的入庫(kù)車輛分配入庫(kù)門;④在所有入庫(kù)車輛與入庫(kù)門的分配完成后,優(yōu)先給所載貨物總量較大的出庫(kù)車輛分配出庫(kù)門。
(2)自適應(yīng)覓食。算法的覓食活動(dòng)通過(guò)調(diào)整人工生命個(gè)體內(nèi)前兩部分組織內(nèi)元素的排列順序來(lái)實(shí)現(xiàn),每一次的覓食行為均是對(duì)各組織元素進(jìn)行一次順序的調(diào)整。
在算法的搜索過(guò)程中不同算子的選用對(duì)求解效果的影響較大,如常用換位算子和倒位算子[18],換位算子能夠較好地保存當(dāng)前人工生命個(gè)體的優(yōu)勢(shì),但降低了人工生命個(gè)體的進(jìn)化能力。而倒位算子在覓食過(guò)程中,具有較強(qiáng)的尋優(yōu)能力,卻對(duì)當(dāng)前人工生命個(gè)體結(jié)構(gòu)破壞力度更大。雖較多學(xué)者對(duì)換位算子和倒位算子等算子的性能做了分析,但并不能有效地預(yù)測(cè)各種算子使用的效果,因此常常使用自適應(yīng)機(jī)制[19]處理這類問(wèn)題。在覓食步驟引入自適應(yīng)算子,當(dāng)進(jìn)行覓食的人工生命個(gè)體能量值大時(shí),采用換位算子的概率大;當(dāng)進(jìn)行覓食的人工生命個(gè)體能量值小時(shí),采用倒位算子的概率大。采用倒位算子的概率p1和采用換位算子的概率p2的計(jì)算式分別如式(1)和式(2)所示。
(1)
(2)
式中:fmax為人工生命集中個(gè)體能量水平的最大值;favg為人工生命集中個(gè)體能量水平的平均值;f′為人工生命集中當(dāng)前個(gè)體的能量值;A為常數(shù),取值為9.903 438;β的取值為0.5。
(3)位置更新。當(dāng)所有人工生命個(gè)體均完成E次覓食活動(dòng)后,每個(gè)人工生命個(gè)體均保留最后一次覓食成功時(shí)更新的人工生命個(gè)體,作為局部最優(yōu)解,并形成一個(gè)新的人工生命集。
(4)新陳代謝。將所有人工生命個(gè)體按照其個(gè)體能量值水平從大到小排列,其中目標(biāo)函數(shù)值越小,人工生命個(gè)體能量水平越高。選取人工生命集前Ratio的人工生命個(gè)體作為成熟個(gè)體,排序在后(1-Ratio)的個(gè)體則視為死亡個(gè)體,并將其淘汰出人工生命集。
(5)循環(huán)控制。完成一次循環(huán)后循環(huán)次數(shù)增加1,運(yùn)算次數(shù)達(dá)到最大迭代次數(shù)D時(shí),終止計(jì)算。
帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題的改進(jìn)食物鏈算法流程圖如圖2所示。
圖2 帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題的改進(jìn)食物鏈算法流程圖
算法采用Matlab在Intel(R) Core(TM)2 Duo CPU T6600 2.20 GHz處理器、內(nèi)存4G、Windows 10系統(tǒng)下實(shí)現(xiàn)。
食物鏈算法的性能與其參數(shù)的設(shè)置有密切的聯(lián)系,參數(shù)的變化會(huì)導(dǎo)致算法性能的變化,影響算法收斂和所求解的質(zhì)量。
筆者選取文獻(xiàn)[20]的算例對(duì)改進(jìn)食物鏈算法的人工生命活動(dòng)鄰域、迭代次數(shù)、覓食次數(shù)、種群大小、成熟人工生命個(gè)體比例5個(gè)參數(shù)進(jìn)行分析。判定參數(shù)選取的主要標(biāo)準(zhǔn)首先為是否可獲得最優(yōu)解,其次為求得的最優(yōu)解是否穩(wěn)定,最后考慮算法的運(yùn)行效率。在該算例中,越庫(kù)中心入庫(kù)站臺(tái)G=50,出庫(kù)站臺(tái)H=50,入庫(kù)車輛I=75,出庫(kù)車輛J=75,入庫(kù)車輛和出庫(kù)車輛之間的隨機(jī)貨物需求均為2,入庫(kù)站臺(tái)和出庫(kù)站臺(tái)之間的距離為ver=32 m,任何相鄰入庫(kù)站臺(tái)或出庫(kù)站臺(tái)之間的距離為hor=6 m。以下對(duì)所有參數(shù)的測(cè)試,均對(duì)算法運(yùn)行30次,求出平均最優(yōu)解。
(1)初始人工生命鄰域δ0的參數(shù)分析。初始人工生命鄰域的大小決定了人工生命個(gè)體的覓食搜索范圍。為求解上述算例,設(shè)置種群大小N=100,迭代次數(shù)D=100,覓食次數(shù)E=5,成熟人工生命個(gè)體比例Ratio=0.30,得出測(cè)試運(yùn)行結(jié)果,如表1所示。由表1可知,當(dāng)δ0=0.5或0.6時(shí),獲得了最優(yōu)解;但當(dāng)δ0=0.6時(shí),其平均最優(yōu)解的質(zhì)量?jī)?yōu)于δ0=0.5時(shí)的平均最優(yōu)解的質(zhì)量,說(shuō)明當(dāng)δ0=0.6時(shí)算法運(yùn)行較穩(wěn)定,更有可能獲得最優(yōu)解。初始人工生命鄰域δ0越大,可能獲得的食物資源更豐富,但隨著搜索半徑的擴(kuò)大,算法的效率受到影響。依據(jù)測(cè)試結(jié)果,選取初始人工生命鄰域δ0的最佳值為0.6。
表1 初始人工生命鄰域δ0的參數(shù)分析
(2)迭代次數(shù)D的參數(shù)分析。其余參數(shù)設(shè)置如下:人工生命活動(dòng)鄰域δ0=0.6,種群大小N=100,覓食次數(shù)E=5,成熟人工生命個(gè)體比例Ratio=0.30,得出測(cè)試運(yùn)行結(jié)果,如表2所示。由表2可知,隨著迭代次數(shù)D的不斷增大,其最優(yōu)解的值逐漸減小,解的質(zhì)量越來(lái)越好,在迭代次數(shù)D達(dá)到300次以后,最優(yōu)解的值最小,同時(shí)可獲得的最優(yōu)解的值保持一致。超過(guò)300次后,隨著迭代次數(shù)D的增加,其平均最優(yōu)解反而逐漸增大。算法運(yùn)行的平均運(yùn)行時(shí)間隨著迭代次數(shù)的增加,呈上升趨勢(shì)。因此,在可獲得同等最優(yōu)解的情況下,為了保持求解的穩(wěn)定性和提高算法運(yùn)行的效率,迭代次數(shù)D取最佳值300。
(3)覓食次數(shù)E的參數(shù)分析。其余參數(shù)設(shè)置如下:人工生命活動(dòng)鄰域δ0=0.6,種群大小N=100,迭代次數(shù)D=300,成熟人工生命個(gè)體比例Ratio=0.30,得出測(cè)試運(yùn)行結(jié)果,如表3所示。由表3可知,最初隨著覓食次數(shù)的增加,最優(yōu)解的值逐漸減小,但當(dāng)覓食次數(shù)達(dá)到5之后,最優(yōu)解的值又開始增大。在此算例測(cè)試中,當(dāng)覓食次數(shù)為5時(shí),最優(yōu)解質(zhì)量最好,求得的最優(yōu)解也較為穩(wěn)定。覓食次數(shù)越多,算法運(yùn)行時(shí)間就越長(zhǎng),在保證取得最優(yōu)解的前提下,覓食次數(shù)E取最佳值5。
表2 迭代次數(shù)D的參數(shù)分析
表3 覓食次數(shù)E的參數(shù)分析
(4)種群大小N的參數(shù)分析。其余參數(shù)設(shè)置如下:人工生命活動(dòng)鄰域δ0=0.6,迭代次數(shù)D=300,覓食次數(shù)E=5,成熟人工生命個(gè)體比例Ratio=0.30,得出測(cè)試運(yùn)行結(jié)果,如表4所示。由表4可知,隨著種群大小N的增大,最優(yōu)解的質(zhì)量漸優(yōu),當(dāng)種群大小遞增到200以后,最優(yōu)解的質(zhì)量基本保持在穩(wěn)定水平,但其平均最優(yōu)解反而增大。在保證算法取得最優(yōu)解的前提下,取種群大小N=200,能保證算法的計(jì)算效率最佳。
表4 種群大小N的參數(shù)分析
(5)成熟人工生命個(gè)體比例Ratio的參數(shù)分析。其余參數(shù)設(shè)置如下:人工生命活動(dòng)鄰域δ0=0.6,迭代次數(shù)D=300,覓食次數(shù)E=5,種群大小N=200,得出測(cè)試運(yùn)行結(jié)果,如表5所示。由表5可知,隨著Ratio的增加,最優(yōu)解的值先下降,然后又逐步上升,當(dāng)Ratio=0.30或0.40時(shí),最優(yōu)解達(dá)到最優(yōu)。由于平均最優(yōu)解的差異,Ratio=0.40時(shí)最優(yōu)解的穩(wěn)定性比Ratio=0.30時(shí)最優(yōu)解的穩(wěn)定性更好。另外,隨著Ratio的增加,算法平均運(yùn)行時(shí)間在不斷減少。這是因?yàn)槌墒靷€(gè)體的比例越大,需要繁殖的后代則越少,因此運(yùn)行的時(shí)間也就越少。為了獲得最佳的目標(biāo)解,成熟人工生命個(gè)體比例Ratio取值為0.40。
表5 成熟人工生命個(gè)體比例Ratio的參數(shù)分析
為了進(jìn)一步驗(yàn)證所設(shè)計(jì)的改進(jìn)食物鏈算法在求解帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題上的有效性,以文獻(xiàn)[11]中的算例進(jìn)行仿真實(shí)驗(yàn)。文獻(xiàn)[11]中根據(jù)車輛與庫(kù)門的數(shù)量不同將算例分為3種規(guī)模,每種規(guī)模各選取3個(gè)算例,即共選取9個(gè)算例進(jìn)行實(shí)驗(yàn)。改進(jìn)食物鏈算法和傳統(tǒng)食物鏈算法相關(guān)參數(shù)設(shè)置:人工生命活動(dòng)鄰域δ0=0.6,迭代次數(shù)D=300,覓食次數(shù)E=5,種群大小N=200,成熟人工生命個(gè)體比例Ratio=0.40。兩種算法均運(yùn)行30次,求出平均最優(yōu)解和平均運(yùn)行時(shí)間,兩種算法仿真結(jié)果對(duì)比如表6所示。由表6可知,在入庫(kù)站臺(tái)、出庫(kù)站臺(tái)、入庫(kù)車輛、出庫(kù)車輛規(guī)模一致的條件下,改進(jìn)食物鏈算法在求解帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題比食物鏈算法所求得的解更優(yōu),表明了改進(jìn)食物鏈算法在求解帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題的優(yōu)越性。并且隨著問(wèn)題規(guī)模的擴(kuò)大,改進(jìn)食物鏈算法求得的解質(zhì)量的優(yōu)勢(shì)更加明顯,而在實(shí)際的越庫(kù)操作中,車輛和庫(kù)門的數(shù)量較多,越庫(kù)的規(guī)模也較大,因此改進(jìn)食物鏈算法也更加適用于實(shí)際越庫(kù)操作。
表6 改進(jìn)食物鏈算法與食物鏈算法仿真結(jié)果對(duì)比
帶暫存區(qū)的越庫(kù)調(diào)度問(wèn)題貼近實(shí)際,對(duì)此類問(wèn)題進(jìn)行研究具有較高的研究?jī)r(jià)值,故筆者提出了求解帶暫存區(qū)越庫(kù)調(diào)度問(wèn)題的改進(jìn)食物鏈算法??紤]到改進(jìn)食物鏈算法的參數(shù)對(duì)算法性能、算法收斂及求解質(zhì)量的影響,運(yùn)用文獻(xiàn)中的典型算例對(duì)食物鏈算法的人工生命活動(dòng)鄰域、迭代次數(shù)、覓食次數(shù)、種群大小、成熟人工生命個(gè)體比例5個(gè)參數(shù)進(jìn)行分析,在此基礎(chǔ)上,與傳統(tǒng)食物鏈算法進(jìn)行對(duì)比,仿真實(shí)驗(yàn)結(jié)果表明改進(jìn)食物鏈算法是求解此類問(wèn)題的有效方法,具有較好的實(shí)際應(yīng)用前景。在未來(lái)工作中,將會(huì)考慮時(shí)間窗等限制條件,使得研究的問(wèn)題更加貼近現(xiàn)實(shí),進(jìn)一步提高改進(jìn)食物鏈算法的求解效率。