張架鵬,倪志偉*,倪麗萍,朱旭輝,伍章俊
(1. 合肥工業大學管理學院,合肥230009; 2. 過程優化與智能決策教育部重點實驗室(合肥工業大學),合肥230009)
(*通信作者電子郵箱:zhwnelson@163.com)
調度問題是一類重要的組合優化問題,根據現實生產的需要,通常包含具體的約束條件[1]。同類機調度問題是調度問題的一個分支,已被證明是NP-hard問題[2]。同類機一般描述為機器具有恒定的速度差異,這類機器產生的原因主要是機器的購置批次差異導致不同批次的機器具有不同的處理速度、完成同類工作的操作人員的操作水平差異等,其主要存在于生產制造車間。除此之外,鋼材在多臺機器上的熱軋過程等也可以抽象成同類機問題。同類機調度問題是一類特殊的車間調度問題,是連接供應鏈上下游重要的一環,在實際的生產調度中,運用先進的調度算法,制定科學合理的調度方案,可以有效地提高生產效率、節約資源,從而提升整個供應鏈的效益。目前,沒有統一的方法解決同類機調度問題,因此,對此類問題的研究具有重要的實際意義。
目前,啟發式搜索算法是解決調度問題的一類重要可行方法,針對同類機調度問題,文獻[3]針對含作業到達時間的同類機調度問題,提出了一種改進的啟發式算法;文獻[4]采用改進的螢火蟲算法求解該問題,引入一種切實有效的針對同類機問題的離散編碼方式;文獻[5]提出一種采用最大調度時間(Largest Processing Time,LPT)算法進行初始化,利用互換性質進行互換操作的啟發式算法求解該問題;文獻[6]設計了一種啟發式分治(Decompose-Compose,DC)算法,用于解決目標解為最小完成時間和的同類機調度問題。上述方法在求解同類機調度問題時存在如下缺陷:改進的啟發式算法的性能有待提高,無法適應作業長度差異較大且機器速度差異較小的情形;螢火蟲算法參數設置較多,迭代初期易陷入局部最優;DC算法的運行速度慢,通用性不強。
人工蜂群(Artificial Bee Colony,ABC)算法是一種較新的群智能優化算法,由土耳其學者Karaboga[7]于2005年提出,以其實現簡單、收斂速度快、求解精度高、魯棒性強[8]等特點受到學術界的廣泛關注,以后又有人提出了一系列改進優化策略[9]。目前,人工蜂群算法已成功應用于人工神經網絡訓練[10-11]、函數優化[12]、機器人路徑規劃[13]、電力系統優化[14]等領域,其中大多數的研究解決的是連續型問題。對于現實生活中存在的很多離散問題的研究相對較少,由于人工蜂群算法的參數少、操作簡單,近年來很多學者開始將離散化的人工蜂群算法應用到工業生產[15]、數據挖掘[16]等多個領域。
目前,對于離散人工蜂群算法的研究主要集中在解決調度問題上[17]。文獻[18]運用離散人工蜂群算法進行云任務調度優化;文獻[19]將離散人工蜂群算法應用到煉鋼連鑄的工業過程中;文獻[20]利用離散ABC 算法求解旅行商問題(Travelling Salesman Problem,TSP);文獻[21]提出了一種求解混合流水線問題的離散人工蜂群算法;文獻[22]針對最小化完工時間為目標的混合流水車間調度(Hybrid Flow Shop,HFS)問題,提出一種有效的離散人工蜂群算法,該算法利用混合表示以及前向解碼和后向解碼方法的組合來解決該問題;文獻[23]利用改進的人工蜂群算法求解任務指派問題;文獻[24]和文獻[25]分別提出一種求解阻塞型流水車間調度的離散人工蜂群算法;文獻[26]提出一種改進的離散人工蜂群算法求解批量流水線調度問題;文獻[27]提出一種用于優化逆向物流網絡的混合人工蜂群算法,算法給出8 種性能良好的鄰域結構,從而提高算法的開發能力;文獻[28]提出了一種改進的離散人工蜂群算法來解決具有鐵水系統動態跳躍特征的混合柔性流水車間調度問題。
以上方法運用在不同的調度問題上,其算法性能均有一定提升,但是在協調算法的求解精度、收斂速度和穩定性方面性能較差。因此,本文提出了一種改進的離散型人工蜂群(Improved Discrete Artificial Bee Colony,IDABC)算法,并應用于同類機調度問題。引入基于離散人工蜂群算法的同類機調度問題的十進制編碼模型,在原始人工蜂群算法的基礎上改進初始化策略,并針對實際問題,提出待優參數的生成策略,借鑒差分進化算法、模擬退火算法的思想改進雇傭蜂和跟隨蜂的局部搜索策略,充分利用最優解的優質信息改進偵察蜂。通過15個算例,將本文改進的ABC 算法與文獻[21]提出的混合離散人工蜂群(Hybrid Discrete Artificial Bee Colony,HDABC)算法、文獻[4]提出的解決該類同類機調度問題的改進螢火蟲(Improved Glowworm Swarm Optimization,IGSO)算法、原始ABC算法以及遺傳算法(Genetic Algorithm,GA)和粒子群優化(Particle Swarm Optimization,PSO)算法等經典智能優化算法進行了比較。
1)有若干臺機器同時加工若干件作業,且每件作業只能被其中一臺機器加工。
2)每臺機器的加工速度是任意的,同一臺機器的加工速度恒定。
3)每件作業的長度是任意的。
4)作業到達機器的時間是任意的,且只有機器接收到作業后,才能進行加工。
5)機器在運行過程中不會出現故障,即作業的加工不會被中斷。
在實際的生產加工場景中,生產環境較為復雜,規模也較大,一般調度問題難以在多項式時間內進行求解。調度問題可以用甘特圖描述,如圖1 所示,圖1 表示4 臺機器加工10 件作業一種情況的甘特圖。

圖1 4機器10作業加工示意圖Fig.1 Processing schematic diagram of 4 machines 10 jobs
同類機調度問題的描述如下:假設有n個作業J={J1,J2,…,Jj,…,Jn},其中作業Jj(j= 1,2,…,n)的長度為pj。這n個作業需要用m臺機器M={M1,M2,…,Mn}進行加工,其中機器Mi(i= 1,2,…,m)加工這n個作業的速度為vi(i=1,2,…,m)。 作 業Ji到 達 機 器Mi的 時 間 為rij(i=1,2,,…,m,j= 1,2,…,n),每件作業的加工起點為機器接收到該作業。作業Ji在機器Mi的時間為pij(i= 1,2,…,m,j=1,2,…,n),該作業的完工時間為Cj(j= 1,2,…,n),且每件作業只能被其中一臺機器加工。本文研究的是Qm|rj|Cmax類型的同類機調度問題,考慮到機器的加工效率,其目標函數minZ為最小化所有作業的最大完工時間,即使得最后完工的那臺機器的加工時間最小,縮短產品的交付時間。
數學模型:


約束條件:
式(1)若由第i臺機器加工第j件作業,則aij=1;否則aij=0。
式(2)表示每件作業只能被其中一臺機器加工。
式(3)表示機器i加工作業j所用的時間。
式(4)表示作業j的完工時間。
在ABC 算法中,雇傭蜂和跟隨蜂負責鄰域搜索尋優,代表算法的開發能力;偵查蜂負責對被遺棄的食物源進行隨機初始化,代表算法的探索能力。為提高算法的性能,本文引入了種群初始化方法和搜索機制,既保證算法具有較高的收斂速度和求解精度,又防止算法陷入局部最優。
人工蜂群算法,是受自然界蜜蜂覓食行為的啟發而提出的一種群智能優化算法。將蜜蜂采蜜的過程轉化為優化問題的尋優過程。蜜蜂群體分為3 類:雇傭蜂、跟隨蜂和偵察蜂,雇傭蜂和跟隨蜂負責鄰域尋優,偵查蜂負責隨機初始化被遺棄食物源。
人工蜂群算法需要初始化設置的參數有3 個:蜂群規模2SN,其中雇傭蜂和跟隨蜂的規模各為SN;算法的最大迭代次數MaxCycle;食物源經多次迭代而未發生改變的最大保留次數limit。
ABC算法的主要步驟如下:
1)初始化解。根據式(5)隨機生成SN個D維初始可行解{X1,X2,…,XSN}。其中,i∈{1,2,…,SN},j∈{1,2,…,D},D代表食物源的屬性數,uj、lj代表xij取值的最大、最小值,rand[0,1]產生0~1的隨機數。式(5)如下:

2)記錄最優解。計算SN個可行解的適應度值fiti,根據適應度值確定并記錄最優解。
循環開始:
3)雇傭蜂階段。雇傭蜂根據式(6)對可行解Xi進行鄰域搜索,隨機選擇Xi的一維xij轉化為vij,產生新的可行解Vi,計算新可行解的目標函數值和適應度值并比較Xi和Vi的適應度值的大小:若fit(Vi)>fit(Xi),則用Vi替換Xi;否則,保持Xi的位置不變。式(6)如下:



5)計算SN個可行解的適應度值fiti,根據適應度值確定并記錄最優解。
6)偵察蜂階段。記錄食物源Xi的開采次數trial,若trial>limit,則放棄該食物源,利用式(5)隨機生成新的食物源Xi,加入雇傭蜂和跟隨蜂的搜索隊列。該過程主要是避免解陷入局部最優。
7)循環。判斷循環終止條件是否成立,若成立,結束循環,算法結束;否則跳轉到步驟2),進入下一次循環。
同類機調度問題是一類組合優化問題,需要將實數轉化為整數,即將人工蜂群算法進行離散化處理。假設在該同類機調度問題中包含U臺機器和D件作業,雇傭蜂和偵察蜂的種群規模均為SN,目標函數為最小化最大完工時間。對于該問題,需考慮作業的到達時間,每臺機器上的作業按照先到達先加工的原則進行加工即可。
根據該類同類機調度問題的特點,本文給出一種離散化的編碼策略。該問題解的具體編碼設計如下列矩陣所示,Z是一個SN×D的十進制矩陣,Z={X1,X2,…,XSN}表示SN個加工方案,對應初始的SN個食物源。每一個加工方案用Z的一個行向量Xi=(xi1,xi2,…,xiD)表示,xij的值表示第j件作業對應的加工機器,其中i={1,2,…,SN},j={1,2,…,D},xij={1,2,…,U}。食物源的屬性與作業對應,屬性值與作業的加工機器對應,如編碼(2,1,3,2,1,2)表示,作業2、5 在第一臺機器上加工,作業1、4、6 在第二臺機器上加工,作業3 在第三臺機器上加工。

群智能優化算法的初始化,對解的質量和算法的收斂速度具有直接影響。在ABC 算法中,考慮使初始解均勻分布在可行解空間上(可行域內),可以加強解的質量和算法的全局收斂性。在ABC 算法的初始化過程中,一般采用隨機方法初始化蜂群,對于離散人工蜂群算法,食物源各參數的可行域是有限個整數集合,因此,在算法的初始化階段,需要保證食物源各參數在可行域上均勻取值。
本文給出了一種初始化策略,采用實數向上取整的方式,實現浮點數到整數間的轉換。將初始化方程(5)更新為:

其中:ceil()是向上取整函數,經此方法處理,初始化xij的取值范圍是[1,2,…,uj],理論上該uj個整數的取值概率相同,均為1/uj。這里需要說明的是,在該類同類機調度問題中,食物源參數的取值下限lj= 1,與最小的機器編號相對應,所以式(9)不考慮lj的取值情況。
通過這種初始化方法,既實現了離散化,又保證了食物源的各參數在可行域內具有相同的取值概率,提高了算法的性能。算法中的雇傭蜂、跟隨蜂、偵察蜂階段均采用ceil()函數實現離散化。
2.4.1 待優參數的生成策略
在原始的人工蜂群算法中,雇傭蜂和跟隨蜂根據式(6)開發更優的食物源,其中參數j表示食物源中待優化的屬性,在值域內隨機生成。本文根據同類機調度問題的編碼方式,以平衡機器的負載為目標,在雇傭蜂階段,針對待優參數j提出新的生成策略,提升算法的收斂速度。具體步驟如下:
步驟1 尋找目標食物源中出現次數最多的屬性值,即加工作業最多的機器,若滿足條件的屬性值有多個,選擇值最小的屬性值記為MostValue。
步驟2 記錄該屬性值的出現次數n以及在食物源中的位置locations。
步驟3 在locations中隨機選取一個作為待優化參數j。
其 中,mostValue={1,2,…,uj},locations為1×n的 行向量。
2.4.2 基于差分算法的局部搜索策略
差分進化(Differential Evolution,DE)算法是一種基于群體差異的啟發式并行搜索方法,其本質上是一種函數優化算法。DE算法具有良好的尋優能力,已成功應用于很多優化問題中。DE 算法的思想上其他進化算法類似,其核心是變異、交叉和選擇操作,不同在于,DE 算法通過種群中多個個體的差分信息實現進化。DE 算法有多種變異策略,其中DE/rand/1 策略用來維持種群的多樣性,避免陷入局部最優,DE/best/1策略可以加快算法的收斂速度,二者的公式如下:

其中:i={1,2,…,SN},p1、p2、p3是{1,2,…,SN}中隨機選取的不與i相等的參數,xbest為當前全局最優解,F∈[0.5,1]。
受差分進化算法的變異策略的啟發,結合人工蜂群算法的特點,本文提出了新的局部搜索策略。通過對差分進化算法的DE/rand/1變異策略和DE/best/1變異策略的變動,將雇傭蜂和偵查蜂的局部搜索式(6)更新為以下3 種,并用ceil()函數進行離散化處理。

其中:i={1,2,…,SN},k是{1,2,…,SN}中隨機選取的參數,且k≠i,J={1,2,…,D},由上文的生成策略生成。best 表示當前全局最優解,即最佳食物源,φij∈[0,1],隨機取值。
雇傭蜂的任務是在初始的食物源的鄰域內搜索更優的解,該過程需要綜合考慮種群的多樣性和收斂速度。本文借鑒差分進化算法的進化策略,進化初期在較大范圍內搜索最優解,保持種群的多樣性,進化后期,種群以收斂到較小的范圍內,縮小搜索范圍以增加搜索精度。本文以可行解的平均適應度值為標準,區分食物源的優劣,并針對較優和較劣的食物源分別給出不同的搜索策略,雇傭蜂搜索過程如下:
步驟1 為當前解集中每個可行解對應的食物源分配一只雇傭蜂。
步驟3 計算指定解Xi的適應度值fit(Xi)。

步驟6 計算新解適應度值fit(Vi)并與原解適應度值fit(Xi)比較:若fit(Vi)>fit(Xi)則更新食物源;否則保留原食物源。
雇傭蜂尋優過程結束,跟隨蜂開始工作,在原始的人工蜂群算法中,跟隨蜂采用輪盤賭的方式選擇目標食物源,并進行進一步搜索,從而加快算法的收斂速度。在跟隨蜂尋優的過程中,為了防止陷入局部最優,本文通過借鑒模擬退火算法中“以一定的概率接受較差解”的思想,給出了一種新的食物源更新策略,從而更新了跟隨蜂的搜索過程。定義如下概率因子:

在模擬退火算法中,接受較差解的概率會隨著時間的推移溫度的降低而不斷減少。在本文中,將接受較差解的概率與解的質量相關聯,如果較差解與原解的適應度值差距越小,則接受該較差解的概率越大;反之概率越小,概率因子pi的取值范圍是(0,e-1)。
跟隨蜂搜索策略如下:
步驟1 跟隨蜂以輪盤賭的方式隨機選擇食物源Xi。
步驟2 選擇式(14)進行局部搜索,得到新食物源Vi。
步 驟3 計 算Xi、Vi的 適 應 度 值fit(Vi)、fit(Xi),如 果fit(Vi)>fit(Xi),更新食物源;否則執行步驟4。
步驟4 根據式(15)計算跟隨蜂選擇較差解Vi的概率pi,如果pi>rand,更新食物源;否則保留原食物源進入下一次迭代。
在原始人工蜂群算法中,食物源經limit次迭代未更新就會被舍棄,偵查蜂隨機初始化生成一個新的食物源,但此食物源的質量一般不高,且理論上擁有更少的迭代更新的次數,因此對全局最優解的貢獻有限。為提高偵查蜂初始化食物源Xi的質量,本文充分利用最佳食物源Xs攜帶優質信息,讓Xs的參數從第二位起間隔插入Xi中并取代Xi中原有參數,生成新的食物源Xj。比較食物源Xi與食物源Xj的適應度值,取適應度值較優的作為新的食物源。過程如下:

步驟1 初始化參數。最大迭代次數MaxCycle和食物源多次迭代未更新的保留次數limit,根據式(9)初始化雇傭蜂種群Xi(i={1,2,…,SN})。
步驟2 計算種群中各食物源的適應度值fit(Xi)。
步驟3 根據3.4 節給出的待優參數選擇策略確定優化參數j(j={1,2,…,D})。
步驟4 記錄當前全局最優解best,賦值cycle= 1,開始


因此,理論上,在求解Qm|rj|Cmax類型的同類機調度問題上,IDABC算法的較原始人工蜂群算法更優。
本文所有程序代碼均采用Matlab R2016a 軟件編寫,使用的PC 配置如下,操作系統:64 位Windows 10,處理器:Intel Core i7-7700 CPU 3.60 GHz 3.60 GHz,內存:8 GB。
本文ABC 算法的參數設置如下,雇傭蜂規模SN= 90,最大迭代次數MaxCycle= 700,食物源經多次迭代未更新的最大保留次數limit= 50。為保證對比的公平性,將對比算法的參數設置如下:原始離散人工蜂群算法參數設置同上;文獻[21]改進的離散人工蜂群算法的種群規模和最大迭代次數設置同上;文獻[4]改進離散螢火蟲算法的最大迭代次數設為700,種群規模設為90,其余參數保持原有的設置不變;遺傳算法(GA)種群規模為90,交叉概率為1,變異概率為0.01,迭代次數為700;粒子群優化算法(PSO)的種群規模為90,迭代次數為700,學習因子為1.494 45,慣性權重為0.729。
3.2.1 實驗結果分析
針對Qm|rj|Cmax型同類機調度問題,本文設計的算例為JiMj,其中Ji表示作業數量,i={50,80,100,150,200},Mj表示加工機器數量,j={6,8,10},如J50M6表示50 件作業在6 臺機器上進行加工。每件作業長度取1~100 的隨機數,每臺機器的運行速度取1~10的隨機數,作業按照先到達先加工的順序在各臺機器上加工。
本文考慮了該類同類機調度問題的15 種不同規模的應用場景,給出15 個算例,對于每一種應用場景,用IDABC、HDABC、IGSO、原始人工蜂群(ABC)算法、遺傳算法(GA)和粒子群優化(PSO)算法進行求解。為防止偶然性干擾,每組實驗運行100 次求平均值,并用平均值(ave)、最優值(min)、最劣值(max)和方差(var)等4個指標衡量各種算法的優劣。
表1 給出了算法IDABC、HDABC、IGSO、ABC、GA 和PSO分別求解上述15 個算例的結果,圖2(a)~(d)為IDABC 與ABC、HDABC、IGSO 等算法針對不同算例的求解曲線,其中,每個算法的迭代次數均取為700。4 個子圖選取的算例分別為J50M8、J80M6、J100M10和J200M8,代表了從小到大的不同規模的應用場景。通過比較分析表1結果和圖2(a)~(d)可以得出以下結論。
首先,在收斂速度方面,由圖2(a)~(d)的4種算例的求解曲線可以看出,IDABC 算法的收斂速度要明顯快于其他3 種算法;其次,在求解精度方面,由表1 實驗數據可知,對于所有15 個算例的求解結果,IDABC 算法求解的平均值、最優值和最劣值均優于其他5 種算法,與5 種算法中表現最好的HDABC 算法相比,求解精度平均提高了4.1%,且實驗規模越大,IDABC 算法的優越性越明顯,表明IDABC 算法在求解精度上是6種算法中最好的;最后,在算法的穩定性方面,由表1實驗數據可知,除了算例J80M10和J200M6,IDABC 對其求解的方差略差于HDABC 的求解結果外,對其余13 個算例的求解結果,IDABC算法求解的方差均為最優,與HDABC算法相比,穩定性平均提高了26.9%,且對于大規模的問題IDABC 算法也能保證平均誤差很小,表明IDABC 算法在求解的穩定性方面總體上優于其他5種算法。綜上所述,在以上6種算法解決Qm|rj|Cmax型同類機調度問題中,本文改進的離散人工蜂群算法在算法的求解質量方面和求解的穩定性方面均為最優,且明顯優于IGSO、GA 和PSO 算法,在收斂速度方面優于HDABC、IGSO和ABC等算法。
3.2.2 參數分析
群智能算法初始化參數的選取對算法的性能有一定的影響,同一算法在解決不同領域的問題時,其參數的設置存在差異。原始的ABC 算法采用的是針對連續型問題的編碼方式,本文利用改進的離散型人工蜂群算法求解Qm|rj|Cmax類型的同類機調度問題,采用的編碼方式是離散的,為達到最佳實驗效果,需要對ABC 算法的參數進行分析。本文實驗討論的參數有3個:初始食物源數量(雇傭蜂規模)SN、算法最大迭代次數MaxCycle和食物源經多次迭代未更新的最大保留次數
limit。
以下3 組實驗分別分析SN、MaxCycle和limit對算法性能的影響,采用的同類機調度問題的算例均J100M10,每組實驗算法運行100 次,取平均值作為最終結果,并以目標函數的平均值作為評價函數值評價算法的性能。

圖2 四種算例的算法求解曲線Fig.2 Algorithmic solution of curves for four examples
圖3(a)顯示的是雇傭蜂規模SN對本文算法性能的影響(MaxCycle=1 000,limit=80),如圖3(a)所示,算法的評價函數值與雇傭蜂規模整體上呈現負相關,且在一定范圍內,算法的評價函數值隨雇傭蜂規模的增加而快速減小,當雇傭蜂規模超過一定值后,算法性能逐漸趨于穩定。由圖3(a)可知,算法的最佳雇傭蜂規模為90。
圖3(b)分析的是最大迭代次數MaxCycle對本文算法性能的影響(SN=90,limit=80),迭代次數對群智能算法的影響巨大,本文取(100,300,500,600,700,800,900,1 000,1 100,1 200)10 組最大迭代次數進行分析。由圖3(b)可以看出,在MaxCycle∈[0,700]范圍內,評價函數值隨最大迭代次數的增加越來越優,當MaxCycle>700,最大迭代次數的改變對評價函數值的影響相對平緩,即不能較大程度上影響算法性能。因此,針對該類同類機調度問題的人工蜂群算法的最大迭代次數取為700。
圖3(c)描述的是食物源經多次迭代未更新的最大保留次數limit對本文算法性能的影響(SN=90,MaxCycle=700),本文limit的值取(10,20,30,40,50,60,70,80,90,100)10 組,通過實驗分析其優劣。理論上,如果limit的值太小,則食物源更新的速度過快,無法達到最優解,如果limit的值太大,則會降低種群的多樣性,算法易陷入局部最優,因此這兩種情況都會降低算法的性能。如圖3(c)所示,在limit∈[0,50]范圍內,算法的評價函數值隨limit值的遞增而減小,此時算法性能逐漸提升,當limit= 50 時,算法的性能在實驗組中達到最優,當limit>50時,評價函數值整體上隨limit值的遞增而增大,算法性能逐漸下降。因此,針對該類同類機調度問題的參數limit的最佳取值為50。

圖3 參數SN、MaxCycle和limit對本文算法性能的影響Fig.3 Effect of parameters SN、MaxCycle and limit on performance of the proposed algorithm
針對同類機調度領域存在的問題和不足,本文提出了一種改進的離散型人工蜂群(IDABC)算法求解同類機調度問題。首先,引入了同類機調度問題的數學模型;其次,引入了種群初始化策略,獲得均勻分布的種群,通過改進雇傭蜂和跟隨蜂的局部搜索策略,提高了算法的種群多樣性和防止算法陷入局部最優,通過提出帶優參數的生成策略和改進偵察蜂的全局搜索過程,提高了算法的收斂速度;最后,分析了本文改進算法的整體性能,并利用15 個算例的仿真對比實驗,證明了本文算法具有良好的收斂速度、求解精度以及求解穩定性,可以有效地求解同類機調度問題。
本研究只考慮了最小化最大加工時間一種類型的同類機調度問題,在后續的研究工作中,應考慮更多應用場景,同時,進一步優化人工蜂群算法,提升算法的尋優性能。