云計(jì)算環(huán)境下的基于MapReduce并行化的柔性工廠作業(yè)調(diào)度方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及柔性工廠作業(yè)問(wèn)題的求解方法,尤其涉及一種云計(jì)算環(huán)境下的基于 MapReduce并行化的柔性工廠作業(yè)調(diào)度方法。
【背景技術(shù)】
[0002] 生產(chǎn)調(diào)度優(yōu)化是先進(jìn)制造技術(shù)和現(xiàn)代管理技術(shù)的核心技術(shù),國(guó)內(nèi)外許多學(xué)者進(jìn)行 了研究,但是大多數(shù)研究對(duì)的是經(jīng)典作業(yè)調(diào)度問(wèn)題JSP(Job-Shop Scheduling Problem)的 優(yōu)化。在經(jīng)典JSP中,每個(gè)工件的工序順序是預(yù)先確定,并且每道工序在指定的機(jī)器上加工。 而在實(shí)際生產(chǎn)中,允許工序在多臺(tái)機(jī)器中的任意一臺(tái)上加工,這類問(wèn)題就是柔性作業(yè)車間 調(diào)度問(wèn)題FJSP(Flexible Job-Shop Scheduling Problem)減少了機(jī)器約束,擴(kuò)大了可行解 的搜索范圍,增加了問(wèn)題的難度。FJSP是經(jīng)典JSP的擴(kuò)展,它不僅需要確定工序加工的順序, 還要給每個(gè)工序分配機(jī)器,因此是比JSP更復(fù)雜的NP-hard問(wèn)題。目前,解決的方法主要可歸 為兩類:精確方法和近似方法。精確方法包括分支定界法、整數(shù)規(guī)劃法等,但只能求解較小 規(guī)模的FJSP問(wèn)題。近似方法包括優(yōu)先分配規(guī)則法、遺傳算法、禁忌搜索算法和模擬退火算法 等,能較快地得到問(wèn)題的較優(yōu)解,滿足實(shí)際問(wèn)題的需要。目前求解FJSP的近似方法可以分為 兩類:分級(jí)方法和集成方法。分級(jí)方法的原理主要基于每道工序的加工機(jī)器確定后,F(xiàn)JSP就 轉(zhuǎn)化為經(jīng)典的JSP;集成方法是將分配工序機(jī)器(路徑柔性)和確定工序在機(jī)器上的加工順 序同時(shí)考慮,該方法難度較大,但是一般能得到更好的結(jié)果。
[0003]遺傳算法借鑒了"物競(jìng)天擇、適者生存"的進(jìn)化準(zhǔn)則,具有隱含并行性和全局解空 間搜索的特點(diǎn),在生產(chǎn)調(diào)度領(lǐng)域得到廣泛的應(yīng)用。但是FJSP問(wèn)題不僅要給給每個(gè)工序分配 加工機(jī)器,還需要確定每臺(tái)機(jī)器上工序的加工順序,比傳統(tǒng)的調(diào)度問(wèn)題更具復(fù)雜性。
[0004] 盡管目前國(guó)內(nèi)外已有許多學(xué)者對(duì)如何利用遺傳算法高效求解FJSP做了研究,但大 部分研究?jī)H僅停留在FJSP問(wèn)題向遺傳算法的轉(zhuǎn)換問(wèn)題上(即:?jiǎn)栴}編碼和代價(jià)函數(shù)的確立 問(wèn)題),并沒(méi)有考慮利用算法的底層計(jì)算環(huán)境和實(shí)現(xiàn)方法來(lái)提高FJSP問(wèn)題的求解效率和求 解精度。傳統(tǒng)的算法實(shí)現(xiàn)是基于單節(jié)點(diǎn)計(jì)算環(huán)境下的考量,目前幾乎沒(méi)有相關(guān)方法去考慮 在云計(jì)算環(huán)境下的分布式計(jì)算模型下的算法實(shí)現(xiàn)。
【發(fā)明內(nèi)容】
[0005] 針對(duì)上述問(wèn)題中存在的不足之處,本發(fā)明提供一種云計(jì)算環(huán)境下的基于 MapReduce并行化的柔性工廠作業(yè)調(diào)度方法。
[0006] 為實(shí)現(xiàn)上述目的,本發(fā)明提供一種云計(jì)算環(huán)境下的基于MapReduce并行化的柔性 工廠作業(yè)調(diào)度方法,包括:
[0007] 第一步、接收遠(yuǎn)程提交的柔性作業(yè)車間調(diào)度問(wèn)題,通過(guò)云計(jì)算彈性計(jì)算方式根據(jù) 計(jì)算任務(wù)和任務(wù)需求分配計(jì)算資源,所述柔性作業(yè)車間調(diào)度問(wèn)題包括:計(jì)算任務(wù)、及對(duì)所述 計(jì)算任務(wù)的計(jì)算時(shí)間和計(jì)算精度的任務(wù)需求;
[0008] 第二步、根據(jù)第一步分配的計(jì)算資源,對(duì)用戶提交的柔性作業(yè)車間調(diào)度問(wèn)題建模 并對(duì)計(jì)算任務(wù)進(jìn)行編碼,再使用MapReduce并行化基因算法求解,最終給出調(diào)度結(jié)果。
[0009] 作為本發(fā)明的進(jìn)一步改進(jìn),所述第二步包括以下步驟:
[0010] 步驟1、根據(jù)柔性作業(yè)車間調(diào)度問(wèn)題隨機(jī)產(chǎn)生初始解個(gè)體,并形成初始種群;
[0011] 步驟2、根據(jù)柔性作業(yè)車間調(diào)度問(wèn)題確定性能指標(biāo);采用所述性能指標(biāo)作為適應(yīng)度 計(jì)算的目標(biāo)函數(shù),計(jì)算個(gè)體的適應(yīng)度,所述性能指標(biāo)包括:最小化最大完工時(shí)間、最小化機(jī) 器上最大負(fù)荷、最小化工件總拖期;
[0012] 步驟3、利用所述初始種群和所述個(gè)體的適應(yīng)度,根據(jù)柔性作業(yè)車間調(diào)度問(wèn)題生成 下代種群;
[0013]步驟4、判斷子代是否達(dá)到終止條件,若滿足則輸出適應(yīng)度最高個(gè)體,算法結(jié)束;否 則重復(fù)步驟3;
[0014] 步驟5、建立并行化基因算法的MapReduce結(jié)構(gòu),并建立步驟1-4與mapper和 reducer的映射關(guān)系。
[0015] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟1包括:
[00?6]步驟11、設(shè)定每個(gè)mapper中的工作方式,通過(guò)分布式執(zhí)行,生成工序串集OSet;所 述工作方式為:參照車間加工時(shí)間表和工件集JOBS,隨機(jī)生成可行工序串0;初始時(shí),工序串 〇為空串,即〇=[];
[0017]步驟12、使用一個(gè)reducer對(duì)所述工序串集去重;
[0018] 步驟13、將去重的工序串集轉(zhuǎn)換為初始種群,用于完成對(duì)工序隨機(jī)分配機(jī)器的工 作。
[0019] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟11采用如下方式轉(zhuǎn)換:
[0020] 步驟111、若工件集JOBS為空,則輸出工序串0,算法結(jié)束;
[0021] 步驟112、隨機(jī)從工件集JOBS中選擇一個(gè)工件Ji,若Ji中剩余工序數(shù)Ji. #undo為0, 則將其從JOBS集合中移出,否則將Ji中剩余工序數(shù)減1;
[0022] 步驟113、工序串0追加i。
[0023] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟13的具體分配方法為:在可用機(jī)器集中隨機(jī) 選擇3臺(tái)機(jī)器,分別以0.1、0.2和0.7的概率選擇耗時(shí)低、中和高的機(jī)器;若可用機(jī)器為2臺(tái)則 以0.2和0.8的概率選擇耗時(shí)高和低的機(jī)器。
[0024] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟2中個(gè)體適應(yīng)度的計(jì)算具體包括:
[0025]最小化最大完工時(shí)間:設(shè)Ci是工件Ji的完工時(shí)間,則最大完工時(shí)間Cmax最小的目標(biāo) 函數(shù)為:min{maxCi,i = l,···,n};
[0026] 最小化機(jī)器上最大負(fù)荷:設(shè)^是機(jī)器Μ」上的負(fù)荷或機(jī)器Μ」上的工作量,則機(jī)器上最 大負(fù)荷Wmax最小的目標(biāo)函數(shù)為:minlmaxWj,j = 1,…,m};
[0027] 最小化工件總拖期:SDi為工件心的交貨期,則時(shí)間最小的目標(biāo)函數(shù)為:
[0028] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟3通過(guò)雜交或變異的方法生成下代種群,下代 種群包括3類個(gè)體:
[0029] 第一類、優(yōu)秀的父代個(gè)體集:選擇1%適應(yīng)度的父代個(gè)體直接作為復(fù)制到下一代種 群;
[0030]第二類、交叉算子重組生成;選擇2個(gè)優(yōu)秀父代通過(guò)交叉生成,即:隨機(jī)從種群中選 擇2組子種群,每組子種群包含總數(shù)的10%,選擇每個(gè)子種群適應(yīng)度最高的個(gè)體進(jìn)行雜交, 對(duì)兩個(gè)體雜交η次,從2個(gè)父代和和2n個(gè)子代中選擇適應(yīng)度最高的2個(gè)個(gè)體放入下一代種群; [0031 ]第三類、個(gè)體變異:對(duì)第一類和第二類中的個(gè)體,按變異概率Pm選擇個(gè)體進(jìn)行變異 操作。
[0032]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟4中判斷子代是否達(dá)到終止條件的標(biāo)準(zhǔn)為:觀 察兩代子群中具有最佳適應(yīng)度個(gè)體在性能指標(biāo)下的收斂情況,若收斂小于預(yù)設(shè)閾值則認(rèn)為 算法結(jié)束。
[0033]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟5的具體方法包括:對(duì)于步驟1-4建立mapper 和reducer的映射關(guān)系,其中每個(gè)步驟中mapper和reducer均按照5 :1的比例設(shè)置進(jìn)行數(shù)據(jù) 處理。
[0034]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為:
[0035]本發(fā)明公開(kāi)的一種云計(jì)算環(huán)境下的基于MapReduce并行化的柔性工廠作業(yè)調(diào)度方 法,采取MapReduce模型,能很好的支持云計(jì)算環(huán)境。利用云計(jì)算環(huán)境的彈性計(jì)算方式,將柔 性作業(yè)車間調(diào)度問(wèn)題FJSP實(shí)現(xiàn)為一種云端服務(wù)。用戶可以遠(yuǎn)程提交計(jì)算任務(wù)并提出時(shí)間和 精度上的需求,云端接受任務(wù)后,根據(jù)任務(wù)的規(guī)模和需求分配計(jì)算資源,并利用MapReduce 來(lái)對(duì)柔性作業(yè)車間調(diào)度問(wèn)題FJSP進(jìn)行并行化計(jì)算,最后將結(jié)果甘特圖反饋給用戶;相比傳 統(tǒng)的單節(jié)點(diǎn)計(jì)算方法,本發(fā)明可以滿足用戶的時(shí)間和精度上的需求;
[0036]本發(fā)明使用分布式計(jì)算模型,分布式計(jì)算模型求解FJSP問(wèn)題從能有效降低算法求 解時(shí)間和提高解質(zhì)量,F(xiàn)JSP問(wèn)題這類計(jì)算任務(wù),屬于計(jì)算密集型任務(wù)并且會(huì)產(chǎn)生海量的中 間數(shù)據(jù)集,因此僅僅依靠傳統(tǒng)的單計(jì)算節(jié)點(diǎn)求解對(duì)單機(jī)要求太高,通過(guò)分布式計(jì)算模型可 以很好解決該問(wèn)題。
【附圖說(shuō)明】
[0037]圖1為本發(fā)明一種實(shí)施例中的MapReduce體系框架圖;
[0038] 圖2本發(fā)明一種實(shí)施例的的兩父代雜交生成子代示例圖;
[0039] 圖3本發(fā)明一種實(shí)施例的的個(gè)體變異示意圖;
[0040] 圖4本發(fā)明一種實(shí)施例的基于機(jī)器的編碼圖;
[0041 ]圖5本發(fā)明一種實(shí)施例的最優(yōu)解基因串序列圖;
[0042] 圖6本發(fā)明一種實(shí)施例的解碼之后的甘特圖。
【具體實(shí)施方式】
[0043] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更