市面上的数学规划求解器都有哪些?
運籌學從形成到發展,在此過程中積累的大量理論和方法在國防、能源、制造、交通、金融、通信等各個領域發揮著越來越重要的作用。我們在生產生活中遇到的很多實際問題,都可以通過運籌學所涉及的優化方法對其進行數學建模,表示為數學問題,而為了解決這些數學問題,求解器應運而生。
優化求解器主要以工業軟件的形式,把數學規劃方法用于大規模復雜問題的優化求解,是解決各種數學規劃問題的核心工具,在實際生產生活中具有重要價值和意義。在工業領域,求解器作為產業鏈和供應鏈優化的核心引擎,能夠為復雜應用場景提供智能決策,助力企業決策優化,實現降本增效。
目前市面上的主流優化求解器主要分為商用求解器(比如Gurobi、IBM Cplex等)、開源求解器(比如SCIP等)兩大類。此外還有一些商業計算軟件比如Matlab,甚至是常用的Excel表格中都包含有求解器工具,可以求解部分規模較小的數學規劃問題,不過求解效率和商用求解器相比還是有一定差距。
除了上面提到的這些求解器,目前市面上還有哪些優化求解器可供選擇?各自又有哪些技術優勢,能夠支持哪些類型的數學規劃模型呢?接下來我們對市面上較常見的國內外優化求解器進行一下梳理總結!
PART1 商用求解器
1,Gurobi
Gurobi是由美國 Gurobi Optimization 公司開發新一代大規模求解器。在全球最著名的專業求解器評比網站 Decision Tree for Optimization Software (http://plato.asu.edu/bench.html) 中,Gurobi 展示出更快的求解速度和精度。Gurobi 全球用戶超過2600家,廣泛應用在金融、物流、制造、航空、石油石化、商業服務等多個領域。
技術優勢:
(1)可以求解大規模線性問題,二次型問題和混合整數線性和二次型問題
(2)支持非凸目標和非凸約束的二次優化
(3)支持多目標優化
(4)支持包括SUM, MAX, MIN, AND, OR等廣義約束和邏輯約束
(5)支持包括高階多項式、指數、三角函數等的廣義函數約束
(6)問題尺度只受限制于計算機內存容量,不對變量數量和約束數量有限制
(7)采用最新優化技術,充分利用多核處理器優勢。支持并行計算
(8)提供了方便輕巧的接口,支持 C++, Java, Python, .Net, Matlab 和R,內存消耗少
(9)支持多種平臺,包括 Windows, Linux, Mac OS X
支持模型:
(1)連續和混合整數線性問題
(2)凸目標或約束連續和混合整數二次問題
(3)非凸目標或約束連續和混合整數二次問題
(4)含有對數、指數、三角函數、高階多項式目標或約束,以及任何形式的分段約束的非線性問題
(5)含有絕對值、最大值、最小值、邏輯與或非目標或約束的非線性問題
支持接口語言:?C++, Java, Python, .Net, Matlab 和R
最新版本:9.5
官網:http://www.gurobi.com/(中國區:http://www.gurobi.cn/)
2, IBM CPLEX Optimizer
CPLEX歷史悠久,最初版本在1988年就被開發出來,1997年被ILOG公司收購,2009年納入IBM懷抱,如今已發展成為IBM決策優化系統IBM ILOG CPLEX Optimization Studio(簡稱COS)。作為COS系統中的關鍵組件,CPLEX Optimizer 為線性規劃、混合整數規劃、二次規劃和二次約束規劃問題提供靈活的高性能數學規劃求解器。 這些求解器包括用于混合整數規劃的分布式并行算法,支持利用多臺計算機來解決難題。
優勢特點:
(1)穩健的算法
CPLEX Optimizer 已經求解具有數百萬個約束和變量的優化模型
(2)CPLEX Optimization Studio 接口
使用 ILOG Concert Technology 和 CPLEX Callable Library 之類的接口,構建和部署優化應用。
(3)IBM ILOG CPLEX Optimizer 性能基準
(4)快速自動重新啟動
修改線性程序,然后重新求解,所用時間只有原始求解過程的一個零頭。 從眾多先前解決方案開始,混合整數規劃可以得到修改并求解。
支持模型:
專門用于求解大規模的線性規劃(LP)、二次規劃(QP)、帶約束的二次規劃(QCQP)、二階錐規劃(SOCP)等四類基本問題,以及相應的混合整數規劃(MIP)問題。
支持接口語言:?C, C++, Java, C# or Python APIs
最新版本:22.1
官網:https://www.ibm.com/cn-zh/analytics/cplex-optimizer
3, FICO Xpress
Xpress求解器是商業優化求解器,Xpress 包括通用非線性求解器 Xpress NonLinear,逐次線性規劃算法(SLP,一階方法)和Artelys Knitro(二階方法)。
Xpress 于 1983 年發布,是第一個在PC上運行的商業LP和MIP求解器。1992年,發布了并行計算的Xpress版本,五年后擴展到分布式計算。2008 年被FICO收購。Xpress 是第一個通過在 2010 年引入 64 位索引而跨越十億決策變量閾值的 MIP 求解器。自 2014 年以來,Xpress 首次實現了并行對偶單純形方法的商業實現。
Xpress 包括其建模語言 Xpress Mosel和集成開發環境 Xpress Workbench。Mosel 包含分布式計算功能,可并行解決優化問題的多個場景。輸入數據的不確定性可以通過穩健的優化方法來處理。
優勢特點:
(1)能解決決策變量數千萬的LP和MIP問題,以及決策變量數達數百萬的一般非線性問題。數以億計的非零問題系數在Xpress部署使用中很常見。
(2)支持開箱即用的多線程并行處理,利用多個CPU核心快速高效地解決客戶最棘手的問題。
(3)提供了一套全面的高性能非線性問題解決方案,使企業能夠快速、準確地解決更復雜的一般非線性問題。Xpress Nonlinear可以在幾分鐘的實際運行時間內解決實際業務中的數百萬決策變量問題。此外,Xpress Nonlinear可以解決黑盒優化問題,允許您以調用函數的形式將外部進程作為系數嵌入和建模。
支持模型:
線性規劃(LP)、混合整數線性規劃(MILP)、二次規劃(QP)、二次約束二次規劃(QCQP)、二階錐規劃(SOCP)、混合整數非線性規劃(MINLP)、混合整數二次規劃(MIQP)、混合整數二次約束二次規劃(MIQCQP)、混合整數二階錐規劃 (MISOCP)、一般非線性規劃(NLP),一般混合整數非線性規劃(MINLP)、約束規劃(CP)
支持接口語言:.NET、Java、C、C++、VB、Python、Matlab、Solver API、Mosel API、BCL
最新版本:8.5
官網:https://www.fico.com/en/products/fico-xpress-optimization
4,MOSEK
MOSEK是由丹麥MOSEK ApS公司開發的一款數學規劃求解器,也是公認的求解二次規劃、二階錐規劃和半正定規劃問題最快的求解器之一,廣泛應用于金融、保險、能源等領域。
優勢特點:
(1)提供優化服務器用于遠程優化。
(2)充分利用多核處理器硬件特點進行并行計算;
(3)可求解的問題規模僅受限制于計算機內存容量;
(4)領先世界的內點法實現,用于求解線性、二階錐和二次規劃問題;
(5)提供基于矩陣和Fusion的編程接口,包括C、C++、Python、Java、C#、MATLAB和R;
(6)支持多種建模環境,包括AMPL、GAMS和CVX等商業工具,CVXPY和JuMP等開源工具;
(7)支持多種操作系統,包括Windows、Linux和MacOS;
支持模型:
線性規劃(LP),二次約束凸規劃(QCQP),二階錐規劃(CQP,SOCP),半正定規劃(SDP),一般可分離凸規劃(SCP)和混合整數規劃(MIP)。
支持接口語言:C, C++, Java, MATLAB, .NET, Python, and R
最新版本:10.0.25
官網:https://www.mosek.com/
5,BARON
BARON(Branch And Reduce Optimization Navigator)是一種通用的非線性優化器,能夠將非凸優化問題求解到全局最優。決策變量可以是連續的、整數的或兩者的混合。BARON 已用于化學過程工業、制藥、能源生產、工程設計和資產管理等領域的應用。BARON 可在各種平臺上的AIMMS、AMPL和GAMS 建模語言下使用。BARON算法和軟件的開發已獲得 2004 年 INFORMS 計算協會獎和 2006 年 Beale-Orchard-Hays 獎的認可,以表彰其在數學優化協會的計算數學編程方面的卓越表現。
優勢特點:
(1)用于全局優化的高級分支定界,結合了約束傳播、區間分析和對偶性。
(2)對可能具有許多局部最優解的問題進行全局優化。
支持模型:
線性規劃(LP)、一般非線性規劃(NLP)、混合整數規劃(MIP)、一般混合整數非線性規劃(MINLP)
支持接口語言:支持所有主要接口,包括Python、Julia、MATLAB、AIMMS、AMPL、GAMS等。
最新版本:22.9.30
官網:https://www.minlp.com/baron-solver
6,Lingo
LINGO是Linear Interactive and General Optimizer的縮寫,即“交互式的線性和通用優化求解器”,由美國LINDO系統公司(Lindo System Inc.)推出的專門用于求解最優化問題的軟件包。其特色在于內置建模語言,提供許多常用函數方便使用者建立優化模型時調用,并提供與其他數據文件(如文本、EXCEL、數據庫等)的接口,易于方便地輸入、求解和分析大規模最優化問題。
優勢特點:
(1)方便的模型表達
內置建模語言允許您以一種易懂的直觀的方式來表達模型,更加容易構建模型,更容易維護。
(2)方便的數據選項
允許您直接與數據庫、電子表格程序交換數據來構建模型、生成報告。
(3)眾多的內置函數
自帶了眾多的函數,包含大量數學,財經,集合,概率密度,接口,報告等函數。
(4)方便的數據選項
能夠直接以多種方便的格式來管理您的數據。
(5)電子表格程序能力
直接鏈接到電子表格程序的能力允許您充分利用電子表格程序環境的功能和靈活性。
(6)數據庫能力
使用ODBC技術來允許您訪問在任何常用Windows數據庫應用程序中的集合信息和數據。
(7)強大的求解器
擁有一整套快速的、內建的求解器用來求解多種數學規劃問題,甚至不需要指定或啟動特定的求解器,LINGO會讀取您的方程式并自動選擇合適的求解器。
(8)交互式模型或創建Turn-key應用程序
對于開發交互式模型,LINGO提供了一整套建模環境來構建,求解和分析您的模型。對于構建turn-key解決方案,LINGO提供的可調用的DLL和OLE界面能夠從用戶自己寫的程序中被調用。LINGO也能夠從Excel宏或數據庫應用程序中被直接調用。
(9)詳盡的文檔和幫助
LINGO提供了所有的您需要快速啟動和運行的工具。您能得到一本LINGO User Manual,該手冊詳盡的描述了程序的命令和功能.同樣高級版本帶有一本更大的Optimization Modeling with LINGO手冊,這是一本綜合教科書,討論了所有主要的線性,整數和非線性優化問題分類.LINGO同時還帶有許多基于真實世界的案例可用來修改和擴展。
支持模型:
線性、非線性(凸和非凸/全局)、二次、二次約束、二階錐、半定、隨機和整數規劃。
支持接口語言:?C/C++, FORTRAN, Java, C#.NET,VB.NET, ASP.NET, Visual Basic, Delphi, Excel.
最新版本:20.0
官網:https://www.lindo.com/index.php/products/lingo-and-optimization-modeling
7,杉數COPT
杉數求解器COPT(Cardinal Optimizer),是杉數自主研發的針對大規模優化問題的高效數學規劃求解器套件,也是支撐杉數端到端供應鏈平臺的核心組件。COPT是目前同時具備大規模混合整數規劃、線性規劃(單純形法和內點法)、二階錐規劃、半定規劃以及凸二次規劃和凸二次約束規劃問題求解能力的綜合性能數學規劃求解器,為企業應對高性能求解的需求提供了更多選擇。
優勢特點:
(1)國產自主知識產權
在通信、能源、軍事、電網、航空等領域,出于保障國家重要數據安全的目的,具有自主知識產權的優化求解器和運籌優化算法平臺不僅具有極大的商業價值,更具有無可估量的社會價值。
(2)求解性能強大
2022年6月發布求解器COPT5.0版,COPT線性規劃性能已超越三大全球領導品牌,整數規劃性能也已位列前茅,新增半定規劃SDP模塊,具有強大的底層技術優勢。
(3)定制化求解加速
針對客戶大規模問題,進行方法和參數上的調整,和用其他求解器比,求解速度有10%~50%不同程度的提升。
(4)落地化解決方案
COPT線性及整數求解器已被應用于國家和企業的多個重要項目中,擁有豐富的落地場景。并可針對不同行業解決方案定制化,根據需求及實際情況,為客戶量身定制服務。
支持模型:
線性規劃、混合整數規劃、二階錐規劃、半定規劃、凸二次(約束)規劃
支持接口語言:C、C++、C#、Python、Julia、Java、AMPL、GAMS、Pyomo、PuLP、CVXPY等。
最新版本:5.0
官網:https://www.shanshu.ai/solver
8,阿里MindOPT
MindOpt是阿里達摩院決策智能實驗室自主研發的一款具備線性規劃等多種功能的數學規劃求解器套件。通過對大規模線性規劃的快速穩定求解,為客戶提供從數據到決策的全鏈路建模和求解能力。目前已應用于云計算等多項阿里業務,通過對彈性計算資源的調度優化,每年可為阿里云節約數億元成本。
優勢特點:
(1)高速優解:求解器運算快、求解質量優;
(2)適用類型廣:可求解的問題規模大、適用問題類型廣;
(3)授權方式靈活:可通過阿里賬號云端授權,在本地運行求解器。
支持模型:目前上線公測的是線性規劃、凸二次規劃、混合整數線性規劃。
支持接口語言:目前支持命令行和C、C++、Python、Java的API調用。
最新版本:0.21.0
官網:https://solver.damo.alibaba.com/htmlpages/page#/
9,華為天籌AI求解器OPTV
天籌(OptVerse)AI求解器將運籌學和AI相結合,突破業界運籌優化極限,針對線性和整數模型尋找最優解,以通用形式描述問題,高效計算最優方案,助力企業量化決策和精細化運營,提升資源利用率和運轉效率,增強決策水平和競爭力。
天籌(OptVerse)AI求解器已成功支撐華為供應能力及冗余分析等13個場景的模擬應用,計劃預案周期從周縮短到天,保障了高效的連續性作戰。
優勢特點:
(1)高效建模工具:基于圖建模算法,充分利用稀疏性與并行算力,建模效率最大可以提升30倍;
(2)高效、穩定、高質量:求解速度快、優度高、性能穩定,已在華為內部供應鏈問題上成功求解億級變量/約束超大規模數學模型;
(3)自適應學習優化:融合前沿AI能力,可根據問題特征自適應進行參數調優和求解策略選取,實現最大30%的求解效率提升;
(4)原生支持分布式加速求解:依托強大云上算力,支持超大規模分布式并行加速;
(5)全行業場景全流程決策支持:支持結合 ModelArts 平臺向用戶提供全流程決策優化能力;
(6)簡單易用,快速上手:支持云服務RESTful API、ModelArts notebook內置SDK的C++/python接口等多種開發和調用方式。
支持模型:混合整數線性規劃(MIP)、線性規劃(LP)
支持接口語言:云服務RESTful API、ModelArts notebook內置SDK的C++/python接口等
最新版本:0.2.6
官網:https://www.huaweicloud.com/product/modelarts/optverse.html
PART2 開源求解器
1,SCIP
SCIP是目前混合整數規劃(MIP)和混合整數非線性規劃(MINLP)最快的非商業求解器之一。SCIP也是一個用于約束整數規劃、分支定界以及分支定價的框架[CCZ1]?,主要由德國ZIB研究所開發。與大多數商業求解器不同,SCIP 允許用戶對求解過程進行完全控制,并允許用戶訪問求解器內部的詳細信息。[JJD2]
優勢特點:
(1)用于混合整數規劃的最快的非商業求解器之一
(2)支持Branch&Price
支持模型:混合整數(非線性)規劃
支持接口語言:C、C++、Java、Python、Matlab等
最新版本:8.0.2
官網:https://scipopt.org/
2,Coin-OR開源項目套件 CLP/CBC/CGL/SYMPHONY等
這里主要介紹下COIN-OR這個開源項目。
COIN-OR (Computational Infrastructure for Operations Research) 是運籌和優化圈維護開源基礎軟件和項目的著名基金會,是一個公益組織,維護著市面上幾乎所有的開源優化求解器,包括cbc, clp, ipopt, pyomo等數十種求解器和建模語言,并且使得它們之間的交互變得可能。可以說 COIN-OR 在開源求解器方面占有舉足輕重的位置。目前所有項目都托管在 GitHub 上(https://github.com/coin-or),僅一些原有的基礎設施(網站、wiki 和郵件列表)仍然托管在 Clemson 大學的服務器上。
COIN-OR 項目維護的諸多開源求解器和建模工具現在仍被全球數千個組織使用,其中值得注意的是Cbc、Clp、Ipopt這三個求解器在各自的領域中仍然處于十分領先的地位(線性規劃、混合整數規劃和非線性規劃)。
官網:https://www.coin-or.org/
3,LP_solve
LP_solve是一個混合整數線性規劃(MILP)求解器,來自sourceforge下的一個開源項目,是一個基于修正單純形法和分支定界法的免費線性(整數)規劃求解器,能夠求解純線性、(混合)整數/二進制、半連續和特殊有序集(SOS)模型。
支持模型:純線性、(混合)整數/二進制、半連續和特殊有序集(SOS)模型
支持接口語言:C/C++、Java、Delphi、Free Pascal、VB、VBScript、http://VB.NET、C#.NET
最新版本:5.5.2.11
官網:https://lpsolve.sourceforge.net/5.5/
4,GLPK
GLPK (GNU Linear Programming Kit,GNU線性編程工具)是GNU下的一個項目,用于建立大規模線性規劃LP和混合型整數規劃MIP問題,并對模型進行最優化求解。由于是GNU下的項目,因此沒有商業非商業的版本限制,可以自由使用。
最新版本:4.60
官網:https://www.gnu.org/software/glpk/glpk.html
5,谷歌 OR-Tools
OR-Tools是一款谷歌旗下的開源優化工具。支持線性規劃、整數規劃,可以方便的求解Routing、Bin packing、Network flows、Assignment、Scheduling等問題。
優勢特點:
(1)具有跨平臺性。OR-Tools的核心算法是用C++進行編寫的,這使其具有跨平臺性。此外,它同樣可以用于Python、Java或C#編譯過程。
(2)是面向不同問題的優化工具套件。OR-Tools集合了各種先進的優化算法,它所包含的求解器主要分為約束規劃、線性和整數規劃、車輛路徑規劃以及圖論算法這四個基本求解器,能夠按照優化問題的類型,提供相對應的不同類和接口。例如:對于最簡單的線性規劃問題,可以使用Linear Solver來解決。
(3)開源且開放。OR-Tools可以免費使用并且公開源代碼。此外,OR-Tools還支持第三方求解器,可接入CPLEX等商用求解器以及SCIP等開源求解器。
支持模型:線性規劃、整數規劃、約束規劃、混合整數規劃等
支持接口語言:java、c++、c#、python
最新版本:9.4
官網:https://developers.google.cn/optimization
6,中科院CMIP混合整數求解器
著名陳省身數學獎獲得者、馮康科學計算獎獲得者、中國科學院數學與系統科學院戴彧虹研究員帶領CMIP團隊從2015年開始,歷經30個月,終于自主研發了我國第一個具有國際水平的整數規劃求解器CMIP,并于2018年3月確定版本為CMIP 1.0版本。
CMIP代碼總量已經超過五萬行,涵蓋國際現有求解器預處理、啟發式、割平面、分支、節點選擇、區域傳播等各種功能模塊,并已經較好地具備了求解大規模整數規劃的能力。
優勢特點:
CMIP整數規劃求解器采用了一種廣義系數縮緊割平面(GCSC)的技術。該割平面技術由CMIP團隊自主提出,對于一般的整數規劃問題具有一定的改善效果,尤其對于網絡設計問題效果顯著。通過MIPLIB2010國際公認標準整數規劃測試庫的測試對比,CMIP求解器的性能已經超過傳統的求解器GLPK(俄國2000,Google Optimization Tools中的整數規劃求解器)以及LPSOLVE(芬蘭2004,GAMS高級建模系統調用其解決整數規劃問題)。
7,Leaves優化求解器
開源的LEAVES項目主要由上海財經大學的并行優化國際實驗室與杉數科技共同牽頭建設,主要聚焦于一些最新大規模一階和二階算法的探討。2017年公布了第一版的線性規劃求解器的源代碼,包括了內點法求解線性規劃的完整算法,這在開源求解器里是比較少見的,代碼基本可以通過Netlib的問題集測試。包括了完整的Presolve,LU分解,CrossOver等商業求解器的全流程。目前把求解變量限制在50萬以下,在Netlib上測試結果跟Gurobi相比差距還不錯。
PART3 其他軟件集成
1,MATLAB
MATLAB是一個包含大量數學函數庫的應用程序,每個數學函數都可以從用JavaScript編寫的腳本中調用。 MATLAB提供了多種面向不同問題的數學規劃求解器,適用問題規模較小。
用戶可以使用JavaScript編寫的稱為Solver類的簡單構造,在運行時從MATLAB調用任意數學函數。用于MATLAB的求解器類可以通過其API調用外部MATLAB工具,并將強大的數學函數直接鏈接到正在運行的仿真中。
官網:https://ww2.mathworks.cn/
2,SAS
SAS是由SAS Institute開發的一種統計軟件套件,用于數據管理、高級分析、多元分析、商業智能、刑事調查和預測性分析。SAS是一個軟件套件,可以挖掘、更改、管理和檢索來自各種來源的數據,并對其進行統計分析。SAS包含通用的線性規劃、混合整數規劃和非線性規劃的求解模塊。SAS為非技術用戶提供了圖形化的點擊式用戶界面,并通過SAS語言提供了更高級的選項。
官網:https://www.sas.com/en_us/home.html
3,SCIPy
SciPy 是一個開源的 Python 算法庫和數學工具包。Scipy 是基于 Numpy 的科學計算庫,用于數學、科學、工程學等領域,很多有一些高階抽象和物理模型需要使用 Scipy。SciPy 包含的模塊有最優化、線性代數、積分、插值、特殊函數、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算。
python科學計算生態棧中的頂級開源庫scipy提供了大量的數值優化求解器,尤其以optimize模塊最為顯著,其提供了統一的數值優化求解器接口minimize(),雖然方便使用,但是也對非數學專業的人員初次使用時帶來存選擇困難,尤其是十幾種方法統一由同一個接口調用,各方法使用限制、優缺點難以把握,
官網:https://scipy.org/
4,Excel
日常使用的office辦公套件中的Excel表格也包含一個稱為“求解器”的工具,能夠針對問題規模較小的線性規劃問題進行求解。Excel不會默認加載求解器工具,有需要的用戶要進行簡單的操作來實現:1,選擇”文件“,點擊”選項“;2在彈出的Excel選項框中點擊”加載項“,選擇”excel加載項“,點擊”轉到“;3,在彈出的加載宏對話框中勾選"規劃求解”,點擊“確定”;4,在數據選項卡中查看使用已添加的求解器solver工具。
國內外優化求解器還有很多,本文僅做了部分分類整理,如有錯誤和疏漏,還請大家留言指正。
內容來源聲明:本文由【ML OR 智能決策】整理,部分內容來源于官網及網絡分享,如有內容侵權,請聯系刪除!
(關注 ML OR 智能決策。分享更多干貨,歡迎交流~)
總結
以上是生活随笔為你收集整理的市面上的数学规划求解器都有哪些?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魅族16th系统更新服务器异常,魅族16
- 下一篇: Chrome中的GPU加速合成