本發(fā)明涉及調(diào)度領(lǐng)域,具體地涉及用算法解決作業(yè)車間工藝瓶頸問題。
背景技術(shù):
在企業(yè)的整個(gè)經(jīng)營過程中,總有某一個(gè)環(huán)節(jié)制約著企業(yè)的產(chǎn)銷率,我們將其稱為“瓶頸”。企業(yè)的目標(biāo)就是在現(xiàn)在或?qū)碣嵢「嗟睦麧?所以要不斷的進(jìn)行改進(jìn)和突破,讓瓶頸不再成為企業(yè)增收的障礙。但是在改進(jìn)的過程中,舊的瓶頸消失了,新的瓶頸又將產(chǎn)生。所以對企業(yè)來說,對瓶頸的改造和突破是一個(gè)循環(huán)往復(fù)、持續(xù)改進(jìn)的過程。
通過對以上定義的分析,可以發(fā)現(xiàn),判別某資源是否為瓶頸資源時(shí),有以下六種典型情況:
1.部分生產(chǎn)資源的生產(chǎn)能力低于市場需求。
2.所有生產(chǎn)資源的生產(chǎn)能力低于市場需求。
3.所有生產(chǎn)資源的生產(chǎn)能力均高于市場需求。
4.添加新的生產(chǎn)資源或改進(jìn)工藝時(shí),對瓶頸資源產(chǎn)生的影響。
5.通過外包加工提高生產(chǎn)能力時(shí),對瓶頸資源產(chǎn)生的影響。
6.通過營銷等措施使市場需求提高時(shí),對瓶頸資源產(chǎn)生的影響。
約束理論認(rèn)為應(yīng)該平衡系統(tǒng)中的物流,而不是平衡系統(tǒng)中的能力,那些占極少數(shù)的瓶頸資源是控制物流的關(guān)鍵,決定了占大多數(shù)的非瓶頸資源的利用程度,同時(shí)決定了系統(tǒng)的有效產(chǎn)出。因此,理論的工具、原則就成為瓶頸資源識別的關(guān)鍵技術(shù)之一。本章主要研究瓶頸資源的識別方法,以便科學(xué)合理、快速有效地識別出系統(tǒng)中的瓶頸資源。瓶頸資源限制了整個(gè)系統(tǒng)的有效產(chǎn)出,是系統(tǒng)能力最薄弱的地方。
布谷鳥搜索(Cuckoo Search,CS)算法是一種新的現(xiàn)代啟發(fā)式算法,由劍橋大學(xué)Yang和拉曼工程學(xué)院Deb于2009年提出的。該算法基于某些布谷鳥種類的巢寄生繁育行為和鳥類、果蠅等的萊維飛行(Levy flight)行為特征提出。布谷鳥搜索算法是模擬布谷鳥為尋找合適的產(chǎn)卵的鳥窩而隨機(jī)游走的尋窩過程。在這個(gè)宿主的選擇過程中,布谷鳥在繁殖期尋找與孵化期和育雛其相似的雛鳥食性基本相同、卵形與顏色易仿的宿主。多數(shù)情況下,宿主一旦識別出寄生卵,就將寄生卵扔出或棄巢,在其他地方另建新巢。而布谷鳥在下一次選擇宿主的時(shí)候也會放棄該鳥巢而重新選擇。為了便于模擬布谷鳥的尋窩方式,Yang和Deb提出了一下3個(gè)假設(shè):(1)布谷鳥一次只產(chǎn)一個(gè)蛋,并隨機(jī)選擇鳥窩位置進(jìn)行孵化;(2)在隨機(jī)選擇的一組鳥窩中,最好的鳥窩位置將被保留到下一代;(3)可利用宿主的鳥窩數(shù)量n是固定的,宿主發(fā)現(xiàn)一個(gè)外來鳥蛋的概率為Pa。Pa可以近似看作n個(gè)位置較差的鳥窩被隨機(jī)產(chǎn)生的幾個(gè)新鳥窩替換的概率,通常設(shè)Pa為一個(gè)固定值。布谷鳥具有很好的全局最優(yōu)搜索能力,算法參數(shù)少易于實(shí)現(xiàn),但是該算法搜索速度不夠快,計(jì)算精度不夠高,算法應(yīng)用范圍不夠大,搜索活力不足。
K_means算法在大量數(shù)據(jù)處理中有著非常廣泛的應(yīng)用,它的主要思想是通過迭代過程把數(shù)據(jù)集劃分為不同的類別,使得評價(jià)聚類性能的準(zhǔn)則函數(shù)達(dá)到最優(yōu),從而使生成的每個(gè)聚類內(nèi)緊湊,類間獨(dú)立。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)的上述不足,本發(fā)明要解決的技術(shù)問題是提供一種基于布谷鳥搜索算法解決作業(yè)車間工藝瓶頸問題。
本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的問題:作業(yè)車間產(chǎn)能供不應(yīng)求,存在工藝瓶頸問題;布谷鳥搜索算法搜索速度不夠快,計(jì)算精度不夠高,算法應(yīng)用范圍也不夠大,以及沒有一種算法能夠直觀地給出作業(yè)車間調(diào)度方案的算法。
本發(fā)明為實(shí)現(xiàn)上述目的所采用的技術(shù)方案是:一種基于布谷鳥搜索算法解決作業(yè)車間工藝瓶頸問題。該算法的步驟如下:
步驟1:識別瓶頸:瓶頸的識別方法如下:
步驟1.1:根據(jù)TOC原理判斷瓶頸資源。
步驟1.2:當(dāng)需求超過能力時(shí),排隊(duì)最長的機(jī)器就是瓶頸。
步驟2:優(yōu)化瓶頸:利用改進(jìn)的布谷鳥搜索算法優(yōu)化車間瓶頸工藝加工的調(diào)度。具體流程如下:
步驟2.1:初始化瓶頸鳥窩數(shù)量n。
步驟2.2:利用改進(jìn)的K_means算法對這些鳥窩進(jìn)行聚類,分出安全性和飛行時(shí)耗不同的鳥窩群體。具體方法如下:
1.初始化數(shù)據(jù)集:初始化鳥窩集。
2.選擇初始解。隨機(jī)產(chǎn)生一組中心解,有k個(gè)中心。
3.聚類。把安全性和飛行時(shí)耗時(shí)相近的鳥窩聚為一類。具體為:
(1)計(jì)算每個(gè)鳥窩的安全性和飛行時(shí)耗。
(2)計(jì)算鳥窩相異度。相異度用鳥窩的安全性和飛行時(shí)耗刻畫,在這里用作業(yè)車間工件工序的執(zhí)行時(shí)間刻畫。
(3)如果ρi≤ε,則,第i個(gè)國家就聚到相應(yīng)的c中心一類中。
步驟2.3利用改進(jìn)的布谷鳥搜索算法在不同類中進(jìn)行調(diào)度。具體如下:
(1)初始化算法基本參數(shù):設(shè)置鳥窩個(gè)數(shù)(工件數(shù)量)n,宿主發(fā)現(xiàn)外來鳥蛋的概率Pa(作業(yè)搶占概率),以及最大迭代次數(shù)MaxT或搜索精度ε。
(2)初始化鳥窩位置(工件加工完成時(shí)間):根據(jù)加工時(shí)間長短呈上升趨勢排列。
(3)計(jì)算目標(biāo)函數(shù)值:按照編碼規(guī)則將鳥窩位置(完成時(shí)間)轉(zhuǎn)換為工序排列,計(jì)算各鳥窩位置對應(yīng)的目標(biāo)函數(shù)值,并獲得當(dāng)前最優(yōu)鳥窩位置。
(4)更新鳥窩位置:開始迭代,保留上代最優(yōu)鳥窩位置不變,更新鳥窩位置(即全局搜索),從而隨機(jī)產(chǎn)生下一代鳥窩,并評估位置更新后每個(gè)鳥窩的目標(biāo)函數(shù)值,記錄當(dāng)前最優(yōu)鳥窩位置。
(5)更新最優(yōu)函數(shù)值:比較本次迭代和上一次迭代鳥窩位置的最優(yōu)值,如果新的最優(yōu)值小于原最優(yōu)值,則把新的最優(yōu)值賦予當(dāng)前最優(yōu)鳥窩位置的目標(biāo)函數(shù)值。
(6)當(dāng)?shù)竭_(dá)最大搜索次數(shù)或滿足搜索精度時(shí)轉(zhuǎn)入步驟(7),否則,轉(zhuǎn)(3)進(jìn)行下一次搜索。
(7)輸出最優(yōu)調(diào)度值和對應(yīng)的調(diào)度方案(染色體序列)。
步驟3:如果所得解滿足要求或迭代次數(shù)達(dá)到一定值,轉(zhuǎn)步驟4,否則,以當(dāng)前各聚類的平均飛行時(shí)耗作為中心,返回步驟2.2。
步驟4:算法結(jié)束,輸出最優(yōu)調(diào)度方案。
本發(fā)明的有益效果是:
1.通過識別瓶頸,對瓶頸有正對性地優(yōu)化瓶頸工藝的作業(yè)調(diào)度,避免了很多不必要的優(yōu)化過程,加快了算法的執(zhí)行速度,同時(shí),也提高了算法解的精確度。
2.用改進(jìn)的K_means算法對鳥窩群體進(jìn)行分類,然后通過改進(jìn)的布谷鳥搜索算法對各個(gè)聚類進(jìn)行優(yōu)化調(diào)度,一方面減少了算法的計(jì)算量,另一方面有效提高了算法的解精確度。
3.利用利用安全性和飛行時(shí)耗來刻畫鳥窩的相異度,并利用隨機(jī)數(shù)刻畫安全性,用地理位置刻畫飛行時(shí)耗,簡單有效,切合實(shí)際情況,易于理解。
4.鳥窩的初始位置按上升趨勢排列,簡單有序,減少了算法的迭代搜索時(shí)間。
5.采用一種基于工序的編碼規(guī)則求解jsp問題,把工件參數(shù)屬性化,簡單明了,實(shí)用性高,也提高了算法的搜索能力。
6.利用一種基于均值的方法求解布谷鳥的搜索步長,減少算法搜索時(shí)間,提高算法求解作業(yè)車間調(diào)度問題的精確度。
附圖說明
圖1為一種基于布谷鳥搜索算法解決作業(yè)車間工藝瓶頸問題流流程圖。
圖2為改進(jìn)布谷鳥搜索算法的基本流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合算法流程圖進(jìn)行詳細(xì)、具體說明。
一、瓶頸的數(shù)學(xué)描述
對于系統(tǒng)中的n種資源X={X1,X2,...,Xn},實(shí)際產(chǎn)出能力C={C1,C2,...,Cn},系統(tǒng)的外部需求量MR={MR1,MR2,...,MRn}。某些資源之間存在護(hù)衛(wèi)輸入輸出的關(guān)聯(lián)關(guān)系R。假設(shè)與資源Xi相關(guān)聯(lián)的資源的標(biāo)號的集合為S,即
那么,當(dāng)且僅當(dāng)
時(shí),資源Xi為瓶頸資源,產(chǎn)出能力Ci,外部需求量MRi。
二、一種解決車間調(diào)度工藝瓶頸問題的算法
步驟1:識別瓶頸:瓶頸的識別方法如下:
步驟1.1:根據(jù)TOC原理,建立以下模型:且時(shí),資源Xi為瓶頸資源。
步驟1.2:當(dāng)需求超過能力時(shí),排隊(duì)最長的機(jī)器就是瓶頸。
步驟2:優(yōu)化瓶頸:利用改進(jìn)的布谷鳥搜索算法優(yōu)化車間瓶頸工藝加工的調(diào)度。具體流程如下:
步驟2.1:初始化鳥窩數(shù)量n。
步驟2.2:利用改進(jìn)的K_means算法對這些鳥窩進(jìn)行聚類,分出安全性和飛行時(shí)耗不同的鳥窩群體。具體方法如下:
1.初始化數(shù)據(jù)集:鳥窩集N={Ni|i=1,2,...,n}。
2.選擇初始解。隨機(jī)產(chǎn)生一組中心解,有k個(gè)中心。
3.聚類。把安全性和飛行時(shí)耗時(shí)相近的鳥窩聚為一類。具體為:
(1)計(jì)算每個(gè)鳥窩的安全性和飛行時(shí)耗。鳥窩安全性用隨機(jī)概率p表示,pi=rand(0,1),鳥窩飛行時(shí)耗用動力學(xué)公式表示如下:
其中,ti為第i個(gè)鳥窩的飛行時(shí)耗,si為第i個(gè)鳥窩與布谷鳥的距離,v為布谷鳥的平均飛行速度。
(2)計(jì)算鳥窩相異度。相異度用鳥窩的安全性和飛行時(shí)耗刻畫,在這里用作業(yè)車間工件工序的執(zhí)行時(shí)間刻畫。相異度:
ρi=a.ti+b·pi
式中,a、b是常數(shù),此處定義a、b∈(0,1)
(3)如果ρi≤ε,則,第i個(gè)國家就聚到相應(yīng)的c中心一類中。
步驟2.3利用改進(jìn)的布谷鳥搜索算法在不同類中進(jìn)行調(diào)度。具體如下:
(1)初始化算法基本參數(shù):設(shè)置鳥窩個(gè)數(shù)(工件數(shù)量)n,宿主發(fā)現(xiàn)外來鳥蛋的概率Pa(作業(yè)搶占概率),以及最大迭代次數(shù)MaxT或搜索精度ε。
(2)初始化鳥窩位置(工件加工完成時(shí)間):根據(jù)加工時(shí)間長短呈上升趨勢排列。
(3)計(jì)算目標(biāo)函數(shù)值:按照編碼規(guī)則將鳥窩位置(完成時(shí)間)轉(zhuǎn)換為工序排列,計(jì)算各鳥窩位置對應(yīng)的目標(biāo)函數(shù)值,并獲得當(dāng)前最優(yōu)鳥窩位置。具體實(shí)現(xiàn)為:
目標(biāo)函數(shù):
f(C)=min max1≤o≤w{max1≤k≤m{max1≤i≤nCoik}} (1)
約束條件:
Coik-poik+M(1-aoihk)≥Coih (2)
(o=1,2,...,w;i=1,2,...,n;k=1,2,...,m)
Cojk-Coik+M(1-xoijk)≥poik (3)
(i,j=1,2,...,n;o=1,2,...,w;k=1,2,...,m)
Coik≥0(o=1,2,...,w;i=1,2,...,n;k=1,2,...,m) (4)
xoijk=0或1(i,j=1,2,...,n;o=1,2,...,w;k=1,2,...,m) (5)
其中,式(1)表示目標(biāo)函數(shù),即完成時(shí)間(Makespan);式(2)表示工藝約束條件決定的每個(gè)工件的操作的先后順序;式(3)表示加工每個(gè)工件的每臺機(jī)器的先后順序;式(4)表示完工時(shí)間變量約束條件;式(5)表示變量可能的取值大小。上述公式中所涉及的符號定義含義如下:Coik和poik分別為第o個(gè)訂單中的第i個(gè)工件在機(jī)器k上的完成時(shí)間點(diǎn)和加工時(shí)間長度;M是一個(gè)足夠大的整數(shù);aoihk和xoijk分別為指示系數(shù)和指示變量,其含義為:
(4)更新鳥窩位置:開始迭代,保留上代最優(yōu)鳥窩位置不變,更新鳥窩位置(即全局搜索),從而隨機(jī)產(chǎn)生下一代鳥窩,并評估位置更新后每個(gè)鳥窩的目標(biāo)函數(shù)值,記錄當(dāng)前最優(yōu)鳥窩位置。具體實(shí)施方案如下數(shù)學(xué)公式所示:
其中,表示第i只布谷鳥在第t代的鳥窩位置(在車間調(diào)度問題中用Coik表示),α是步長大小參數(shù),服從均勻分布,α~U(0,1)。參數(shù)S是隨機(jī)游動的步長,計(jì)算公式如下:
S=u+α·σ (9)
其中,
在局部搜索時(shí)對每一鳥窩位置按條件進(jìn)行更新:用一個(gè)隨機(jī)數(shù)Ra作為鳥窩主人發(fā)現(xiàn)外來鳥蛋的概率并與Pa進(jìn)行比較,若Ra>Pa,則隨機(jī)改變鳥窩位置,否則保持原來位置不變,并計(jì)算位置移動后每個(gè)鳥窩的目標(biāo)函數(shù)值,記錄當(dāng)前最優(yōu)鳥窩位置。用如下0-1規(guī)劃模型表示:
(5)更新最優(yōu)函數(shù)值:比較本次迭代和上一次迭代鳥窩位置的最優(yōu)值,如果新的最優(yōu)值小于原最優(yōu)值,則把新的最優(yōu)值賦予當(dāng)前最優(yōu)鳥窩位置的目標(biāo)函數(shù)值。
(6)當(dāng)?shù)竭_(dá)最大搜索次數(shù)或滿足搜索精度時(shí)轉(zhuǎn)入步驟(7),否則,轉(zhuǎn)(3)進(jìn)行下一次搜索。
(7)輸出最優(yōu)調(diào)度值和對應(yīng)的調(diào)度方案(染色體序列)。
步驟3:如果所得解滿足要求或迭代次數(shù)達(dá)到一定值,轉(zhuǎn)步驟4,否則,以當(dāng)前各聚類的平均飛行時(shí)耗作為中心,返回步驟2.2。
步驟4:算法結(jié)束,輸出最優(yōu)調(diào)度方案。