1. 程式人生 > >關於APS在企業生產計劃上的應用

關於APS在企業生產計劃上的應用

       本人本身是一個碼農,已經服務了共和國各項事業(好像是說得有點漂,沒辦法段子看多了)大約一半工作時候了(按60歲退休的話),從一線的小碼農,到現在成了老農,出產了不少或優或劣的各種碼,幾乎啥都做過。近幾年慢慢沉澱到製造業資訊化方面,主要是APS在生產計劃方面的應用,APS - Advance Planning and Scheduling. 高階計劃與排程;其實也就是做計劃,只不過使用了一些優化演算法,另計劃的質量更高一些。從最開始被調去做ERP資料適配APS專案實施,到現在自己在為公司開發排產引擎(當然規劃引擎用的是開源的,我可不是數學方面的專家)。從中也接觸過不少排程產品,掉過不少坑,身上算是留下了點APS的戰鬥痕跡吧。下面先講一下我在這方面的一些看法。等我有時間了,我再把這一年來,為解決APS系統的引擎問題使用optaplanner規劃引擎的一些小積累分享一下,但這個時間嘛,還真的不容易擠呀,這一年來基本上每天晚上9點30前沒離開過辦公室,11點後跟晚班工人一起下班是常事(沒錯,我在一個製造企業上班,對APS有一個天然的實戰環境,這是公司給我的最大條件優勢)。

1. 排產的現狀

       關於製造業排產的系統,目前人們關注得更多的是MPS(主生產計劃系統)的排期,即是公司甚至整個集團層面,根據產品的產工藝引數,結合訂單的數量與交期要求,生成以生產訂單為基本單位的生產計劃,通常稱作主生產計劃(Master Planning).所謂的排期,或稱排計劃,更多的是對這些生產工單進行編排。例如根據這些工單的工藝要求分配到不同的生產單位(分廠、車間或承包商),並根據各個工序的生產時間需求,定出一個要求的完成日期,而這個日期其實是有水份的(下面會有解釋)。但這些工單去到具體的生產單位後(特別是公司自己的車間作為生產單位時),其具體的生產計劃就較少涉及了。原因有二.

       a. 複雜度與可變性太高。到了車間這一層,再下一層就是產線甚至機臺了,即車間的生產控制部門獲得上級下發來的生產要求之後,會結合在製品、資源與工單的具體要求,向上級單作出一個反饋,即回覆是否可按計劃的要求完,雙方討價還價確定了一個新的計劃版本之後,車間生產控制部門就會制定一個適合本車間的生產計劃,再把該計劃下發給生產排程部門進行生產。生產排程部門再會根據具體情況,按生產計劃進行生產。無論是車間生產計劃部門,還是排程部門,他們面臨的都是一些涉及一些非常複雜的細節規則,例如生產工單的工藝要求,投放到車間哪個產線,例如哪種甚至哪臺機器進行生產,生產過程中需要注意的具體細節等。都需要生產計劃部門有所考慮,當然到了排程部門有可能還會有一些更細節的實際情況及約束進行考慮,從而在生產過程中作出臨時調整。無論是車間的生產計劃部門還是生產排程部門,需要處理的邏輯細節都是很複雜繁多的。而作為人類面對種類繁多,複雜且多變的規則,各種業務制約與各種要求,是無法滴水不漏地顧及的。更多的是通過經驗積累給出一些大概的,基於估量的安排。所以,車間各級部門給出的這個計劃其不確定性是非常高的,甚至有些情況下,在經驗老道的生產計劃人員及排程人員排出來的生產計劃,如果有足夠多的時候去推敲,即使是按目前的生產情況不變,到最後也是不可行,或者說計劃的質量要求(例如對成本、交期、產能利用率等要求)是非常低的。但往往在制定出來的初始階段基本上是沒人能推斷出來的,更不用說計劃推動了一段時間後,隨著過程中的各種條件變更發生,越往後就越偏離原來的初充了。所以,要能最大程度上做出一個好的計劃,是非常困難的,更多的是以經驗生成一個初始計劃,在生產過程中根據實際出現的情況,及在初始階段未能考慮的問題慢慢明確,再持續地作出調整。所以給別人的印象就是,車間的生產計劃毫無章法,質量太差,甚至有公司高層認為,車間根本無計劃可言。但這是人思維的侷限性,而對遠超過其處理能力問題時,必然會出來的情況。因此車間層面的生產計劃會面臨一個嚴重的複雜度與可變性太高的問題。

       b. 車間生產計劃被視作操作細節,被人為未達到戰略層次,未得到足夠的重視與認識。因為作為公司級別的主生產計劃,它是直接作為公司供應鏈的一環而存在的,這個環節的目標達成率高低是需要下面各個更細層次生產計劃的支援的。但作為公司層面,往往要求的是,只要公司的主生產計劃保持在一定的達成率,那麼就可以滿足供應鏈其它環境的要求了。但事實上這個達成率是需要有冗餘的,也就是主生產計劃給制定車間生產計劃的時間,已經預計到一定的不可確定性存在,因此往往會留下一定的緩衝期。但這個緩衝期長短,是否合理,往往都是通過以往經驗得出。而同樣道理整個供應鏈對主生產計劃也會留有緩衝期,那麼可以想像,為了能滿足要求,往往這些緩衝期加起來就會很長,往往比實際執行製造生產的CT還要長。這樣就會造成極大的效率低下,及產能資源浪費。但就是因為越往明細的生產計劃,不可控、不確定性越大。因此,公司通常都只能夠棄小保大。久而久之,大家的焦點都只關注在MPS的層面上了。

       綜上所述,目前我們所說的排產,或說生產計劃,更多的還只是停留在主生產計劃這個層次較高,較虛泛的範疇。而真真正正到了生產控制層次的,往往關注的是MES(生產執行系統)了,而計劃因為車間、產線層面的生產排程計劃存在太多的難點,及很多方面技術上尚未成熟,令各大企業資訊化產品對此較小涉及。大家也會留意到,無論多大、多出名的ERP系統,它關注的都是公司供應鏈層面的資源調配,而不會涉及具體生產環境,或者具體到庫存物流,或具體的訂單執行層面的內容。而目前這方面通常引入APS作為支撐慢慢有些成功可用的方案在市場上推廣了。

下面就來看看APS(Advance Planning and Scheduling - 高階計劃與排程)技術,在生產製造業的一些應用.

2. 什麼是APS.

       上面說了,APS就是一種高階計劃與排程技術,那麼為什麼叫做高階呢?我的理解是,它是相對於以往的MPS的,它除了滿足一些生產製造過程中關於工藝、交期等等的硬性要求,還要在滿足這此硬性要求的基礎上,根據既定的一些設定、或稱策略進行不斷優化,從而得出最接近策略目標的計劃方案。這樣說可能比較虛,下面舉個例子說明一下。一個主生產計劃下發到車間,當前正處於工廠的和產旺季,那麼生產策略通常會被整理為"保證交期"(可能談季的時候,因為資源相對充足,交期的保證不再是難事,策略往往會是"降低成本"。),那麼車間生產計劃部門收到計劃,細分為各車間、產線甚至機臺的計生計劃時,就會把生產計劃的策略大體上區分為兩種,一種是保證硬性的要求不違反,例如產品質量要求、生產安全要求等。在此基礎上,就會設法安排這些生產訂,令其可以更快完成生產,從而可以保證產品所在訂單的交期,又可以為後面更多的生產單儘早騰出資源,目標就是提高效率。對於前面的質量、安全的要求,是一些硬性的定性要求;而對於第二種效率的要求,是一種軟性的定量要求。對於定性的要求,那麼就會有好壞,或說能達到多好的程度評價。在人的角度上來講,經驗越豐富,他排出來的計劃效率越高,越符合這個軟性要求。這個就是APS的威力所在的,當然大家關注人工智慧中的深度學習的資訊,可能會發現,這個有一點人工智慧的味道,確實是的,但目前還沒有聽說過這方面的研究。APS技術目前使用的還不是人工智慧,而是基於有限資源、固定條件約束下的最優方案分搜尋技術。它的原理就如上面的例子,會把人們對計劃的要求劃會為硬性約束與軟性約束。通過尋優演算法(禁忌搜尋、遺傳演算法、模擬退火等)在浩瀚的組合方案中,在有限的時間內,找出的方案,需要在滿足硬性要求的前提下,最大程度上滿足軟性要求的方案。尋找這些方案的一些原理、演算法,就涉及一些數學上的概念,例如NC問題,NPC問題等,在此就不再熬述了。如果有機會我另寫一些相關的文章講解一下。

       總而言之,APS就是通過一些數學演算法,在計算機的強大運算能力支援下,找出一些可能比人類排產老師傅更佳的生產排程計劃。

 

3. APS的適用場景.

       正如上面提到,現在製造業更多的關注於主生產計劃,而具體明細的車間產線層面的生產計劃、排程計劃,還是處於放養式的存在。而主生產計劃由於有足夠的關注,往往有更多的投入對其進行研究,而且它面對的問題更巨集觀;綜合來講,相對車間層面的生產排程計劃就沒那麼多繁雜的制約因素了。所以,目前市上各種APS產品和技術,主要還是針對車間、產線甚至機臺的生產排程計劃,希望在這個層面的生產計劃有一些開創性的成果。但其實我們可以想象,APS可以處理車間、產線層面的生產計劃,那麼面對制約因素少得多,或寬鬆得多的主生產計劃,是完全卓卓有餘的。所以,雖然各大商家都把自己的APS產品瞄準車間、產線層面的生產計劃,其實如果在主生產計劃上面所需求,它也是可以對現有的主生產計劃作出些非常大的改善的。因為儘管主生產計劃比較巨集觀,但還是由公司計劃部門的人來制定的,那麼就必然有一定的侷限性。例如上面提到的計劃質量、緩衝期是否合理等等,APS在這方面可以作出很大的提升。當然,把APS應用於主生產計劃,其實還是需要下面層面的車間、產線生產計劃的支援的,畢竟在主生產計劃中,對各種資源與時間的預判,都要由車間、產線層面的生產計劃進行實現。而不是毫無根據地猜一個資源可用量,或完成時間的。

       當然,目前在製造業裡面臨的最大問題還是車間、產線面層的生產排程計劃,目前各個APS產品與技術,都是號稱可以解決這類問題,都是衝著車間、產線這個層面去的。所以目前見得最多的APS適用場面,還是在車間、產線甚至機臺層面,針對已分配的工單,對各個車間、產線甚至機臺,在已有的可用資源條件下,基於具體的業務制約因素,將生產任務適當分配到合理的生產單位(車間、產線甚至機臺,工位),並根據計劃中各任務的關後關聯關係,確定每個生產任務的具體開始與結束時間。這個也是APS的核心價值所在。因為目前在車間排程工作中,對於資源的把控也許會相對準確一些,畢竟有條件的工廠,在自身產能不足,但訂單要求有硬性規定的時候,可以通過引入外發加工來解決資源不足的問題。而生產時間的安排就沒那麼容易了。因為這是一個運算量非常大,考慮各種綜合因素,考慮工序的前後關係,還要考慮工廠實現的班次等因素,綜合起來的計算結果。人類是無法快速運算、畢竟種個方案的。這樣的話,APS系統就可以基於自己核心所使用的各種最優解搜尋演算法,基於各種約束;再利用計算的高速運算,快速地計算出各個方案的優劣,從而在短時間內對海量組合方案進行計算對比,從而往往能找出比人類更優的生產排程計劃,甚至是對於生產任務的開始結束時間,甚至是精確到分鐘的。因此,針對人類這方面的不足,通過大運算量,去生成的生產排程計劃,是目前APS的主要應用場景。

4. APS產品及引擎的選用

       目前世界上可用的APS產品其實還是不多的,畢竟這是一個數學上都還在不斷探索的問題,目前APS產品或技術,主要有偏重於MRP方面的,例如英國FastRact, 還有一些是結合規劃引擎與實際排程經驗的產例如日本的Asprova. 還有國內也有一些新秀產品,而這些接觸不多。另外還有一種不算是產品,而是基於一些規劃引擎,結合企業自身的業務場景,自身以專案形式開發的APS系統。目前我所在的企業正是處於這種APS發展狀態。我們是基於Optaplanner + Drools作為規劃與規則核心引擎,結合自身業務規則,將業務場景中的各類實體抽象,並將呼類繁多的業務規則抽象總結翻譯為硬約束與軟體約束。再通過程式使用Optaplanner中的適當模式進行生產計劃的自動生成。目前我接觸過Asprova與Fastract(這個只是接觸過他們的顧問提供的資訊,不沒有進行過專案實施).覺得Asprova確定是相對比較成熟的產品,雖然它的技術已經非常老舊,但基核心價值是引擎可以根據實際的排產經驗作出運算優化。如果覺得自己公司的業務相對比較複雜、奇葩,且自己公司具有一定的技術開發實力,建議還是使用Optaplanner進行定製吧。但還是要注意,在作技術選型時,還要充分了解自己業務上的情況,例如排產規則,自己業務跟各個引擎常用的模式有多大差異。這樣才能選擇一個真正適用的產品或技術。

上述都是自己這些年在APS上遇到各種坑後的總結,不一定對,歡迎大家拍磚。

謝謝。

End.

創作不易,請尊重他人艱辛勞動;歡迎註明出處的轉換。

本文在部落格園,CSDN, 阿里雲社群,知乎,簡書上均有釋出。


本系列文章在公眾號不定時連載,請關注公眾號(讓APS成為可能)及時接收,二維碼:

如需瞭解更多關於Optaplanner的應用,請發電郵致:[email protected]

或到討論組發表你的意見:https://groups.google.com/forum/#!forum/optaplanner-cn

若有需要可新增本人微信(13631823503)或QQ(12977379)實時溝通,但因本人日常工作繁忙,通過微信,QQ等工具可能無法深入溝通,較複雜的問題,建議以郵件或討論組方式提出。(討論組屬於google郵件列表,國內網路可能較難訪問,需自行解決)