CLP
介绍
CLP 是一款高性能开源线性规划求解器,实现了原始单纯形法、对偶单纯形法和内点法,支持读写 LP 和 MPS 标准格式模型文件、读取NL格式模型文件求解,也提供了 C 和 C++ 等高级语言编程接口。
CLP 主要开发者为 John J. Forrest,开发语言主要为 C++,许可证为 Eclipse Public License v2.0,目前主要由 John J. Forrest和Julian Hall 等人维护。
参数
终止条件
参数名 | 参数含义 |
---|---|
dualT(olerance) | 对偶误差容限 |
primalT(olerance) | 原始误差容限 |
sec(onds) | 求解时间限制,单位为秒 |
maxIt(erations) | 迭代次数限制 |
日志打印
参数名 | 参数含义 |
---|---|
log(Level) | 日志显示级别 |
求解算法
参数名 | 参数含义 |
---|---|
presolve | 是否预处理模型 |
cross(over) | 是否对内点解进行Crossover以获取基解 |
primalS(implex) | 使用原始单纯形法求解 |
dualS(implex) | 使用对偶单纯形法求解 |
either(Simplex) | 使用原始/对偶单纯形法求解 |
barr(ier) | 使用内点法求解 |
结果输入与输出
参数名 | 参数含义 |
---|---|
basisI(n) | 读取基解文件 |
basisO(ut) | 输出基解文件 |
solu(tion) | 输出解文件 |
详细说明见:https://github.com/coin-or/Clp (opens new window)
使用示例
求解LP/MPS文件
假定测试示例为 test.mps,采用 CLP 命令行求解,时间限制为 60 秒,算法为原始/对偶单纯形法,输出基解文件为 test.bas,输出结果文件为 test.sol,则调用命令为:
clp test.mps sec=60 basisO test.bas solu test.sol either
1
求解NL文件
假定测试示例为 test.nl,时间限制为60秒,开启日志,则调用命令为:
clp test.nl -AMPL "log=1 sec=60"
1