基于加工時(shí)間等級(jí)的柔性作業(yè)車(chē)間調(diào)度機(jī)器選擇方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及柔性作業(yè)車(chē)間調(diào)度技術(shù)領(lǐng)域,具體為一種基于加工時(shí)間等級(jí)的柔性作 業(yè)車(chē)間調(diào)度機(jī)器選擇方法。
【背景技術(shù)】
[0002] 柔性作業(yè)車(chē)間調(diào)度問(wèn)題是傳統(tǒng)作業(yè)車(chē)間調(diào)度問(wèn)題的延伸,每道工序有多臺(tái)不同的 機(jī)器可供選擇,更加符合以數(shù)控機(jī)床或加工中心為基礎(chǔ)的實(shí)際車(chē)間生產(chǎn)情況,其研究具有 重要的理論意義和應(yīng)用價(jià)值。柔性作業(yè)車(chē)間調(diào)度包括機(jī)器選擇和工序排序兩個(gè)子問(wèn)題,其 中,機(jī)器選擇的合理性對(duì)于工序調(diào)度的最終結(jié)果有重要的影響,機(jī)器選擇是實(shí)現(xiàn)高質(zhì)量工 序排序優(yōu)化的前提和基礎(chǔ)。目前,文獻(xiàn)中大部分FJSP求解算法一般采用的是隨機(jī)的機(jī)器選 擇方式,不能夠保證初始解的質(zhì)量,因而導(dǎo)致算法的尋優(yōu)效率和搜索能力低。針對(duì)機(jī)器選擇 問(wèn)題,文南犬 "Approach by localization and multiobjective evolutionary optimization for flexible job-shop scheduling problems,IEEE Transactions on Systems,Man and Cybernetics,Part C:Applications and Reviews,2002,vol32(l) ,pl-13"在考慮機(jī)器負(fù)荷均衡性的條件下,公開(kāi)了一種有效的機(jī)器選擇方法,在為工序選擇機(jī)器 時(shí),選擇累加負(fù)荷小的機(jī)器。但是,該方法基于對(duì)所有剩余工序的加工時(shí)間表進(jìn)行操作,增 加了機(jī)器選擇過(guò)程的復(fù)雜性,對(duì)于不同類型的柔性作業(yè)車(chē)間調(diào)度問(wèn)題,需設(shè)置額外參數(shù),進(jìn) 行車(chē)專化。文南犬"An effective genetic algorithm for the flexible job-shop scheduling problem,Expert Systems with Applications,2011,vol38(4),p3563_3573" 公開(kāi)了一種全局選擇與局部選擇相結(jié)合的機(jī)器選擇方法,全局選擇機(jī)器負(fù)荷的均衡性較 好,局部選擇所選擇的機(jī)器具有更短的加工時(shí)間;與上述機(jī)器選擇方法相比,該方法定義了 專門(mén)的機(jī)器負(fù)荷累加數(shù)組,減小了機(jī)器選擇過(guò)程的復(fù)雜性,同時(shí),對(duì)于不同類型的柔性作業(yè) 車(chē)間調(diào)度問(wèn)題,無(wú)需設(shè)置額外參數(shù)進(jìn)行轉(zhuǎn)化。在此基礎(chǔ)上,文獻(xiàn)"基于極限調(diào)度完工時(shí)間最 小化的機(jī)器選擇及FJSP求解,計(jì)算機(jī)集成制造系統(tǒng),2014,vol20(4),p854-865"進(jìn)一步提出 一種基于極限調(diào)度完工時(shí)間最小化的機(jī)器選擇初始化方法,一方面通過(guò)在工件的工序集合 中隨機(jī)選擇工序擴(kuò)大了機(jī)器選擇空間,另一方面通過(guò)改進(jìn)工序選擇機(jī)器的具體方法步驟, 在比較機(jī)器負(fù)荷的基礎(chǔ)上,再比較機(jī)器加工時(shí)間,進(jìn)一步提高了機(jī)器選擇質(zhì)量。然而,該方 法在滿足機(jī)器負(fù)荷均衡的條件下,仍然不能最大限度的為工序選擇加工時(shí)間短的機(jī)器,從 而導(dǎo)致機(jī)器負(fù)荷和工件總工時(shí)增加,進(jìn)而制約著工序排序最終的調(diào)度結(jié)果。
【發(fā)明內(nèi)容】
[0003] 要解決的技術(shù)問(wèn)題 為解決現(xiàn)有技術(shù)存在的問(wèn)題,在滿足機(jī)器負(fù)荷均衡的條件下,能夠最大限度的為工序 選擇加工時(shí)間短的機(jī)器,本發(fā)明提出了一種基于加工時(shí)間等級(jí)的柔性作業(yè)車(chē)間調(diào)度機(jī)器選 擇方法。
[0004] 技術(shù)方案 本發(fā)明對(duì)每道工序的可選機(jī)器,根據(jù)加工時(shí)間大小進(jìn)行等級(jí)劃分,加工時(shí)間越小的機(jī) 器具有的優(yōu)先等級(jí)越高。為某道工序選擇機(jī)器時(shí),初置優(yōu)先選擇的機(jī)器等級(jí)為最高。在可選 機(jī)器集中,選擇加工時(shí)間等級(jí)為設(shè)定等級(jí)的機(jī)器組成優(yōu)先等級(jí)機(jī)器集合,選擇臨時(shí)負(fù)荷最 小的機(jī)器組成最小負(fù)荷機(jī)器集合,計(jì)算該兩個(gè)集合的交集。如果交集不為空,在交集中任選 一臺(tái)機(jī)器,否則對(duì)下一工序查找機(jī)器。如果遍歷完所有剩余工序的機(jī)器交集仍為空,則將優(yōu) 先選擇的機(jī)器等級(jí)降低一級(jí),直到交集不為空。通過(guò)對(duì)所有工序的隨機(jī)排列,可以求得多種 不同的機(jī)器選擇方案。
[0005] 本發(fā)明的技術(shù)方案為: 所述一種基于加工時(shí)間等級(jí)的柔性作業(yè)車(chē)間調(diào)度機(jī)器選擇方法,其特征在于:采用以 下步驟: 步驟1:讀取問(wèn)題數(shù)據(jù),初始化機(jī)器數(shù)目MachNum、機(jī)器集合Machine {}、所有工序組成的 工序集合A1 lOperation{}、所有的工序數(shù)目Length、加工時(shí)間數(shù)組ProcTime(),設(shè)置一個(gè)機(jī) 器負(fù)荷數(shù)組MachLoad(MachNum); 步驟2:根據(jù)加工時(shí)間數(shù)組ProcTime 〇每道工序可選機(jī)器加工時(shí)間的大小,給加工時(shí)間 等級(jí)數(shù)組ProcTimeRank()賦值; 步驟3:初始化機(jī)器負(fù)荷數(shù)組MachLoadO,每一個(gè)元素值為0; 步驟4:對(duì)工序集合AllOperationU的元素進(jìn)行隨機(jī)排列,目的在于求得多種不同的機(jī) 器選擇方案; 步驟5:設(shè)置已選擇機(jī)器的工序數(shù)目為i,并賦初值i=0; 步驟6:設(shè)置優(yōu)先選擇的機(jī)器等級(jí)rank初值,rank=l; 步驟7:設(shè)置工序集合AllOperationU中,工序的順序索引變量為j,從工序集合 AllOperationU的第1個(gè)元素開(kāi)始,查找尚未選擇機(jī)器的工序,直到找到未選擇機(jī)器的工 序,將該工序基于1的順序索引賦值給j ; 步驟8:從該工序的可選機(jī)器集中,選取加工時(shí)間等級(jí)為rank的機(jī)器,組成優(yōu)先等級(jí)機(jī) 器集合PreRankMach{}; 步驟9:將該工序可選機(jī)器的加工時(shí)間,與機(jī)器負(fù)荷數(shù)組MachLoad()對(duì)應(yīng)機(jī)器的已有負(fù) 荷相加,組成機(jī)器臨時(shí)負(fù)荷數(shù)組MachLoadTempO,從該數(shù)組中選擇臨時(shí)負(fù)荷最小的機(jī)器,組 成最小負(fù)荷機(jī)器集合LoadMinMachU ; 步驟10:對(duì)優(yōu)先等級(jí)機(jī)器集合PreRankMach {}和最小負(fù)荷機(jī)器集合LoadMinMach {}求交 集,記為4,4=?代1^1111^&1〇11{}門(mén)1^(11;[111&1011{},如果4關(guān)4),執(zhí)行步驟12;否則,執(zhí)行步驟11; 步驟11: j=j+Ι,如果j〈=Length,從工序集合A1 lOperation{}的第j個(gè)元素開(kāi)始,繼續(xù)查 找尚未選擇機(jī)器的工序,直到找到未選擇機(jī)器的工序,將該工序基于1的索引賦值給j,轉(zhuǎn)至 執(zhí)行步驟8;如果j>Length,rank=rank+l,轉(zhuǎn)至執(zhí)行步驟7; 步驟12:從交集A中,任選一臺(tái)機(jī)器,作為當(dāng)前工序的加工機(jī)器,將該機(jī)器的加工時(shí)間累 加到機(jī)器負(fù)荷數(shù)組MachLoad()的對(duì)應(yīng)元素上,更新機(jī)器負(fù)荷數(shù)組MachLoad(),i=i+l; 步驟13:重復(fù)執(zhí)行步驟6~12,直到i=Length,工序集合A1 lOperation {}的所有工序都選 擇完機(jī)器。
[0006] 有益效果 本發(fā)明采用基于加工時(shí)間等級(jí)的機(jī)器選擇方法,既能夠保證各臺(tái)機(jī)器負(fù)荷的均衡性, 又能夠?yàn)楣ば蜻x擇到加工時(shí)間盡可能短的機(jī)器,為柔性作業(yè)車(chē)間調(diào)度更進(jìn)一步的工序排序 優(yōu)化提供了基礎(chǔ)保障。同時(shí),該方法可以廣泛應(yīng)用于各種智能算法,如遺傳算法、蟻群算法、 粒子群算法、人工蜂群算法等求解柔性作業(yè)車(chē)間調(diào)度的初始種群環(huán)節(jié),進(jìn)而提高初始種群 的質(zhì)量,改善算法的搜索能力和效率。對(duì)于以數(shù)控機(jī)床或加工中心為基礎(chǔ)的實(shí)際柔性作業(yè) 車(chē)間生產(chǎn)環(huán)境,實(shí)現(xiàn)良好的生產(chǎn)調(diào)度優(yōu)化,提高車(chē)間生產(chǎn)效率,具有重要的應(yīng)用價(jià)值。
【附圖說(shuō)明】
[0007] 圖1:本發(fā)明【具體實(shí)施方式】的流程圖; 圖2:本發(fā)明實(shí)施例的詳細(xì)過(guò)程; 圖3:本發(fā)明實(shí)施例的工序選擇順序及其對(duì)應(yīng)機(jī)器優(yōu)先等級(jí)設(shè)置。
【具體實(shí)施方式】
[0008] 下面結(jié)合具體實(shí)施例描述本發(fā)明: 本發(fā)明基于加工時(shí)間等級(jí)的柔性作業(yè)車(chē)間調(diào)度機(jī)器選擇方法流程圖見(jiàn)附圖1。本實(shí)施 例以表1所示的2 X 6柔性作業(yè)車(chē)間調(diào)度問(wèn)題實(shí)例為例,其中包含2個(gè)工件和6臺(tái)機(jī)器,工序總 數(shù)目為7。
[0009] 表1,2X6柔性作業(yè)車(chē)間調(diào)度問(wèn)題實(shí)例
本發(fā)明實(shí)施例的詳細(xì)過(guò)程如圖2所示,本發(fā)明實(shí)施例的工序選擇順序及其對(duì)應(yīng)機(jī)器優(yōu) 先等級(jí)設(shè)置如圖3所示。所述一種基于加工時(shí)間等級(jí)的柔性作業(yè)車(chē)間調(diào)度機(jī)器選擇方法,其 特征在于:采用以下步驟: 步驟1:讀取如表1所示的2X6柔性作業(yè)車(chē)間調(diào)度問(wèn)題實(shí)例數(shù)據(jù),初始化機(jī)器數(shù)目 MachNum=6、機(jī)器集合Machine {Mi,M2,M3,M4,Μδ,M6}、所有工序組成的工序集合Al 1 Operat ion {On,0i2,0i3,〇2i,〇22,〇23,Ο24}、所有的工序數(shù)目Length=7、加工時(shí)間數(shù)組ProcTime(),設(shè)置一 個(gè)機(jī)器負(fù)荷數(shù)組MachLoad(MachNum)。
[0010] 步驟2:根據(jù)加工時(shí)間數(shù)組ProcTime 〇每道工序可選機(jī)器加工時(shí)間的大小,給加工 時(shí)間等級(jí)數(shù)組ProcTimeRank()賦值,機(jī)器對(duì)工序的加工時(shí)間越小,機(jī)器的優(yōu)先等級(jí)越高,相 同加工時(shí)間的機(jī)器,具有相同的優(yōu)先等級(jí),表2所示為2X6柔性作業(yè)車(chē)間調(diào)度問(wèn)題實(shí)例的機(jī) 器優(yōu)先等級(jí)設(shè)置。
[0011] 表2,2X6柔性作業(yè)車(chē)間調(diào)度問(wèn)題實(shí)例的機(jī)器優(yōu)先等級(jí)設(shè)置
步驟3:初始化機(jī)器負(fù)荷數(shù)組MachLoad(),每一個(gè)元素值為0,即為MachLoad(0,0,0,0, 0,0)〇
[0012] 步驟4:對(duì)工序集合六11(^抑1:;[011{011,012,013,021,022,023,024}的元素進(jìn)行隨機(jī)排 列,得到A1 lOperation{0i3,022,024,0i2,023,Oil,02i},則工序選擇機(jī)器的順序?yàn)椋?13-022- 024-0l2-023-Oil-021,目的在于求得多種不同的機(jī)器選擇方案。
[0013]步驟5:設(shè)置已選擇機(jī)器的工序數(shù)目為i,并賦初值i=0。
[0014] 步驟6:設(shè)置優(yōu)先選擇的機(jī)器等級(jí)rank初值,rank=l。
[0015]步驟7:設(shè)置工序集合A1 lOperation {013,022,024,0i2,〇23,On,〇2i}中,工序的順序索 引變量為j,從工序集合六11(^瓜1:;[011{013,022,024,012,023,011,021}的第1個(gè)兀素開(kāi)始,查找 尚未選擇機(jī)器的工序,直到找到未選擇機(jī)器的工序,將該工序基于1的順序索引賦值給j,此 時(shí),013尚未選擇機(jī)器,j = l。
[0016] 步驟8:從該工序013的可選機(jī)器集{11,13,14,1 5,16}中,選取加工時(shí)間等級(jí)為^1^ 的機(jī)器,組成優(yōu)先等級(jí)機(jī)器集合PreRankMach{Mi,M5,]\fe}。
[0017] 步驟9:將該工序可選機(jī)器的加工時(shí)間,與機(jī)器負(fù)荷數(shù)組MachLoad(0,0,0,0,0,0) 對(duì)應(yīng)機(jī)器的已有負(fù)荷相加,組成機(jī)器臨時(shí)負(fù)荷數(shù)組MachLoadTemp( 5,0,7,6,5,5),從該數(shù)組 中選擇臨時(shí)負(fù)荷最小的機(jī)器,組成最小負(fù)荷機(jī)器集合LoadMinMacMMiUs}。
[0018] 步驟10:對(duì)優(yōu)先等級(jí)機(jī)器集合PreRankMachiM^M^Md和最小負(fù)荷機(jī)器集合 1^0已(1]\1;[11]\&〇11{]\11,]\15,]\ /[6}求交集,記為厶,厶=?代1^111<:]\&〇11{]\11,]\15,]/[6}|"11^0&(1]\1;[11]\^(311{]\11,]\15,]\ /[6} = {Μι,Μ5,Μ6},如果A矣Φ,執(zhí)行步驟12;否則,執(zhí)行步驟11。
[0019] 步驟11: j=j+l,如果 j〈=Length,從工序集合A110peration{0i3,〇22,〇24,〇12,〇23, 〇n,〇21}的第j個(gè)元素開(kāi)始,繼續(xù)查找尚未選擇機(jī)器的工序,直到找到未選擇機(jī)器的工序,將 該工序基于1的索引賦值給」,轉(zhuǎn)至執(zhí)行步驟8 ;如果」>1^]^1:11,抑111^3111^+1,轉(zhuǎn)至執(zhí)行步驟 7〇
[0020] 步驟12:從交集A= {Mi,M5,M6}中,任選一臺(tái)機(jī)器此,作為當(dāng)前工序的加工機(jī)器,將該 機(jī)器M 5的加工時(shí)間5累加到機(jī)器負(fù)荷數(shù)組MachLoad (0,0,0,0,0,0)的對(duì)應(yīng)元素上,更新機(jī)器 負(fù)荷數(shù)組MachLoad(0,0,0,