社會大學(xué)i
科普推廣運籌學(xué)一直以來是【運籌OR帷幄】平臺的初衷。本次我們邀請到了平臺優(yōu)化板塊的責(zé)編團隊的成員,結(jié)合各自獨特的業(yè)界工作體會,分享他們眼中在業(yè)界發(fā)光發(fā)熱的運籌學(xué)。
一、元器件行業(yè)中的運籌學(xué)
本人在一家做元器件服務(wù)的公司實習(xí),軍用元器件使用的時候有兩個典型場景:替代和統(tǒng)型。
替代是設(shè)計師針對進口元器件找到可替代的國產(chǎn)型號;統(tǒng)型是在一個產(chǎn)品的BOM內(nèi)確定某幾個不同元器件是否可以統(tǒng)一使用一種,以此減少元器件品種數(shù)。
目前行業(yè)內(nèi)開始從依賴專家經(jīng)驗(比如知道某個國產(chǎn)元器件就是對標(biāo)某個進口元器件做的),轉(zhuǎn)向從元器件性能參數(shù)的相似度出發(fā)進行判斷,所以涉及到相似度和聚類方法的應(yīng)用。
相比方法本身,解決問題的更大阻礙是元器件性能參數(shù)數(shù)據(jù)的復(fù)雜性和不規(guī)范性。例如不同類別的元器件性能參數(shù)不同,即使在同一類別下,不同生廠商給出的性能參數(shù)形式也不同,對此進行規(guī)范需要有元器件專業(yè)知識,所以實際中,數(shù)據(jù)清洗往往耗費最多人力,也是影響方法使用效果的一大因素。
二、電力行業(yè)中的運籌學(xué)
本人領(lǐng)域是電力系統(tǒng)最優(yōu)化,可能大家沒有察覺,但是現(xiàn)在中國的電力網(wǎng)絡(luò)毫無爭議的走在了世界的最前沿。強如美國,最近也又一次出現(xiàn)了大規(guī)模停電問題。(上次是1977年加州大停電)這次美國的停電持續(xù)了25個小時,約至少4萬人受到了影響,經(jīng)濟損失至少3000萬美金以上。但是中國自從普及用電后,從沒發(fā)生過如此大規(guī)模的停電問題。除了電力人的辛勤奮斗外,這也離不開運籌學(xué)在電力系統(tǒng)中的應(yīng)用。
眾所周知,我們現(xiàn)在的電力網(wǎng)是交流輸電網(wǎng)絡(luò)。交流輸電網(wǎng)絡(luò)中的參數(shù)遠比直流輸電網(wǎng)絡(luò)要復(fù)雜得多。最明顯的不同,在交流網(wǎng)絡(luò)中我們需要處理線路的有功功率無功功率。除此之外,線路的損耗、輸電節(jié)點的電壓和相角也是我們需要考慮的因素。為了保證整個電力系統(tǒng)的損耗最小,我們需要建立相關(guān)的數(shù)學(xué)模型進行分析計算,然后再由調(diào)度中心進行調(diào)控。但是實際問題的復(fù)雜程度遠遠超乎想象,單一個最優(yōu)潮流問題就是一個大規(guī)模非凸非線性的問題。為了求解這類問題,相關(guān)學(xué)者提出了諸多算法和理論。諸如:半正定規(guī)劃、現(xiàn)代內(nèi)點法、凸松弛技術(shù),模型近似技術(shù)等。這些理論已經(jīng)發(fā)展了數(shù)十年,但即便如此,也沒有一套成熟的理論被應(yīng)用到實際中。
在電力網(wǎng)中,我們不單要考慮線路損耗的降低,更重要的是要保證供電的可靠性。我們常常需要提前一天或數(shù)天對電力系統(tǒng)進行調(diào)度安排,這類問題往往是一個多層優(yōu)化問題,對于這類問題,我們常見的求解辦法是Benders分解和列生成。除此之外,我們需要不定期對線路檢修,發(fā)電廠的維護,而線路的通斷、發(fā)電廠的啟停在數(shù)學(xué)模型中又成了一個整數(shù)規(guī)劃問題。整體的求解難度又上升了一個層次。另外,在國家大規(guī)模倡導(dǎo)新能源接入的今天,風(fēng)電和光伏電站不斷被接入電力網(wǎng)絡(luò)中,而新能源不能得到普及的一個重要因素是我們不能準確預(yù)知新能源電廠在下一時刻能夠發(fā)出多少電能供我們使用。為了分析這類問題,我們的模型在混合整數(shù)非線性規(guī)劃上又需要考慮不確定因素帶來的影響。對這類問題的求解,我們又提出了隨機規(guī)劃、魯棒優(yōu)化、分布魯棒等。還有一點,我們的輸電線路可能會由于雷擊、樹枝接觸等導(dǎo)致出現(xiàn)輸送功率出現(xiàn)擾動。系統(tǒng)中的這些小擾動可能會對用戶供電的電壓和頻率產(chǎn)生波動,對于普通家庭來說可能影響不大,但是對于一些高精技術(shù)的產(chǎn)業(yè),一次電壓或頻率的波動就可能導(dǎo)致整個生產(chǎn)線的崩潰。如何建立相關(guān)的數(shù)學(xué)優(yōu)化模型來預(yù)防這一問題也是當(dāng)前的研究熱點之一。
最后,大家也十分熟知我們國家有一個西電東送的工程,這也是我認為最困難的一個點,我們國家的電力網(wǎng)絡(luò)是連在一起的,是一個十分龐大且復(fù)雜的系統(tǒng),而我們電力網(wǎng)絡(luò)是時時波動的,我們需要在秒級做出優(yōu)化,并給出方案。目前針對這種超大規(guī)模的含不確定性的多層混合整數(shù)非線性規(guī)劃問題,我們沒有辦法在有限的時間內(nèi)得到一個最優(yōu)解。
但即便困難重重,在一線的電力工作者仍在盡自己最大的努力來保證電力網(wǎng)絡(luò)的安全可靠運行,為中國電力點贊。
三、制造業(yè)中的運籌學(xué)
本人目前是某廠的算法工程師,參與過企業(yè)的排班,調(diào)度,決策優(yōu)化等場景的項目,主要想結(jié)合自己的經(jīng)歷和大家分享一下運籌優(yōu)化在企業(yè)中的一些應(yīng)用,主要包括任務(wù)規(guī)劃/排班和實時調(diào)度兩個方面,圍繞場景定義,方法論和實際中的困難三個點進行闡述。
1、任務(wù)規(guī)劃/排班
(1)場景定義
首先說一下什么是任務(wù)規(guī)劃,什么是排班。任務(wù)規(guī)劃是基于設(shè)定好的任務(wù)輸入,進行任務(wù)的排期規(guī)劃,以達到資源的有效利用和工作效率的提升。任務(wù)規(guī)劃主要用于傳統(tǒng)制造業(yè)/工廠排程,建筑工程規(guī)劃排程,物流運輸線路任務(wù)打包等場景。任務(wù)規(guī)劃后輸出給虛擬人或者其它虛擬資源創(chuàng)建的帶有時間窗的任務(wù)包,排班則基于這些任務(wù)包,把它對應(yīng)到實際的人或者其它真實車輛,機械等資源中,規(guī)劃出某些資源在什么時候做什么任務(wù)的結(jié)果,以及該任務(wù)需要消耗多少其它資源。
(2)方法論
主要的規(guī)劃方法也是傳統(tǒng)運籌優(yōu)化使用的方法。首先了解真實的業(yè)務(wù)場景,抽象業(yè)務(wù)規(guī)則和約束,搭建數(shù)學(xué)模型,運用規(guī)劃求解器(Cplex,Gurobi等)或者啟發(fā)式算法(Local Search,Iterative Forward Search等以及各種變種)進行求解。啟發(fā)式算法可以在現(xiàn)有的solver上進行基于不同場景的二次開發(fā),也可以自行開發(fā)。業(yè)界一般采用第一種方式。
(3)實際運用困難點
在實際場景中,給不同資源的排班會有很多實際因素要考慮。給人排班要考慮人的工作班次時長,人歷史的上班習(xí)慣(如習(xí)慣上晚班,晚班后不能接早班),人所擁有的技能,個人的偏好(偏好某個工種或者上班時間段),法律規(guī)定以及不同工廠因為地域有不同的差異,如香港是8小時工作制,而大陸班次時長可以是10小時等。當(dāng)我們處理實際問題的時候,先要梳理實際場景,總結(jié)管理規(guī)律,構(gòu)建多種配置參數(shù),進行建模。相比于排班來說,任務(wù)規(guī)劃因為是針對虛擬資源而構(gòu)建,所以可以不用考慮過多的資源屬性(如人習(xí)慣)等因素。
2、實時調(diào)度
(1)場景定義
基于實時數(shù)據(jù)輸入,進行任務(wù)的整合和任務(wù)的分配。主要的場景有:O2O外賣即時配送,打車軟件車輛實時調(diào)度,倉儲叉車/AGV,分揀中心分揀機器人實時調(diào)度等場景。實時調(diào)度的場景主要集中于新業(yè)務(wù),而非傳統(tǒng)的制造業(yè)和實體企業(yè)。傳統(tǒng)的制造業(yè)和實體企業(yè)驕傲于他們的規(guī)劃,而前面場景定義所提到的一些新業(yè)務(wù)場景,無法采用有效地長期規(guī)劃手段,更多地是依賴短期的預(yù)測和實時的規(guī)劃調(diào)度。
(2)方法論
上述提到的短期預(yù)測:如外賣下單到餐品完成的時間估計,車輛調(diào)度Supply和Demand的平衡,倉儲/分揀中心的任務(wù)需求預(yù)測等,一般基于不同場景搭建機器學(xué)習(xí)模型,或者各種深度學(xué)習(xí)模型的Ensemble進行訓(xùn)練和預(yù)測。
實時的規(guī)劃調(diào)度包括:如外賣下單后分給哪個外賣小哥,車輛訂單來了分給哪輛車,任務(wù)需求來了分給哪輛叉車,AGV或者機器人。主要的方法有:
● 短時間壓單后進行任務(wù)分配,以犧牲一定的最優(yōu)性而換來快速高效地計算,采用傳統(tǒng)并行的多個Tabu Search,Simulated Annealing等進行TSP或者VRP的計算。
● 強化學(xué)習(xí)/動態(tài)規(guī)劃方法。用收集的數(shù)據(jù)和規(guī)則搭建仿真環(huán)境,用強化學(xué)習(xí)構(gòu)建任務(wù)需求(訂單或者生產(chǎn)入庫需求等)與資源(車輛,外賣效果,叉車等)的匹配價值(Value),然后分配計算。
(3)實際運用困難點
● 大規(guī)模訂單/任務(wù)需求的計算,需要一定的計算資源支持,以及犧牲算法的優(yōu)化性來實現(xiàn)快速計算。
● 實時數(shù)據(jù)的采集。有些數(shù)據(jù)無法直接有效地采集,比如真實商家做餐時間。
● 如果要搭建仿真環(huán)境,也需要了解和抽象實際的業(yè)務(wù)規(guī)則。
3、關(guān)于運籌學(xué)在業(yè)界應(yīng)用的思考
我在某公司實習(xí)了三個月,主要做的是生產(chǎn)計劃。生產(chǎn)計劃也是屬于供應(yīng)鏈的一個環(huán)節(jié),與調(diào)度相比生產(chǎn)計劃的制定要更加宏觀一些。生產(chǎn)計劃就是決策什么時間,在哪家廠/哪條生產(chǎn)線上,加工多少工件。生產(chǎn)計劃的問題廣泛的存在于制造業(yè)中,舉個例子就是是手機的制造,一部手機有上千個零件構(gòu)成,每個零件都在指定的供應(yīng)商處生產(chǎn),例如手機屏幕,手機攝像頭,手機電池,手機充電器每個零件都由不同的生產(chǎn)廠來生產(chǎn),然后將這些零件運送到最終的組裝廠拼裝成一臺成品的手機。如何合理的安排每個廠在什么時候該生產(chǎn)多少零件是一個需要決策的重要問題。這個問題的核心在于要考慮盡量滿足訂單的需求要降低庫存水位(或者是庫存的周轉(zhuǎn)率),同時要考慮到物料的約束,產(chǎn)能的約束,運輸?shù)募s束等等因素。
在小規(guī)模的排產(chǎn)問題中人工調(diào)度員還能應(yīng)對,一旦生產(chǎn)規(guī)模變大,生產(chǎn)工藝復(fù)雜之后,人工調(diào)度的弊病會逐漸凸顯出來。目前國內(nèi)有意識去做供應(yīng)鏈的決策模型與算法的并不多,據(jù)我所知其中比較有代表性的是杉數(shù)科技。
杉數(shù)科技智能計劃排程系統(tǒng)致力于為制造業(yè)及其上下游產(chǎn)業(yè)提供全鏈條技術(shù)服務(wù),利用運籌學(xué)與機器學(xué)習(xí)將實際問題轉(zhuǎn)化為數(shù)學(xué)模型求解,實現(xiàn)最優(yōu)化的排程。個人認為,杉數(shù)科技在運籌學(xué)應(yīng)用于制造業(yè)領(lǐng)域做了很好的探索,在很大程度上解決了如何用更少的人,更短的時間,生產(chǎn)更多的產(chǎn)品問題。
上面提到的生產(chǎn)計劃問題本質(zhì)上是一個混合整數(shù)規(guī)劃問題,零件的個數(shù)就是一個整數(shù)變量,而生產(chǎn)這些零件的物料可能是整數(shù)的也可能是連續(xù)變量,因此該問題構(gòu)成了一個混合整數(shù)規(guī)劃問題。解決方案無非以下兩種:
● 采用經(jīng)典的混合整數(shù)規(guī)劃的方法,先對原混合整數(shù)規(guī)劃進行分解和重新建模,例如拉格朗日松弛,Benders 分解或者列生成等等方法,子問題的求解可以采用Gurobi或Cplex這些商用求解器。
● 針對問題特性設(shè)計元啟發(fā)式算法,啟發(fā)式算法。
實際運用困難點
我想談?wù)劵旌险麛?shù)規(guī)劃在業(yè)界應(yīng)用的gap到底在哪里,當(dāng)然說大一點的話也是探討運籌學(xué)在業(yè)應(yīng)用的gap。
(1 )實際應(yīng)用問題往往是大規(guī)模的
實際的生產(chǎn)問題往往是大規(guī)模的,例如我實習(xí)時所面臨的實際問題其決策變量維數(shù)都達到上億級別,業(yè)務(wù)部門要求是2小時之內(nèi)給出結(jié)果,這對算法的效率實際上提出了非常大的挑戰(zhàn)。即使是求解上億規(guī)模的線性規(guī)劃問題耗時都比較巨大,更不用說是整數(shù)規(guī)劃問題了。我們經(jīng)常說線性規(guī)劃簡單,哈哈,但是從實際應(yīng)用的角度來看目前求解線性規(guī)劃的速度在一些場景上還是不能滿足我們實際應(yīng)用的需求的。
目前在學(xué)術(shù)界大家很多情況下都是在小規(guī)模問題上自娛自樂玩一下,所以真正在公司的話,大規(guī)模的問題非常非常普遍。舉個例子就是讀運籌學(xué)的PhD的時候是學(xué)會在游泳池里游泳,真正在公司里邊面對的問題可能就是得在大海里邊游。這其實還是比較好的狀況,更差的情況是一些童鞋可能在學(xué)校里只是學(xué)會了在浴缸里游泳而已。
(2) 實際數(shù)據(jù)往往都是病態(tài)的
實際問題的數(shù)據(jù)往往都是病態(tài)的,例如我在公司遇到的問題就是病態(tài)問題,具體來說就是優(yōu)化問題約束或者目標(biāo)函數(shù)的系數(shù)數(shù)量級的差別過大,導(dǎo)致求解過程的病態(tài),實際問題的數(shù)據(jù)往往是千差萬別和稀奇古怪的,數(shù)量級的差異經(jīng)常超過10E20以上。這一點在學(xué)術(shù)界研究的相對較少一點,因為學(xué)術(shù)界研究的問題都比較理想化,即使有從實際中抽象一些原型出來,但是已經(jīng)把病態(tài)啊這些問題都基本過濾掉了,但是在實際中你就發(fā)現(xiàn)病態(tài)問題太多了。
(3) 業(yè)務(wù)人員沒有優(yōu)化的意識,運籌優(yōu)化的人缺乏業(yè)務(wù)知識,溝通成本非常高
業(yè)務(wù)人員沒有優(yōu)化的意識,很多時候他們不清楚運籌優(yōu)化能做什么,甚至當(dāng)運籌優(yōu)化的算法工程師問題業(yè)務(wù)人員你們有什么要求沒(約束條件),你們有什么量化的指標(biāo)要越大越好或者越小越好(目標(biāo)函數(shù)),業(yè)務(wù)人員很多時候也不能很清晰量化的描述出來這些東西,還有很多時候業(yè)務(wù)人員嘴巴上告訴你的目標(biāo)函數(shù)和心里想的不一致。就相當(dāng)于你是一個大廚,什么線性規(guī)劃,拉格朗日松弛,列生成,半定規(guī)劃,魯棒優(yōu)化這些菜你都會做,結(jié)果來一個顧客說他不知道吃點啥。
運籌學(xué)的理論的應(yīng)用必然還是要有一個實際的背景問題,而不同的問題所處的行業(yè)不一樣,每個行業(yè)都有自己的習(xí)慣自己的一套語言和模式,例如航空業(yè)就有很多專業(yè)術(shù)語,如果做航空優(yōu)化的話,那么就要求運籌優(yōu)化的算法工程師要具備一定的業(yè)務(wù)基礎(chǔ),否則你是無法和業(yè)務(wù)人員交流的,人家說話你都聽不懂,1次2次不懂你可以問,十次八次不懂的話,人家就不愛和你說話了。而且運籌優(yōu)化算法工程師一般都是作為乙方出現(xiàn)的,很多時候還必須是我們得放低姿態(tài)的去主動的接觸業(yè)務(wù)學(xué)習(xí)業(yè)務(wù)才行啊,否則項目就很難進行下去。
(4) 測試困難,如何驗證優(yōu)化算法求解結(jié)果的正確性
好不容易,經(jīng)過了重重阻礙,克服千難萬險,我們的優(yōu)化算法出爐了,我們可以得到一個結(jié)果。如何驗證這個結(jié)果是正確的呢?其實非常抱歉的告訴你,基本沒啥靠譜的方法去驗證?,F(xiàn)在在公司普遍的作法是兩種,1是人為的構(gòu)造一些類似benchmark的東西,這些東西的最優(yōu)解比較顯而易見,通過這些benchmark來檢測算法的正確性;2是參考以前人工的經(jīng)驗來看,算法給出的解是不是合理,例如要是做一個調(diào)度算法呢,就找?guī)讉€有經(jīng)驗的調(diào)度員來看這個算法是不是接近以前人工調(diào)度的結(jié)果,如果接近那就認為OK了。很顯然這兩種方法有很多的不足,第一種方法只能適用問題特別簡單的時候,問題稍微復(fù)雜一點,規(guī)模大點benchmark就很難構(gòu)造了,第二種方法雖然適用面更寬一些,但是問題也很明顯,那就是以前人工調(diào)度的結(jié)果很難說是比較好的結(jié)果,那這個結(jié)果去和算法做對比本來參考系就有問題。
四、電商行業(yè)中的運籌學(xué)
本人目前在某電商供應(yīng)鏈計劃部門實習(xí),該電商平臺有八個事業(yè)部,每個事業(yè)部每天都有一定量級的產(chǎn)品上新、下架。目前平臺上八大事業(yè)部的總商品數(shù)量量級是十萬,對接不到2000家供應(yīng)商。我所在職位的主要工作內(nèi)容是,根據(jù)歷史銷量進行各個產(chǎn)品的需求量預(yù)測,由于產(chǎn)品發(fā)貨渠道有商家自發(fā)貨和平臺發(fā)貨兩種渠道,選擇平臺發(fā)貨的廠商需要結(jié)合產(chǎn)品的生產(chǎn)周期,并且按照與平臺約定的補貨周期將貨物運到平臺的自有倉庫。
因此對于平臺供應(yīng)鏈計劃部門來說,需要根據(jù)貨物現(xiàn)有庫存,結(jié)合日均銷量預(yù)測(分大促日銷和平常日銷兩種)實現(xiàn)補貨量和補貨時間點預(yù)測自動化,倉庫效益最大化。將預(yù)測信息反饋到計劃員和事業(yè)部同事進行產(chǎn)品調(diào)整。存在的難題有很多,比如對于新品的日銷需求預(yù)測?長期在架產(chǎn)品的需求預(yù)測及庫存管理實現(xiàn)效益最大化?當(dāng)某產(chǎn)品的補貨周期是一個月時,涵蓋了大促時期和平銷時期,如何庫存管理和日銷量預(yù)測,以實現(xiàn)倉庫效益最大化,平臺收益最大,且盡可能縮短斷貨時長?而這些都是運籌學(xué)和優(yōu)化問題。
五、機器學(xué)習(xí)行業(yè)中的運籌學(xué)
本人最近在BAT(之一)的北美研究院實習(xí),研究院本身的運作模式算是和本地業(yè)務(wù)團隊稍有不同,成員多為國內(nèi)外名校畢業(yè)的計算機、統(tǒng)計、數(shù)學(xué)、運籌學(xué)等專業(yè)的博士。除了寫paper之外,團隊也需要做能“落地”的業(yè)務(wù)支持項目(通常和國內(nèi)的業(yè)務(wù)部門合作):如在線視頻網(wǎng)站的推薦算法、二手商品平臺的定價算法、新零售門店的多渠道庫存控制算法等。
這些問題首先的一個共性是:海量的數(shù)據(jù)規(guī)模。這些問題對應(yīng)的業(yè)務(wù)部門都有專門的數(shù)據(jù)團隊,每天在公司內(nèi)部的數(shù)據(jù)倉庫會定時更新當(dāng)日的數(shù)據(jù)(每日的數(shù)據(jù)量級都是上百TB)。因此,要在此基礎(chǔ)之上,設(shè)計實用的優(yōu)化算法,實際上對經(jīng)典的運籌學(xué)模型和優(yōu)化算法來說,也是巨大的挑戰(zhàn)。
因此,在目前我注意到的這些業(yè)界的實際“優(yōu)化”業(yè)務(wù)中,機器學(xué)習(xí)方法和運籌學(xué)模型基本上是要一起使用的。更具體的來說,業(yè)界更需要的是“數(shù)據(jù)驅(qū)動”的決策模型。比如,現(xiàn)有的機器學(xué)習(xí)、深度學(xué)習(xí)方法帶給我們良好的預(yù)測模型,而所謂的決策模型/優(yōu)化模型便往往可以基于這些預(yù)測模型之上。當(dāng)然,最理想的狀態(tài)是能夠?qū)㈩A(yù)測和決策這兩個看似分離的步驟結(jié)合起來,即,動態(tài)地基于預(yù)測調(diào)整決策,再通過現(xiàn)階段的決策調(diào)整之后的預(yù)測。關(guān)于這點,目前學(xué)術(shù)界有了很多不錯的理論,但距離工業(yè)界的實際“落地”還是有距離的。這或許便是業(yè)界當(dāng)中機器學(xué)習(xí)和運籌學(xué)的未來吧。
小優(yōu)雅0811
計算機專業(yè)。當(dāng)運籌優(yōu)化算法工程師需要計算機專業(yè)研究生畢業(yè)可以當(dāng),主要工作是建立優(yōu)化模型和設(shè)計優(yōu)化求解算法工作難度較大需要研究生學(xué)歷。
優(yōu)質(zhì)工程師考試問答知識庫