本發(fā)明屬于智能制造技術(shù)領(lǐng)域,主要涉及智能制造中的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃排序的優(yōu)化,具體是一種基于sparkr的產(chǎn)品檢測(cè)總完工時(shí)間極小化方法。應(yīng)用于制造企業(yè)解決大規(guī)模試驗(yàn)檢測(cè)任務(wù)的排序問(wèn)題,優(yōu)化產(chǎn)品制造中的試驗(yàn)檢測(cè)流程。及智能制
背景技術(shù):
智能制造中“產(chǎn)品檢測(cè)計(jì)劃總完工時(shí)間”,是指在產(chǎn)品試驗(yàn)檢測(cè)調(diào)度中,以?xún)?yōu)化試驗(yàn)計(jì)劃的總完工時(shí)間為目標(biāo),使得試驗(yàn)檢測(cè)資源能夠被穩(wěn)定有效地利用,以及試驗(yàn)檢測(cè)總周轉(zhuǎn)時(shí)間減少,以提高制造檢測(cè)中的工作效率。
在智能制造時(shí)代,客戶(hù)對(duì)制造企業(yè)試驗(yàn)檢測(cè)服務(wù)能力、周期和費(fèi)用等要求越來(lái)越高。但企業(yè)自身試驗(yàn)檢測(cè)能力和水平以及試驗(yàn)檢測(cè)產(chǎn)能都不足,因此需要提高業(yè)務(wù)資源的高利用性和可伸縮性,縮短試驗(yàn)周期,滿(mǎn)足企業(yè)需求,優(yōu)化試驗(yàn)檢測(cè)流程,節(jié)約時(shí)間和資源成本。
當(dāng)前的制造企業(yè)中,試驗(yàn)檢測(cè)計(jì)劃主要存在如下問(wèn)題:①試驗(yàn)計(jì)劃人員憑借經(jīng)驗(yàn)估計(jì)各檢測(cè)室檢測(cè)能力,存在人為因素,會(huì)使任務(wù)分配存在不合理。檢測(cè)室在接收任務(wù)的時(shí)候,試驗(yàn)計(jì)劃人員無(wú)法準(zhǔn)確預(yù)估完成時(shí)間,可能會(huì)造成任務(wù)閑置或超負(fù)荷。②試驗(yàn)項(xiàng)目存在先后順序、資源數(shù)量有限等多種約束,使試驗(yàn)計(jì)劃調(diào)度過(guò)程變復(fù)雜。不同品種的產(chǎn)品試驗(yàn)檢測(cè)項(xiàng)目對(duì)資源的需求不同,需要對(duì)試驗(yàn)項(xiàng)目的資源、所需的時(shí)間以及檢測(cè)的先后順序進(jìn)行合理的安排。③針對(duì)試驗(yàn)檢測(cè)計(jì)劃多項(xiàng)目、多目標(biāo)以及隨機(jī)不確定性的問(wèn)題,隨著試驗(yàn)項(xiàng)目數(shù)量的增多,試驗(yàn)檢測(cè)排序的計(jì)算量會(huì)呈指數(shù)級(jí)增加。當(dāng)前制造企業(yè)都是一種人工經(jīng)驗(yàn)排序,沒(méi)有一種科學(xué)高效的試驗(yàn)計(jì)劃總完工時(shí)間極小化方法作為排序依據(jù)。
針對(duì)以上問(wèn)題,張騰飛等在其發(fā)表的論文“基于遺傳算法的多目標(biāo)車(chē)間調(diào)度問(wèn)題的研究”(《組合機(jī)床與自動(dòng)化加工技術(shù)》2016,5(5):43-50),公開(kāi)了一種通過(guò)遺傳算法解決多目標(biāo)車(chē)間調(diào)度問(wèn)題(jsp)的方法,并使用了11種測(cè)試用例來(lái)測(cè)試算法的性能,證明了遺傳算法在解決這一問(wèn)題方面的實(shí)用性。但該方法的不足之處是,對(duì)于大規(guī)模的作業(yè)調(diào)度任務(wù),算法能處理的數(shù)據(jù)量受限于單機(jī)的內(nèi)存容量,無(wú)法適應(yīng)當(dāng)前大型制造企業(yè)的大規(guī)模數(shù)據(jù)處理。hadoop是流行的大數(shù)據(jù)處理平臺(tái),它的hdfs分布式文件系統(tǒng)和mapreduce編程模型比較好地解決了大數(shù)據(jù)分布式存儲(chǔ)和處理的問(wèn)題。例如曹書(shū)豪等在其發(fā)表的“一種改進(jìn)的hadoop多用戶(hù)作業(yè)調(diào)度方法”(《計(jì)算機(jī)應(yīng)用研究》2015,32(5):1395-1398),公開(kāi)提出了一種基于服務(wù)質(zhì)量(qos)的作業(yè)選擇量化和基于遺傳算法的任務(wù)選擇均衡化的方法,解決目前hadoop作業(yè)調(diào)度方法服務(wù)水平不高、資源利用率低的問(wèn)題。這一方法使得用戶(hù)具備了處理大數(shù)據(jù)的處理能力,提高了hadoop資源調(diào)度器的服務(wù)水平,而且負(fù)載均衡,但是這一方法沒(méi)有考慮集群?jiǎn)栴},不利于算法的擴(kuò)展性。
r是非常流行的數(shù)據(jù)統(tǒng)計(jì)分析和制圖的語(yǔ)言及環(huán)境,在數(shù)據(jù)挖掘分析中的使用程度僅次于sql。r本身?yè)碛袕?qiáng)大的統(tǒng)計(jì)分析功能和豐富的第三方擴(kuò)展包,在r語(yǔ)言環(huán)境下編程建立算法模型能方便的調(diào)用算法包和函數(shù)來(lái)解決試驗(yàn)檢測(cè)計(jì)劃調(diào)度排序問(wèn)題,但目前r語(yǔ)言的核心運(yùn)行環(huán)境是單線(xiàn)程的,能處理的數(shù)據(jù)量受限于單機(jī)的內(nèi)存容量,大數(shù)據(jù)時(shí)代的海量數(shù)據(jù)處理對(duì)r構(gòu)成了挑戰(zhàn)。
2013年9月sparkr作為一個(gè)獨(dú)立項(xiàng)目啟動(dòng)于加州大學(xué)伯克利分校的amplab實(shí)驗(yàn)室,與spark源出同門(mén)。2014年1月,sparkr項(xiàng)目在github上開(kāi)源(https://github.com/amplab-extras/sparkr-pkg)。隨后,工業(yè)界的alteryx、databricks、intel等公司、普渡大學(xué)以及其它開(kāi)發(fā)者在2015年4月成功地將sparkr合并進(jìn)spark代碼庫(kù)的主干分支,并在spark1.4版本中作為重要的新特性之一正式宣布。在r中可以無(wú)縫地使用rdd和dataframeapi,借助spark內(nèi)存計(jì)算、統(tǒng)一軟件棧上支持多種計(jì)算模型的優(yōu)勢(shì),高效地進(jìn)行分布式數(shù)據(jù)計(jì)算和分析,解決大規(guī)模數(shù)據(jù)集帶來(lái)的挑戰(zhàn)。
綜上所述:現(xiàn)有技術(shù)中,不少人進(jìn)行了有益的嘗試,開(kāi)創(chuàng)了運(yùn)用人工智能算法的新途徑,將優(yōu)化算法模型和hadoop大數(shù)據(jù)計(jì)算框架相結(jié)合,提高了產(chǎn)品檢測(cè)排序的效率。但是僅僅通過(guò)優(yōu)化算法模型進(jìn)行產(chǎn)品試驗(yàn)檢測(cè)工序的優(yōu)化,不足以解決車(chē)間調(diào)度中產(chǎn)生的大規(guī)模產(chǎn)品試驗(yàn)檢測(cè)任務(wù),而hadoop的編程模型不夠靈活和高效,運(yùn)行時(shí)產(chǎn)生的中間值都寫(xiě)入磁盤(pán),沒(méi)有充分利用內(nèi)存,性能不足。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服上述方法存在的缺陷和不足,提出了一種排序較優(yōu)、能進(jìn)行大規(guī)模數(shù)據(jù)處理的基于sparkr的產(chǎn)品檢測(cè)總完工時(shí)間極小化方法,用于解決現(xiàn)有產(chǎn)品試驗(yàn)檢測(cè)排序方法中存在的優(yōu)化問(wèn)題、數(shù)據(jù)量擴(kuò)大的問(wèn)題以及數(shù)據(jù)統(tǒng)計(jì)分析和高效編程模型的結(jié)合問(wèn)題。
本發(fā)明是一種基于sparkr的產(chǎn)品檢測(cè)總完工時(shí)間極小化方法,總完工時(shí)間極小化過(guò)程涉及到產(chǎn)品的試驗(yàn)任務(wù),試驗(yàn)工序,設(shè)備資源以及完工時(shí)間,把各個(gè)產(chǎn)品的試驗(yàn)任務(wù)分配到設(shè)備資源對(duì)應(yīng)的各個(gè)檢測(cè)室,在產(chǎn)品的試驗(yàn)任務(wù)確定的情況下,具體步驟包括有:
(1)導(dǎo)入原始試驗(yàn)數(shù)據(jù):在r中調(diào)用dataframe接口,首先創(chuàng)建sparkcontext,然后創(chuàng)建sqlcontext,用sqlcontext來(lái)創(chuàng)建dataframe,導(dǎo)入原始產(chǎn)品試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù),用dataframe對(duì)試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)進(jìn)行存儲(chǔ),方便后續(xù)調(diào)用和操作,原始產(chǎn)品試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)量可達(dá)到tb量級(jí);
(2)數(shù)據(jù)預(yù)處理:在所創(chuàng)建的dataframe中對(duì)大規(guī)模試驗(yàn)任務(wù)數(shù)據(jù)根據(jù)產(chǎn)品試驗(yàn)檢測(cè)任務(wù)進(jìn)行缺失值的查找、插補(bǔ)、過(guò)濾以及數(shù)據(jù)列的操作和提取部分?jǐn)?shù)據(jù),dataframe表中每個(gè)列都可以是不同的數(shù)據(jù)類(lèi)型;
(3)確定試驗(yàn)檢測(cè)任務(wù)目標(biāo)函數(shù)和約束條件的數(shù)學(xué)模型:目標(biāo)函數(shù)根據(jù)產(chǎn)品試驗(yàn)任務(wù)的最終目標(biāo)建立,即試驗(yàn)檢測(cè)計(jì)劃排序的總完工時(shí)間,約束條件根據(jù)各試驗(yàn)檢測(cè)產(chǎn)品的檢測(cè)先后順序和各檢測(cè)室的檢測(cè)先后順序確定;
(4)建立產(chǎn)品試驗(yàn)檢測(cè)任務(wù)總完工時(shí)間的遺傳算法優(yōu)化模型:對(duì)產(chǎn)品的所有試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)進(jìn)行參數(shù)初始化、遺傳算子的設(shè)定、初始種群生成、個(gè)體編碼、個(gè)體適應(yīng)度計(jì)算、交叉和變異操作,得到子代基因序列,即產(chǎn)品的試驗(yàn)檢測(cè)任務(wù)排序,然后根據(jù)個(gè)體適應(yīng)度對(duì)試驗(yàn)檢測(cè)任務(wù)的排序進(jìn)行選擇,計(jì)算每種排序的完工時(shí)間,如果目標(biāo)函數(shù)的解沒(méi)有收斂,則以得到的子代基因序列作為父代繼續(xù)進(jìn)行交叉和變異迭代操作,直到目標(biāo)函數(shù)的解收斂;
(5)輸出最優(yōu)試驗(yàn)檢測(cè)計(jì)劃排序和每個(gè)產(chǎn)品、每道工序的開(kāi)工、完工時(shí)間:滿(mǎn)足迭代次數(shù),結(jié)果達(dá)到收斂條件,即目標(biāo)函數(shù)的解收斂,結(jié)束迭代,輸出最優(yōu)試驗(yàn)檢測(cè)排序和每個(gè)產(chǎn)品、每道工序的開(kāi)工和完工時(shí)間列表;
(6)輸出整個(gè)試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間:根據(jù)每個(gè)產(chǎn)品、每道工序的開(kāi)工、完工時(shí)間,所有產(chǎn)品最后一道工序中的最大完工時(shí)間,即為整個(gè)試驗(yàn)檢測(cè)任務(wù)的總完工時(shí)間,將總完工時(shí)間輸出;
(7)試驗(yàn)檢測(cè)計(jì)劃的可視化展示:總完工時(shí)間不能完全展示整個(gè)試驗(yàn)檢測(cè)排序情況,根據(jù)每個(gè)產(chǎn)品、每道工序的開(kāi)工、完工時(shí)間,將最終的試驗(yàn)檢測(cè)排序顯示為甘特圖,將每個(gè)產(chǎn)品、每道工序在檢測(cè)室檢測(cè)的先后順序和加工時(shí)間信息可視化展示。
本發(fā)明所提出的一種基于sparkr的產(chǎn)品檢測(cè)總完工時(shí)間極小化方法,能更好的優(yōu)化大規(guī)模試驗(yàn)檢測(cè)計(jì)劃排序問(wèn)題。
本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn):
(1)通過(guò)采用r語(yǔ)言豐富的統(tǒng)計(jì)功能和數(shù)據(jù)處理能力以及大量的第三方包,建立遺傳算法優(yōu)化模型對(duì)試驗(yàn)檢測(cè)計(jì)劃排序進(jìn)行全局進(jìn)化尋優(yōu),經(jīng)過(guò)一定次數(shù)的進(jìn)化迭代后,得到優(yōu)化后的計(jì)劃排序和最短的試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間。
(2)sparkr將spark的分布式擴(kuò)展能力與r的數(shù)據(jù)分析功能結(jié)合,利用r進(jìn)行大數(shù)據(jù)交互分析,在節(jié)點(diǎn)上調(diào)用r的數(shù)據(jù)分析庫(kù),然后借助spark內(nèi)存計(jì)算、統(tǒng)一軟件棧的多種計(jì)算模型高效地進(jìn)行分布式計(jì)算和分析處理tb量級(jí)的試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)。
附圖說(shuō)明
圖1是本發(fā)明的整體方法流程圖;
圖2是本發(fā)明中sparkr整體架構(gòu)圖;
圖3是本發(fā)明中遺傳算法流程圖;
圖4是本發(fā)明中5×5產(chǎn)品問(wèn)題種群均值和目標(biāo)函數(shù)解的變化圖;
圖5是本發(fā)明中5×5產(chǎn)品問(wèn)題的試驗(yàn)檢測(cè)方案最優(yōu)甘特圖。
具體實(shí)施方式
下面將結(jié)合附圖和具體實(shí)例,對(duì)本發(fā)明作詳細(xì)說(shuō)明。
實(shí)施例1
目前制造企業(yè)的產(chǎn)品試驗(yàn)檢測(cè)排序方法主要以人工經(jīng)驗(yàn)為主,效率低,資源利用也不充分,而且產(chǎn)品試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)量不斷擴(kuò)大,已有的算法優(yōu)化模型能處理的數(shù)據(jù)量受限于單機(jī)的內(nèi)存容量,無(wú)法實(shí)現(xiàn)大規(guī)模數(shù)據(jù)的分析,而基于hadoop的產(chǎn)品調(diào)度方法雖然使用戶(hù)具備了大數(shù)據(jù)的處理能力,但沒(méi)有考慮集群?jiǎn)栴},不利于算法模型的擴(kuò)展性,數(shù)據(jù)統(tǒng)計(jì)和分析能力不足。
本發(fā)明針對(duì)現(xiàn)有產(chǎn)品試驗(yàn)檢測(cè)排序方法中急需解決的優(yōu)化問(wèn)題、數(shù)據(jù)量擴(kuò)大的問(wèn)題以及數(shù)據(jù)統(tǒng)計(jì)分析和高效編程模型的結(jié)合問(wèn)題提出一種基于sparkr的產(chǎn)品檢測(cè)計(jì)劃總完工時(shí)間極小化方法,也是一種大數(shù)據(jù)處理場(chǎng)景的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃排序優(yōu)化方法??偼旯r(shí)間極小化過(guò)程涉及到產(chǎn)品的試驗(yàn)任務(wù),試驗(yàn)工序,設(shè)備資源以及完工時(shí)間,參見(jiàn)圖1,本發(fā)明在充分考慮現(xiàn)有試驗(yàn)工序和設(shè)備資源限制的基礎(chǔ)上,把各個(gè)產(chǎn)品的試驗(yàn)任務(wù)合理的分配到設(shè)備資源對(duì)應(yīng)的各個(gè)檢測(cè)室,在產(chǎn)品的試驗(yàn)任務(wù)確定的情況下,具體步驟包括有:
(1)導(dǎo)入原始試驗(yàn)數(shù)據(jù):在r中調(diào)用dataframe接口,首先創(chuàng)建sparkcontext,然后創(chuàng)建sqlcontext,用sqlcontext來(lái)創(chuàng)建dataframe,導(dǎo)入原始產(chǎn)品試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù),在dataframe中進(jìn)行后續(xù)數(shù)據(jù)的操作。dataframe可以存儲(chǔ)tb級(jí)的試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù),表中每列都可以是不同的數(shù)據(jù)類(lèi)型。
(2)數(shù)據(jù)預(yù)處理:dataframe的數(shù)據(jù)操作主要包括數(shù)據(jù)緩存、排序、列操作、數(shù)據(jù)類(lèi)型轉(zhuǎn)換、數(shù)據(jù)聚合以及提取數(shù)據(jù)等。由于原始試驗(yàn)檢測(cè)任務(wù)的部分?jǐn)?shù)據(jù)可能缺失或者記錄異常,影響后續(xù)的數(shù)據(jù)處理和結(jié)果的準(zhǔn)確性,所以本發(fā)明在所創(chuàng)建的dataframe中對(duì)試驗(yàn)任務(wù)數(shù)據(jù)根據(jù)產(chǎn)品試驗(yàn)檢測(cè)要求進(jìn)行的數(shù)據(jù)預(yù)處理操作包括有:缺失值和異常值的查找、插補(bǔ)和過(guò)濾。
(3)確定試驗(yàn)檢測(cè)任務(wù)目標(biāo)函數(shù)和約束條件的數(shù)學(xué)模型:目標(biāo)函數(shù)根據(jù)產(chǎn)品試驗(yàn)任務(wù)的最終目標(biāo)建立,即試驗(yàn)檢測(cè)計(jì)劃排序的總完工時(shí)間。約束條件根據(jù)各試驗(yàn)檢測(cè)產(chǎn)品的檢測(cè)先后順序和各檢測(cè)室的檢測(cè)先后順序確定,一個(gè)試驗(yàn)任務(wù)包含m個(gè)試驗(yàn)產(chǎn)品,這m個(gè)試驗(yàn)產(chǎn)品的n道工序要在k個(gè)檢測(cè)室中檢測(cè),每個(gè)試驗(yàn)產(chǎn)品的每道工序在不同的檢測(cè)室里進(jìn)行試驗(yàn)。
(4)建立產(chǎn)品試驗(yàn)檢測(cè)任務(wù)總完工時(shí)間的遺傳算法優(yōu)化模型:對(duì)產(chǎn)品的所有試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)進(jìn)行種群數(shù)目和遺傳代數(shù)的設(shè)定、交叉概率和變異概率的設(shè)定、初始種群生成、個(gè)體編碼、適應(yīng)度函數(shù)設(shè)定、個(gè)體適應(yīng)度計(jì)算、交叉和變異操作,得到子代基因序列,即產(chǎn)品的試驗(yàn)檢測(cè)任務(wù)排序,然后根據(jù)個(gè)體適應(yīng)度對(duì)試驗(yàn)檢測(cè)任務(wù)的排序進(jìn)行選擇,計(jì)算每種排序的完工時(shí)間,如果目標(biāo)函數(shù)的解沒(méi)有收斂,則以得到的子代基因序列作為新父代繼續(xù)進(jìn)行交叉和變異迭代操作,直到目標(biāo)函數(shù)的解收斂。
(5)輸出最優(yōu)試驗(yàn)檢測(cè)計(jì)劃排序和每個(gè)產(chǎn)品、每道工序的開(kāi)工、完工時(shí)間:例如4×4的試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù),滿(mǎn)足迭代代數(shù)15次后,目標(biāo)函數(shù)的解收斂,即目標(biāo)函數(shù)的解不再發(fā)生變化,結(jié)束迭代,輸出此時(shí)的試驗(yàn)檢測(cè)計(jì)劃排序和每個(gè)產(chǎn)品、每道工序的開(kāi)工和完工時(shí)間列表。
(6)輸出整個(gè)試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間:根據(jù)每個(gè)產(chǎn)品、每道工序的開(kāi)工、完工時(shí)間,所有產(chǎn)品最后一道工序中的最大完工時(shí)間,即為整個(gè)試驗(yàn)檢測(cè)任務(wù)的總完工時(shí)間,將總完工時(shí)間輸出。
(7)試驗(yàn)檢測(cè)計(jì)劃的可視化展示:總完工時(shí)間不能完全展示整個(gè)試驗(yàn)檢測(cè)排序情況,根據(jù)每個(gè)產(chǎn)品、每道工序的開(kāi)工、完工時(shí)間,將最終的試驗(yàn)檢測(cè)排序顯示為甘特圖,將每個(gè)產(chǎn)品、每道工序在檢測(cè)室檢測(cè)的先后順序、加工時(shí)間和完工時(shí)間信息進(jìn)行可視化展示。
本發(fā)明通過(guò)采用r語(yǔ)言豐富的統(tǒng)計(jì)功能和數(shù)據(jù)處理能力以及大量的第三方包,建立遺傳算法優(yōu)化模型對(duì)試驗(yàn)檢測(cè)計(jì)劃排序進(jìn)行全局進(jìn)化尋優(yōu),經(jīng)過(guò)一定次數(shù)的進(jìn)化迭代后,得到最優(yōu)的產(chǎn)品試驗(yàn)計(jì)劃排序和最短的試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間。
實(shí)施例2
基于sparkr的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間極小化方法同實(shí)施例1,本發(fā)明步驟(2)所述的dataframe是為存儲(chǔ)產(chǎn)品試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)創(chuàng)建的一種類(lèi)似r的data.frame的二維表,用schema來(lái)表示產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃任務(wù)數(shù)據(jù)列的名字和數(shù)據(jù)類(lèi)型,dataframe中的所有試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)全部是以jvm的數(shù)據(jù)類(lèi)型來(lái)存儲(chǔ),一個(gè)dataframe方法的實(shí)現(xiàn)就是簡(jiǎn)單地調(diào)用jvm端dataframe的數(shù)據(jù)處理方法,直接通過(guò)r程序?qū)ataframe中存儲(chǔ)的試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)進(jìn)行調(diào)用和預(yù)處理操作。dataframeapi還包含了一部分rddapi,需要先將dataframe轉(zhuǎn)換成rdd,然后調(diào)用rdd的數(shù)據(jù)分組、聚合和重分區(qū)操作,在這種情況下需要啟動(dòng)rworker進(jìn)程來(lái)進(jìn)行試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)的分布式計(jì)算和處理。
目前sparkr的dataframeapi已經(jīng)比較完善,spark的dataframeapi源自r的dataframe數(shù)據(jù)類(lèi)型,對(duì)于r用戶(hù)使用更便利,而且sparkrdataframeapi性能和直接使用spark框架同樣高效。
實(shí)施例3
基于sparkr的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間極小化方法同實(shí)施例1-2,本發(fā)明步驟(3)的確定試驗(yàn)檢測(cè)任務(wù)目標(biāo)函數(shù)和約束條件的數(shù)學(xué)模型,試驗(yàn)檢測(cè)計(jì)劃調(diào)度問(wèn)題包括確定各檢測(cè)室上的檢測(cè)先后順序和在試驗(yàn)計(jì)劃調(diào)度問(wèn)題中試驗(yàn)檢測(cè)任務(wù)所要滿(mǎn)足的約束條件,其中約束條件具體包括:
(3.1)每個(gè)試驗(yàn)任務(wù)有若干個(gè)試驗(yàn)檢測(cè)產(chǎn)品組成,每個(gè)試驗(yàn)產(chǎn)品的若干個(gè)工序在不同檢測(cè)室進(jìn)行檢測(cè),其中每個(gè)檢測(cè)室在同一時(shí)間只能檢測(cè)一個(gè)試驗(yàn)產(chǎn)品,每個(gè)試驗(yàn)產(chǎn)品在同一時(shí)間只能在一個(gè)檢測(cè)室進(jìn)行檢測(cè)。本發(fā)明中試驗(yàn)產(chǎn)品簡(jiǎn)稱(chēng)產(chǎn)品。
(3.2)每個(gè)試驗(yàn)產(chǎn)品必須在試驗(yàn)檢測(cè)人員指定的檢測(cè)室中進(jìn)行檢測(cè)。
(3.3)每個(gè)試驗(yàn)產(chǎn)品必須在它前面的試驗(yàn)工序檢測(cè)完工后才能開(kāi)始下一個(gè)工序的檢測(cè)。
(3.4)每個(gè)試驗(yàn)產(chǎn)品在試驗(yàn)檢測(cè)過(guò)程中不會(huì)被另外的試驗(yàn)產(chǎn)品中斷。
(3.5)試驗(yàn)任務(wù)檢測(cè)的過(guò)程中,不允許新試驗(yàn)檢測(cè)任務(wù)的加入。
約束條件的數(shù)學(xué)模型為:
cik-pik+m(1-aihk)≥cih,i=1,2,…,n,h,k=1,2,…,m
cjk-cik+m(1-xihk)≥pjh,i,j=1,2,…,n,k=1,2,…,m
cik≥0,i=1,2,…,n,k=1,2,…,m
xijk=0或1,i,j=1,2,…,n,k=1,2,…,m
其中,cik為i產(chǎn)品在檢測(cè)室k上的完成時(shí)間,pik為i產(chǎn)品在檢測(cè)室k上加工時(shí)間,m是一個(gè)足夠大的正數(shù),aihk表示指示系數(shù)和xijk表示指示變量。
有關(guān)產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃最小總完工時(shí)間的目標(biāo)函數(shù)f(x),具體函數(shù)如下:
其中t表示產(chǎn)品試驗(yàn)檢測(cè)總完工時(shí)間,cik表示i產(chǎn)品在檢測(cè)室k上的完成時(shí)間,m表示試驗(yàn)檢測(cè)任務(wù)中的產(chǎn)品數(shù),n表示每個(gè)產(chǎn)品有n道工序,k表示檢測(cè)室個(gè)數(shù),i表示產(chǎn)品編號(hào)。
針對(duì)產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃排序的最終目標(biāo)設(shè)定目標(biāo)函數(shù),即m個(gè)產(chǎn)品的n道工序在檢測(cè)室k中的最小完成時(shí)間,設(shè)定的目標(biāo)函數(shù)與適應(yīng)度函數(shù)相對(duì)應(yīng),確保適應(yīng)度函數(shù)的解為非負(fù)值,所以將目標(biāo)函數(shù)直接設(shè)定為最小總完工時(shí)間。
實(shí)施例4
基于sparkr的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間極小化方法同實(shí)施例1-3,步驟(4)建立的產(chǎn)品試驗(yàn)檢測(cè)任務(wù)總完工時(shí)間的遺傳算法優(yōu)化模型具體包括如下步驟:
(4.1)初始化遺傳算法參數(shù):遺傳操作的效果與遺傳算子的選取、編碼方法、群體大小、初始群體以及適應(yīng)度函數(shù)的設(shè)定密切相關(guān),遺傳算法參數(shù)主要包括初始種群大小、交叉算子、變異算子和迭代次數(shù),根據(jù)試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)量進(jìn)行設(shè)定,例如4×4的試驗(yàn)檢測(cè)任務(wù),設(shè)定初始種群大小為40,交叉算子為0.8,變異算子為0.1,迭代代數(shù)為15。
(4.2)個(gè)體編碼操作:根據(jù)試驗(yàn)檢測(cè)計(jì)劃(工序)進(jìn)行編碼,每個(gè)基因序列由m×n個(gè)代表工序的基因組成,每個(gè)基因序列都表示試驗(yàn)檢測(cè)任務(wù)的一種排列,其中m表示產(chǎn)品個(gè)數(shù),n表示產(chǎn)品工序個(gè)數(shù)。例如7×4的試驗(yàn)檢測(cè)任務(wù)表示7個(gè)試驗(yàn)產(chǎn)品進(jìn)行檢測(cè),每個(gè)產(chǎn)品各有4道工序,每個(gè)產(chǎn)品的工序都在特定的檢測(cè)室進(jìn)行檢測(cè),所以每個(gè)編碼的基因序列都對(duì)應(yīng)一個(gè)檢測(cè)室序列。
(4.3)生成遺傳算法優(yōu)化模型的初始種群:根據(jù)試驗(yàn)檢測(cè)計(jì)劃(工序)進(jìn)行編碼后,通過(guò)r編程由系統(tǒng)隨機(jī)生成n條基因序列,這些基因序列即是遺傳算法優(yōu)化模型的初始種群,其中n表示初始種群數(shù)目,根據(jù)試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)量設(shè)定。
(4.4)編寫(xiě)適應(yīng)度函數(shù):總完工時(shí)間極小化對(duì)應(yīng)最小值問(wèn)題,適應(yīng)度函數(shù)值需為正值,適應(yīng)度越小代表目標(biāo)函數(shù)值越趨近當(dāng)前種群中目標(biāo)函數(shù)的最小估計(jì)值,保證了個(gè)體適應(yīng)度函數(shù)非負(fù),將產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃的目標(biāo)函數(shù)f(x)與當(dāng)前種群中目標(biāo)函數(shù)的最小估計(jì)值cmin之差作為適應(yīng)度函數(shù)ffit(x),適應(yīng)度函數(shù)表示如下:
其中,cmin是目標(biāo)函數(shù)f(x)的最小估計(jì)值,取當(dāng)前種群中目標(biāo)函數(shù)的最小值。
(4.5)交叉與變異操作:
(4.5.1)交叉:隨機(jī)選擇兩個(gè)父代基因序列p1和p2,在兩個(gè)父代基因序列中提取i(1≤i≤m)編號(hào)的n個(gè)基因,保持其他編號(hào)順序不變,然后分別保存在新的基因串c1和c2中,將新基因串c1和c2分別交叉插入到兩個(gè)父代基因序列p2和p1留出的n個(gè)空位中,就完成了一次交叉操作,產(chǎn)生兩個(gè)子代基因序列o1和o2。
(4.5.2)變異:從當(dāng)前種群中選取一個(gè)個(gè)體基因序列作為父代o1,從試驗(yàn)產(chǎn)品編號(hào)中隨機(jī)選擇兩個(gè)產(chǎn)品號(hào),將其產(chǎn)品號(hào)位置交換,生成中間基因串o’1,然后再將基因序列o’1中的基因左移或者右移a個(gè)位置,得到最終子代基因序列o”1,完成產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃遺傳算法優(yōu)化模型的一次交叉和變異操作。
(4.6)得到的子代基因序列o”1即為產(chǎn)品的試驗(yàn)檢測(cè)任務(wù)排序,根據(jù)個(gè)體適應(yīng)度對(duì)試驗(yàn)檢測(cè)任務(wù)的排序進(jìn)行選擇,計(jì)算每種排序的完工時(shí)間,如果目標(biāo)函數(shù)的解沒(méi)有收斂,則以得到的子代基因序列作為新父代繼續(xù)進(jìn)行交叉和變異迭代操作,直到目標(biāo)函數(shù)的解收斂,結(jié)束迭代,輸出最優(yōu)試驗(yàn)檢測(cè)排序和每個(gè)產(chǎn)品、每道工序的開(kāi)工和完工時(shí)間列表。
面對(duì)復(fù)雜的試驗(yàn)檢測(cè)任務(wù)排序,本發(fā)明產(chǎn)品檢測(cè)計(jì)劃排序遺傳算法優(yōu)化模型同時(shí)處理種群中的多個(gè)個(gè)體,即對(duì)種群中的多個(gè)基因序列進(jìn)行評(píng)估,減少了陷入局部最優(yōu)解的風(fēng)險(xiǎn),能在充分地利用檢測(cè)室資源的同時(shí)合理的將各項(xiàng)試驗(yàn)任務(wù)進(jìn)行優(yōu)化排序,在不斷交叉和變異迭代操作中找到最優(yōu)的產(chǎn)品試驗(yàn)檢測(cè)排序和最短的完工時(shí)間。
實(shí)施例5
基于sparkr的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間極小化方法同實(shí)施例1-4,對(duì)試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)進(jìn)行調(diào)用rdd的數(shù)據(jù)分組、聚合和重分區(qū)操作時(shí),首先將dataframe轉(zhuǎn)換成rdd,在執(zhí)行大規(guī)模試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)處理時(shí)會(huì)啟動(dòng)一個(gè)rworker進(jìn)程,將試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)進(jìn)行分區(qū)安排到每個(gè)子節(jié)點(diǎn)進(jìn)行分布式計(jì)算和分析,通過(guò)socket連接將分區(qū)試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)、序列化后的r函數(shù)以及其它信息傳給每個(gè)rworker進(jìn)程,每個(gè)rworker進(jìn)程反序列化接收分區(qū)試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)和編寫(xiě)好的r函數(shù),將r函數(shù)應(yīng)用到分區(qū)試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)上,最終將結(jié)果數(shù)據(jù)序列化成字節(jié)數(shù)組傳回jvm后端。
sparkr中的rdd數(shù)據(jù)操作將大規(guī)模數(shù)據(jù)分區(qū)安排到子節(jié)點(diǎn)中進(jìn)行分布式的計(jì)算和分析,在節(jié)點(diǎn)上利用r的數(shù)據(jù)分析庫(kù),利用r進(jìn)行大數(shù)據(jù)交互分析的同時(shí)借助spark內(nèi)存計(jì)算、支持多種計(jì)算模型的優(yōu)勢(shì),解決r環(huán)境的單線(xiàn)程操作對(duì)數(shù)據(jù)量的限制問(wèn)題。
實(shí)施例6
基于sparkr的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間極小化方法同實(shí)施例1-5,步驟(4.3)基于試驗(yàn)檢測(cè)計(jì)劃(工序)進(jìn)行編碼,每個(gè)個(gè)體編碼由每個(gè)基因序列由m×n個(gè)代表工序的基因序列組成,是所有試驗(yàn)項(xiàng)目的排列,例如4×4試驗(yàn)任務(wù):{2,3,4,1,1,3,2,2,4,3,2,4,3,1,1,4}表示4個(gè)產(chǎn)品各有4個(gè)工序,其中第二次出現(xiàn)的編號(hào)3表示產(chǎn)品3的第2道工序,編碼1-4位表示產(chǎn)品2、產(chǎn)品3、產(chǎn)品4、產(chǎn)品1的第1道工序,編碼5-6位表示產(chǎn)品1、產(chǎn)品3的第2道工序,以此類(lèi)推。
檢測(cè)室的安排是由檢測(cè)人員來(lái)設(shè)定的,例如上述工序編碼對(duì)應(yīng)的檢測(cè)室安排為{4,1,2,3,3,2,3,1,2,3,4,4,1,4,1,2},其中第一個(gè)4表示產(chǎn)品2的第1道工序在檢測(cè)室4中進(jìn)行檢測(cè)。
實(shí)施例7
基于sparkr的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間極小化方法同實(shí)施例1-6,步驟(4.5)遺傳操作主要包括交叉和變異操作,具體步驟包括:
(4.5.1)交叉:在兩個(gè)父代基因序列p1和p2中選擇試驗(yàn)產(chǎn)品1和3,將其抽出,產(chǎn)生新的基因串c1和c2:
父代1p1:[2,3,4,1,1,3,2,2,4,3,2,4,3,1,1,4]→c1:[3,1,1,3,3,3,1,1]
父代2p2:[1,1,2,4,3,3,4,2,1,3,4,1,2,2,3,4]→c2:[1,1,3,3,1,3,1,3]
將新的基因串c1和c2分別交叉插入p2和p1:
c2:[1,1,3,3,1,3,1,3]→p1:[2,_,4,_,_,_,2,2,4,_,2,4,_,_,_,4]
c1:[3,1,1,3,3,3,1,1]→p2:[_,_,2,4,_,_,4,2,_,_,4,_,2,2,_,4]
得到的子代基因序列o1和o2:
子代1o1:[2,1,4,1,3,3,2,2,4,1,2,4,3,1,3,4]
子代2o2:[3,1,2,4,1,3,4,2,3,3,4,1,2,2,1,4]
(4.5.2)變異:父代o1,隨機(jī)選取兩個(gè)產(chǎn)品號(hào)2和4,交換2和4的位置得到中間子代基因序列o’1:
父代o1:[4,1,3,3,2,2,4,1,2,4,3,1,3,4,2,1]→o’1:[2,1,3,3,4,4,2,1,4,2,3,1,3,2,4,1]
然后隨機(jī)左移3個(gè)基因位置,得到最終子代基因序列:
子代o”1:[3,4,4,2,1,4,2,3,1,3,2,4,1,2,1,3]
每條子代基因序列都代表一種試驗(yàn)檢測(cè)排序。
本發(fā)明利用r語(yǔ)言強(qiáng)大的統(tǒng)計(jì)分析功能和豐富的算法包以及計(jì)算函數(shù),在r環(huán)境中建立算法優(yōu)化模型的同時(shí)在r中無(wú)縫地使用rdd和dataframeapi,借助spark內(nèi)存對(duì)大規(guī)模計(jì)算、統(tǒng)一軟件棧上支持多種計(jì)算模型的優(yōu)勢(shì),解決復(fù)雜產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃調(diào)度排序問(wèn)題,高效地進(jìn)行分布式數(shù)據(jù)計(jì)算和分析,解決大規(guī)模數(shù)據(jù)集帶來(lái)的挑戰(zhàn)。
下面結(jié)合附圖給出一個(gè)更加完整詳實(shí)的實(shí)例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
實(shí)施例8
基于sparkr的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間極小化方法同實(shí)施例1-7,下面以5×5的產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃問(wèn)題為例,產(chǎn)品在檢測(cè)室中的檢測(cè)信息與加工時(shí)間如表1所示,產(chǎn)品種類(lèi)為:p={1,2,3,4,5};檢測(cè)室種類(lèi)為:j={1,2,3,4,5};
表15×5檢測(cè)任務(wù)的檢測(cè)信息
參照?qǐng)D1,本發(fā)明所提供的是一種基于sparkr的產(chǎn)品檢測(cè)總完工時(shí)間極小化方法,具體步驟包括:
(1)導(dǎo)入原始試驗(yàn)數(shù)據(jù):在r中調(diào)用dataframe接口,首先創(chuàng)建sparkcontext,然后創(chuàng)建sqlcontext,用sqlcontext來(lái)創(chuàng)建dataframe,導(dǎo)入原始產(chǎn)品試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù),用dataframe對(duì)試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)進(jìn)行存儲(chǔ),方便后續(xù)調(diào)用和操作。
參照?qǐng)D2,本發(fā)明是一種基于sparkr的產(chǎn)品檢測(cè)計(jì)劃總完工時(shí)間極小化方法,其中sparkr主要由sparkr包和jvm后端兩部分組成。sparkr包是一個(gè)r擴(kuò)展包,為r的運(yùn)行環(huán)境提供了rdd和dataframeapi。sparkrapi運(yùn)行在r解釋器中,而sparkcore運(yùn)行在jvm中。rjvm后端是sparkcore中的一個(gè)組件,提供了r解釋器和jvm虛擬機(jī)之間的橋接功能,能夠讓r代碼創(chuàng)建java類(lèi)的實(shí)例、調(diào)用java對(duì)象的實(shí)例方法或者java類(lèi)的靜態(tài)方法。sparkrdataframeapi不需要傳入r語(yǔ)言的函數(shù)(udf()方法和rdd相關(guān)方法除外),dataframe中的數(shù)據(jù)全部是以jvm的數(shù)據(jù)類(lèi)型存儲(chǔ)的。r端的dataframe對(duì)象就是對(duì)應(yīng)的jvm端dataframe對(duì)象的wrapper,一個(gè)dataframe方法的實(shí)現(xiàn)就是簡(jiǎn)單地調(diào)用jvm端dataframe的相應(yīng)方法;dataframeapi還包含了一部分rddapi,先將dataframe轉(zhuǎn)換成rdd,然后調(diào)用rdd的數(shù)據(jù)分組、聚合和重分區(qū)操作,啟動(dòng)rworker進(jìn)程來(lái)進(jìn)行試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)的分布式計(jì)算和處理,通過(guò)socket連接將父rdd的分區(qū)數(shù)據(jù)、序列化后的r函數(shù)以及其它信息傳給rworker進(jìn)程,rworker進(jìn)程反序列化接收到的分區(qū)數(shù)據(jù)和r函數(shù),將r函數(shù)應(yīng)用到分區(qū)數(shù)據(jù)上,再把結(jié)果數(shù)據(jù)序列化成字節(jié)數(shù)組傳回jvm端。
(2)數(shù)據(jù)預(yù)處理:對(duì)產(chǎn)品試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù)對(duì)缺失值進(jìn)行查找、過(guò)濾和插補(bǔ),然后將dataframe數(shù)據(jù)類(lèi)型轉(zhuǎn)換為rdd類(lèi)型,調(diào)用rdd方法進(jìn)行數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)分組、聚合和重分區(qū)等操作。
(3)確定試驗(yàn)檢測(cè)任務(wù)目標(biāo)函數(shù)和約束條件的數(shù)學(xué)模型,具體步驟同上述實(shí)施例3。
(4)參照?qǐng)D3,建立的產(chǎn)品試驗(yàn)檢測(cè)任務(wù)總完工時(shí)間的遺傳算法優(yōu)化模型具體包括如下步驟:
(4.1)初始化遺傳算法參數(shù):針對(duì)本例5×5的試驗(yàn)檢測(cè)任務(wù),設(shè)定交叉算子為0.8,變異算子為0.1,迭代代數(shù)為20。
(4.2)個(gè)體編碼操作:針對(duì)本例5×5的試驗(yàn)檢測(cè)任務(wù),工序編碼系統(tǒng)隨機(jī)初始設(shè)定為{3,2,1,5,4,3,2,4,5,1,3,2,1,5,4,1,2,3,5,4,2,3,1,5,4}。
(4.3)生成遺傳算法優(yōu)化模型的初始種群:針對(duì)本例5×5的試驗(yàn)檢測(cè)任務(wù)數(shù)據(jù),設(shè)定初始種群數(shù)目為45。
(4.4)編寫(xiě)適應(yīng)度函數(shù):適應(yīng)度函數(shù)表示如下:
其中,cmin是目標(biāo)函數(shù)f(x)的最小估計(jì)值,取當(dāng)前種群中目標(biāo)函數(shù)的最小值。
(4.5)交叉與變異操作:
(4.5.1)交叉:在兩個(gè)父代基因序列p1和p2中隨機(jī)選擇試驗(yàn)產(chǎn)品2和4,將其抽出,產(chǎn)生新的基因串c1和c2:
父代1p1:{3,2,1,5,4,3,2,4,5,1,3,2,1,5,4,1,2,3,5,4,2,3,1,5,4}→c1:[2,4,2,4,2,4,2,4,2,4]
父代2p2:{1,4,3,2,5,4,3,5,5,3,1,1,5,3,4,2,3,1,2,2,4,4,1,2,5}→c2:[4,2,4,4,2,2,2,4,4,2]
將新的基因串c1和c2分別交叉插入p2和p1:
c2:[4,2,4,4,2,2,2,4,4,2]→p1:{3,_,1,5,_,3,_,_,5,1,3,_,1,5,_,1,_,3,5,_,_,3,1,5,_}
c1:[2,4,2,4,2,4,2,4,2,4]→p2:{1,_,3,_,5,_,3,5,5,3,1,1,5,3,_,_,3,1,_,_,_,_,1,_,5}
得到的子代基因序列o1和o2:
子代1o1:{3,4,1,5,2,3,4,4,5,1,3,2,1,5,2,1,2,3,5,4,4,3,1,5,2}
子代2o2:{1,2,3,4,5,2,3,5,5,3,1,1,5,3,4,2,3,1,4,2,4,2,1,4,5}
(4.5.2)變異:父代o1,隨機(jī)選取兩個(gè)產(chǎn)品號(hào)1和2,交換1和2的位置得到中間子代基因序列o’1:
父代o1:{3,4,1,5,2,3,4,4,5,1,3,2,1,5,2,1,2,3,5,4,4,3,1,5,2}
→o’1:{3,4,2,5,1,3,4,4,5,2,3,1,2,5,1,2,1,3,5,4,4,3,2,5,1}
然后隨機(jī)y移2個(gè)基因位置,得到最終子代基因序列:
子代o”1:{2,5,1,3,4,4,5,2,3,1,2,5,1,2,1,3,5,4,4,3,2,5,1,3,4}
每條子代基因序列都代表一種試驗(yàn)檢測(cè)排序。
(4.6)得到的子代基因序列o”1即為產(chǎn)品的試驗(yàn)檢測(cè)任務(wù)排序,根據(jù)個(gè)體適應(yīng)度對(duì)試驗(yàn)檢測(cè)任務(wù)的排序進(jìn)行選擇,計(jì)算每種排序的完工時(shí)間,如果目標(biāo)函數(shù)的解沒(méi)有收斂,則以得到的子代基因序列作為新父代繼續(xù)進(jìn)行交叉和變異迭代操作,直到目標(biāo)函數(shù)的解收斂,結(jié)束迭代,輸出最優(yōu)試驗(yàn)檢測(cè)排序和每個(gè)產(chǎn)品、每道工序的開(kāi)工和完工時(shí)間列表。
運(yùn)用圖2和圖3中的試驗(yàn)檢測(cè)計(jì)劃總完工時(shí)間極小化方法計(jì)算得到的各工序和各檢測(cè)室開(kāi)工和完工時(shí)間如表2所示:
表25×5產(chǎn)品檢測(cè)計(jì)劃開(kāi)工和完工時(shí)間
(5)輸出優(yōu)化產(chǎn)品檢測(cè)排序{1,2,3,4,5,1,2,5,4,3,1,2,3,4,5,3,2,1,4,5,2,1,3,4,5}。
(6)根據(jù)試驗(yàn)檢測(cè)計(jì)劃中每道工序、每個(gè)檢測(cè)室開(kāi)工完工時(shí)間,輸出總完工時(shí)間為30小時(shí)。
(7)試驗(yàn)檢測(cè)計(jì)劃的可視化展示:
將每個(gè)產(chǎn)品、每道工序的開(kāi)工完工時(shí)間作為輸入,調(diào)用r中的可視化包plotrix對(duì)排序結(jié)果進(jìn)行甘特圖展示。
如圖4所示,為整個(gè)產(chǎn)品檢測(cè)計(jì)劃目標(biāo)函數(shù)最優(yōu)解的變化,橫坐標(biāo)表示遺傳代數(shù),縱坐標(biāo)表示個(gè)體數(shù)目,虛線(xiàn)表示種群中完工時(shí)間均值的變化,實(shí)線(xiàn)表示目標(biāo)函數(shù)最優(yōu)解的變化,可以看出,5×5的試驗(yàn)檢測(cè)任務(wù)最優(yōu)檢測(cè)計(jì)劃排序最小完工時(shí)間收斂于30小時(shí)。
如圖5所示,為整個(gè)產(chǎn)品檢測(cè)計(jì)劃優(yōu)化排序的甘特圖顯示,橫坐標(biāo)表示完工時(shí)間,縱坐標(biāo)表示檢測(cè)室名稱(chēng),編號(hào)p1,p2,p3,p4,p5表示5個(gè)產(chǎn)品,例如檢測(cè)室m4中的檢測(cè)順序?yàn)楫a(chǎn)品1,產(chǎn)品2,產(chǎn)品5,產(chǎn)品3,產(chǎn)品4。可以看出,在保證所有約束條件和檢測(cè)任務(wù)順序的情況下,產(chǎn)品試驗(yàn)檢測(cè)計(jì)劃排序較優(yōu),各個(gè)產(chǎn)品的每道工序互不沖突,檢測(cè)室得到了充分利用。
本發(fā)明通過(guò)采用遺傳算法優(yōu)化模型對(duì)多產(chǎn)品、多工序試驗(yàn)項(xiàng)目進(jìn)行試驗(yàn)檢測(cè)計(jì)劃的排序優(yōu)化。調(diào)用sparkr在spark的分布式計(jì)算平臺(tái)上結(jié)合r本身的數(shù)據(jù)處理功能和可視化能力,對(duì)大規(guī)模數(shù)據(jù)集進(jìn)行分析處理,得到試驗(yàn)檢測(cè)計(jì)劃的最小完工時(shí)間。
以上描述僅是本發(fā)明的一些具體實(shí)例,對(duì)于本領(lǐng)域的專(zhuān)業(yè)人員來(lái)說(shuō),在了解了本發(fā)明的流程和原理后,都可在不背離本發(fā)明的原理的情況下,進(jìn)行形式和細(xì)節(jié)上的各種修改和變形,倘若這些修改和變形在本發(fā)明權(quán)利要求極其等同技術(shù)的范圍內(nèi),則這些修改變形也在本發(fā)明的保護(hù)范圍之內(nèi)。說(shuō)明書(shū)中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員的現(xiàn)有技術(shù)。
本發(fā)明提出的一種基于sparkr的檢測(cè)計(jì)劃總完工時(shí)間極小化方法,用于解決制造企業(yè)存在的試驗(yàn)檢測(cè)計(jì)劃任務(wù)復(fù)雜和檢測(cè)室資源分配不合理的問(wèn)題,其實(shí)現(xiàn)步驟為:(1)創(chuàng)建dataframe,導(dǎo)入原始試驗(yàn)計(jì)劃任務(wù)數(shù)據(jù);(2)調(diào)用dataframe操作對(duì)數(shù)據(jù)進(jìn)行預(yù)處理;(3)設(shè)定目標(biāo)函數(shù)和約束條件;(4)建立遺傳算法模型優(yōu)化試驗(yàn)檢測(cè)計(jì)劃排序;(5)輸出最優(yōu)試驗(yàn)檢測(cè)計(jì)劃排序,輸出每個(gè)產(chǎn)品、每道工序的開(kāi)工和完工時(shí)間;(6)輸出整個(gè)檢測(cè)計(jì)劃最小完工時(shí)間;(7)調(diào)用可視化包對(duì)試驗(yàn)檢測(cè)計(jì)劃排序展示。本發(fā)明結(jié)合r本身的數(shù)據(jù)處理功能和可視化能力,借助spark內(nèi)存計(jì)算和支持多種計(jì)算模型的優(yōu)勢(shì),高效地對(duì)大規(guī)模數(shù)據(jù)集進(jìn)行分析處理,得到試驗(yàn)檢測(cè)計(jì)劃的最小完工時(shí)間。