COPT
介绍
COPT是国内第一个具备自主知识产权的国产商用求解器,是一款高性能多功能求解器,由杉数科技有限公司独立自主研发。 目前,COPT可高效地支持LP、MILP、SOCP、QP、QCP、SDP等模型求解。 2022年6月,COPT5.0版本发布, 成为中国唯一一个同时具备大规模线性规划(单纯形法和内点法)、混合整数规划、二阶锥规划、凸二次规划、凸二次约束规划和半定规划问题求解能力的综合性数学规划求解器,其求解性能综合排名位于世界前列。
目前,COPT支持windows,Mac,Linux等主流操作系统,并提供C#、C、C++、JAVA、Python、AMPL、GAMS、Pyomo、PuLP、CVXPY等多种接口,支持读写LP和MPS标准格式模型文件,读取NL格式模型文件求解,能满足多种用户的使用需求。
参数
参数名 | 类型 | 说明 |
---|---|---|
TimeLimit | 浮点参数 | 模型求解的时间限制 |
MatrixTol | 浮点参数 | 输入矩阵的系数容差 |
FeasTol | 浮点参数 | 变量、约束取值的可行性容差 |
DualTol | 浮点参数 | 对偶解的可行性容差 |
IntTol | 浮点参数 | 变量的整数解容差 |
RelGap | 浮点参数 | 整数规划的最优相对容差 |
Logging | 整数参数 | 是否显示求解日志 |
LogToConsole | 整数参数 | 是否显示求解日志到控制台 |
Presolve | 整数参数 | 是否在求解一个模型前,进行预求解 |
Scaling | 整数参数 | 是否在求解一个模型前,调整系数矩阵的数值(Scaling) |
Dualize | 整数参数 | 是否构建并求解对偶模型 |
LpMethod | 整数参数 | 求解线性规划问题的算法 |
DualPrice | 整数参数 | 选定对偶单纯形法的Pricing 算法 |
DualPerturb | 整数参数 | 是否允许对偶单纯形算法使用目标函数摄动 |
CutLevel | 整数参数 | 生成割平面的强度 |
RootCutLevel | 整数参数 | 根节点生成割平面的强度 |
TreeCutLevel | 整数参数 | 搜索树生成割平面的强度 |
RootCutRounds | 整数参数 | 根节点生成割平面的次数 |
NodeCutRounds | 整数参数 | 搜索树节点生成割平面的次数 |
HeurLevel | 整数参数 | 启发式算法的强度 |
RoundingHeurLevel | 整数参数 | 取整启发式算法的强度 |
DivingHeurLevel | 整数参数 | Diving 启发式算法的强度 |
SubMipHeurLevel | 整数参数 | 基于子MIP的启发式算法的强度 |
StrongBranching | 整数参数 | strong branching 的强度 |
ConflictAnalysis | 整数参数 | 是否使用冲突分析 |
NodeLimit | 整数参数 | 整数规划求解的节点数限制 |
MipTasks | 整数参数 | 并行求解MIP时使用的任务数 |
BarHomogeneous | 整数参数 | 是否使用齐次自对偶方法 |
BarOrder | 整数参数 | 内点法使用的 ordering 算法 |
BarIterLimit | 整数参数 | 内点法求解时的迭代数限制 |
Threads | 整数参数 | 问题求解时使用的线程数 |
BarThreads | 整数参数 | 内点法使用的线程数 |
SimplexThreads | 整数参数 | 对偶单纯形法使用的线程数 |
CrossoverThreads | 整数参数 | Crossover 使用的线程数 |
Crossover | 整数参数 | 是否运行 Crossover |
SDPMethod | 整数参数 | 求解半定规划问题的算法 |
IISMethod | 整数参数 | 计算不可行模型的 IIS 的算法 |
FeasRelaxMode | 整数参数 | 计算不可行模型的可行松弛的方式 |
LogFile | N/A | 设置求解器日志文件 |
参数取值范围可在终端输入copt_cmd
进入COPT命令行后,输入 ”set + 参数名“ 即可获取。
使用示例
假定测试示例为diet.mps,采用copt命令行求解,时间限制为10秒,算法为内点法,输出基解文件为test.bas,输出结果文件为diet.sol,则调用命令为:
copt_cmd
read diet.mps
set TimeLimit 10
set LpMethod 2
Opt
write diet.sol
1
2
3
4
5
6
2
3
4
5
6