車間作業(yè)調(diào)度方案;(2) 本發(fā)明通過生成任務(wù)的錄入、調(diào)度優(yōu)化方法的搜索和調(diào)度結(jié)果的輸出,實現(xiàn)了制造企業(yè)車 間作業(yè)調(diào)度的自動化和優(yōu)化。
【附圖說明】
[0049]圖1為本發(fā)明實施例中車間作業(yè)系統(tǒng)對應(yīng)的Petr i網(wǎng)模型。
[0050] 圖2為本發(fā)明制造企業(yè)車間的混合智能調(diào)度優(yōu)化方法的流程圖。
[0051] 圖3為本發(fā)明實施例中獲得的調(diào)度優(yōu)化解對應(yīng)的車間作業(yè)調(diào)度甘特圖。
【具體實施方式】
[0052]本發(fā)明根據(jù)企業(yè)車間中不同的任務(wù)需求和資源信息,在系統(tǒng)Petri網(wǎng)模型可達圖 上使用基于雙向A*搜索方法的調(diào)度優(yōu)化算法,和單向A*搜索算法相比,其搜索的系統(tǒng)節(jié)點 數(shù)一般能明顯減少,計算速度更快,能提高制造系統(tǒng)對市場變化快速響應(yīng)的能力。本發(fā)明能 夠解決已有A*調(diào)度方法收斂速度慢,擴展節(jié)點多的問題。
[0053]本發(fā)明制造企業(yè)車間的雙向A*智能調(diào)度優(yōu)化方法,包括生產(chǎn)任務(wù)和資源信息的錄 入、車間調(diào)度優(yōu)化方法的搜索和最優(yōu)調(diào)度方法的輸出,結(jié)合圖2,具體步驟如下:
[0054] 1)、采用Petri網(wǎng)對制造企業(yè)車間各加工操作順序、操作時間和所用資源,例如機 器人和機床等進行建模,具體為:給出一個作業(yè)車間系統(tǒng),可采用如下的自頂向下方法構(gòu)建 其Petri網(wǎng)模型。首先每個資源reR都用一個庫所來表示。作業(yè)上可看為多個不同流水線 Pij,je U…q}的集合。所有流水線Pij都有兩個相同作用的庫所Pi_start和Pi_end,Pi_start表不 等待被作業(yè)h進行處理的產(chǎn)品,Pund表示作業(yè)上已加工好的產(chǎn)品。然后流水線被描述成 由代表生產(chǎn)緩沖區(qū)的Uij + Ι個庫所連接多個代表加工任務(wù)的結(jié)構(gòu)Tijk所組成,其中庫所PijO和 Piju分別與庫所Pi_start和Pi_end重合。然后任務(wù)Tijk被描述為由V個可選操作Oijkl以及資源庫 所組成,這些可選操作共用相同的輸入和輸出庫所PUk-每個操作被描述成由兩個變 迀tijkll和tijkl2和一個庫所Oijkl組成的形式。其中tijkll表不操作Oijkl的開始,tijkl2表不操作 Oijki的結(jié)束,庫所Oijki表示操作的進行,操作時間τ (0ijki) =hijki與此庫所相關(guān)聯(lián)。如果有資 源reSijki則相應(yīng)增加一個庫所r,它的輸出弧和輸入弧分別與tijkii和tijki2相連。最后在 Petri網(wǎng)中,如果作業(yè)Ji有η個任務(wù)就在庫所Pi_start放入相應(yīng)數(shù)量的托肯,另外,有多少個資 源r,就在代表資源r的庫所中放入多少個托肯。2)、將Petri網(wǎng)模型轉(zhuǎn)化為對應(yīng)的輸入文件, 具體格式為:
[0055]總操作庫所數(shù),備選操作庫所數(shù),資源庫所數(shù),各作業(yè)的工作量;
[0056]〈作業(yè)號,作業(yè)內(nèi)操作號,總操作號,資源號(可有多個),操作時間;〉…其中文件的 第一行表達Petri網(wǎng)的全局信息,如總操作庫所數(shù),備選操作庫所數(shù)(總操作庫所數(shù)-總操作 數(shù)),資源庫所數(shù)和各作業(yè)的工作量,各參數(shù)用逗號隔開,最后用分號結(jié)尾。文件的剩下部分 是對各個操作方法的描述,〈> …表示此結(jié)構(gòu)的重復(fù)。文件對作業(yè)、操作和資源都進行了統(tǒng)一 數(shù)字編號,其中作業(yè)內(nèi)操作號表示操作在所在作業(yè)中的編號,總操作號表示操作在整個系 統(tǒng)中的編號。
[0057] 3)、根據(jù)輸入文件,生成用于Petri網(wǎng)模型演化的前置和后置關(guān)聯(lián)矩陣,前置和后 置關(guān)聯(lián)矩陣L+和Γ計算方法為:
[0058] |如果存在一條弧由變遷J·指向庫所貝化=1,否則G=〇l·
[0059] £_={; |如果存在一條弧由庫所/指向變遷則|=:U否則/&=0},
[0060] 其中1 < i <n,l < j<m(n為庫所數(shù),m為變迀數(shù))。
[0061 ] 4 )、初始化四個堆棧結(jié)構(gòu)的表,分別是OPEN、CLOSED、R0PEN、RCL0SED,分別用于存 放正向A*搜索過程中待擴展節(jié)點和已擴展節(jié)點,和逆向A*搜索過程中待擴展節(jié)點和已擴展 節(jié)點;
[0062] 5)、構(gòu)建A*算法的啟發(fā)函數(shù)h,要求h函數(shù)具有可采納性,即針對系統(tǒng)某個節(jié)點,對 其估計的h值不能大于此節(jié)點到系統(tǒng)終止節(jié)點的最小代價值,A*算法啟發(fā)函數(shù)計算方法為:
[0063]
,
[0064] 其中SM為含有托肯的庫所集合,RWTk表示從含有托肯的擴所k 一直到完成所在作 業(yè)中一系列操作所需的最少時間,Mrk表示含有托肯的擴所k的剩余操作時間。
[0065] 6)、從系統(tǒng)起始狀態(tài)和終止?fàn)顟B(tài)雙向運行A*搜索算法,具體步驟為:
[0066] (1)將系統(tǒng)初始狀態(tài)節(jié)點Ms放入OPEN表中,系統(tǒng)結(jié)束狀態(tài)1節(jié)點放入R0PEN表中;
[0067] (2)如果OPEN與R0PEN都為空,則無調(diào)度結(jié)果,程序結(jié)束。
[0068] (3)從OPEN表中取出f值最小的狀態(tài)節(jié)點Μ并將其放入CLOSED表中。
[0069] (4)如果Μ是R0PEN中的元素,則構(gòu)造從Ms到Μ再到1的變迀發(fā)射序列,程序結(jié)束;
[0070] (5)找出Μ的正向使能變迀集合{tj} (j = l"_et(M)),et(M)表示節(jié)點Μ中使能變迀 的數(shù)目。
[0071 ] (6)正向發(fā)射每個tj得到新的子節(jié)點標(biāo)識Μ' j,并計算g(M' j),h(Μ' j)和f (Μ' j),其中 g(M' j)是系統(tǒng)從MJJM' j所用的加工操作時間,=丨11#_!+噸!,f(M,j) = g(M' j)+h (M、)。
[0072] (7)對于每一個 M,j:
[0073] (a)如果M'j等于OPEN表中節(jié)點M13,貝lj檢驗兩節(jié)點的g值,如果是且g(M'j)小于g (MQ),則用M' j替換OPEN中的Μ13。其它情況,則直接將M' j插入OPEN中。
[0074] (b)如果M'j等于CLOSED表中節(jié),則檢驗兩節(jié)點的g值,如果是且g(M'j)小于g (MG),則從CLOSED中刪掉#同時插入M'j到OPEN中。其它情況,則直接將M'j插入OPEN中。
[0075] (c)如果M'j不等于OPEN表和CLOSED表中的任何節(jié)點,則把M'j插入到OPEN表中。
[0076] (8)從R0PEN表中取出f值最小的狀態(tài)節(jié)點Mr并將其放入RCL0SED表中;
[0077] (9)如果Mr是OPEN中的元素,則構(gòu)造從Ms到Mr再至_8的變迀發(fā)射序列,程序結(jié)束;
[0078] (10)找出Mr的逆向使能變迀集合{t ' j} (j = l"_ret(MR)),ret(MR)表示節(jié)點Μ中逆 向使能變迀的數(shù)目。
[0079] (11)逆向發(fā)射每個t ' j得到新的子節(jié)點標(biāo)識M" j,并計算g (M" j),h(M" j)和f (M" j)。
[0080] (12)對于每一個 M,,j:
[0081 ] (a)如果M" j等于R0PEN表中節(jié)點M13,則檢驗兩節(jié)點的g值,如果是且g(M" j)小于g (MQ),則用M" j替換R0PEN中的Μ13。其它情況,則直接將M" j插入R0PEN中。
[0082] (b)如果Μ" j等于RCL0SED表中節(jié)點MG,則檢驗兩節(jié)點的g值,如果是且g (M" j)小于g (Mc),則從RCL0SED中刪掉#同時插入M" j到R0PEN中。其它情況,則直接將M" j插入R0PEN中。
[0083] (c)如果M" j不等于R0PEN表和RCL0SED表中的任何節(jié)點,則把M"j插入到R0PEN表中。
[0084] (13)跳到步驟(2)。
[0085] 7)、檢查算法終止條件:判斷是否正向A*算法是否達到系統(tǒng)終止?fàn)顟B(tài),或逆向A*算 法是否達到系統(tǒng)終止?fàn)顟B(tài),或雙向搜索前沿節(jié)點是否在系統(tǒng)的中間節(jié)點相遇。
[0086] 8)、算法輸出:構(gòu)建從系統(tǒng)起始狀態(tài)經(jīng)過相遇節(jié)點到達系統(tǒng)終止?fàn)顟B(tài)的Petri網(wǎng)變 迀發(fā)射序列,并由各變迀所引發(fā)的加工操作得出所有工件調(diào)度的順序,包括所有工件的每 個工序的加工機器、加工耗時、加工開始時間、加工結(jié)束時間和系統(tǒng)總的加工時間,畫出系 統(tǒng)的調(diào)度甘特圖。
[0087] 下面結(jié)合具體實施例對本發(fā)明做進一步詳細說明。
[0088] 實施例1
[0089] 本實施例(如表1)結(jié)合制造企業(yè)車間調(diào)度進行雙向智能搜索,步驟如下:
[0090]
[0091] 1)、采用自頂向下方法構(gòu)建的Petri網(wǎng)模型如圖1所示:
[0092] 2)、根據(jù)模型Petri網(wǎng)生成程序輸入文件如下:
[0093] 12,0,3,2,1,1,1;
[0094] 1,1,1,1,2;1,2,2,2,3;1,3,3,3,4;
[0095] 2,1,4,3,4;2,2,5,1,2;2,3,6,2,2;
[0096] 3,1,7,1,3;3,2,8,3,5;3,3,9,2,3;
[0097] 4,1,10,2,3;4,2,11,3,4;4,