天天看點

aps - (Advanced Planning And Scheduling) 進階生産計劃排程軟體的架構和設計

aps - (Advanced Planning And Scheduling) 進階生産計劃排程軟體的架構和設計 

3 主資源和副資源

  主資源簡單的說就是某道工序在什麼機器或生産線上生産,一般來說,一台機器可以用于生産多個産品,但一個産品也可以在多個機器上生産,比如工廠中的房間有自動化生産線,半自動化生産線,都可以用來生産某個産品

  如果好幾類機器都可以加工某道工序,這就涉及到多主資源的選擇,一般的企業對多主資源的選擇有自己的要求,比如盡量使用半自動機器,安排不下再使用自動機器或相反,或者不管安排到那類機器,隻要完成時間最短,或者本着成本最低的原則安排機器,這就叫做主資源選擇政策,aps在排程時選擇主資源時,就要按照選擇政策來

  把工序任務在主資源的可用時間段上排下去,并且不能違反前後工序之間的連接配接關系,是aps軟體的基本功能,但即使是這個基本功能,也涉及到工序任務是否可以中斷的問題,比如一個工序任務需要2小時,工廠中的房間12點休息,下午1點再開工,如果該工序任務11點安排下去,必然會在執行到12點時中斷,到下午1點再繼續生産,大多數生産類型都可以允許這種中斷,但也有某些産品的加工不允許中斷,是以,要實作這個最基本的功能也會使算法變的複雜

  很多産品的生産不但需要主資源,同時也需要配套的模具和工具,這就是副資源的概念,一個企業,模具和工具的數量是有限,一但某個時間段已經模具和工具都已經被使用,其他需要該模具和工具的工序就不能安排在該時間段,即使在主資源上該時間段是空閑的

  副資源還帶來了一個切換時間的問題,如果一台機器上的前道工序使用了模具1,後道工序需要使用模具2,那麼就要把模具1卸下,換上模具2,這就會産生切換時間

4 工序之間的關系

  工序,最常見的前工序做完安排後工序,這叫做es

  es 10分鐘,就是前工序結束10分鐘後才能開始後一道工序

  同理,ss 10分鐘,是前工序開始10分鐘後才能開始後一道工序

  還有比較複雜的一些連接配接關系,比如ssee

  這些時間都是指多少時間之後,叫最小時間間隔,還有一種關系,是多少時間之内,叫最大時間間隔, 最大時間間隔是工序中最複雜的一種連接配接關系,它的意思是,前工序做完10分鐘内一定要開始後工序,如果現在在可以加工下道工序的主資源上找不到10分鐘内可用的空閑時間段,那怎麼辦,是以實作最大時間間隔需要極度複雜的算法

  如果工序之間的關系是并行工序,如果客戶要求工序必要時要分割,前一道工序分割成3道工序了,那麼後工序該怎麼安排,分割還是不分割,這前後的關系,并行的關系,如果工序還要考慮到加工零件的特殊規格問題,這就形成及其複雜的工序連接配接關系,這種及其複雜的工序連接配接關系是無法用數學公式來表達的,是以,運籌學方法對于生産排程問題是不适用的

  現在的運籌學方法,對于最簡單的連接配接關系,10工序10訂單的生産環境,就已經無法在有限的時間内得出比較好的結果,而實際生産環境中,100工序1000訂單也是很常見的

5 主資源的工作月曆

  aps中的工作月曆是比較複雜的

  1 每個主資源都要配置設定一個工作月曆,月曆裡有班别,數量,節假日休息,可用時間段等設定

  2 工作月曆裡,每天都有班别,而且要考慮到每天的班别有可能是不同的

  比如 周一 上午 8.00-12。00 下午 1.00-5.00 晚上 6.00-10.00

         周二 上午 8.00-12.00  下午 1.00-5.00 晚上 6.00-8.00

         .. 周五 上午 8.00-12.00  下午 1.00-5.00  晚上無

  3 是把相同能力的主資源作為一個整體考慮還是按單台分别考慮

   如按整體看,該主資源每個班别可用的數量可能不同,比如上午 下午都是6台可用,晚上隻有3台可用

  4 休息日 節假日放假和加班的處理 

  5 副資源要不要考慮工作月曆,有些副資源是不用考慮工作月曆的,但有些就要考慮工作月曆

  6 副資源和主資源的搭配問題,這種搭配是由生産的零件決定的,在複雜的情況下,一萬個零件就有一萬個搭配,而每種搭配至少涉及一個主資源和若幹個種類和數量的副資源

  靈活的使用工作月曆,可以解決許多生産中的問題,比如某機器要檢修,就将該機器的未來檢修時間段設為休息,這樣,該機器檢修時間段就不會安排生産計劃

6 重排的實作難點

  提供緊急插單 和 生産變動 帶來的生産排産計劃的快速調整的能力,是 aps軟體的基本功能,排産軟體解決的是動态的問題,隻能提供靜态生産計劃的軟體是沒有任何價值

  解決緊急插單和生産調整的方法,簡單的說,就是重排(Rescheduling)

  常說的重排也叫做動态排程,計劃在執行的過程中會出現執行和計劃不一緻,就要重排,把排下去的生産計劃中的還沒有執行的部分重排,以适應各種情況,比如來了緊急的要先完成的新訂單,或機器出了故障,該機器安排的計劃要放到其他機器去完成

  重排的關鍵是要排出一個可執行的計劃,但對于什麼是可執行的計劃,每個企業的要求是不一樣的,有的企業要求同一類産品排在一起,不能一下生産a,  然後調整生産b,  然後又生産a,而是先把a都生産了,再生産b,有的企業要求一天的生産都放在一個連續的時間段,不能中斷,因為它的機器一開就不能停

  是以從這個意義上說,任何aps軟體都是示範版,要在企業用起來必須針對企業的生産實際做算法定制,除非是很小的企業可以直接用

  重排的難點在于,它并不簡單的等同于插單,這是因為

  1 因為未來已安排計劃裡的空閑時間段有可能都很瑣碎,你根本插不進去,最後插單其實就是排在了最後

  2 另一種可能呢,你把單插進未來已安排計劃的空閑時間段裡,結果插進去後,導緻機器要頻繁調整來生産不同的零件,使得原本未來已安排的可執行的計劃變的不可執行

  3 真正的計劃調整,就是要把未來的計劃和新接的訂單全部放在一起考慮重新安排一個優化的可用計劃,而不是在未來已安排計劃裡找空閑時間段插來插去的

  但未來已安排的計劃涉及的訂單已經執行了一部分,隻有未執行的部分要重新安排,這比安排一個新訂單要複雜多了

7 重疊工序生産為什麼不需要

  在傳統的生産管理模式中,重疊工序經常被提及,比如對于工序a-工序b的生産模式,工序a 在機器1生産,工序b 在機器2生産,工序a的批量是100件,現在生産工序a1000件,那麼重疊生産并不是工序a生産完1000件後再安排工序b的生産,而是工序a生産了100件後,就安排工序b的生産,這樣能夠節約生産時間

  重疊工序的生産安排要想達到預期的效果,對生産環境有嚴格的要求,比如工序b的批量必須也是100,工序b 的生産速度必須和工序a一緻,不然工序b還在生産,工序a的第二個100件就到了,生産就持續不下去

  現在的問題是,即使滿足了這些嚴格的條件,采取重疊工序的生産模式是不是就節約生産時間呢

  答案是否定的,對于隻有一個訂單的生産,是可以節約生産時間,但是如果現在有上百個訂單在安排生産,工序a生産完100件後,在工序b 的機器上找不到可以立即安排生産的時間段,于是工序b 的生産要延遲到以後,這樣,重疊工序生産的時間節約就無從談起

  如果工序a生産了100件,到了休息時間,工序b必然不能接着生産,整個生産過程就打亂了

  從實際生産人員的角度來看,他們希望的是一天中一種産品都安排在一起生産,而不是100個,100個的來安排

  重疊工序的生産安排會導緻生産計劃碎片化和複雜化,而在實際生産環境下,對于生産時間的節約是很難達到預期的要求的,是以,對于有優化功能的aps軟體來說,沒有必要采取重疊工序的生産安排

 8 特殊規格的處理

  特殊規格也叫特性 特征或屬性,常見的有顔色 大小 款式 規格等,産品的特殊規格帶了了生産的複雜性,比如一個産品1有紅 藍兩種顔色,都可以在機器1上生産,但生産了紅色再生産藍色就需要更換工具和配料,這就産生了切換時間,是以,對工廠中的房間生産來說,希望這種切換越少越好

  減少由于特殊規格不同帶來的生産切換,需要的是一種全局的優化,也就是說,在一台機器或一個時間段上的做到了最小切換時間,可能會帶來其他機器或以後時間段更多的切換

  另外,插單也會導緻切換的産生,如果在兩個都是生産紅色産品1的時間段之間有一個空閑的時間段,我們在這個時間段中插入一個生産藍色的生産安排,表面看起來生産安排的很滿,但實際這樣插單就會産生兩次切換,這樣的生産安排是無法進行的,也就是說,出于實際生産可行性的考慮,這個空閑時間段不能用于插入生産藍色産品1的生産安排

  最小化切換時間是aps軟體中一個非常重要的優化目标(其他的有最小完工時間,最小逾期訂單數等),這需要一種全局優化算法才能有效的實作,而遺傳算法是最好的全局優化算法,這也是為什麼遺傳算法是公認的生産排程最好算法的原因

9 工藝路線 ppm 和 可替換工藝子路線

  工藝路線表明了産品是如何生産的,bom表明了産品的物料組成,這兩種資料對于aps的生産排程都是需要的,aps 通過ppm(産品生産模型)把工藝路線和bom合二為一,在定義了每道工序的同時,也定義了該工序需要的投入物料和産出物料,以及比例,同時也可以定義工序之間的邏輯關系es ss 等

  ppm模型同時也産生了工序之間的一種潛在的并行關系,也就是說,對于處于同一層次的工序,隻要沒有邏輯關系的定義,本質上它們之間的關系就是并行的,排程中考慮工序之間的并行關系是複雜的,但可以極大的縮短完工時間

  ppm 同時也定義了每道工序的所有可用生産主資源和在該生産主資源上的生産時間,比如工序1可以在機器1,機器b,機器c上安排生産,那就需要分别定義工序1在機器a,機器b和機器c上的生産時間和參數,這樣在實際排程中,aps軟體可以根據主資源選擇政策和可用時間段決定究竟把工序1安排在那台機器上生産

  ppm在定義了每道工序的所有可用生産主資源的同時,還同時定義了該主資源的限制後資源,也就是說,如果定義了機器a的限制後資源是機器1,機器2,機器b的限制後資源是機器2,機器3,那麼如果該工序安排在機器a生産了,下道工序就必須安排在機器1或機器2上,如果安排在機器b生産了,下道工序就必須安排在機器2或機器3上

  ppm同時還可以定義替換工藝子路線,也就是該産品 半産品的某個生産步驟可以使用主工藝子路線1,也可以使用替換工藝子路線2

  隻有滿足一定的條件才會使用替換工藝子路線安排生産,最常見的是數量條件,比如産品加工數量100件以下使用工藝子路線1,加工數量100件以上時使用工藝子路線2,第二個常見條件是規格,比如産品1大時使用工藝子路線1,小号時使用工藝子路線2,第三個是工單性質,正常生産使用工藝子路線1,返工使用工藝子路線2

10 生産時間和生産數量的計算

   工序的生産時間的計算公式為

   生産時間=移動時間+設定時間+生産時間+清理時間

   其中移動時間是指從上道工藝的機器轉移到生産下道工藝的機器需要的時間,如果上道工序和下道工序生産在不同的工廠中的房間 ,轉移時間是必須考慮的,設定時間是指生産本道工序需要安裝的模具,工具,改變機器配置需要的時間,如果機器的前道工序和後道工序的生産涉及到産品的改變,産品特性的改變,就需要比較長的設定時間

   設定時間=産品改變的切換時間+産品特性改變的切換時間+副資源改變的切換時間,盡可能的減少排程中的切換時間是aps的一個重要的優化目标,要減少切換時間,就要盡可能把相同産品的生産工序安排在一起,相同産品特性的生産工序安排在一起,使用相同副資源的生産工序安排在一起,但隻考慮局部的優化卻往往帶來整體的最不優化,需要的是全局優化算法

   移動時間和移動距離的長短有關,設定時間和清理時間一般是固定值,生産時間和生産的數量相關,當然了,也可以提供參數,來選擇是否是固定值還是和生産數量有關

   生産數量的産生要考慮到機器的生産批量,如果該工序按bom分解要生産180件,而該機器的生産批量是100件,那麼實際生産數量就必須是機器生産批量的倍數,200件

   如果某道工序的生産使用了爐資源,爐資源有個容量的定義,比如一個爐資源可以容納200個零件,某個工序需要生産120個,那麼生産數量就是120個,同時注意,該爐資源同時還有80個的容量餘額可以安排,是以。爐資源排程時要同時考慮可用時間段和可用容量餘額

11 銷售訂單 生産工單 原料需求 和 pegging

  對于面向訂單的企業來說,aps提供了從銷售訂單到生産工單到原料采購單的一一對應跟蹤,但有些企業采取的是面向庫存 組裝裝配等生産模式,往往先産生一個半成品大量生産的工單,再根據需要進行産成品的生産,就不能在一開始進行一一跟蹤,而要采取 動态pegging的設計

  在産生生産工單的時候,首先要計算原料需求,以保證工單開工時,必須的原料已經滿足,假設現在生産需要原料1,原料1從供應商1 處采購 ,批量為500個

  原料需求的計算有兩種方法,一種是彙總計算和集中采購,也就是把未來一個時期生産所需的原料短缺彙總,然後在現在集中采購,比如計算得出原料1工短缺 6000個,那麼現在就向供應商1 發出一個6000個機關的原料1 采購訂單

  另一種方法是高度複雜的,是在生産計劃産生的過程中動态的計算原料短缺,比如經過計算第3天缺原料1 1000件,第6天缺原料1 2000件,第10天缺原料1 2500件 ,第16天缺原料 500個,那麼就産生4個采購訂單,分别在第1天發出1000 件的原料1采購訂單,第4天發出2000 件的原料1采購訂單,第8天發出2500件的原料1采購訂單,第14天發出500件的原料1采購訂單

  第一種算法是很實用,但第二種複雜的算法對某些類型的企業也是需要的

12 分布式計算架構的設計

   衆所周知,遺傳算法具有天然并行性,但為了充分利用遺傳算法的這個特點,也需要精心的設計

   計算機的并行計算能力來自兩個方面,由多cpu核提供的多核并行計算能力,大型和超級計算機就是這樣,另一種是由多計算機提供的多機并行計算能力,aps的遺傳算法一般不在大型和超級計算機上運作(當然,如果需要,這是完全可以的),而是在pc伺服器上運作,多台pc伺服器可以構成一個計算叢集,同時,每台伺服器一般也有多個cpu

   aps的分布式計算架構一般由一個agent和多個server端組成

   agent在一台主伺服器上啟動,其它伺服器上運作server端,叫從伺服器,從伺服器上的server端啟動時,自動向主伺服器登記自己和自己的cpu數量,當agent接受到一個排程任務時,它将向某個有cpu空閑的server發出任務,server接到任務後,将啟動一個線程來運作該任務,同時将自己可用的cpu能 力 減 少

  agent可以啟動所有的server的所有cpu來運作一個排程任務,也可以将一個排程任務隻由一個server的一個cpu來運作,這樣的話,aps 計算叢集可以同時為集團企業的多個子公司提供排程計算能力,當然,也可以設計一種靈活的server選擇政策和任務配置設定政策

  agent除了管理計算叢集外,還接受每個伺服器在運作過程中得到的目前最好結果,然後作為新的疊代值傳給其他伺服器,在這個最好結果的基礎上繼續進行演化,以獲得更好的結果,一般說來,由于伺服器的強大cpu能力,現在在很短時間内得到的結果,是以前認為根本無法在有限時間内得到的

13  基于spark參數伺服器叢集的大規模分布式生産計劃排産系統(Distributed Advanced Planning and Scheduling)技術架構

   大規模分布式生産計劃排産系統由spark分布式計算叢集  tachyon/redis緩存叢集  hbase/mysql資料庫叢集 和 web業務伺服器組成,通過web業務伺服器輸入排産基礎資料和訂單資料,資料儲存到hase資料庫,并自動同步到tachyon緩存,客戶可以通過web頁面啟動排産,排産指令發送到spark叢集,由spark master啟動spark 工作節點運作排産(worker),排産完成後,排産結果儲存到hbase/mysql資料庫,客戶可以通過前端頁面檢視排産結果,并進行手工調整

   排産算法分為通用子產品和定制子產品,通用子產品由c++編寫,編譯成linux平台.so庫(python庫),定制子產品由python腳本語言編寫,主要是客戶排産模型和評價目标,儲存為python腳本,排産算法子產品作為一個python元件由spark調用,調用邏輯為 mr -  python script - .so庫

   工作節點使用并行遺傳算法排産時,需要把最新的染色體資訊及時進行同步,是以這裡引進參數伺服器(Parameter Server)的概念,python腳本在spark master伺服器同時啟動一個Flask serve作為參數伺服器,通過http和restful api來同步最新的染色體資訊

    一般分為以下步驟;

    資料預處理,把資料從緩存提取;

    每個spark工作節點獲得資料和統一的排産配置;

    spark工作節點開始遺傳算法循環,對于産生的最新染色體,push給參數伺服器,參數伺服器把最新的染色體統一同步給各個工作節點;

    不斷重複上述過程,直到運作到指定疊代次數。

   基于cpu的算法計算也可以優化成支援gpu/fpga,這樣可以在局部算法上獲得20-30倍的速度提升

   由于使用了業界成熟的分布式和微服務架構,無論spark叢集 還是 tachyon/redis緩存叢集 還是web業務伺服器,都可以友善快速的進行分布式部署和擴容(spark叢集上萬台計算機的部署案例都很多),是以該雲排産平台的計算能力是沒有限制的 附錄

isuperaps 生産排程軟體操作手冊

一 、軟體簡介

  isuperaps 生産排程軟體是一個面向制造企業的客戶機/伺服器結構的進階供應鍊計劃和優化(APS-Advanced Planning and Scheduling)軟體,軟體分為客戶機端和伺服器端兩部分,伺服器端計算采用先進的并行遺傳算法,大規模分布式結構設計,使用者運作客戶機軟體編輯資料,送出到伺服器端運作,運作結果傳回客戶機端顯示,滿足了制造企業利用計算機進行供應鍊計劃和優化的需求。 

産品功能

   isuperaps 生産排程軟體是一款基于網絡運作的支援多核和多伺服器并行計算的适合大中小企業的生産排程軟體(APS),支援 Sql Server 和 erp 資料導入,支援和sap r3或sap ecc的資料接口,使用了并行遺傳算法,支援多使用者同時進行排程,也支援單使用者使用多台伺服器進行并行分布式排程

    1、考慮副資源限制

  2、甘特圖提供了檢視和手工修改的功能

  3、支援生産計劃的變動修改和緊急插單的功能

  4、考慮了特殊規格(如顔色、材料、款式、重量等)的準備提前期

  5、提供了bom編輯器

  6、支援多工廠、多工廠中的房間、多機器

  7、排程時間精确到秒

  8、排程時考慮庫存

  9、可以導入現有的生産計劃進行排程

  10、友善的工作月曆定義

  11、提供了外部資料導入接口。

核心技術

      isuperaps 生産排程軟體使用了世界首創的并行遺傳算法優化技術,可以使用數台、數十台甚至數千台伺服器同時參與優化計算,使求得優化最優解的速度得到了極大的提高。 

isuperaps 生産排程軟體操作手冊(二)

二、操作入門

1 首先,運作用戶端

2 建立一個項目

3 定義産品資料,産品有三種類型,産成品,半成品,原料,但是一個品目其實既可以是産成品,也可以是半成品

4 定義工藝和工序,工藝和工序是獨立于産品資料的,也就是說,一個工藝可以在多個産品的生産中使用

5 定義工廠,工作中心(工廠中的房間)和主資源(機器或生産線)

工作中心有3種類型,生産 外協 和采購,注意采購其實是指供應商,在這裡定義,為了友善計算采購提前期

6 定義班别,班别是一天中的工作時間的安排

編号是指一個班别的定義,序号是指一個時間段,序号一般從1開始

7 定義月曆,也就是一個星期中哪幾天休息,其他的日期每天的班别是什麼

每天的班别可以不一樣

8 定義工作月曆,工作月曆是把班别和主資源對應起來

但是工作中心是采購的主資源,其實是不考慮工作月曆,因為實際上對應的是供應商,主要看采購提前期

9 設計産品bom和工藝路線,這個圖形設計的是一個産品綜合的生産資訊

10 原則

産品下面接工藝,工藝下面可以接工藝,也可以接原料,原料為最低層

比率是指生産一個機關的上級産品,需要多少機關的本級産品

損耗是指生産過程中的損耗,大于等于0 小于 1

11 現在來定義資源能力

生産時間的計算,如果主資源的工作中心屬于生産,則生産時間 = 機關時間*生産數量

如果是外協和采購,生産時間 = 機關時間,不乘以生産數量

12 輸入定單

這個定單并不一定等同于客戶的定單

是經過适當的分拆和合并的生成的定單

因為單個訂單生産數量過大或過小都會影響排程,應該和主資源的生産能力相适應

13 排程

連接配接本地伺服器,把位址欄清空就可以了

14 固定現有定單重排

重排的邏輯比較複雜

a 重排時,所有未下達的定單都會重排,未下達但固定的定單則保持不變

b 已經下達的定單,則保持不變

15 甘特圖手工修改

繼續閱讀