APS技術中的多目標規劃問題

  在進行APS(高級計劃與排程)系統開發時,絕大多數狀況下是須要考慮多目標的。但面對多目標問題進行規劃求解時,咱們每每極容易因處理方法不當,而影響輸出結果,令結果與用戶指望產生較大差異。事實上不少時候用戶,面對此類問題也沒法給出一個肯定的合理的指望,由於多個目標混合在一塊兒的時候,產生複雜的規劃邏輯,用戶自身也會被迷惑,到最後就錯誤地提出一些全部目標都達到極致的「完美」計劃要求;但客觀上是不存在這種「完美」計劃的。安全

  本文將以製造業中的生產計劃爲背景,介紹APS技術中的處理多目標規劃問題相關知識與經驗,介紹多目標規劃問題的求解,是若是反映在生產計劃優化系統的設計過程當中的。在企業供應鏈的其它環節的優化過程,一樣適用此本文所述的理論。微信

多目標規劃在現實狀況下的體現

  在製造業中建立生產計劃時,考慮的因素很是多且繁雜。包含客觀必須符合的規則,稱爲硬約束;以及做爲計劃優劣的衡量指標、可量化、可違反的規則,稱爲軟約束。下面對這兩種約束進行詳細分析。網絡

硬約束

  以製造業的生產環節爲例,硬約束是指那些在制定生產計劃過程當中,是一種定性的制約因素,其對應的約束必須遵循;一旦違反,會令計劃不可行。也就是說,對於此類制約因素,對其考量只有True(符合)/False(違反)種結論,而不考量其違反程度是大或小。例如產品的工藝要求,生產任務對機臺的參數要求,生產工藝產生的環境影響因素等,都是硬性指標,一旦有違反,會令計劃沒法執行。再例如嚴重違反政策法規的制約因素,都會被定義爲硬約束,力求在計劃過程當中無條件、零容忍地遵照。函數

  在對問題進行數學建模,並使用求解器進行規劃求解的過程當中,硬約束將會做爲約束條件出現,也即所創建的數學模型中的s.t.(subject to)部分。能夠設想到,若一個生產計劃問題能夠被認定爲規劃問題(無論是線性規劃,仍是非線性規劃),其數學模型的s.t.部分將會很是複雜。事實上在實際生產環節中,絕大部分狀況是難以將生產計劃問題直接地抽象成數學模型的。並且對於普通的工程人員而言,將整個系統中的生產計劃制約因素和優化目標都建模成數學模型,再進行規劃求解,要求也是極高的。普通的軟件工程人員,並未受過該方面的專業訓練,並不具有這方面的能力。這也是爲何一些對業務邏輯表達方式更友好,描述語法語義更豐富,通用性強的規劃引擎(其核心是一個求解器 - Solver),更容易在軟件工程實踐中被成功應用。工具

軟約束

  從業務的角度看來,軟約束也是制約因素的一種,其目的是讓生產計劃存在一些可議價的、定量的因素,令到計劃生成過程當中,趨向咱們意願發展。也是說,相對硬約束而言,軟約束是有「商量,議價」餘地的。最好的狀況下,APS系統生成的生產計劃,其硬約束、軟約束都徹底符合。可是由於實踐生產環節中,存在大量客觀因素,有些軟約束是不可避免要被違反的,甚至系統自己設計的邏輯中,已經安排了把一些因素設計爲必然會違反的約束,其目的是給規劃引擎指明一個優化方向。即經過此類趨向約束,向規劃引擎提供一個信息 - 「儘管規劃所得的解能夠違反這些軟約束,但你違反的程度越低,獲得的解越優,也就是獲得的計劃越優化。」,軟約束在現實業務中,一般對應於成本、機臺開動率、生產效率、訂單交期等。也就是說,軟約束是一種定量約束,整個規劃的目標首先是確保硬約束所有符合,再在此基礎上再力求提升軟約束的符合程度。當因客觀緣由,某個軟約束沒法徹底符合時,則進一步尋找軟約束違反得更少的方案。優化

  在對規劃問題進行建模時,由於軟約束是一個爲規劃運算指導方向的組成部分,一般會把它做爲規劃目標體如今數學模型中。例如進行生產計劃優化程序設計時,能夠把成本最小化做爲規劃目標。也就是說,在生成生產計劃時,在保證工藝參數、安全特性等硬條件不被違反的前提下,尋找出最低成本的計劃方案,就是本次規劃運算的目標。在創建的數學模型中,軟約束體現爲目標函數。例如,成本最小化在模型中會表示爲 Min f(x) (其中f爲成本函數).google

硬約束與軟約束存能夠存在互相轉換的可能

  在實際業務環境中,某些因素被定義爲硬約束或軟約束,是與當時具體的情形相關的。某一因素在特定狀況下須要確保不違反,則須要被定義爲硬約束。但相同的因素,有可能在另外的條件下,能夠做出必定程度的讓步,甚至放棄;則可定義爲軟約束。設計

  例如產品交期,對於某些訂單而言,由於其涉及到的合同存在重大責任,或延期會影響到企業商譽,進而影響企業生存,必須保證交付不延誤,不存在任何讓步的空間;所以,須要被定爲硬約束。但有些訂單其優先級較低,延誤的損失遠比爲了確保不延誤而付出的代價高,則有可能容許必定程度的延期。又如,某些生產活動,會對環境形成某種程度上影響,當政府監管機構對該影響未做出強制消除要求時,企業只會在其它更高優先級的因素獲得保證的前提下,儘可能減小此類影響的發生。但若政府對這種影響做出明確要求,並以法律法規形式做出限制,要求企業在生產活動中必須消除,不然將會觸犯相關法律法規時,此影響對應的制約因素,須要在制定生產計劃時,做爲硬約束考慮,以確保不違規。排序

  所以,硬約束與軟約束在必定的環境條件下,存在互相轉換的可能。而在咱們對規劃模型進行設計時,這種轉則是性質上的改變。當一個因素做爲硬約束存在時,它是反映在規劃模型的限制條件中的。而當它轉化爲軟約束時,建模時則須要把該因素做爲優化目標考慮。開發

多個優化目標

  在常見的運籌優化教材中多目標優化相關的章節裏,涉及規劃問題的數學模型,不少例子都是由多個約束條件及一個優化目標組成的。即對應於實際規劃問題中,多個硬約束和一個軟約束組成。例如各類線性規劃例子中出現的,某工廠的生產活動在若干項約束條件下,實現利潤最大化的狀況。其【利潤最大化】就是該規劃問題的惟一優化目標,利潤函數也是惟一的目標函數。

  可是在實的規劃系統(例如各APS系統)中,面對更爲複雜的規劃狀況時,其規劃目標每每不僅一個,有可能多個。且這些目標每每錯綜複雜,有可能存在兩個方向相同的目標,也可能兩個目標是相反的,即互相制衡的。總之,這些目標之間沒有直接的可比性。

  面對這種狀況,在設計規劃程序時會變得至關複雜。在運籌學上,此類問題稱爲多目標規劃問題;其數學模型中存在多個目標函數。你們能夠想象中,當存在多個目標函數時,其優化的結果每每是沒法令全部目標函數都能獲得極值的。所以,多目標規劃問題是運籌這中較前沿、較複雜的問題。由於多個目標對應的指標有可能不存在相關性。所以,並不存在一個全部目標均達到最優的解。只能在多個目標之間作權衡取捨,或將多個目標作出某種混合關聯,獲得一個單一目標規劃問題。

求解多目標優化的困惑

  由於多目標規劃問題存在多個目標須要同時被優化,全部這些目標都有一個對應的最優解,但各個目標具備不一樣的方向,在規劃模型中,每一個目標經過一個向量表示。也即不可能存在一個全部目標都達到最優狀態的解決方案存在。

  所以,咱們求解此類問題時,只能根據實際狀況對不一樣目標進行個性處理。分別:

  1. 是對目標進行優先級劃分,確保優先級越高的目標,其達到優化的程度越高。
  2. 根據目標的重要程度,對各個目標設置加權值,令求解器在運算過程當中,根據比例來肯定各個目標的重要程度,從而獲得相應的解決方案。
  3. 對多目標問題求解,令其達到帕累托最優狀態,在該狀態中會提供一個解決方案集,用戶能夠在此解決方案集中選擇一個解決方案。

多目標規劃問題的處理辦法

  根據上述的多目標規劃,經常使用的處理方法有三種,分別是:

  1. 按各目標的優先級,分層處理,每一層只處理一個目標。從最高優先級目標開始,找出該目標最優狀態下的解決方案集。再在此集合中找出次優先級目標的最優解方案子集。如此類推直到完成全部目標的尋優運算。 得到解決方案中,即爲該多目標規劃問題,目標分層的解決方案。
  2. 將多個目標桉權重轉化爲單一目標。根據各目標對應的業務因素的重要程度,設置相應目標的權重。經過權重的計算比例,來得到一個綜合了各個目標的、新的單一目標,再對此新產生的單一目標求極值,所得的解決方案做爲該問題的最優解決方案。
  3. 對問題進行優化,令其達到帕累托最優狀態。得到處於此狀態下的非劣最優解集,供用戶來決定最終選用的方案。關於帕累托最優相關的資料,你們能夠自行了解。通俗地講,由於多目標規劃問題中,各個目標是除了有輕重緩急外,還有方向性的,目標可表示爲一個向量。帕累托最優,表示對多目標規劃問題的各個目標求最優值,當達到這麼一個狀態:不存在對一個目標進一步改善,而不影響其它目標,即爲帕累托最優狀態。你們能夠設想,這種狀態下的解決方案不可能只有一個,而是一個解決方案集。

多目標規劃問題詳解

  下面,將對上述前兩種處理辦法進行詳細說明。因上述講到關於對多目標規劃問題進行優化,達到帕累託優化狀態,進而得到非劣解集。目前各個求解器暫時仍未有成熟的方案支持,本文暫不討論此方法。

  在求解多目標規劃問題時,關於求非劣解集的方法。因目前本人還沒有接觸過較成熟的、能夠對多目標規劃問題,求得非劣最優解集的引擎技術;所以,暫未有辦法對該方法展開討論。關於經過Optaplanner求非劣解集的方法,我曾請教過該項目負責人Geoffrey先生 ,他以爲以目前項目的狀態,若Optaplanner中添加此功能,須要修改的工做量至關大,暫時還未有關於此功能的具體開發計劃;除非該功能真正具體至關的價值。也這是各個求解器在多目標規劃方面相似的地方。由於多目標求解領域,目前在學界深刻研究相對非多目標規劃更少,相關的成果也沒有單目標規劃成熟。並且多目標規劃在必定程度及範圍內,確實是應該進行進一步加工,造成單目標規劃,即有相應的替代方案。所以,求非劣解集功能目前並不是各大求解器的主要發展方向。

將目標按優先級分塊層處理

  對多目標進行分層按優先級由高到低進行尋優。此方法可理解爲,對於問題中須要優化的目標,根據實際業務狀況,對其進行優先級劃分並從高到低排序。優先級高的目標,相對優先級低的目標,享有壓倒性的優先保證權。在保證對高優先級的目標達到最優的前提下,再去考慮次優先級目標的優化取值問題。即一個目標的優化範圍,是在其上一級目標優化解決方案子集內進行求解的。

  例如,在實際的智能生產計劃系統設計過程當中,存在三個目標,它們的優先級由高到低排列,分別是【保證交期】、【提升機臺利用率】和【下降成本】。那麼在對這個問題進行規劃求解時,第一步能夠不考慮【提升機臺利用率】和【下降成本】兩個目標,只對【保證交期】一目標進行首次優化。當【保證交期】目標處於相對最優狀態時,將存在【提升機臺利用率】與【下降成本】兩個目標取值不相同的解決方案集。下一步在將在此解決方案集的基礎上,求【提升機臺利用率】目標的相對最優的解決方案集;得到【提升機臺利用率】目標也爲最優的解決方案子集。再進一步求得【下降成本】目標的相對最優方案。那麼,最終獲得的方案,即爲按【保證交期】 -> 【提升機臺利用率】 ->【下降成本】遞減的相對最優方案。

  經過Optaplanner實現上述步驟時,只需將【保證交期】、提升機臺利用率】和【下降成本】三個目標設計對應的軟約束(你們應該知道爲何要定義爲軟約束),經過BendableScore評分機制,定義爲由高到低的三個層次便可。Optaplanner在求解時,將會按上述邏輯,根據不一樣層次的約束分數的優先次序,來求得相對最優解。

將多個目標轉化爲單一目標處理

  有些狀況下某些規劃問題,由於目標之間沒法劃分明確的優先級,所以,沒法對多目標進行分層來逐一求最優解。例如,在特定狀況下,有些目標優先級相對較高,但一樣的問題在另一種狀況下,它的優先級則相對較低。所以,沒法呈現出目標間優先級高低關係,也即沒法在規劃開始以前,就肯定各個目標的優先次序。

  可是,這種問題的不一樣目標的優先級,存在一種「由量變達成質變」的特性。一個目標沒法達成,須要被扣除約束分,當扣除分值達到必定量時,它會產生質的變化,會變成一個相對其它目標更爲重要的目標。仍是以生產計劃中的【保證交期】與【下降成本】兩個目標爲例。應該先對交期沒法保證時(即【保證交期】目標沒法達成),企業所承受的損失量化成貨幣價值。而生產成本也須要以貨幣價值體現。一般狀況下,爲了強制保證交期,可能須要付出相對更高的成本代價。當爲了保證一個訂單的交期而承受的成本價值,高於該訂單延期所遭受的損失貨幣價值時,【保證交期】目標的優先級,將會變得比【下降成本】目標的優先級更低了。這個時候咱們但願的是放棄【保證交期】目標,從而令計劃的總體成本獲得下降。

  要設計上述邏輯,從Optaplanner的實現方法來看,表面上是簡單的。咱們只須要肯定好交期的貨幣價值與成本的貨幣價值便可。當引擎在優化運算時,會根據各個可能解決方案的實際的交期和成本屬性,自行對比並選擇較優的解決方案。但看似簡單的設計邏輯,在實現起來卻很是具挑戰性,其難點在於如何分配這兩個目標的權重。這個就須要從業務上明確地甄別出各個目標之間的權重比例。並須要通過衆多實際數據、多輪的規劃進行反覆驗證,才能獲得相對最佳的權重比例。並且經過這種比例關係規劃出來的結果,很是不直觀,對結果的驗證也須要花費至關大的精力和時間。但這是一個相對最佳的處理多目標規劃的辦法之一。

總結:多目標規劃的本質

  儘管多目標規劃問題,令運籌優化問題變得更復雜,但它倒是現實世界中是無時無刻存在的。正是多目標規劃問題,才能真徹地反映現實世界的狀況。它反映的是事物的多樣性、衝突性和真實性。雖然單目標規劃問題相對容易解決,也能夠求得極佳的解決方案,但它只是現實世界的不多一部分,甚至是理論世界才存在的問題。僅能做爲運籌規劃的基本解決方法。真正須要解決的問題,仍是至關複雜的多目標規劃問題。這也是爲何APS技術在工程應用中實現難度大的最重要緣由之一。多目標規劃問題,不只對於專業的工程人員來講難以解決,對於普通用戶來講,對於APS輸出的解決方案的理解與分析,也存在至關大的挑戰,從而令不少用戶對APS難以接受,甚至而失去信心。

 

 

 如需瞭解更多關於Optaplanner的應用,請發電郵致:kentbill@gmail.com
或到討論組發表你的意見:https://groups.google.com/forum/#!forum/optaplanner-cn
如有須要可添加本人微信(13631823503)或QQ(12977379)實時溝通,但因本人平常工做繁忙,經過微信,QQ等工具可能沒法深刻溝通,較複雜的問題,建議以郵件或討論組方式提出。(討論組屬於google郵件列表,國內網絡可能較難訪問,需自行解決)

相關文章
相關標籤/搜索