本發(fā)明涉及作業(yè)車間調(diào)度領(lǐng)域。
背景技術(shù):
柔性流水車間調(diào)度問題(Flexible Flow Shop Scheduling Problem,F(xiàn)FSP)是大量實(shí)際生產(chǎn)線調(diào)度問題最常用的簡(jiǎn)化模型,是一類重要的組合優(yōu)化問題,已經(jīng)成為先進(jìn)制造技術(shù)實(shí)踐的關(guān)鍵。FFSP已經(jīng)被證明是一個(gè)NP難問題,是學(xué)術(shù)界與工程界共同關(guān)注的課題。因此,對(duì)FFSP的研究具有重要的理論意義和應(yīng)用價(jià)值。
目前求解FFSP的主要方法有遺傳算法、粒子群算法、免疫克隆選擇算法#蟻群算法等,有方法采用構(gòu)造型啟發(fā)方式算法產(chǎn)生初始種群,并結(jié)合遺傳算法進(jìn)行全局搜索;還有采用遺傳算法對(duì)柔性流水車間調(diào)度問題進(jìn)行求解和采用粒子群優(yōu)化算法針對(duì)混合約束柔性流水車間調(diào)度問題進(jìn)行了求解;采用隨機(jī)生成所有工序順序和機(jī)器的順序的方法擴(kuò)大初始解的空間,主要解決了機(jī)器選擇結(jié)果依賴于工。但是沒有考慮機(jī)器選擇對(duì)排序調(diào)度結(jié)果的影響。
FFSP可以描述為:待加工的工件集合J={J1,J2,...Ji,...Jn},(n為工件的個(gè)數(shù),i∈[1,n]),機(jī)器集合為M={M1,M2,...Mj,...Mm}(j∈[1,m]),其中λ表示工序數(shù),Sj表示第j道工序上總機(jī)器數(shù),m為機(jī)器數(shù)量。每個(gè)工件需要在m個(gè)并行的調(diào)度子系統(tǒng)中(m臺(tái)機(jī)器上)選擇一個(gè)進(jìn)行加工,且滿足如下的約束條件:
1)每個(gè)工件可以在不同的機(jī)器上加工;
2)每個(gè)工件一旦開始加工就不能中斷;
3)每臺(tái)機(jī)器Mj同時(shí)只能加工一個(gè)工件Ji,每個(gè)工件Ji同時(shí)只能被一臺(tái)機(jī)器Mj加工;
4)工件的準(zhǔn)備時(shí)間和移動(dòng)時(shí)間包含在加工時(shí)間內(nèi);
5)允許工序之間存在等待,允許機(jī)器在工件未到達(dá)時(shí)閑置。
FFSP的優(yōu)化目標(biāo)是要找出這個(gè)工件的一個(gè)加工順序,使其總完工時(shí)間最小。下面給出計(jì)算工件總完工時(shí)間的計(jì)算方法:
式中:
為第i臺(tái)機(jī)器上最后完工工件的完工時(shí)間;Cmax為最后完工工件的完工時(shí)間,即排序的總時(shí)間。FFSP的優(yōu)化性能指標(biāo)為總加工費(fèi)用的值最小,調(diào)度的目標(biāo)是求解n個(gè)任務(wù)的最優(yōu)加工順序,使總完工時(shí)間Cmax最小,為達(dá)到上述需求,本發(fā)明提供了一種改進(jìn)的柔性流水車間調(diào)度問題的求解算法。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述文獻(xiàn)研究成果存在的不足,本發(fā)明提供了一種改進(jìn)的柔性流水車間調(diào)度問題的求解算法。
為了解決上述不足,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:
步驟1:FSSP算法定義和流程
步驟2::重新定義粒子速度和位置的相關(guān)算子,通過分析初始機(jī)器選擇與調(diào)度總完工時(shí)間的關(guān)系,首次提出一種基于NEH算法的最短用時(shí)分解策略算法
步驟3:引入編碼矩陣和解碼矩陣來表示工件、機(jī)器以及調(diào)度之間的關(guān)系
步驟4:利用改進(jìn)離散粒子群算法進(jìn)行全局優(yōu)化
本發(fā)明有益效果是:
本算法的優(yōu)勢(shì)在于提高了粒子種群初始解的質(zhì)量,縮短粒子找到最優(yōu)解的時(shí)間;同時(shí)采用呈指數(shù)遞減的慣性權(quán)重方式,有效地避免粒子早熟收斂,增強(qiáng)了粒子前期的全局搜索能力。
附圖說明
附圖1 FFSP的整體框架
附圖2求解FFSP的算法流程
具體實(shí)施方式
步驟1:FSSP算法定義和流程,其具體描述如下:
步驟1.1)FSSP算法定義
1)置換序列:粒子的位置為X,置換序列(i,j)的操作位交換X中第i個(gè)元素和第j個(gè)元素。
2)加法算子把后一個(gè)速度的置換序列加入到前一個(gè)速度或位置的置換序列列表的末尾。例如:假設(shè)那么
3)減法算子減法操作為粒子的全局最優(yōu)解減去粒子的個(gè)體位置或者粒子個(gè)體最優(yōu)解位置減去粒子個(gè)體位置,結(jié)果為置換序列。例如:假設(shè)A=(3,1,2,4,5,6),B=(1,2,4,3,6,5),由于A(1)=B(4)=3,第一個(gè)交換序列就為(1,4),也就是說減法結(jié)果第一個(gè)位置上為4,以此類推,那么
4)乘法算子乘法操作為慣性權(quán)重ω(ω∈R)乘速度和學(xué)習(xí)因子c1、c2(c2∈R)乘速度,運(yùn)算的結(jié)果分別是以ω、c1、c2為概率保留粒子的速度。
步驟1.2)FFSP算法流程
包括粒子種群規(guī)模,慣性權(quán)重因子ω,學(xué)習(xí)因子c1、c2,工件數(shù)量n,機(jī)器數(shù)量m,存儲(chǔ)工件加工矩陣JobNumber,工件關(guān)聯(lián)陣JobRJob,工件總加工時(shí)間Totaltime,最大迭代次數(shù)T
步驟2:重新定義粒子速度和位置的相關(guān)算子,通過分析初始機(jī)器選擇與調(diào)度總完工時(shí)間的關(guān)系,首次提出一種基于NEH算法的最短用時(shí)分解策略算法,其具體計(jì)算過程如下:
FFSP調(diào)度完工時(shí)間的大小取決于工件選擇的加工機(jī)器和機(jī)器上工序的加工順序,因此提高粒子種群初始解的質(zhì)量尤為重要。提高初始解的質(zhì)量可以縮短求解FSSP的時(shí)間和增強(qiáng)粒子尋找最優(yōu)解的性能。按照工件在機(jī)器上總加工時(shí)間對(duì)工件進(jìn)行降序排列,再依次取出工件進(jìn)行迭代插入操作。這里,最短用時(shí)分解策略思想:將工件在機(jī)器上總加工時(shí)間按照每道工序進(jìn)行分解,根據(jù)各個(gè)工件在每道工序上的總時(shí)間進(jìn)行降序排列,按照每道工序的總時(shí)間與鄰近度進(jìn)行對(duì)比并排序,直至對(duì)所有工件降序排序完成。其中,鄰近度定義如下:
Pro=min ETCR(i,j)(i∈{1,2,...,SubTask},j∈{1,2,...,M}
表示兩道工序加工時(shí)間之間的接近程度,鄰近度越小表明越接近。最短用時(shí)分解策略算法步驟:
步驟2.1)設(shè)置優(yōu)先級(jí)別列表S={1,2,...,M},其中p為工序數(shù),sumpi為第i道工序的機(jī)器個(gè)數(shù),M為總機(jī)器的個(gè)數(shù);同時(shí)設(shè)置工序數(shù)的副本pcopy,令pcopy=p;設(shè)置鄰近度Pro;計(jì)數(shù)器t=1;優(yōu)先級(jí)的設(shè)置m=M;
步驟2.2)在第pcopy道工序中,按照工件在機(jī)器上加工的總時(shí)間,對(duì)工件進(jìn)行降序排列,得到排列序列seq;
步驟2.3)根據(jù)seq設(shè)置優(yōu)先級(jí)列表S:對(duì)seq中第t和t+1兩道工序,比較數(shù)值之差,如果大于Pro,則較大數(shù)的優(yōu)先級(jí)就設(shè)置為m,然后設(shè)置m=m-1;否則,比較該兩道工序的前一道工序,直至得到比較結(jié)果;
步驟2.4)判斷t是否等于M:如果是,則第t道工序的優(yōu)先級(jí)設(shè)置為最低1,轉(zhuǎn)步驟5;否則,轉(zhuǎn)步驟3;
步驟2.5)輸出優(yōu)先級(jí)列表S;
步驟2.6)根據(jù)規(guī)則S動(dòng)態(tài)隨機(jī)生成機(jī)器鏈。
步驟3:引入編碼矩陣和解碼矩陣來表示工件、機(jī)器以及調(diào)度之間的關(guān)系,其具體計(jì)算過程如下:
步驟3.1粒子的編碼和解碼
粒子的編碼方式既影響粒子的搜索能力,又影響種群的多樣性。本方法編碼方式采用采用間接編碼,編碼長(zhǎng)度為其中JNi表示第i個(gè)工件的工序數(shù)量。這種編碼方式的好處是一個(gè)編碼方案對(duì)應(yīng)著一個(gè)調(diào)度策略。編碼用向量ECJ(P)表示,其中P表示工序數(shù);解碼矩陣用DCJ(M,J,P,N)表示,其中M表示機(jī)器集合,J表示任務(wù)集合,P表示工序集合,B表示加工相對(duì)應(yīng)機(jī)器的工件數(shù)量。當(dāng)m=3,J=3時(shí),粒子ECJ=(2,3,3,1,1,1,3,2,2,2,)即為一種可行的編碼策略。ECJ(1)=2表示第1個(gè)工件的第1道工序在機(jī)器2上加工,ECJ(4)=1表示第2個(gè)工件的第1到工序在機(jī)器1上加工,以此類推。給定粒子編碼方案后,需要進(jìn)行解碼操作:將在對(duì)應(yīng)機(jī)器加工的全部子任務(wù)劃分出來,并結(jié)合工件關(guān)聯(lián)矩陣JobSubJob,將其解碼的結(jié)果儲(chǔ)存進(jìn)解碼矩陣?yán)铩?/p>
步驟4:利用改進(jìn)離散粒子群算法進(jìn)行全局優(yōu)化,其具體過程如下:
通過慣性權(quán)重調(diào)整來進(jìn)行全局優(yōu)化。
慣性權(quán)重ω是算法中一個(gè)很重要的參數(shù),它平衡了粒子的全局搜索能力和局部探索能力。較大的慣性權(quán)重能增強(qiáng)粒子全局的搜索能力,而較小的慣性權(quán)重能提高粒子的局部探索能力。為了能使算法在初期進(jìn)行較全面的搜索,采用呈指數(shù)遞減的慣性權(quán)重計(jì)算公式,如下式所示:
α=ωmax-ωmin
式中:ωmax和ωmin為慣性權(quán)重的最大值和最小值,Iter為當(dāng)前迭代次數(shù),maxIter為最大迭代次數(shù)。