本發(fā)明設(shè)計(jì)調(diào)度問題領(lǐng)域,更具體地,涉及一種基于離散螢火蟲算法的多目標(biāo)柔性作業(yè)車間調(diào)度方法。
背景技術(shù):
生產(chǎn)調(diào)度是指針對一項(xiàng)可分解的工作,在盡可能滿足工藝路線、資源情況、交貨期等約束條件的前提下,通過下達(dá)生產(chǎn)指令,安排其組成部分所使用的資源、加工時間及加工的先后順序,已獲得產(chǎn)品制造時間或成本最優(yōu)化的一項(xiàng)工作。柔性作業(yè)車間調(diào)度問題是車間調(diào)度問題的一種,是指在加工系統(tǒng)中有一組功能不同的機(jī)床,待加工的工件包含多道工序,每道工序在一臺機(jī)床上加工,工件的加工路線互不相同,每個工件工序之間有先后順序約束。柔性作業(yè)車間調(diào)度問題在數(shù)學(xué)上是一個NP-hard組合優(yōu)化問題,隨著加工工序和可選機(jī)器的增加,車間調(diào)度方案的求解空間也會迅速復(fù)雜起來。在實(shí)際生產(chǎn)中,不但要考慮工件最大完工時間,平均流經(jīng)實(shí)踐、總拖期時間、機(jī)器總負(fù)荷和瓶頸機(jī)器負(fù)荷等調(diào)度性能指標(biāo)優(yōu)化,還要考慮生產(chǎn)成本等費(fèi)用指標(biāo),因此必須兼顧多種調(diào)度指標(biāo),進(jìn)行多目標(biāo)優(yōu)化。多目標(biāo)柔性作業(yè)車間調(diào)度問題和單目標(biāo)柔性作業(yè)車間調(diào)度問題相比,存在目標(biāo)之間具有不可公度性和矛盾性的問題。柔性作業(yè)車間調(diào)度問題的解空間是離散的,但是標(biāo)準(zhǔn)螢火蟲算法用來解決連續(xù)問題的,因此標(biāo)準(zhǔn)螢火蟲算法的編碼規(guī)則、距離定義、位置更新等規(guī)律不適用于求解柔性作業(yè)車間調(diào)度問題。
綜上所述,為了提高車間的生產(chǎn)效率,達(dá)到各項(xiàng)生產(chǎn)指標(biāo)最優(yōu),尋找一種高效的人工智能算法來求解柔性作業(yè)車間調(diào)度問題并且進(jìn)行多目標(biāo)的優(yōu)化十分必要。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明旨在公開一種基于離散螢火蟲算法的多目標(biāo)柔性作業(yè)車間調(diào)度方法,尤指一種基于離散螢火蟲算法的以最大完工時間、瓶頸機(jī)器負(fù)荷、機(jī)器負(fù)荷總量為優(yōu)化目標(biāo)的柔性作業(yè)車間調(diào)度問題的解決方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案主要包括以下過程:
針對多目標(biāo)柔性作業(yè)車間調(diào)度問題建立數(shù)學(xué)模型;
采用分段編碼方式對螢火蟲進(jìn)行編碼,包括機(jī)器選擇部分和工序排序部分;
使用離散螢火蟲算法,優(yōu)化上述模型得到Pareto最優(yōu)解集;
從Pareto最優(yōu)解集里選擇符合實(shí)際需求的解,并進(jìn)行解碼輸出機(jī)器選擇位置信息、工序排序位置信息。
所述模型為:n個工件{J1,J2,…,Jn}在m臺機(jī)器{M1,M2,…,Mm}上進(jìn)行加工,每個工件包含一道或多道工序,每個工件的工序順序以及在不同機(jī)器的加工時間確定,在加工過程中滿足各項(xiàng)約束條件,其中:
hj為j號工件的總工序數(shù);Ojh表示工件j的第h道工序;Cj表示工件j的加工完成時間;Mijh表示工件j的第h道工序在機(jī)器i上加工,當(dāng)Xijh=1時表示工序Ojh選擇機(jī)器i,否則不選擇在機(jī)器i上加工;Pijh表示工件j的第h道工序在機(jī)器i上加工所需的時間;Yijhkl表示工序Ojh和工序Okl的加工選后順序,當(dāng)Yijhkl=1時,表示工序Ojh先于工序Okl在機(jī)器i上加工。
所述模型的優(yōu)化的目標(biāo)有三個:
最大完工時間:
瓶頸機(jī)器負(fù)荷量:
機(jī)器負(fù)荷總量:
基于離散螢火蟲算法,對比傳統(tǒng)螢火蟲算法,解決多目標(biāo)柔性作業(yè)車間問題需要對螢火蟲位置、機(jī)器選擇序列的位置矢量更新規(guī)則和工序排序序列的位置矢量更新規(guī)則進(jìn)行重新定義:
定義1)螢火蟲的位置:每個螢火蟲的位置對應(yīng)一個柔性作業(yè)車間調(diào)度問題的可行解,第i個螢火蟲的位置表示為Xi=[JMi,Si]T,表示螢火蟲的位置由機(jī)器選擇部分JMi和工序排序部分Si兩組位置矢量組成,其中JMi=[Jmi,1,Jmi,2,…,Jmi,j,Jmi,n],Jmi,j表示第j個工件的機(jī)器選擇序列;Si=[Si,1,Si,2,…,Si,j,Si,H]T,H表示全部工件的工序總和,H=
定義2)機(jī)器選擇序列的位置矢量更新:
式中的減法操作按以下規(guī)則取值:令算法過程中,每個k的機(jī)器序列和的各維分量,對于的第h(1≤h≤hj)維分量如果與不相等,則即矢量繼承了矢量上的有效元素,如果則
式中的乘法操作按以下規(guī)則取值:令用和α|rand-0.5|聯(lián)合控制位置矢量從位置矢量中繼承的元素個數(shù):
式中的加法操作按以下規(guī)則取值:令工件k的機(jī)器選擇序列的位置更新可以表示為t時刻位置矢量和t+1時刻位移方向矢量之和,如果中的為零,則不改變矢量第h道工序?qū)?yīng)的機(jī)器選擇序號,即 如果不為零,則機(jī)器選則序列的位置矢量 第h道工序選擇的機(jī)器號是與交換后的值。
定義3)工序排序序列的位置矢量更新:
當(dāng)螢火蟲i支配螢火蟲j時,隨機(jī)挑選螢火蟲i的L個工件進(jìn)行標(biāo)記,并對被選取的工件的所有工序進(jìn)行位置標(biāo)記,同時標(biāo)記j中相同工序的所有標(biāo)記;標(biāo)記完成后,讓螢火蟲j繼承螢火蟲i的被選擇工件的所有被標(biāo)記工序序列;螢火蟲j支配螢火蟲i時同理;
對支配的螢火蟲工序序列作小范圍隨機(jī)移動:生成一個很小的正偶數(shù)2R(2R/H≤1/20),再生成2R個不同的隨機(jī)整數(shù)(范圍1~H),將2R個整數(shù)分為R組,將每組隨機(jī)數(shù)對應(yīng)的工序序號進(jìn)行對換;H為總工序數(shù)。
所述螢火蟲算法的編碼規(guī)則:工序排序部分:序號代表工件號,數(shù)字出現(xiàn)的次數(shù)代表對應(yīng)工件的工序數(shù),數(shù)字的第幾次出現(xiàn)代表工件的第幾道工序;機(jī)器選擇部分:對應(yīng)編碼長度與工序排序部分相等,從左到右按順序排列工件的工序,出現(xiàn)的序號代表所選機(jī)器號。
所述離散螢火蟲算法的具體過程為:
1)適用于離散問題的離散螢火蟲算法參數(shù)初始化:螢火蟲總數(shù)N,最大迭代次數(shù)Iter,隨機(jī)步長因子,螢火蟲之間吸引力,光照吸收率,每個螢火蟲的位置信息;
2)采用快速非支配排序方法將種群分層,記螢火蟲i在第ifloor層,對其進(jìn)行機(jī)器選擇序列的位置矢量更新和工序排序序列的位置矢量更新,以相同概率向三個方向移動;
3)分別尋找最大完工時間、瓶頸機(jī)器負(fù)荷、機(jī)器負(fù)荷總量最優(yōu)的螢火蟲ibest_f、ibest_zf、ibest_zdf,并更新螢火蟲位置信息;
4)對ifloor≠1且任一子目標(biāo)最優(yōu)的螢火蟲,不向其他支配它的螢火蟲移動并作小范圍移動,更新ibest_f、ibest_zf、ibest_zdf;
5)重復(fù)步驟2)到步驟4),進(jìn)行下一次螢火蟲的移動,尋找全局最優(yōu)和迭代最優(yōu)的螢火蟲,直到滿足終止條件;
6)輸出ifloor=1層中所有螢火蟲序列的最大完工時間、瓶頸機(jī)器負(fù)荷、機(jī)器負(fù)荷總量,并輸出螢火蟲的機(jī)器信息、工序信息。
所述步驟2)中位置矢量更新按下式進(jìn)行:
所述螢火蟲算法解碼規(guī)則如下:
1)獲取工序排序序列中的一個元素,轉(zhuǎn)換為工序信息Ojh,獲取Ojh的g號機(jī)器為Mg=JMi(j,h),所用時間為Ti(j,h);
2)如果工序Ojh是機(jī)器Mg上的第一道加工工序,則Ojh可以直接從Oj(h-1)加工完成時開始加工;如果Ojh是j號工件的第一道工序,則Ojh可以在機(jī)器Mg的零時刻開始加工;如果不滿足上面兩種情況,找到機(jī)器Mg上的所有空閑時段[TSg,TEg],TSg為機(jī)器Mg位置空閑時段開始時刻,TEg為機(jī)器Mg空閑時段結(jié)束時刻;判斷是否將工序插入當(dāng)前空閑時間段方法如下:
ta+Ti(j,h)≤TEg;
其中ta=max(cj(h-1),TSg);
如果不滿足上式,則在tb時刻開始加工,LMg表示機(jī)器Mg上當(dāng)前最后一道工序的結(jié)束時刻,其中:
tb=max(cj(h-1),LMg)。
附圖說明
附圖1為螢火蟲算法的實(shí)現(xiàn)流程圖。
附圖2、3、4為mk01問題的解的甘特圖。
具體實(shí)施方式
下面結(jié)合附圖詳細(xì)說明本發(fā)明的具體實(shí)施方式:
本發(fā)明通過對螢火蟲算法解碼方式和迭代規(guī)律的改進(jìn),提高了螢火蟲全局尋優(yōu)能力,針對多目標(biāo)柔性作業(yè)車間調(diào)度問題,提出了一種螢火蟲的移動策略,保證種群的多樣性。從而得出多目標(biāo)柔性作業(yè)車間調(diào)度問題的Pareto占優(yōu)解。
其具體實(shí)現(xiàn)過程為:
針對多目標(biāo)柔性作業(yè)車間調(diào)度問題建立數(shù)學(xué)模型;
采用分段編碼方式對螢火蟲進(jìn)行編碼,包括機(jī)器選擇部分和工序排序部分;
使用離散螢火蟲算法,優(yōu)化上述模型得到Pareto最優(yōu)解集;
從Pareto最優(yōu)解集里選擇符合實(shí)際需求的解,并進(jìn)行解碼輸出機(jī)器選擇位置信息、工序排序位置信息。
所述模型為:n個工件{J1,J2,…,Jn}在m臺機(jī)器{M1,M2,…,Mm}上進(jìn)行加工,每個工件包含一道或多道工序,每個工件的工序順序以及在不同機(jī)器的加工時間確定,在加工過程中滿足各項(xiàng)約束條件,其中:
hj為j號工件的總工序數(shù);Ojh表示工件j的第h道工序;Cj表示工件j的加工完成時間;Mijh表示工件j的第h道工序在機(jī)器i上加工,當(dāng)Xijh=1時表示工序Ojh選擇機(jī)器i,否則不選擇在機(jī)器i上加工;Pijh表示工件j的第h道工序在機(jī)器i上加工所需的時間;Yijhkl表示工序Ojh和工序Okl的加工選后順序,當(dāng)Yijhkl=1時,表示工序Ojh先于工序Okl在機(jī)器i上加工。
所述模型的優(yōu)化目標(biāo)有三個:
最大完工時間:
瓶頸機(jī)器負(fù)荷量:
機(jī)器負(fù)荷總量:
所述螢火蟲算法的編碼規(guī)則:工序排序部分:序號代表工件號,數(shù)字出現(xiàn)的次數(shù)代表對應(yīng)工件的工序數(shù),數(shù)字的第幾次出現(xiàn)代表工件的第幾道工序;機(jī)器選擇部分:對應(yīng)編碼長度與工序排序部分相等,從左到右按順序排列工件的工序,出現(xiàn)的序號代表所選機(jī)器號。
離散螢火蟲算法是根據(jù)多目標(biāo)柔性作業(yè)車間調(diào)度問題的解空間是離散的特點(diǎn)在標(biāo)準(zhǔn)螢火蟲算法的基礎(chǔ)上進(jìn)行改進(jìn)一種算法。螢火蟲的亮度由適應(yīng)度值決定,每個螢火蟲的位置信息代表一種可行解,移動規(guī)則是所有可行解不斷向當(dāng)前最優(yōu)解靠近,多次迭代后,所有可行解都集結(jié)在最優(yōu)解附近。
所述離散螢火蟲算法的具體過程為:
1)適用于離散問題的離散螢火蟲算法參數(shù)初始化:螢火蟲總數(shù)N,最大迭代次數(shù)Iter,隨機(jī)步長因子,螢火蟲之間吸引力,光照吸收率,每個螢火蟲的位置信息;
2)采用快速非支配排序方法將種群分層,記螢火蟲i在第ifloor層,對其進(jìn)行機(jī)器選擇序列的位置矢量更新和工序排序序列的位置矢量更新,以相同概率向三個方向移動;
3)分別尋找最大完工時間、瓶頸機(jī)器負(fù)荷、機(jī)器負(fù)荷總量最優(yōu)的螢火蟲ibest_f、ibest_zf、ibest_zdf,并更新螢火蟲位置信息;
4)對ifloor≠1且任一子目標(biāo)最優(yōu)的螢火蟲,不向其他支配它的螢火蟲移動并作小范圍移動,更新ibest_f、ibest_zf、ibest_zdf;
5)重復(fù)步驟2)到步驟4),進(jìn)行下一次螢火蟲的移動,尋找全局最優(yōu)和迭代最優(yōu)的螢火蟲,直到滿足終止條件;
6)輸出ifloor=1層中所有螢火蟲序列的最大完工時間、瓶頸機(jī)器負(fù)荷、機(jī)器負(fù)荷總量,并輸出螢火蟲的機(jī)器信息、工序信息。
所述步驟2)中位置矢量更新按下式進(jìn)行:
所述螢火蟲算法解碼規(guī)則如下:
1)獲取工序排序序列中的一個元素,轉(zhuǎn)換為工序信息Ojh,獲取Ojh的g號加工機(jī)器為Mg=JMi(j,h),所用時間為Ti(j,h);
2)如果工序Ojh是機(jī)器Mg上的第一道加工工序,則Ojh可以直接從Oj(h-1)加工完成時開始加工;如果Ojh是j號工件的第一道工序,則Ojh可以在機(jī)器Mg的零時刻開始加工;如果不滿足上面兩種情況,找到機(jī)器Mg上的所有空閑時段[TSg,TEg],TSg為機(jī)器Mg位置空閑時段開始時刻,TEg為機(jī)器Mg空閑時段結(jié)束時刻;通過下式判斷是否將工序插入當(dāng)前空閑時間段:
ta+Ti(j,h)≤TEg;
其中ta=max(cj(h-1),TSg);
如果不滿足上式,則在tb時刻開始加工,LMg表示機(jī)器Mg上當(dāng)前最后一道工序的結(jié)束時刻,其中:
tb=max(cj(h-1),LMg)。
實(shí)施例:
以mk01問題為例,進(jìn)行柔性作業(yè)車間調(diào)度多目標(biāo)優(yōu)化。該問題包含10個工件,6個可選加工機(jī)器,總工序數(shù)為55個,工件元素相互間的加工工序不存在優(yōu)先約束關(guān)系,工件元素本身的加工工序之間具有明確優(yōu)先關(guān)系。詳細(xì)數(shù)據(jù)如下表1:
相關(guān)參數(shù)設(shè)置:α=1.2,β0=1,γ=0.06,最大迭代次數(shù)150,螢火蟲總數(shù)100。對mk01問題以最大完工時間f1、瓶頸機(jī)器負(fù)荷量f2和機(jī)器符合總量f3最小為優(yōu)化目標(biāo),采用離散螢火蟲算法進(jìn)行多目標(biāo)優(yōu)化。
下表2為Pareto前沿解集:
3個解分別有各自的優(yōu)勢,可以根據(jù)不同的需求選擇三種不同的加工方案,第2個解最大完工時間f1達(dá)到最優(yōu),瓶頸機(jī)器負(fù)荷量f2最小,解的質(zhì)量是最高的;第3個解機(jī)器負(fù)荷總量f3最小,但是最大完工時間f1和瓶頸機(jī)器負(fù)荷量f2都是最大的,在3個對應(yīng)的調(diào)度方案中,生產(chǎn)效率是最低的,而且設(shè)備的利用率也是最低的。第1個解、第2個解、第3個解的機(jī)器選擇信息JM、加工時間矩陣T和工序排序信息S分別如下表3、4、5所示,3個解的甘特圖如附圖2所示。
下表3為第1個解:
下表4為第2個解:
下表5為第3個解: