王黎軒 姚雁春 楊江紅
摘要:本文從動態(tài)調(diào)度[1]的角度出發(fā),針對三種具體情況,判斷RGV和CNC的工作狀態(tài),通過枚舉法[2]列出各種情況,對RGV進(jìn)行調(diào)度,并求出成料數(shù)量和工作效率。針對一道工序的物料加工,建立一個CNC的狀態(tài)矩陣,判斷CNC工作狀態(tài),并求解CNC狀態(tài)總和,如果不處于工作狀態(tài),則說明其需要進(jìn)行上下料操作,由此可以確定RGV上下料消耗的時間以及CNC消耗的時間,然后將數(shù)據(jù)代入所寫代碼求得產(chǎn)出的成品數(shù)量、CNC的工作效率。
關(guān)鍵詞:智能RGV動態(tài)調(diào)度、0-1規(guī)劃、枚舉法、搜索算法、事件驅(qū)動策
引言
隨著信息技術(shù)、控制工程和智能化的發(fā)展,智能加工系統(tǒng)極大地提高了工業(yè)制造、機(jī)械加工和物流運(yùn)輸?shù)缺姸囝I(lǐng)域的效率。為了最大程度地節(jié)省加工時間、降低生產(chǎn)成本,生產(chǎn)最大數(shù)量的成料,進(jìn)行物料加工調(diào)度成為了迫切的需要解決的問題。作為一種無人駕駛、能在固定軌道上自由運(yùn)行的智能車,RGV可以根據(jù)指令完成一系列相關(guān)作業(yè)任務(wù),而我們將針對RGV三種不同的工作情況,分別對其整個加工過程進(jìn)行動態(tài)調(diào)度,縮短RGV和CNC的等待時長,提升生產(chǎn)效率,以滿足現(xiàn)實(shí)中企業(yè)的需求。
1、一道工序的情況
針對一道工序的物料加工,我們要討論如何安排上下料順序來獲得最高的作業(yè)效率,首先確定最優(yōu)的RGV上料順序并求出最短時間,由于RGV右側(cè)的CNC上下料時間都小于RGV左側(cè)的CNC的上下料時間,所以當(dāng)RGV到達(dá)某一位置時,先對其右側(cè)的CNC上料,隨后立即對其左側(cè)的CNC上料,完成后前往下一個位置。其次求解第一道工序的情況,通過0-1變量設(shè)定RGV和CNC的工作狀態(tài),建立一個CNC的狀態(tài)矩陣,判斷CNC工作狀態(tài),并求解CNC狀態(tài)總和,如果不處于工作狀態(tài),則說明其需要進(jìn)行上下料操作,由此可以確定RGV上下料消耗的時間以及CNC消耗的時間,最后根據(jù)數(shù)據(jù)進(jìn)行程序運(yùn)算即可得到所需。
2、模型建立與求解
2.1初始上料順序的確定
由于RGV的移動時間遠(yuǎn)遠(yuǎn)小于CNC的加工時間,故可以先確定RGV對CNC第一次上料的順序,來形成CNC加工的時間間隔。
為確定一個RGV對CNC第一次上料的順序,讓RGV在當(dāng)前位置先對其右側(cè)的CNC進(jìn)行上料,因?yàn)樗杏覀?cè)的CNC的上下料的時間p1是小于所有左側(cè)的CNC上下料的時間p2的。所以當(dāng)RGV到達(dá)某一位置,先對其右側(cè)的CNC上料,隨后立即對其左側(cè)的CNC上料,完成后前往下一個位置。將所有CNC的上料工作完成后,讓RGV再回到初始位置,等待CNC加工完成后按照第一次上料的順序進(jìn)行上下料和清洗工作即可。這樣就確定出來一個8臺CNC的工作順序,將這個工作順序稱為“一次工作循環(huán)”。
設(shè)RGV移動1個單位消耗的時間為t1,移動2個單位消耗的時間為t2,移動3個單位消耗的時間為t3,觀察所有數(shù)據(jù),可以得出:
Δt=t2-t1=t3-t2=13
其為一個定值,那么就可以證明一個結(jié)論:RGV執(zhí)行一遍工作循環(huán)的最短移動時間為4t1+2Δt。可以使用計算機(jī)利用搜索算法[5]來求解這一結(jié)論,使用搜索確定RGV移動的順序,并且根據(jù)給定的順序來計算RGV消耗的時間,再與結(jié)論時間作比較,可以得出相同的結(jié)果。
兩個關(guān)鍵步驟為:
1. 移動步驟:若當(dāng)前RGV處于空閑狀態(tài)并且其左右兩側(cè)CNC都在處于加工狀態(tài),一旦有其他CNC處于空閑狀態(tài)或發(fā)出上下料請求,RGV就移動到其位置為其上下料和熟料清洗;
2. 上下料步驟:若當(dāng)前RGV的左側(cè)CNC或右側(cè)CNC處于空閑或發(fā)出上下料請求,RGV應(yīng)先對左側(cè)CNC進(jìn)行操作再對右側(cè)CNC進(jìn)行操作。
具體流程如下:
建立一個RGV的狀態(tài)序列RGVstatus,建立一個CNC的狀態(tài)矩陣CNCstatus,RGV的狀態(tài)序列記錄其每秒的狀態(tài),CNC的狀態(tài)矩陣儲存每臺CNC的每秒的狀態(tài);一秒一秒地進(jìn)行枚舉,對于當(dāng)前時間times,如果RGVstatus [times]=0,說明當(dāng)前RGV處于空閑狀態(tài);
隨即判斷其左右兩側(cè)CNC的狀態(tài),這里記錄RGV的當(dāng)前位置為RGVPosition,具體數(shù)值為1到4,含義與RGV工作流程的確定中的相同;
若CNCsum<8,則RGV即可前往下一位置,定義RGVPath為當(dāng)前給定的移動序列,定義RGVPathindex為當(dāng)前RGVPosition對應(yīng)在RGVPath中的位置指針,每次移動時RGVPathindex都往后指向一次,因?yàn)镽GV最后一次移動需要回到初始位置,這里是用取模操作讓RGVPathindex自動指到初始位置,這樣就可以到RGV需要前往的下一個位置RGVnextPosition=RGVpath [RGVPathindex ],計算此次RGV移動消耗的時間,即t|RGV_Position-RGV_nextPosition | ,將RGV狀態(tài)序列中后續(xù)狀態(tài)就行更新,并且記錄RGV的移動次數(shù)RGVmoves加一;
若RGV不滿足移動的條件,要么就是RGV處于工作狀態(tài),即RGVstatus [times]=1,要么就是其左右兩側(cè)CNC中至少有一臺處于空閑狀態(tài)或發(fā)出上下料請求。
因?yàn)镽GV左側(cè)的CNC上下料時間p1都小于RGV右側(cè)的CNC的上下料時間p2,故先檢查RGV右側(cè)的CNC是否處于工作狀態(tài),即檢查CNCstatus [RGVPosition*2-1][ times]是否為1,若為0,則說明其需要進(jìn)行上下料操作,則RGV上下料消耗的時間為WastTimeRGV=p1,但特殊的,如果RGVmoves>0,則說明所有CNC已經(jīng)完成了一遍上料過程,當(dāng)前RGV需要對CNC上的熟料進(jìn)行清洗,此時WastTimeRGV=p1+e,e為RGV清洗物料的時間,而對于CNC來說,其需要等待上下料和加工的時間,才能再次達(dá)到上下料請求的狀態(tài),故CNC消耗的時間為WastTimeCNC=p1+c,其中c為CNC加工一道工序時所消耗的時間,根據(jù)RGV和CNC消耗的時間分別更新其狀態(tài)序列和狀態(tài)矩陣;
再次簡化問題,忽略最后RGV需要返回初始位置,運(yùn)用C++進(jìn)行求解一道工序8小時工作的情況,源代碼見附錄二,求得結(jié)果:
結(jié)語
RGV不需要等到CNC處于空閑狀態(tài)或發(fā)出上下料請求再行動,而是完成當(dāng)前工作后立刻前往下一位置等待CNC完成,可以設(shè)定一個指標(biāo)RGVhavemoved來判斷RGV是否是移動到下一個位置進(jìn)行等待。
參考文獻(xiàn)
[1]韓中庚,梅正陽.智能RGV的動態(tài)調(diào)度策略問題的數(shù)學(xué)模型[J].數(shù)學(xué)建模及其應(yīng)用,2019,8(01):53-65+83.
[2]高亞靜,周明,李庚銀,李睿,肖利民.基于馬爾可夫鏈和故障枚舉法的可用輸電能力計算[J].中國電機(jī)工程學(xué)報,2006(19):41-46.
[3]鄧俊,韋化,黎靜華,白曉清.一種含四類0-1變量的機(jī)組組合混合整數(shù)線性規(guī)劃模型[J].中國電機(jī)工程學(xué)報,2015,35(11):2770-2778.
[4]王寵兒. 事件驅(qū)動策略的研究[D].山東大學(xué),2017.