COIN-OR

维基百科,自由的百科全书
COIN-OR
成立时间2000
网站http://www.coin-or.org

COIN-OR作业研究(Operations Research)计算基础架构(Computational Infrastructure)的缩写,这是一个致力于"为公开文献上数学理论之数学软件而建立(create for mathematical software what the open literature is for mathematical theory)"的专案。公开文献(例如研究期刊)提供作业研究社群文件的审查与保存。作业研究期刊上的数学理论,论文里经常有计算案例的数值结果。产生这些数值结果所开发的软件、模型与资料通常并未公开。这会阻碍需要重现计算结果、进行公平比较,以求精益求精的研究人员。

Linux, Apache与其他专案的成功推动软件开发的开源模式。一群IBM研究人员提议以类似开放源码方式"发布"软件、模型与资料。COIN-OR被认为是在作业研究计算社群推动开放源码的一项倡议,并提供开源软件专案营运所需的线上资源与服务。

COIN-OR网站于2000年与乔治亚州亚特兰大市第17届数学程式设计国际研讨会一起开张时带有实验性质。2007年时COIN-OR有25个专案,包括线性规划(linear programming 如 COIN-OR CLP),非线性规划(nonlinear programming 如 IPOPT),整数规划(integer programming 如 CBC, Bcp 与 COIN-OR SYMPHONY), 代数建模语言(algebraic modeling languages 如 Coopr)等工具。COIN-OR由作业研究与管理科学协会(Institute for Operations Research and the Management Sciences, INFORMS)主持,并由教育性,非营利的COIN-OR基金会营运。

专案[编辑]

CLP[编辑]

CLP(COIN-OR 线性规划)是一套以 C++ 写的开放源码线性规划求解软件。 因为采公用授权条款,所以可用于商业软件且不受GNU通用公众授权条款的任何影响。 虽然可以做成执行档,CLP 主要作为程式库使用。 它设计的像商业软件般可靠(也许速度没那么快),并且能够处理非常大型的问题。

CLP 是为解决线性规划的问题而设计的:

求最小值
  • 限制条件
  • 值大于零的变数

可以有上百万个变数跟限制条件。主要的算法为单纯形法。 CLP 也用于 COIN-OR 的其他计划如 SYMPHONY, BCP(Branch Cut and Price), CBC (COIN-OR Branch and Cut)等。

CBC[编辑]

CBC(COIN-OR branch and cut)是一套以 C++ 写的开放源码混合整数规划求解软件。 可独立执行或作为程式库(由AMPL[原生支援], GAMS[利用 COIN-OR 最佳化服务(Optimization Services, OS)以及 GAMSlinks 专案], MPL[借由 CoinMP 专案], AIMMS[借由 AIMMSlinks 专案], 或 PuLP 呼叫使用)

SYMPHONY[编辑]

SYMPHONY页面存档备份,存于互联网档案馆)(单工或多工最佳化网络求解)是一套在异质网络上求解混合整数规划(MIPs), 开放源码之分枝切面法(branch and cut)框架-并且可以使用 CLP, CPLEX, XPRESS 或其他线性规划求解软件求解线性问题。

SYMPHONY 是一套同时实作循序(sequential)及平行(parallel)处理分枝切面与定价(branch, cut, and price)以求解 MILPs 的程式库。 分枝切面与定价法类似分支界限法(branch and bound),但还包括切面法(Cutting-plane methods)与定价(pricing)算法。 借由提供特定的副程式以读取自订资料档、生成特定切割平面或应用自订分枝规则,使用者可以任意自订客制化的分枝与切面算法。 算法大部分的元件,如搜寻树管理、线性规划方案管理、切割池(cut pool)管理、通讯管理都含在程式库内,使用者无须操心。 执行程式可以有各种配置方式,从循序执行到有独立的切割产生器(cut generators)、切割池与线性规划求解之完全平行处理。 目前分散式版本可在任何 PVM 支援的环境执行。相同的程式码也可用任何 OpenMP 相容的编译器编译为共享内存架构。

PuLP[编辑]

PuLP页面存档备份,存于互联网档案馆) 是一套以 Python 写的线性规划建模软件。可以产生 MPS 或 LP 档案并呼叫 GLPK, CLP/CBC, CPLEX 以及 Gurobi 求解。