• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于JBoss Drools的車間調(diào)度*

      2014-07-18 11:56:29姚錫凡
      關(guān)鍵詞:隊列車間機床

      朱 呂,姚錫凡,徐 川

      (華南理工大學 機械與汽車工程學院,廣州 510640)

      基于JBoss Drools的車間調(diào)度*

      朱 呂,姚錫凡,徐 川

      (華南理工大學 機械與汽車工程學院,廣州 510640)

      JBoss Drools是開源業(yè)務(wù)規(guī)則引擎,它能夠?qū)⒊绦蛑袕碗s的條件語句以規(guī)則的形式展示出來,從而便于管理程序。車間作業(yè)調(diào)度是復雜的條件調(diào)度,利用JBoss Drools可以實現(xiàn)車間調(diào)度的優(yōu)化問題。文章利用云制造的思想,將制造資源虛擬化為服務(wù),然后將服務(wù)綁定為一個流程來定義業(yè)務(wù)流程并結(jié)合業(yè)務(wù)規(guī)則引擎來實現(xiàn)產(chǎn)品流程加工,最后通過選擇FT46柔性作業(yè)問題實例來驗證制造資源調(diào)度的有效性。

      JBoss Drools;車間調(diào)度;業(yè)務(wù)流程;云制造

      0 引言

      云計算(Cloud Computing)是近年來提出的一種基于互聯(lián)網(wǎng)的計算新模式,其特點是將互聯(lián)網(wǎng)上計算資源(如存儲、運算器等)虛擬化為一個大的資源池,用來提供統(tǒng)一的服務(wù)。其服務(wù)模式主要有:基礎(chǔ)架構(gòu)即服務(wù)(Infrastructure as a Service,IaaS)、軟件即服務(wù)(Software as a Service,SaaS)和平臺即服務(wù)(Platform as a Service,PaaS),資源包括硬件、平臺和軟件等。云制造(Cloud Manufacturing)正是基于云計算的思想,將各種制造資源(如計算資源、設(shè)計資源、加工資源、設(shè)備資源、物流資源、人力資源等)和制造能力(制造過程中有關(guān)的論證、設(shè)計、生產(chǎn)、仿真、實驗、管理、集成等)虛擬化、服務(wù)化。云制造在服務(wù)方式上,它除了云服務(wù)(Iaas、PaaS和SaaS)外,還具有設(shè)計即服務(wù)(Design as a Service,DaaS)、生產(chǎn)加工即服務(wù)(Fabrication as a Service,F(xiàn)aaS)等服務(wù)模式[1-4]。

      Drools是Java編寫的、開放源代碼的業(yè)務(wù)邏輯集成平臺[5]。Drools是Eclipse的一個插件,利于編寫和調(diào)試規(guī)則和流程。Drools提供了自動檢查語法錯誤的功能,而且還要有許多其他有用的功能。

      Drools有很多優(yōu)點:①易于理解:比Java或其他命令式的編程語言的代碼更簡單。②提高了系統(tǒng)的維護性能:因為規(guī)則簡單易懂,就可以省出更多時間來發(fā)現(xiàn)和解決問題。③能夠處理不斷變化的復雜問題:相比修改程序,更容易添加新的規(guī)則、修改或刪除現(xiàn)有規(guī)則。④靈活性:它能夠更好地適應(yīng)需求或?qū)?shù)據(jù)模型的變化。更改或重寫應(yīng)用程序不會是一個簡單的任務(wù),但是Drools形式化的規(guī)則使得更改或重寫應(yīng)用程序是一件輕松的事情。⑤合理性能: Rete算法的應(yīng)用使得系統(tǒng)的性能理論上并不取決于規(guī)則的數(shù)量。由于規(guī)則引擎本質(zhì)上是“if-then”的繼承,因此可以獨立應(yīng)用許多優(yōu)化規(guī)則[6-7]。

      1 F46車間調(diào)度

      目前,車間生產(chǎn)調(diào)度主要是實現(xiàn)生產(chǎn)資源的優(yōu)化配置,尤其是對于柔性制造,同一零件可以在不同機床上加工,同一機床又可以加工不同的零件。優(yōu)化配置的目標就是使得同一時間段里加工的零件最多,也就是生產(chǎn)效率要達到最高。對于一個加工系統(tǒng),首先要確定收集系統(tǒng)的輸出性能指標(單位時間加工過程中的總產(chǎn)量、接受服務(wù)的零件的平均排隊等待時間、最大排對等待時間、最大排隊等待零件數(shù)、機床利用率等),然后可以利用規(guī)則引擎建立性能指標直接的相互關(guān)系,從能得到優(yōu)化配置后的加工方式[8]。

      車間作業(yè)調(diào)度問題(Job shop scheduling,JSP)是機械加工調(diào)度中最重要的研究問題之一,也是制造業(yè)提高機床利用率和減少產(chǎn)品循環(huán)時間的重要作業(yè)。JSP具體描述如下:工件集合{Ji}1≤i≤n,包含n個工件;機床集合{Mi}1≤i≤m,包含m臺機床。每個工件由特定加工順序的mi個工序Oi1,Oi2,,Oimi組成。其中Oij是工件i的第j個工序,工序在機床Mk上的加工時間為tik。每個工序Oij的加工機床Mk和機床對應(yīng)的加工時間tik是預(yù)先設(shè)定的。在同一時間內(nèi),每臺機床只能加工一個工件且每個工件只能在一臺機床上加工[9-11]。所有工件的所有工序加工完成時間為最長加工時間。車間作業(yè)調(diào)度決定所有工件的所有工序在機床上的加工順序,而車間調(diào)度優(yōu)化的目的就是尋找最優(yōu)化的加工順序,即使得最長加工時間最短。

      以4個零件,6臺機床同時并行加工的FT46柔性作業(yè)問題為例,如表1所示。

      表1 FT46問題的時間表

      如表1所示為常見的車間作業(yè)調(diào)度(Job-shop scheduling,JSP)模型,每個工件的每道工序可以選擇不同的機床進行加工,但是工序在不同機床上的加工時間不一樣,就會使得完成這些工件的加工有多種加工路徑可供選擇。為了實現(xiàn)車間資源的合理利用,就要通過一些解決JSP的智能的優(yōu)化方法來尋找出一條基于給定條件而言是最優(yōu)的加工路徑。本文利用Drools的形式化規(guī)則,基于“先來先服務(wù)”規(guī)則來求解作業(yè)車間調(diào)度問題。

      2 車間調(diào)度分析設(shè)計

      本優(yōu)化規(guī)則是按“先來先服務(wù)”進行優(yōu)化設(shè)計。圖1所示為基于JBoss Drools的車間調(diào)度優(yōu)化設(shè)計流程圖。具體的設(shè)計步驟如下:

      (1)設(shè)置完成工序總數(shù)為0,工序總數(shù)為12。創(chuàng)建一個空隊列,給每個工序創(chuàng)建二維下標,第一道工序按著下標順序依次進入隊列。

      (2)獲取隊列首元素的加工時間,對加工時間進行排序以求出最短加工時間,同時獲取對應(yīng)加工時間的機床狀態(tài)。

      (3)判斷最短加工時間的機床狀態(tài)是否是空閑狀態(tài),如果是最短加工時間對應(yīng)的機床是空閑狀態(tài),則該機床進行加工此工序,同時將該機床加工狀態(tài)設(shè)置為運行狀態(tài);如果最短加工時間對應(yīng)的機床是運行狀態(tài),則繼續(xù)判斷加工時間序列表第二短加工時間對應(yīng)的機床是否為空閑狀態(tài),以此類推,直到工序以找到空閑機床以最短加工時間進行加工。

      (4)機床加工完工序后將加工狀態(tài)設(shè)置為空閑狀態(tài),同時將此工序的下標增加一個單位后重新進入隊列,然后將完成工序總數(shù)增加一個單位。

      (5)判斷完成工序總數(shù)與總工序數(shù)是否相等,若相等,則表示所有工件的工序都已完成加工,這時設(shè)置所有機床狀態(tài)為關(guān)閉狀態(tài),系統(tǒng)結(jié)束加工。若不相等,則表示還有工件的工序沒有加工,這時返回到(1)處,重復(1)至(5)步驟。

      圖1 車間調(diào)度流程圖

      3 車間調(diào)度代碼設(shè)計

      (1)以面向?qū)ο蠓椒▉碓O(shè)計

      1) MachineState類:設(shè)置和返回機床加工狀態(tài);

      2) WorkpieceIndex類:設(shè)置和返回工件工 序的下標值;

      3) WorkpieceNumber類:設(shè)置和返回已完成加工的工序數(shù);

      4) Queue類:先進先出隊列表,負責工序進出隊列;

      5) ProcessTime類:獲取機床對工件工序的加工時間,并按時間最短到最長排序;

      (2) 類圖如圖2所示。

      圖2 Drools程序類圖

      MachineStation類的方法:getMachineStation()當工件進入隊列首時獲取機床的加工狀態(tài)(Busy或Free),以判斷機床是否可以加工該工件;setMachineStation()當機床開始加工工件或機床加工完成工件時設(shè)置機床的狀態(tài)(Busy或Free);Start()啟動機床開始加工工序。

      WorkpieceIndex類的方法:getWorkpieceIndex()當工件加入隊列隊首時獲取工件工序的下標,以判斷目前加工的工序;setWorkpieceIndex()當工件工序加工完成后設(shè)置工序下標以加工下一個工序。

      Queue類的方法:put()將工件的工序插入到隊列中等待加工;get()將隊列隊首的工序取出加工。

      ProcessTime類的方法:getProcessTime()獲取隊列隊首的工序的加工時間;rankProcessTime()將獲取的工序的不同的加工時間進行排序,以便獲得最短加工時間。

      WorkFinishedNumber類的方法:getWorkfinishedNumber()獲取已完成工序的總數(shù)量,以判斷加工是否完成;setWorkFinishedNumber()當完成一個工序加工時將工序完成總數(shù)量增加。

      (3)類的方法編碼實現(xiàn)

      1)MachineStation類的方法

      public String getMachinStation(){

      return MachineStation;}

      public void setMachineStation(String MachineStation){

      this.MachineStation=MachineStation}

      2)WorkpieceIndex類的方法

      public int WorkpieceIndex;

      public int getWorkpieceIndex(){

      return WorkpieceIndex;}

      public void setWorkpieceIndex(int WorkpieceIndex){

      this.WorkpieceIndex=WorkpieceIndex;}

      3)Queue類的方法

      public Object get(){

      if(!linkedList.isEmpty())

      returnlinkedList.removeFirst();

      else

      return "";}

      public boolean isEmpty(){

      returnlinkedList.isEmpty();}

      4)ProcessTime類的方法

      public class ProcessTime {

      public int getProcessTime(){

      returnrankProcessTime();}

      public static void rankProcessTime()

      {………………………………………………………………}

      5)WorkFinishedNumber類的方法

      public int getWorkFinishedNumber(){

      return WorkFinishedNumber;}

      public void setWorkFinishedNumber(int WorkFinishedNumber){

      this.WorkFinishedNumber=WorkFinishedNumber;

      …………………………………………………………}

      (4)規(guī)則文件

      rule "Put WorkPiece into Queue"

      when

      WorkpieceIndex(WorkpieceIndex Incease)

      then

      Queue(Queue.put(WorkpieceIndex)

      rule "WorkPiece selcet Machine"

      when

      MachineStation(MachineStation==Free)

      ProcessTime(ProcessTime==minProcessTime)

      then

      System.out.println(MYMWorkpieceIndex.getWorkpieceIndex)

      MachineStation(MachineStation==Busy)

      end

      rule "WorkPiece ReSelect Machine"

      when

      MachineStation(MachineStation==Busy) then

      ProcessTime.getOtherPorcessTime

      System.out.println(MYMWorkpieceIndex.getWorkpieceIndex)

      end

      rule "Workpiece continue machining"

      when

      WorkpieceStation(WorkpieceStation==Finishe)

      then

      WorkpieceIndex.setWorkpieceIndex()

      WorkFinishedNumber.setWorkFinishedNumber()

      …………………………………………………………

      (5)測試代碼

      public static void main(String[] args) {

      ProcessTime.minProcessTime();

      int a[][]= new int[12][6];

      WorkFinishedNumber.setWorkFinishedNumber(0);

      MachineStation.setMachineStation("Free");

      WorkpieceIndex.getWorkpieceIndex();

      Queue.put(WorkpieceIndex.getWorkpieceIndex());

      …………………………………………………………}

      (6)測試結(jié)果

      所得結(jié)果轉(zhuǎn)換為甘特圖如圖3所示。

      圖3 基于Drools車間調(diào)度的甘特圖

      由此可見,Drools規(guī)則可以簡化條件循環(huán)模塊,當某一機床發(fā)生故障時,只需將該機床與對應(yīng)工序的關(guān)聯(lián)設(shè)置為0即可,不用改動程序就能實現(xiàn)動態(tài)調(diào)動。

      4 結(jié)論與展望

      本文基于云制造的思想,將工件、工序和機床虛擬化為服務(wù),并利用Drools實現(xiàn)車間調(diào)度問題,相比于其他車間調(diào)度方法,具有程序簡潔、流程清晰、修改方便、能夠?qū)崿F(xiàn)動態(tài)調(diào)度等優(yōu)點。但是隨著工件、工序和機

      床的增多,基于Drools的規(guī)則定義文件的復雜度也會大大提高。這一問題可以利用Hadoop MapReduce方法來解決。MapReduce是一種處理和生成超大數(shù)據(jù)集的算法模型,能夠利用低廉的計算資源實現(xiàn)大量的并行運算,對于解決大規(guī)模作業(yè)調(diào)試問題具有潛力。

      [1] 姚錫凡, 練肇通, 李永湘,等. 面向云制造服務(wù)架構(gòu)及集成開發(fā)環(huán)境 [J]. 計算機集成制造系統(tǒng), 2012, 18(10): 2312-2322.

      [2] 李伯虎, 張霖, 柴旭東. 云制造概論 [J]. 中興通訊技術(shù), 2010(4): 5-8.

      [3] Xu Xun. From cloud computing to cloud manufacturing[J]. Robotics and Computer-Integrated Manufacturing, 2012, 28(1): 75-86.

      [4] 李伯虎, 張霖, 任磊,等. 再論云制造 [J]. 計算機集成制造系統(tǒng), 2011, 17(3): 449-457.

      [5] JBoss. Drools[EB/OL].http://www.jboss.org/drools/.2013-08-20

      [6] Browne Paul. JBoss Drools Business Rules [M]. UK: Packt Publishing Ltd., 2009.

      [7] 楊一鳴. 基于規(guī)則引擎的CRM系統(tǒng)的設(shè)計與實現(xiàn) [D].上海:復旦大學, 2011.

      [8] 顏亮. 遺傳算法在車間作業(yè)調(diào)度上的應(yīng)用 [J]. 組合機床與自動化加工技術(shù), 2008(11): 99-102.

      [9] 顏亮, 姚錫凡. 一種改進的遺傳算法在車間作業(yè)調(diào)度上的應(yīng)用 [J]. 機床與液壓, 2008, 36(11): 11-14.

      [10] 黃英杰. 基于目標級聯(lián)法和智能優(yōu)化算法的車間調(diào)度問題研究 [D]. 廣州:華南理工大學, 2012.

      [11] 黃英杰, 姚錫凡, 顏亮,等. 基于目標級聯(lián)法的作業(yè)車間調(diào)度 [J]. 華南理工大學學報(自然科學版), 2010, 38(6): 128-133.

      (編輯 趙蓉)

      Job-shop Scheduling Based on Jboss Drools

      ZHU Lv, YAO Xi-fan, XU Chuan

      (School of Mechanical and Automobile Engineering,South China University of Technology, Guangzhou 510640,China)

      JBoss Drools is an open source business rule engine, which can facilitate management program by programming complex conditional statements in the form of rules. Job-shop scheduling is a complex condition problem,and such problems can be solved by using JBoss Drools. This study uses the thought of cloud manufacturing to virtualize manufacturing resources as services, and binds such services for business processes with the business rule engine to implement. Finally, the flexible job-shop problem, FT46, is chosen to verify the effectiveness of manufacturing resource scheduling.

      JBoss Drools; Job-Shop; business processes

      1001-2265(2014)06-0131-04

      10.13462/j.cnki.mmtamt.2014.06.036

      2013-10-21

      國家自然科學基金項目(51175187);國家863計劃資助項目(2007AA04Z111);東莞市科技計劃項目(2012108102010)

      朱呂(1984—),男,彝族,云南楚雄人,華南理工大學碩士研究生,研究方向為數(shù)字化制造及其計算機控制,(E-mail)ggyy7763@sina.com。

      TH181;TG65

      A

      猜你喜歡
      隊列車間機床
      機床展會
      機床展會
      100MW光伏車間自動化改造方案設(shè)計
      智能制造(2021年4期)2021-11-04 08:54:28
      隊列里的小秘密
      基于多隊列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      2019,中國機床變中求進
      在隊列里
      招工啦
      “扶貧車間”拔窮根
      基于通用機床的100%低地板有軌電車輪對旋修
      新安县| 焉耆| 石河子市| 新龙县| 呼玛县| 丰城市| 华亭县| 柳州市| 达日县| 尤溪县| 竹山县| 公主岭市| 来凤县| 兴业县| 宣武区| 怀宁县| 开鲁县| 聂荣县| 红桥区| 德阳市| 曲水县| 饶平县| 盐边县| 澳门| 山丹县| 金川县| 同德县| 定兴县| 义马市| 安岳县| 和静县| 宜昌市| 淮南市| 交口县| 融水| 且末县| 舞阳县| 三原县| 望江县| 湛江市| 凤庆县|