CBC

介绍

CBC 是一款高性能开源混合整数规划求解器,实现了并行分支剪枝算法(Branch-and-Cut),支持读写 LP 和 MPS 标准格式模型文件、读取 NL 格式模型文件求解,也提供了 C 和 C++ 等高级语言编程接口。

CBC 主要开发者为 John J. Forrest,开发语言主要为 C++,许可证为 Eclipse Public License v2.0,目前主要由 John J. Forrest 和 Ted Ralphs 等人维护。

参数

终止条件

参数名 参数含义
allow(ableGap) 最优绝对容差
ratio(Gap) 最优相对容差
integerT(olerance) 变量的整数解容差
sec(onds) 求解时间限制,单位为秒
maxIt(erations) 迭代次数限制
maxN(odes) 搜索节点数限制

日志打印

参数名 参数含义
log(Level) 日志显示级别

求解算法

参数名 参数含义
presolve 是否预处理模型
preprocess 是否使用整数规划预处理方法
cuts(OnOff) 是否开启割平面生成
heur(isticsOnOff) 是否开启启发式算法
node(Strategy) 节点选取策略
threads 并行计算线程数

结果输入与输出

参数名 参数含义
mips(tart) 读取初始解文件
solu(tion) 输出解文件

详细参数说明见:https://github.com/coin-or/Cbc (opens new window)

使用示例

求解LP/MPS文件

假定测试示例为 test.mps,采用 CBC 命令行求解,时间限制为 60 秒,线程数为 2,输出结果文件为 test.sol,则调用命令为:

cbc test.mps sec=60 threads 2 solve solution test.sol
1

求解NL文件

假定测试示例为 test.nl,时间限制为 60 秒,开启日志,则调用命令为:

cbc test.nl -AMPL "log=1 sec=60"
1
最近更新: 05/06/2022