為何需要APS
APS(高級計劃與排程)技術,可以在保證工作安排的可行性基礎上,對安排作進一步優化,從而獲得一個比人類手動規劃更佳的計劃方案。該技術的終極目標是,從天文數字多的可能計劃方案中,嘗試找出最佳的計劃方案。但基於NP-Hard問題的特性,可以找到的方案無法證明是最佳的。可是對於實際應用環境而言,APS系統只要可以找到一個計劃方案,被證明相對人們手工編排的計劃方案更優,即到APS項目的最基本目標;且不論尋找這種優化計劃方案的效率遠高於人工方式。這種“智能”優化能力,是APS技術的核心價值所在。為了應對市場快速變化、降低成本,制造企業對生產管理提出進一步的精細化管理要求(例如精益生產,在下一篇文章中會對APS技術在精益生產中的應用作詳細討論)。而ERP,MRP等技術日催成熟,從中可獲取用於改善管理效果、提高管理精細度的價值越來越小。隨著計算機算力的提升,結合各種運籌優化算法(主要是啟發式算法)的成熟應用,讓信息系統更深入地參與到精細化管理的條件日漸成熟。APS技術則是其中一種將運籌規劃技術應用於生產管理的典型案例。
在供應鏈的生產管理環節(其它環節亦然),形成的生產計劃越精細,對生產能力的預判越準確;為市場銷售人員提供的產能與資源信息越準確,可推算出越準確可行的交期承諾。在生產管理活動中,編排生產計劃時考慮越周全,對突發情況的變應越迅速,對生產作業的安排越精準;越能減少各種資源的不必要等待與浪費,越能減少生產過程中的不增值作業(精益生產的基本要求)。從而降低生產成本,提高產品競爭力。在運營管理活動中,因應市場的需求變化,越快作出最適當的反應,重新確定新的、優化的生產、物流和資源方案的計劃方案,越能幫助客戶把握商機;更有利於贏取市場。因此,APS技術具有對供應鏈各環節的周全預測能力,對生產計劃作出極度精細化的編排,對需求快速反應等特性;逐漸受到制造業和其它具有規劃優化需求行業的青睞。但與很多新興技術一樣,風險、困難往往與價值伴生。那麽,要成功實施一個APS項目,並令其發揮預期的效用,需要面臨哪些問題呢?
APS項目對企業的信息、流程環境與人員的要求
盡管APS技術存在相當多的優點,可為企業帶來其它IT技術以往難企及的收益和管理助力;但這僅僅是基於APS項目能成功部署實施,並正確發揮作用的前提下。因為APS項目的高要求特性,目前各行業能成功將APS技術應用到運營、生產活動中的企業還是小數。原因眾多,APS技術的各種困難因素和企業自身的條件均有可能阻礙APS項目的成功實施與應用。傳統的企業信息化項目(ERP,CRM,MRP等),通常具有較明顯的方案可行性,和效益確定性等特點。相對較容易量化項目的投資及收益。而APS技術是運籌規劃領域在企業中的應用,本身帶著一定的學術專業性,對項目實施人員有一定的專業要求。另外企業自身的信息化、標準化水平,和供應鏈各環節的數據和流程完備性,均是APS項目依賴的關鍵因素。APS項目對部署、實施環境和人員的要求甚高。詳細分析如下:
對APS項目人員的要求甚高。在自研APS系統情況下的項目,項目的關鍵工作在於規劃核心的設計與開發。對於一般規模的商用APS項目而言,企業不可能自主投資開發優化核心(求解器),而是會選購現有的求解器產品,作為運籌優化核心。目前成熟應用於商業的求解器有CPLEX, Gurobi等。開源免費的求解器較具代表性的則有OptaPlanner和Google OR-Tools,國內的開源求解器目前較知名的有杉數科技的COPT(非開源)。項目組的研發人員掌握這類求解器(或稱規劃引擎)的應用有一定困難。畢竟運籌優化中的數學規劃屬於應用數學領域,因此,對於研發人員的數學規劃專業能力有一定的要求。同時懂得IT與數學規劃的技術人才,是普通企業極度稀缺的人力資源。
對企業供應鏈數據質量要求甚高。APS系統能準確地生成生產計劃,資源分配方案和產能預測結果;除了建立高質量的規劃模型,對被規劃的對象要求甚高。一個高質量的規劃模型,能準確反映企業供應鏈的各種約束與優化要求。但在使用這個模型進行規劃運算時,提供給它的數據是否準確反映企業的真實情況,數據表達的各種業務狀態是否全面,是影響規劃效果的另一個要素。盡管建立了精準的規劃模型,但作為規劃原料的輸入數據準確性不佳,或這些輸入數據並未能真實全面反映企業真正的業務狀況;則系統的輸出不可能正確,項目則無法產生應有的價值。
企業應用部門需對APS技術有正確的理解。若已成功部署一套APS系統,那麽如何合理、準確地應用這些APS的輸出方案,是另一個難題。APS在制造業上的應用,目前主要的應用於對生產計劃進行可行性約束和方案優化。APS輸出這此優化後的計劃方案,可作為MRP,銷售預測,庫存控制及生產計劃的原始數據。細粒度、規劃精細合理的原始數據,甚至可以作為車間作業指令,在自動化程度高的行業,作為車間機台控制和運輸調度之用。但在各方面的應用是否合理,則需要各領域的專業人員正確地理解APS的輸出數據,將這些數據作為編制各領域的計劃方案的基礎。若某個領域的專業人員對APS的輸出理解不足,則無法充分發揮其價值。
APS項目實施重點與難點
對業務實體與規則的提煉
APS技術不像其它企業信息系統,其重點已經不在於將生產數據的信息化、流程自動化,以達到提高效率的目標。而是著重於根據現有的生產要素,對生產計劃作出快速、自動且“智能”的編排,並從中對計劃作出進一步的優化。因此,對數據(包括資源信息,訂單信息等)的準確性與全面性要求更高。對業務規則、計劃的優化目標的理解也要求更準確。因為APS技術實現計劃優化的過程,本質上是運籌學上的一種數學規劃、尋找極值過程。相應的數學規劃模型的質量越高,能獲取的優計劃方案與實際業務實況越匹配。因此,如何對業務實況進行精確分析,定義準確的業務實體,提煉並綜合設計各種業務規則,確定計劃的優化目標等工作,成了APS系統開發過程中的關鍵工作。這些工作也成了APS項目成敗的關鍵因素。
定義評價APS輸出結果質量的KPI
此外,因為APS系統輸出的原始數據,可作為生產計劃、MRP、產能及資源能力評估等不同領域工作的基礎數據,所以為APS系統的輸出定義好一個合理、客觀、可量化的KPI非常重要。這此KPI應該在系統設計之初就確定(這是一個相當大的難點)。用於在對每一個APS的輸出進行評估,以確保APS系統的輸出是否符合設計預期。因為APS技術中的優化功能,目前主要是通過一些約束求解器的運算獲得。而這些求解器中使用的優化算法主要是啟發式算法,這類算法可以在絕大多數情況下,在一定程度上對NP-Hard問題找出一個相對優算,但它們不是一種精確算法,即它找到的解,並不確保,也無法證明是最優解(對於NP-Hard問題,目前的技術不可能獲得或證明最優解)。因此,對於一個APS項目中,關於APS系統的輸出,應該定義一套合理的評估機制與KPI,以確定APS的輸出是否達到可行性和相對優化要求。而要定義這些KPI並非易事,因為現實生產環境中,要實現的往往是多目標優化,對於多目標優化,大部分求解器都能找出帕累托最優,但是要確定不同的目標之間的制衡、取舍則需要APS項目人員與用戶,在充分理解企業業務現狀的前提下,共同努力才能制定;才從多個優化目標的方案集中,找到滿足業務要求,並相對優化的計劃方案;並確定對這些方案進行評估的KPI。
因為APS技術對於企業提供的流程、數據信息敏感度極高,本小節將進一步將APS所需數據作細分討論。包括數據的準確性、全面性,業務規則的準確性,和優化目標的合理性。
要求獲取準確、全面的“數據”
與其它任何企業信息系統一樣,數據是APS系統的主要處理對象與運算基礎。這里的數據相對ERP系統而言,是狹義上的“數據”概念,是指企業信息管理系統中的交易數據,例如訂單、工單、機台信息、產能等。而那些用於控制管理流程和約束規則相關的數據,則在下一小段討論。這些交易數據將會作為生成工單的重要信息(工單是APS系統在編排生產計劃的主要規劃對象);工單需要精確、全面反映生產的各種要求,包括工藝屬性、訂單要求等。這些信息都能全面就位,才能通過APS對工單的資源、時序和依賴關系進行優化,從而產生可行且優化的生產計劃所需的原始數據 。
APS系統的目的,是對生產計劃(包括車間、工廠、公司等級別的生產計劃)、乃至整個供應鏈的運營、生產活動進行高質量、高可用性的預判和規劃。需要實現該類預判和通盤規劃,要求被規劃的對象(工單)保證一定程度上的確定性、準確性和全面性,否則有可能差之毫厘繆之千里。
需要提煉準確、切實的業務約束
每個行業,甚至每個企業都有著千百種不同的業務約束規則。不同的行業生產工序有著不同的工藝要求,相同的行業不同的企業也有著各定制化的業務和工藝約束。針對一個行業或一個企業,可以提煉出的來通用業務規則,通常只占一個APS項目的業務規則中極少部。因此,不同APS項目之間,面對的業務規則千差萬別。幾乎不存在兩個業務約束規則完全相同的APS項目。一些APS產品,在其設計時也不可能針對具體的業務邏輯,設計相應的規則約束。而是提供一些可二次開發的功能、接口針對具體的APS項目作定制開發。例如提供業務實體定制、約束條件定制,甚至提供可表達約束規則的腳本語言,作為覆雜業務規則的體現和輸出方式。
APS項目過程中,通過對企業業務場景的深入需求調研,分析並識別其中與APS項目相關的業務流程、業務實體與業務約。並從中提煉出APS系統主要的規劃對象,歸納影響規劃行為的業務制約條件;從而生成規劃模型中的約束條件,作為APS引擎的輸入。這些約束將會作為規約一個可行生產計劃,或資源分配方案的主要參考體系。
需要歸納合理的優化目標
每個考慮需要實施APS項目,以改善供應鏈質量的企業,其供應鏈必然面臨著一些亟需改善的痛點。如交期達成率低,運營效率過低,生產成本過高。甚至希望在整個供應鏈中實現完整的精益生產體系。而這些問題,必然是經過一定程度的發展,並通過其它途徑的改善,發現仍無法取得理想成效。這些追求更深入更廣泛效益的問題,並不是普通企業信息化項目可以解決的。
與上述痛點對應的問題清單中,某一個或數個問題,形成了一個APS項目的優化目標體系。但在實際的企業生產環境中,人們往往對這些目標的理解並未深刻和全面。在APS項目(例如生產計劃優化相關的項目)的初期調研時,用戶往往把APS的一些功能神化,對未來的系統提出一些不太符合常理的要求與期望。這固然有部分原因是APS廠商,在售前環節中,為了提高自己產品、方案的宣傳效果,在未對用戶的需求進行深入分析時,對客戶提供的不合理需求作出過分許諾有關。一些不切實際的諾言,有可能誤導用戶,令用戶誤以為APS技術可以解決他們所有問題的靈丹妙藥。而忽視了APS是用於提高計劃的可行性、合理性和預判性的,而不是解決生產環節中所有問題。
例如,用戶遇到的問題很多是計劃執行層面的問題,而非計劃制定時可以左右。APS只能在制定計劃時,把這些執行層面的問題作為制定計劃的考慮因素納入建模體系,令計劃與實際執行活動關聯更緊密,降低計劃與執行脫節的情況。而具體執行的情況及其控制,嚴格意義上並不屬於APS系統處理範疇。再如,在APS項目中,用戶僅收集並提供一些日常生產活動中較表象的問題,而沒有分析它們的內在聯系,更沒有作出歸納總結;隨即將這些問題視作APS的優化需求。如:要求訂單準時交付率提升到指定的百分比,且成本下降到指定的數值。訂單的準時交貨率與成本,在某些情況下是一對競爭因素。在一定程度上,通過找到更佳優的計劃方案,這兩者的競爭程度可以降低,這也是APS的其中一個優化方向。但正確的要求方式,應該是:成本限制在指定範圍內,準時交貨率最大化。或準時交貨率不低於指定值的基礎上,成本最小化。也就是,APS可以指定一個因素作為制約條件的前提下,將另一個競爭性的因素作為優化目標,通過運籌優化算法的運算,取得最佳值,從而形成最佳方案。如果要把兩個競爭條件都規定為一個固定值,當這兩個條件的指定值都在客觀許可範圍內,APS系統是可能找到同時滿足這兩個條件的方案的;但若兩個競爭因素的固定值所對應的方案客觀上是不存在的,那麽APS系統也無能為力。
此外,現實環境中,我們面臨的問題並不如教科書上的案例那麽簡單。我們遇到的問題絕大部分規劃問題,都是多目標規劃問題。正如上述提到的同時對按時交付率與成本都有要求,兩者都是優化的目標,那麽問題就會覆雜得多。其中涉及將如果衡量多個目標的權重,或將多個目標歸一為單個目標。具體的業務情況有不同的處理方法,後續將會有文章討論企業業務環境下的多目標規劃問題。
準確掌握計劃的松緊度
生產計劃,或其它規劃行為,都是基於指定約束條件下,對未來事物的一種預判。但從獲得這種預判結果,到實際按計劃執行,必然存在時間差。在這個差異的時間段內,有可能實際的情況已發生變化,從而讓原來已生成的計劃與實際情況有所脫節,從而影響計劃的可行性 。另一種情況是,計劃所產生的約束條件與實際的情況並非完全一致。這種不一致會導致生成的計劃發布到實際環境執行時,與實際環境的制約條件存在沖突,從而令計劃無法按預定的條件執行。
在上一篇文章中,有些老師就企業生產計劃的這個問題提出了一個高爾夫球棒理論,或抓鳥理論。將一只小鳥抓在手里,力度要適中,太松了小鳥會飛走,抓得太緊會把小鳥憋死。計劃的制定存在同樣的問題。一個計劃如果在資源與時間上精確度過高,而不留任何余地,則有可能現實執行環境出現些許微少的變化,都會導致計劃不可行。而制定得過於寬松,則失去了計劃的意義,在APS生成的優化計劃中,更失去了APS的價值。
這種計劃遇到變化的情況,不管是人工計劃,還是通過APS生成的自動計劃,都有可能遇見。通常我們的處理方法有以下3種:
以滾動計劃的方式對計劃進行逐步細化。即對於與當前時間較接近的時段,實行詳細的計劃方案。因為計劃執行的時點距當前時間越短,發生條件變更的可能性越低,且時間越接近,獲得的環境制約要素越準確,越能確保工作可按計劃執行。而對於計劃執行時點距當前時間較遠的部分,則僅提供粒度較粗,存在較大冗余的高層次計劃;以應對這段較長時段內產生的不可見的情況,計劃對環境變更的能力更高。
為計劃中高可變性的工作項,設定合理的冗余量。對於一些約束條件變更可能性較高的計劃,為了讓計劃不至於稍有少許環境條件變更,即變得無法執行,可以在制定計劃時,為這些工作項設定一個冗余量(或稱緩沖)。在執行時遇到的環境條件變化,這些工作項也具有一定的應對空間,從而降低計劃變為不可執行的可能性。
采用實時計劃對環境條件變化作出快速反應,並保持非易失性(連貫性)。有些APS產品或規劃引擎,可提供不間斷的規劃功能。如OptaPlanner規劃引擎就提供了Real Time Planning特性。這種特性非常適合於一些對規劃動作要求作出實時、不間斷應變的場景。例如VRP,車間作業指令等規劃場景。實時規劃系統在完成一輪規劃後,系統並未結束運行,而僅結束了規劃運算行為,進程仍處於就緒狀態,一旦因計劃的對象或其它要素發生變化,即會觸發新一輪規劃運算。在實踐中發現,實時規劃運算不僅能讓系統具,對變化具備實時反應能力,且對於前後兩次的規劃行為,可以好地保持規則的連貫性(後續將會相關文章詳解規劃的易失性問題)。即非實時計劃前後兩次規劃的連貫性,在實時規劃中更容易實現。因為對於非實時規劃,前後兩輪的規劃運算面對是兩個不同的數據環境,第一輪規劃的上下文無法完全傳遞到第二次規劃運算中。而實時規劃因為其系統的規劃進程並沒有結束,僅僅是結束了規劃運算,處於“暫停”狀態。因此,實時規劃當接收到重啟指令後,它是完全沿用上一輪規劃所得的上下文環境,從而更能確保規劃的連貫性。其實需要保持計劃的連貫性並非易事,需要在建模時作出一定的考量,並以相關的約束或其它限制方式,對引擎的規劃行為作出一定程序的限制。
APS的輸出反饋於輸入,改善約束與目標
無論何種系統,從設計到上線過程,伴隨著需求的不斷變更,這並不是說項目範圍控制得不好,而是軟件項目本身存在極高的不確定性。有可能是未到具體設計實踐階段,需求本身無法得到驗證而體現出來的不確定性;從而需要在設計開發過程中作出一定程度的修正。也有可能項目開發周期足夠長久,原來的需求在設計實現階段,已經產生一定的變化。因此,軟件項目的開發實施過程,或多或少都伴隨著變化。
而APS項目這種變化更甚。APS項目在成功上線後,必然存在一段比其它信息系統項目更長的磨合期。APS系統在這個磨合期內,不僅是對需求的進一步細化、優化和改進;更是對規劃約束的進一步明確和修正,更多明顯的是對優化目標的進一步調整。因為APS項目的目標,本身是為生產計劃等規劃工作,尋找一些人類難以獲取的更佳方案;而獲得這些方案後,人們會基於這些以往無法獲得的方案作更深入的思考,會構思出一些以往不會產生的想法或優化目標。因此,APS項目在系統上線後的使用過程中,都伴隨著不斷的優化,甚至一直延續在整個系統生命周期。
在用戶對APS系統的優化行為,輸出結果有一定的認識,並收集、更新並總結了一定的規律後,就會在根據掌握的信息,對其優化目標進行進一步的優化,從而令系統輸出與現實業務場景更匹配的方案。
隨著近年APS相關資料的普及,很多用戶在項目開始前,已經懂得提出要求系統輸出多種不同的優化目標的方案,從中比較不同的優化策略,經過分析後選用適合的方案。經常會有用戶以導航軟件為例提出需求:系統應該可以提供不同情況下的規劃方案,就如我需要導航去某地,導航軟件可以根據路程、費用和路況,提供不同的路線方案。我們可以視情選取合適的方案。事實上這是業界的一種進步,反映了用戶已經懂得APS的基本原理和作用。它並不是按照既定要求找出一個固定計劃方案,而是從限定條件中找出目前找到的最佳方案。
APS產生的計劃真的可行嗎?可行條件如何變化?
計劃是否可行,需要進行多方案、多維度的考量。主要包:
計劃的時效性喪失。計劃可被執行的一些必要條件,在執行時已消失。計劃變成不再可行,上文已討論過。
對規劃模型中的考數據把握不準確、考慮不周全;令引擎在生成計劃時,尋找到一些人們未能預想的情況。計劃變成不可行, 上文已討論過。
可行計劃的約束條件轉變。一些本認為是可妥協、可讓步的限制條件被設計成軟約束,但所得的方案中,該類條件的違反程度遠超預期。
下面對第3種情況作詳細論述。
在數學規劃中,規劃模型通常由限定條件(Subject To)和目標函數兩部分。在APS技術中的規劃模型中,通常也有對於業務的硬性約束條件,即計劃必須在滿足這些硬性約束條件的前提下,計劃才能執行。這部分的約束對應於數學規劃模型中的限定條件。而APS的另一個作用,則是尋找一個更優的計劃方案,在APS規劃模型中被稱為軟約束。它對應於數學規劃模型中的目標函數,即規劃過程中用於求解限定條件下的極值函數。因此,對於數學規劃的目標函數,APS規劃模型中相應地以軟約束的形式體現。也即是軟約束是為了尋找最佳計劃方案設定在的。
在APS的規劃述語中,違反硬性約束的方案被稱為不可行方案,滿足所有硬性約束的方案被稱為可行方案。在APS生成的計劃方案中,一個可行計劃往往是一個所有硬性約束都沒有違反的計劃,在實際生產活動中,理論上是具有可執行性的。而一些違反了硬性約束的方案則不具有可執行性,在此不必詳議不可行計劃。但在實際的生產經營活動中,可行性計劃的定義會更狹窄。一些雖然所有硬性約束都符合,但對於軟性約束違反達到一定程度的計劃方案,也有可能被劃定為不可行。也就是說,軟約束在實際的計劃方案中,有可能出現“由量變達到質變”的過程;因為軟約束的量過大,而質變成不可行計劃。
例如:一個簡單的生產計劃僅有一個優化目標(事實上這是理想狀態,多目標規劃才是世界的實況) – 降低成本。也就是APS規劃出來的計劃,需要盡可能降低成本。那麽在設計規劃模型時,成本因素就會變成唯一一個軟約束,而其它交期、工藝參數等因素則作為硬約束。理論上無論按計劃生產的成本多高,只要計劃安排符合了交期和工藝參數的要求,它就是一個可行的計劃。但實現的生產活動中,成本是有上限的。例如,如果滿足了交期和工藝參數兩個硬性條件,按該生產計劃生產出來的產品,其成本卻侵蝕了最低利潤。那麽在單純的商業角度來看,該計劃已經不可行了。此時,這個方案則有可能成為一個“符合了所有硬約束的不可行方案”。對於實際的生產經營活動,這種計劃方案是無法執行,不具備價值的。當然,讀者可能會想到,那到成本應該也被定義為一個硬約束,只不過這個硬約束不是定性的,而是定量的。也就是達到一定的量才會被視作違反。這是正確的,在後續的文章中,我會對軟硬兩種約束的關系展開討論,這是APS領域的另一大課題。