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