参数¶
优化参数控制COPT求解器优化算法的行为。 每个参数都有各自的默认值和取值范围,在开始求解前,用户可以通过设置参数为不同取值,对求解算法、求解过程等提出具体要求,当然也可以保持为默认设置。
按照求解器COPT执行的任务、求解的优化问题,可以分为不同类型的参数。本章节将介绍杉数求解器COPT提供的不同类型参数及其含义。章节内容构成如下:
限制和容差¶
限制类参数用来控制求解过程的终止,如果求解算法超过了限制类参数所设定的值(如求解时间、节点数、迭代数等), COPT会终止求解并返回一个非最优的求解状态(关于求解状态,请参考 常数章节:解状态)
参数名 |
类型 |
参数含义 |
|---|---|---|
浮点数参数 |
优化求解的时间限制(秒) |
|
浮点数参数 |
找到原始可行解的时间限制(秒) |
|
整数参数 |
整数规划求解的节点数限制 |
|
整数参数 |
内点法求解的迭代数限制 |
容差类参数对求解器所允许的可行性和最优性的冲突值(violations)提出要求。
注意
Tolerance有时会翻译为公差或者容差。本文档采用容差这个译法。
Double这个词的准确翻译应该是双精度浮点数。表格中和下文为了简便,称之为浮点数。
参数名 |
类型 |
参数含义 |
|---|---|---|
浮点数参数 |
输入矩阵的系数容差 |
|
浮点数参数 |
变量、约束取值的可行性容差 |
|
浮点数参数 |
对偶解的可行性容差 |
|
浮点数参数 |
变量的整数解容差 |
|
浮点数参数 |
整数规划的最优相对容差 |
|
浮点数参数 |
整数规划的最优绝对容差 |
TimeLimit浮点数参数。
优化求解的时间限制(秒)。
默认值 1e20
最小值 0
最大值 1e20
SolTimeLimit浮点数参数。
找到原始可行解的时间限制(秒)。
默认值 1e20
最小值 0
最大值 1e20
NodeLimit整数参数。
整数规划求解的节点数限制。
默认值 -1(自动选择)
最小值 -1(自动选择)
最大值
INT_MAX
BarIterLimit整数参数。
内点法求解时的迭代数限制。
默认值 500
最小值 0
最大值
INT_MAX
MatrixTol浮点数参数。
输入矩阵的系数容差。
默认值 1e-10
最小值 0
最大值 1e-7
FeasTol浮点数参数。
变量、约束取值的可行性容差。
默认值 1e-6
最小值 1e-9
最大值 1e-4
DualTol浮点数参数。
对偶解的可行性容差。
默认值 1e-6
最小值 1e-9
最大值 1e-4
IntTol浮点参数。
变量的整数解容差。
默认值 1e-6
最小值 1e-9
最大值 1e-1
RelGap浮点参数。
整数规划的最优相对容差。
默认值 1e-4
最小值 0
最大值
DBL_MAX
AbsGap浮点参数。
整数规划的最优绝对容差。
默认值 1e-6
最小值 0
最大值
DBL_MAX
预求解相关¶
预求解相关参数控制求解器的预求解算法
参数名 |
类型 |
参数含义 |
|---|---|---|
整数参数 |
预求解的强度 |
|
整数参数 |
是否在求解一个模型前,调整系数矩阵的数值(Scaling) |
|
整数参数 |
是否构建并求解对偶模型 |
Presolve整数参数。
预求解的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
Scaling整数参数。
是否在求解一个模型前,调整系数矩阵的数值(Scaling)。
默认值 -1
可选值
-1: 自动选择。
0: 不调整。
1: 调整系数矩阵的数值。
Dualize整数参数。
是否构建并求解对偶模型。
默认值 -1
可选值
-1: 自动选择。
0: 不构建对偶模型。
1: 构建对偶模型。
线性规划相关¶
线性规划相关参数控制单纯形法和内点法的算法工作流程。
参数名 |
类型 |
参数含义 |
|---|---|---|
整数参数 |
求解线性规划问题的算法 |
|
整数参数 |
选定对偶单纯形法的Pricing算法 |
|
整数参数 |
是否允许对偶单纯性算法使用目标函数摄动 |
|
整数参数 |
是否使用齐次自对偶方法 |
|
整数参数 |
内点法的矩阵排列算法 |
|
整数参数 |
内点法寻找初始点的算法 |
|
整数参数 |
是否使用Crossover |
|
整数参数 |
当线性规划问题无可行解或者无界时,是否计算对偶Farkas(也称对偶极射线)或主元射线(也称极射线) |
LpMethod整数参数。
求解线性规划问题的算法。
默认值 -1
可选值
-1: 自动选择。
对于线性规划问题,选择对偶单纯形法;
对于混合整数线性规划问题,选择对偶单纯形法或内点法之一。
1: 对偶单纯形法。
2: 内点法。
3: 直接Crossover。
4: 并发求解(同时启动单纯形法与内点法求解)。
5: 基于稀疏和数值范围等特征自动选择单纯形法或者内点法。
DualPrice整数参数。
选定对偶单纯形法的Pricing算法。
默认值 -1
可选值
-1: 自动选择。
0: 使用Devex算法。
1: 使用对偶最陡边算法。
DualPerturb整数参数。
是否允许对偶单纯性算法使用目标函数摄动。
默认值 -1
可选值
-1: 自动选择。
0: 无摄动。
1: 允许目标函数摄动。
BarHomogeneous整数参数。
是否使用齐次自对偶方法。
默认值 -1
可选值
-1: 自动选择。
0: 不使用。
1: 使用。
BarOrder整数参数。
内点法的矩阵排列算法。
默认值 -1
可选值
-1: 自动选择。
0: Approximate Minimum Degree(AMD) 算法。
1: Nested Dissection(ND)算法。
BarStart整数参数。
内点法寻找初始点的算法。
默认值 -1
可选值
-1: 自动选择。
0: Simple算法。
1: Mehrotra算法。
2: Modified Mehrotra算法。
Crossover整数参数。
是否使用Crossover。
默认值 1
可选值
-1: 自动选择。仅在当线性规划的解不满足容差时使用。
0: 不使用。
1: 使用。
ReqFarkasRay整数参数。
进阶话题。 当线性规划问题无可行解或者无界时, 是否计算对偶Farkas(也叫做对偶极射线)或者主元射线(也叫做极射线)。
默认值 0
可选值
0: 不计算。
1: 计算。
整数规划相关¶
整数规划相关参数控制整数规划求解算法的工作流程。
参数名 |
类型 |
参数含义 |
|---|---|---|
整数参数 |
生成割平面的强度 |
|
整数参数 |
根节点生成割平面的强度 |
|
整数参数 |
搜索树生成割平面的强度 |
|
整数参数 |
根节点生成割平面的次数 |
|
整数参数 |
搜索树节点生成割平面的次数 |
|
整数参数 |
启发式算法的强度 |
|
整数参数 |
Rounding启发式算法的强度 |
|
整数参数 |
Diving启发式算法的强度 |
|
整数参数 |
基于子MIP的启发式算法的强度 |
|
整数参数 |
Fix-and-propagate启发式算法的强度 |
|
整数参数 |
Strong Branching的强度 |
|
整数参数 |
是否使用冲突分析 |
|
整数参数 |
处理初始解的方式 |
|
整数参数 |
补全不完整的初始解时,求解的子MIP的节点数限制 |
CutLevel整数参数。
生成割平面的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
RootCutLevel整数参数。
根节点生成割平面的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
TreeCutLevel整数参数。
搜索树生成割平面的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
RootCutRounds整数参数。
根节点生成割平面的次数。
默认值 -1(自动选择)
最小值 -1(自动选择)
最大值
INT_MAX
NodeCutRounds整数参数。
搜索树节点生成割平面的次数。
默认值 -1(自动选择)
最小值 -1(自动选择)
最大值
INT_MAX
HeurLevel整数参数。
启发式算法的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
RoundingHeurLevel整数参数。
Rounding启发式算法的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
DivingHeurLevel整数参数。
Diving启发式算法的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
SubMipHeurLevel整数参数。
基于子MIP的启发式算法的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
FAPHeurLevel整数参数。
Fix-and-propagate启发式算法的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
StrongBranching整数参数。
Strong Branching的强度。
默认值 -1
可选值
-1: 自动选择。
0: 关闭。
1: 少量快速。
2: 正常。
3: 多多益善。
ConflictAnalysis整数参数。
是否使用冲突分析。
默认值 -1
可选值
-1: 自动选择。
0: 不使用。
1: 使用。
MipStartMode整数参数。
处理初始解的方式。
默认值 -1
可选值
-1: 自动选择。
0: 不使用任何初始解。
1: 仅使用完整且可行的初始解。
2: 仅使用可行的初始解(若初始解不完整,通过求解子MIP来补全)。
MipStartNodeLimit整数参数。
补全不完整的初始解时,求解的子MIP的节点数限制。
默认值 -1(自动选择)
最小值 -1(自动选择)
最大值
INT_MAX
半定规划相关¶
SDPMethod整数参数。
求解半定规划问题的算法。
默认值 -1
可选值
-1: 自动选择。
0: 原始-对偶内点法。
1: 交替方向乘子法。
2: 对偶内点法。
并行计算相关¶
并行计算相关参数用来控制求解算法并行计算的线程数和任务数。
参数名 |
类型 |
参数含义 |
|---|---|---|
整数参数 |
问题求解使用的线程数 |
|
整数参数 |
内点法使用的线程数。若值为-1,则线程数由参数 |
|
整数参数 |
对偶单纯形法使用的线程数。若值为-1,则线程数由参数 |
|
整数参数 |
Crossover使用的线程数。若值为-1,则线程数由参数 |
|
整数参数 |
MIP求解使用的任务数 |
Threads整数参数。
问题求解使用的线程数。
默认值 -1(自动选择)
最小值 -1(自动选择)
最大值 128
BarThreads整数参数。
内点法使用的线程数。若值为-1,则线程数由参数
Threads决定。默认值 -1
最小值 -1
最大值 128
SimplexThreads整数参数。
对偶单纯形法使用的线程数。若值为-1,则线程数由参数
Threads决定。默认值 -1
最小值 -1
最大值 128
CrossoverThreads整数参数。
Crossover使用的线程数。若值为-1,则线程数由参数
Threads决定。默认值 -1
最小值 -1
最大值 128
MipTasks整数参数。
MIP求解使用的任务数。
默认值 -1(自动选择)
最小值 -1(自动选择)
最大值 256
IIS计算相关¶
IISMethod整数参数。
计算IIS的方法。
默认值 -1
可选值
-1: 自动选择。
0: 计算结果质量优先。
1: 计算效率优先。
可行化松弛计算相关¶
FeasRelaxMode整数参数。
计算可行化松弛的方法。
默认值 0
可选值
0: 最小化加权冲突值。
1: 计算最小化加权冲突下的原始模型最优可行化松弛。
2: 最小化冲突数目。
3: 计算最小化冲突数目下的原始模型最优可行化松弛。
4: 最小化加权平方冲突值。
5: 计算最小化加权平方冲突下的原始模型最优可行化松弛。
参数调优相关¶
参数名 |
类型 |
参数含义 |
|---|---|---|
浮点数参数 |
参数调优的时间限制 |
|
浮点数参数 |
参数调优的时间目标 |
|
整数参数 |
参数调优的最优相对容差目标 |
|
整数参数 |
参数调优的方法 |
|
整数参数 |
参数调优的模式 |
|
整数参数 |
参数调优结果计算方式 |
|
整数参数 |
参数调优每组参数模型计算次数 |
|
整数参数 |
参数调优日志输出强度 |
TuneTimeLimit浮点数参数。
参数调优的时间限制。若值为 0 ,则表示求解器自动设置。
默认值 0
最小值 0
最大值 1e20
TuneTargetTime浮点数参数。
参数调优的时间目标。
默认值 1e-2
最小值 0
最大值
DBL_MAX
TuneTargetRelGap浮点数参数。
参数调优的最优相对容差目标。
默认值 1e-4
最小值 0
最大值
DBL_MAX
TuneMethod整数参数。
参数调优的方法。
默认值 -1
可选值
-1: 自动选择。
0: 贪婪搜索策略。
1: 更广泛的搜索策略。
TuneMode整数参数。
参数调优的模式。
默认值 -1
可选值
-1: 自动选择。
0: 求解时间。
1: 最优相对容差。
2: 目标函数值。
3: 目标函数值下界。
TuneMeasure整数参数。
参数调优结果计算方式。
默认值 -1
可选值
-1: 自动选择。
0: 计算平均值。
1: 计算最大值。
TunePermutes整数参数。
参数调优每组参数模型计算次数。若值为 0 , 则表示求解器自动设置。
默认值 0
最小值 0
最大值
INT_MAX
TuneOutputLevel整数参数。
参数调优日志输出强度。
默认值 2
可选值
0: 不输出调优日志。
1: 仅输出改进参数的摘要。
2: 输出每次调优尝试的摘要。
3: 输出每次调优尝试的详细日志。
Callback相关¶
LazyConstraints整数参数。
是否将惰性约束加入模型中。
默认值 -1
可选值
-1: 自动选择。
0: 否。
1: 是。
注意:
该参数仅对MIP模型有效。
其它参数¶
Logging整数参数。
是否显示求解日志。
默认值 1
可选值
0: 不显示求解日志。
1: 显示求解日志。
LogToConsole整数参数。
是否显示求解日志到控制台。
默认值 1
可选值
0: 不显示求解日志到控制台。
1: 显示求解日志到控制台。
参数相关操作¶
在不同的编程接口中,获取和设置优化参数的方式略有差别,具体请参考:
C 接口:C API函数:获取和设置参数章节
C++ 接口: C++ API参考手册:参数章节
C# 接口: C# API参考手册:参数章节
Java 接口: Java API参考手册:参数章节
Python 接口: Python API参考手册:参数章节