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