独立建模语言和系统 AIMMS(通过 AIMMSlinks公司 项目), AMPL(本地), 化学发光二极管 , GAMS(通过 GAMS链接 项目), Mathematica、, Matlab公司( https://inverteproblem.co.nz/OPTI/ ) 迷你锌 , MPL(通过 硬币MP 项目), R(右)( https://rdrr.io/github/yuehmeir2/myFormAssembler/man/cbc.html )
基于Python的建模语言和扩展 其他语言的扩展 JuMP公司 (朱莉娅), rust-lp建模器 (生锈) 良好_ lp (生锈)
电子表格扩展
-
Linux操作系统 (请参见 https://repology.org/project/coin-or-cbc/versions 完整列表): 拱门: $sudo pacman-S coin或-cbc Debian/Ubuntu: $sudo apt-get安装coinor-cbc-coinor-libcbc-dev Fedora/Redhat/CentOS: $sudo-yum-install-coin-or-Cbc-coin-or-Cbc-devel 免费bsd: $sudo-pkg安装数学/cbc linuxbrew公司: $brew安装cbc
-
窗户 :在Windows上获取Cbc的最简单方法是按上述方式下载存档。 -
Mac OS X :在Mac OS X上获取Cbc的最简单方法是通过 自制啤酒 . $brew tap coin-or-tools/coinor $brew安装coin-or-tools/coinor/cbc -
康达 (跨平台,暂时没有Windows): $conda安装硬币或cbc
wget公司 https://raw.githubusercontent.com/coin-or/coinbrew/master/coinbew chmod u+x造币厂 ./coinbrew获取 Cbc@主机 ./coinbrew构建Cbc
下载源代码,例如通过克隆git repo https://github.com/coin-or/Cbc 下载并安装中列出的依赖项的源代码 配置.yml 按如下方式构建代码(确保设置PKG_CONFIG_PTH以安装依赖项的目录)。
./configure-C 制作 进行测试 进行安装
一个包含所有必要项目(libCbc、libClp、libCbcSolver、, libCgl、libCoinUtils、libOsi、libOsiCbc和libOsiClp)。 项目文件可以 被发现在 MSVisual工作室 文件夹。
-
对于每个lib*项目,请执行以下操作: 添加 CBC_螺纹 在属性->配置属性->C/C++->下 预处理器->预处理器定义(lib*项目的一个子集可能 足够了,但这样做对所有人都没有坏处) -
链接到pthreads库。 PThreadsWin32 工作(即使在 64位系统),并在LGPL下分发。 如果您决定使用 预编译的二进制文件:pthreadVC2和pthreadVS2似乎都可以工作。 否则:可以在上找到pthreads4win的第三方VS项目文件 github。 注意:如果使用C++/Cli,请确保没有回调(eventHandlers、custom 切割生成器、自定义启发…) 包含托管代码。 否则 您的代码将在运行时崩溃,AssembyNotFoundExceptions位于 由Cbc创建的本机线程。 即使没有,GC的问题是 很可能。 -
如果静态链接pthreads4win,则必须定义 PTW32_STATIC_LIB在构建程序/Cbc时(例如,通过属性-> C/C++/预处理器->预处理器定义)AND-仅当您构建 pthreads自己&在构建pthread时。 动态链接pthreads 无需额外的预处理器定义即可工作。 -
通过 -线程yourNumber 到 Cbc电源1
-
3.0版(准备中) 增加了MIP启动文件不完整的可能性。 文件名后缀指示Cbc应选择的值 缺少变量(请参见更改r2549) 对构建系统进行了较大的更新,并更改了目录结构。 因此,Cbc的整体构建,它使用 在一次configure和make运行中,它的所有依赖项不再是 可能。 依赖项现在应该先生成并安装 建筑Cbc。 删除了svn:externals。 依赖项(CoinUtils、Osi、Clp、Cgl等) 现在需要提前手动或 通过使用coinbrew。 使用GCC兼容编译器时,Cbc接口 函数现在用声明 可见性(默认) -属性, 从而使用 -fvisibility=隐藏 仍然会生成 可用库。 使用与MSVC兼容的编译器时,Cbc接口函数 现在声明为 dlimport公司 -属性,以便Cbc C++DLL 可以使用。 在Windows/Msys2下,DLL现在默认是构建的。 不再支持Cygwin和MSys1。 pkg-config现在是必需的。 在Windows上,确保使用 生成Unix样式路径的pkg-config版本。 *_加法器 文件已被删除,应改用pkg-config。 脚本 编译 现在用于包装cl/icl/ifort的调用 并将GCC样式的编译器标志转换为MSVC样式。 头文件现在安装在名称更好的 $prefix/include/coin-or 而不是 $前缀/包含/硬币 . 的默认值 --前缀 不再是构建目录,但 autotools可能是默认的 /usr/本地 . --启用调试 并不意味着 --禁用共享 不再。 远离的 --enable-debug-cbc ,使用 --启用调试 而不是。 删除了配置变量OPT/DBG_C/CXXFLAGS。 请改用C/CXFLAGS。 默认情况下,静默生成输出现在已启用,请使用configure 旗帜 --禁用silent规则 或拨打make V=1 禁用。 对于静态构建,PIC对象现在默认生成, 使用 --没有pic 禁用。 这个 --带-*-incdir 和 --带-*-lib 配置标志已经 替换为相应的 --带-*-cflags 和 --带-*-lflags 旗帜。 注意,需要指定include目录 通过 -我<目录> 在里面 --带-*-cflags .
--启用cbc并行 现在,如果pthread库 找到。 使用 --禁用cbc并行 禁用。 添加了冲突图基础结构和基于冲突的例程: Cgl客户关系强化 :应用于设置包装约束的预处理例程。 CglBK集团 :基于改进版Bron-Kerbosch算法的团割分离器。 CglOddWheel(奇数轮) :带提升程序的奇数循环分离器。 命令行中的新参数: cgraph(cgraph) :设置基于冲突图形的例程(CglBKClique、CglOddWheel和CliqueStrenging)的使用-“off”=关闭这些例程,“on”=打开这些例程,”clq“=关闭这些例行程序并启用CglClique的剪切分隔符-default=“on” 化学发光二极管 :设置基于团强化(CglCliqueStrenging)的预处理例程的使用-“off”=关闭此例程,“before”=在初始解算之前执行团强化,“after”=在初次解算之后执行团强化-默认值=“after“。 集团 :设置CglBKClique的使用(on、root、ifmove、forceOn、onglobal)-default=“ifmove”。 比沃特 :CglBKClique中Bron-Kerbosch算法使用的枢轴策略-0=关闭,1=随机,2=度,3=权重,4=修改度,5=修改权重,6=修改度+修改权重-默认值=3。 bkmaxcalls公司 :CglBKClique中Bron-Kerbosch算法可以进行的最大递归调用数-默认值=1000。 bkclqext(bkclq文本) :用于扩展CglBKClique发现的违规派系的策略-0=关闭,1=随机,2=度,3=修改度,4=降低成本(成反比),5=减少成本(成反比)+修改度-默认值=4。 奇数轮 :设置CglOddWheel的使用(on、root、ifmove、forceOn、onglobal)-default=ifmove。 奥德韦克斯 :用于搜索CglOddWheel找到的切割的车轮中心的策略-0=关闭,1=一个变量,2=集团-默认值=2。
CglClique被CglBKClique替换为CbcSolver.cpp中的默认团分隔符。
-
版本2.10.10 修复了将私有符号意外引入公共头的问题。
-
版本2.10.9 对称处理的改进。 推出的维护版本会累积补丁。
-
版本2.10.8 由于Github Actions配置错误而重新生成二进制文件 合并新版本的Cgl。
-
版本2.10.7 修复一个错误,如果 MIPLIB3项目不存在
-
版本2.10.6 与构建、测试和CI相关的累积修复。
-
版本2.10.5 恢复在达到时限时停止Clp的修复,因为这会导致 所有清理工作都会在没有适当修整的情况下停止 给出错误的结果
-
版本2.10.4 允许从stdin读取.lp文件。 修复AMPL接口可选参数的解析。 更多错误修复。
-
版本2.10.3 改进一些原始启发式的性能,包括可行性泵, 通过使整数松弛连续 增加了额外的时限检查 修复了Cbc_clone结果的初始化 其他错误修复
-
版本2.10.2 错误修复程序
-
版本2.10.1 修复了C接口中的Cbc_clone 修复了examples/driver3.cpp中的CbcMain1()调用 修复了预解决添加变量时MIPstart可能出现的问题 更多小错误修复
-
版本2.10.0 改进了SOS、起点和对称性的处理 关于处理 隐式整数变量 使用多线程求解时,Mini-B&B现在被禁用 将零半切割参数的默认值从off更改为ifmove 将CbcModel::postProcessedSolver()添加到预解后获得的LP 新选项 前缀名称 指示列名是否应 保存在预处理模型中 新选项 sosPrioritize(排序) 确定如何确定SOS的优先级 添加了新事件 生成的切割 CbcSolver现在可以读取压缩的.lp文件(GZIP、BZIP2) C接口中的新函数:Cbc_readLp、Cbc_writeLp、, Cbc_addCol、Cbc_aaddRow、Cbc_getNumIntegers、Cbc_ bestSolution、, Cbc_getObjValue、Cbc_get行Nz、Cbc_获取行索引、Cbc获取行系数、, Cbc_getRowRHS、Cbc_getRowSense、Cbc _getColNz、Cbc_获取ColIndices、, Cbc_getColCoeffs、Cbc_getReducedCost、Cbc_numberSavedSolutions、, Cbc_savedSolution、Cbc_savedSolutionObj、Cbc_setMIPStart、, Cbc_setMIPStartI、Cbc_addCutCallback、Osi_getNumCols、Osi_ getColName、, Osi_getColLower、Osi_getColUpper、Osi_isInteger、Osi_getNumRows、, Osi_getRowNz、Osi_getRowIndices、Osi-getRowCoeffs、Osi_ getRowRHS、, Osi_getRowSense、Osi_getColSolution、OsiCuts_addRowCut、, Cbc_getAllowableGap、Cbc_setAllowableGap、Cbc_getAllowableFractionGap、, Cbc_setAllowableFractionGap、Cbc_getAllowablePercentageGap、, Cbc_setAllowablePercentageGap、Cbc_getCutoff、Cbc_set Cutoff, Cbc_getMaximumNodes、Cbc_setMaximumNodes、Cbc_getMaximumSolutions、, Cbc_setMaximumSolutions、Cbc_getLogLevel、Cbc_set LogLevel, Cbc_getMaximumSeconds、Cbc_setMaximumSeconds 新操作 猜测 检查模型的属性以确定最佳 用于求解LP松弛的参数。 演示解决方案回调的新示例inc.cpp 演示用户定义的分支规则的新示例driver5.cpp 演示ClpEventHandler使用的新示例clpdriver.cpp 增加了对使用OsiHiGHS和CbcGeneric的支持 添加了MSVC 14项目文件 错误修复程序
-
版本2.9.10 解决数字问题 修复一些内存泄漏 修复根节点明显不可行时的问题 小型B&B的性能改进 固定最终消息中绑定的名称 修复预处理问题中的名称
-
版本2.9.9 SOS2的修复 mipstart的更新 切换到新构建系统 CI更新
-
版本2.9.8 更新到依赖项的最新版本 小错误修复 添加对Travis和Appveyor自动构建和测试的支持
-
版本2.9.7 小错误修复 切换到线路缓冲输出的选项
-
版本2.9.6 小错误修复
-
版本2.9.5 小错误修复
-
版本2.9.4 稳定性的小修复 修复了Doygen文档生成
-
版本2.9.3 小错误修复
-
版本2.9.2 固定以正确安装 DESTDIR公司
-
2.9.1版 修复依赖关系链接 小错误修复
-
2.9.0版 介绍了处理“大Ms”的专用分支方法。 引入了处理对称性的新方法(需要安装 鹦鹉螺 ) 引入冲突切割(默认情况下关闭,使用启用 -约束冲突 )
-
版本2.8.13 改进了消息处理 其他错误修复。
-
版本2.8.12 更新依赖项。
-
版本2.8.11 C接口大修 修复到SOS 其他错误修复
-
版本2.8.10 更多与线程安全相关的更改。 使用Visual Studio编译器修复生成系统中的错误。 其他错误修复。
-
版本2.8.9 尝试使Cbc线程安全。 添加并行示例。 添加CbcSolverUsefulInfo。 错误修复。
-
版本2.8.8 添加了一个示例,演示如何将Cbc与MSVC中已安装的库一起使用++ 修复了中添加libCbcSolver到依赖项的不一致性 {{{cbc_addlibs.txt}}}。
-
版本2.8.7 更改为Doxygen构建LaTex 构建系统的修复
-
版本2.8.6 添加了显式链接依赖项以符合打包的选项 对Fedora和Debian的要求,以及允许建造MinGW DLL。
-
版本2.8.5 构建系统的小修复
-
版本2.8.4 小错误修复 升级以构建系统
-
2.8.3版: 修复处理SOS。
-
2.8.2版: 修复了主配置中Glpk源的识别。 修复了CoinUtils、Clp和Cbc中的小错误。
-
2.8.1版: 小错误修复
-
2.8.0版: -
引入了新的secondary状态8,表示由于 迭代极限。 -
现在可以通过命令行和CbcMain访问解决方案池* 接口。 -
新的mipstart选项,用于从文件中读取初始可行解决方案。 只需提供离散变量的值。 -
Fischetti和Monaci添加了Proximity Search启发式(关闭 默认设置):使用单机版打开它的最简单方法是 -接近 . 邻近搜索是新的“无邻居搜索”0-1 MIP改进 Fischetti和Monaci(2012)最近提出了启发式方法。 这个想法是 定义子MIP时不需要附加约束,但需要修改 目标函数旨在吸引在 现任者。 该方法适用于0-1个MIP的解决方案环境 不太不规则(意味着有合理的概率 通过翻转少量二进制文件找到改进的解决方案 变量),尤其是应用于第一个启发式时 在根节点找到解决方案。 -
阿尔贝托·卡普拉拉(Alberto Caprara)实现的零半切割现在可用。 默认情况下,这些剪切是关闭的。要使用add到命令行 -zerohalf剪切根(或其他选项)或仅为-zero。 到目前为止,他们可能 只对一小部分问题提供帮助,可能需要一些调整。 G.Andreello,A.中描述了这些削减的实施。 Caprara和M.Fischetti“在分支和切割框架中嵌入切割: {0,1/2}-Cuts“INFORMS计算杂志”的计算研究 19(2), 229-238, 2007 http://dx.doi.org/10.1287/ijoc.1050.0162 -
减少和分割生成器的替代实现 贾科莫·南尼奇尼现在可以上场了。 默认情况下,这些切割处于关闭状态 使用add到命令行-reduce2AndSplitCuts root(或其他 选项)。 这些削减的实施在G.Cornuejols和G。 Nannicini“产生等级1分割切割的实用策略 混合整数线性规划“数学规划计算 3(4), 281-318, 2011 http://dx.doi.org/10.1007/s12532-011-0028-6 -
Giacomo对Gomory切割生成器的另一种稳健实现 Nannicini现已上市。 默认情况下,这些剪切处于关闭状态。要使用add To 命令行-GMI root(或其他选项)。 这些削减的实施在G.Cornuejols,F。 Margot和G.Nannicini“关于Gomory切割发电机的安全” http://官能.sutd.edu.sg/ ~nannicini/index.php? page=出版物 -
鼓励使用一些更奇特/更昂贵的切割发电机 添加了参数slowcutpasss。 想法是代码可以 这些削减只有几倍&比更常见的削减要少。 默认值 为10。 目前识别为“可能很慢”的切割发电机只是 提升和投影以及减少和拆分(两种版本)。 -
允许用户初始化随机种子。 伪随机数为 用于Cbc和Clp。 在CIP中,它们被用来在退化中打破联系 问题,而在Cbc启发式中,如可行性泵使用它们 决定是向上取整还是向下取整。 所以如果一个不同的伪随机 种子给Clp,然后你可以得到一个不同的连续最优值 所以不同的切割和启发式解决方案。 这可以通过以下方式打开 为Clp设置randomSeed和/或为Cbc设置randomCbcSeed。 特别的 值0告诉代码使用一天中的时间作为初始种子。 -
基于这个想法,安德烈亚·洛迪、马蒂奥·菲舍蒂、米歇尔·莫纳奇, Domenico Salvagnin、Yuji Shinano和Andrea Tramontani认为 通过在具有多个副本的根节点上运行 解算器,每个解算器都有自己的不同种子,然后传入 解和切割,以便主解算器具有更丰富的解集 以及可能更大幅度的削减。 这通过设置打开 -多个RootPasses。 这些也可以并行完成。 -
对于特殊变量和严重规模问题的预解几乎没有变化 (在CoinUtils中)。 -
新选项-extraVariables,用于切换琐碎的 引入额外整数变量分组的重组 成本相同的变量。 -
对于某些问题,如果 如果成本太高,这个问题就不可行了。 如果新的 选项-constraintFromCutoff设置后,目标函数添加为 将rhs设置为当前截止值(目标值)的约束 最好的解决方案)。
-
-
2.7.8版: 从“Exiting on”(退出 最大节点”到“退出最大迭代次数” 修复了使用重叠SOS的问题。 固定在内置系统中。
-
2.7.7版: -
修复了在收到SIGINT时报告用户事件中断的问题 CbcSolver公司。 如果发生此事件,model->status()现在应该为5。 补充 方法CbcModel::sayEventHappened()使cbc因“用户”而停止 事件”。 -
其他次要修复。
-
-
2.7.6版: -
修复以构建系统。 -
其他次要修复。
-
-
2.7.5版: -
修复以使AMPL接口再次工作。 -
对MSVC++文件的更多修复。
-
-
2.7.4版: 小错误修复。
-
2.7.3版: -
小错误修复。 -
修复MSVC++文件。
-
-
2.7.2版: -
允许GMPL模型使用行/列名称。 -
添加了CbcModel::haveMultiThreadSupport()以指示Cbc库 已使用多线程支持进行编译。 -
添加了CbcModel::waitingForMiniBranchAndBound()以指示是否 亚MIP启发式算法当前正在运行。 -
如果使用配置,则Cbc shell应与readline一起使用 --enable-gnu包 . -
现在默认启用了对压缩输入文件(.gz、.bz2)的支持。 -
修复相对间隙容差>100%的问题以及其他错误。 -
修复了MSVC++版本9文件。 -
内置系统中的小修复; 更新至BuildTools 0.7.1。
-
-
2.7.1版: 修复MSVC++文件
-
2.7.0版: -
许可证已更改为EPL。 -
添加了对MSVC++版本10的支持。 -
支持BuildTools 0.7版,以纳入最新的增强功能, 在Linux中包括正确的库版本控制,禁止安装 私有标头等。 -
将外部更新为依赖项目的新稳定版本。 -
启发式的改进。 -
切割生成的新选项。 -
改进结果报告。
-