作為首個全自主研發國產數學規劃求解器,時隔四個月,杉數科技發布全新的COPT 4.0。和COPT 3.0相比,此次發布不僅大幅提升了混合整數規劃MIP,線性規劃LP,和二次錐優化SOCP的求解速度,還新增了凸二次規劃QP和凸二次約束規劃QCP求解能力,添加了計算不可行模型最小沖突集IIS的功能。另外,為了回饋社區,此次發布也極大簡化了申請安裝流程。
COPT 4.0的測評速度提升
新版的COPT求解器分別在3類問題6個項目的測評中實現了大幅的性能提升,并新增了凸二次函數優化。具體數據總結如下表小結所示。
COPT 4.0版求解速度提升以及同行比較 (根據2022年2月17日測評數據)
杉數求解器COPT自從2019年5月首次公開發布起,一直長期占據線性規劃LP測評榜首的位置。其中單純形法Simplex求解器從2019年5月17日起至今32個月里,約70%的時間占據測評第一,占據著統治性地位。而線性規劃中相對更快更有優勢的Barrier方法,登上榜首以后更是只讓王冠外落過于Gurobi一次。
混合整數規劃的測評一共有三個項目,分別是MIPLIB 2017 Benchmark,PathologicalMIP和InfeasibleMIP。其中MIPLIB 2017 Benchmark共有240個算例構成,是核心的測試項目,反應混合整數規劃求解器的綜合實力。PathologicalMIP顧名思義是“不理智的、病態的”算例集,是一些特別難解的混合整數規劃問題。InfeasibleMIP是無可行解的問題集,考察的是求解器證明MIP問題不可行性的速度。
在混合整數規劃MIP這三個測試項目中,國外老牌求解器Gurobi依然處于領先的位置,COPT在三項測評中均為第二名。如上表所示,COPT 4.0較COPT 3.0在三個測試項目里均有顯著的性能提升。其中在MIPLIB 2017 Benchmark這個關鍵測試集上,和Gurobi相比,相對求解時間從4.92直接降至3.50,COPT的速度提升了41%。此外,兩小時內可解算例的數量也從176增加到185個。另外,相比于老牌求解器Xpress下榜前的最后一次記錄是可解180個問題,我們基本已經達到了跟他們一個水平線。也有一些學術界的朋友幫我們做了一次內測,實際對比我們求解時間大約為Xpress的1.8倍,也是首次與三大求解器的差距拉到了2倍之內,對我們來說這是一個有著最重要意義的進步。
COPT 4.0測評數據
此外COPT求解大規模二階錐規劃SOCP的性能較上一個版本提升了40%左右。目前較榜上第一名的Mosek還有21%的速度差距。面對差距,我們新的一年將繼續努力,下一版本我們的目標將會是世界第一!
COPT 4.0的新求解功能:凸QP和凸QCP求解器
在不斷提升已有求解器性能的同時,杉數求解器團隊不斷拓展求解器的能力范圍。COPT4.0新增了凸QP和凸QCP問題的求解能力。
其中二次規劃問題QP是指在目標函數內部有如x平方以及xy等二次項的這樣的問題。二次規劃問題最早在金融領域提出,用來做投資組合優化。二次約束規劃問題QCP則是在問題約束之內有二次項。若一個規劃問題,同時有二次約束以及二次目標函數,則稱之為二次約束二次規劃問題,英文簡稱為QCQP。
和線性規劃不同,求解QP、QCP以及QCQP等問題前需要檢查該問題是否為凸。如果為凸則可以使用內點法求解,如果非凸則為NP難問題,需要用到分支定界等算法求解。COPT 4.0新增的求解功能為凸QP、QCP和QCQP三項。雖然緊密相關,但其實背后的實現細節并不盡相同。
COPT 4.0 新增加QP和QCP求解器直取測評第一
COPT 4.0 的QP和QCP功能也提交給了第三方測評機構參與性能評測。由于QP和QCP兩者緊密相關,因此被共同放在一個名為Convex Continuous QPLIB的測評榜單之內。從測評結果看來,COPT 4.0不僅可以正確的在時限之內求解全部問題,其平均求解時間也是第一。值得指出的是,老牌廠商如Gurobi和Mosek均無法在2小時時間限制內正確求解全部問題,而同樣能解出全部問題的Knitro則平均速度較COPT慢50%以上,這充分說明了此項測評的難度。
COPT 4.0的新輔助功能:計算IIS
COPT 4.0版本添加了計算不可行模型最小沖突集(Irreducible Inconsistent Subsystem,簡稱IIS)的分析功能,支持線性規劃和混合整數規劃。
添加這項功能是因為在實際應用中,經常因為用戶建模的錯誤或給定輸入數據本身的沖突,導致構建的數學規劃模型無解。一般來說,由于實際模型規模較大且約束關系復雜,難以人工分析出導致模型無解的原因,因此需要借助計算機進行輔助分析。該功能允許用戶在給定的時間內找到一個導致模型不可行的極小沖突集,并且指明根本原因是哪些約束或變量的上/下邊界,用戶可以根據上述信息修改模型,最終使得模型可行。
例如下列寫成LP格式的線性規劃問題是一個不可行的問題(所有的變量X取值為非負)
盡管它只有8個變量,11個約束,但如果要手動找到不可行的原因,任然是一個很難的事情。使用COPT的IIS工具,則可以計算出它的IIS為:
進一步分析這個小問題,根據約束ROW1推知X4≤10000-0.8X3≤ 10000,根據ROW5推知X4≥ 87000+X2≥ 87000,這兩個矛盾的約束導致原始問題不可行。用戶最終可以選擇增大ROW1的10000或者減少ROW5的87000來修復不可行性。
注意,不可行模型可能存在多組IIS,COPT每次計算時只返回一組IIS,用戶可能需要根據返回的沖突原因多次修改模型與計算IIS。
COPT在實際使用中的效果
過去兩年COPT已經累積了上千個用戶,并且包括了30多家付費商業用戶,橫跨了制造,金融,供應鏈,能源,安防,交通等多個領域。
除了參與公開測評之外,COPT也不斷的從商業用戶的實際問題中獲得成長。這些用戶有一部分是本身因美國卡脖子等操作有國產化替代需求,提供給我們算例,我們做針對性的改進以確保在國產化替代時不損失求解性能。另一些則是抱著追趕和學習的態度,結果發現COPT在處理實際問題時,其求解效果在很多場合其實并不落后太多甚至優于國外廠商。
其中某ICT公司國產化替代需求非常緊迫,他們一項的排產排程項目需要求解大量的大規模線性規劃松弛問題。歷經兩年的時間建模求解完成后,又經過半年分別針對三類問題做了輕度的參數調整開發。在該公司內部平臺上測試,和Gurobi 9.0進行對比時,求解效果如下表所示:
某ICT公司三類LP算例規模和求解時間對比(求解時間單位:秒)
再如國網某省2020年的時候有一個水火電聯合安全約束機組組合優化問題,需要快速的求解MIP問題,客戶探索用COPT替代Cplex。由于MIP問題的內在難度,當時我們很難趕上Cplex多年的積累,可以看出直接求解時間Cplex可以在1-2分鐘完成,而COPT需要5倍左右的時間。為了不使國產化替代影響求解時間,我們積極探索改進模型,應用了機器學習進行提速改進。此項改進策略下,COPT大幅提升了求解速度,其中COPT在改進后的速度達到或者超過了原始的Cplex求解速度。
某省水火電聯合安全約束機組組合優化(求解時間單位:秒)
除了國產化替代等需求之外,也有一些其他的公司嘗試了COPT。例如某生活類電商巨頭近期對比COPT和他們的Gurobi在一些路線規劃求解問題上的整數規劃模型求解。從測試結果可以看出,COPT的速度和Gurobi相比非常接近,甚至在部分問題上更快。
某生活類電商巨頭公司混合整數規劃問題(求解時間單位:秒)
除了服務國內的客戶之外,我們也積極探索和國外的廠商合作,拓展國內外市場。老牌建模語言廠商AMPL、GAMS已經主動跟我們聯系,并且達成官方協議,由這些廠商官方接入COPT,并將COPT和建模語言打包銷售。此外我們和AIMMS、ODH等也在對方主動聯系后,展開了合作討論。其中一家合作方發來的,基于早期版本的郵件非常鼓舞我們(應要求隱去了合作方的名字)
某國外建模語言合作商測試COPT早期版本后發來的郵件
COPT 4.0的申請安裝流程極大簡化
根據此前申請、安裝COPT的一些反饋信息可知,要求用戶使用我們提供的工具,同時輸入用戶名稱,MAC地址、CPUID等硬件信息非常繁瑣。兩年來從我們1000多個累計用戶這里,我們也得到了巨大的幫助。深深感受到了國內外運籌從業人員與愛好者對COPT的支持和關注。
為了回饋社區,在準備新版的同時,我們也簡化了這一流程和延長了試用時間,用戶申請的時候只需提供用戶名稱,也就是計算機上的username這一項就足夠了。同時,我們延長了商業用戶試用期限至6個月時間,縮短了申請審核時間至2個工作日。將來會探索學術用戶申請試用自動發放的機制。此外我們還準備了安裝FAQ頁面,會收集整理申請、安裝中遇到的問題,及時更新。供大家參考。
求解器這項專業工具,和Office等辦公工具不同,它沒有一個自己的圖形界面。使用求解器一般是從各種編程語言中調用,或者使用命令行工具等。為此提升求解器的易用性,我們也專門提供了C、C++、C#、Python、Java、AMPL、GAMS、Pyomo、PuLP、CVXPY等十余種編程語言接口,以及大量的示例,方便用戶上手。