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(COIN-OR 线性规划)是一套以 C++ 写的开放源码线性规划求解软件。因为采公用授权条款,所以可用于商业软件且不受GNU通用公众授权条款的任何影响。虽然可以做成执行档,CLP 主要作为程式库使用。它设计的像商业软件般可靠(也许速度没那么快),并且能够处理非常大型的问题。
CLP 是为解决线性规划的问题而设计的:
可以有上百万个变数跟限制条件。主要的算法为单纯形法。CLP 也用于 COIN-OR 的其他计划如 SYMPHONY, BCP(Branch Cut and Price), CBC (COIN-OR Branch and Cut)等。
CBC(COIN-OR beanch and cut)是一套以 C++ 写的开放源码混合整数规划求解软件。可独立执行或作为程式库(由AMPL, GAMS,MPL, AIMMS, 或 PuLP 呼叫使用)
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)管理、通讯管理都含在程式库内,使用者无须操心。执行程式可以有各种配置方式,从循序执行到有独立的切割产生器(cur generators)、切割池与线性规划求解之完全平行处理。目前分散式版本可在任何 PVM 支援的环境执行。相同的程式码也可用任何 OpenMP 相容的编译器编译为共享内存架构。
PuLP 是一套以 Python 写的线性规划建模软件。可以产生 MPS 或 LP 档案并呼叫 GLPK, CLP/CBC, CPLEX 以及 Gurobi 求解。