8.2. 参数¶
以下为使用五种语言分别获取参数的示例
Python
# pname = param name, ptype = param type, pval = current value, pmin = the minimum value that can be set, pmax = the maximum value that can be set, pdef = default value pname, ptype, pval, pmin, pmax, pdef = self.m.getParamInfo('MaxTime') pname, ptype, pval, pmin, pmax, pdef = self.m.getParamInfo('MaxTim*') pname, ptype, pval, pmin, pmax, pdef = self.m.getParamInfo('MaxTim?')Java
// Get int param env.get(MDO.IntParam.NumThreads); // Get double param model.get(MDO.DoubleParam.MaxTime);CPP
// Get int param env.get(MDO_IntParam_NumThreads); // Get double param model.get(MDO_DoubleParam_MaxTime);C
// Get int param int numt; MDOgetintparam(env, "NumThreads", &numt); // Get double param double maxtime; MDOgetdblparam(m, "MaxTime", &maxtime);C#
// Get int param env.Get(MDO.IntParam.NumThreads); // Get double param model.Get(MDO.DoubleParam.MaxTime);以下为使用五种语言分别修改参数的示例。
Python
env.setParam("MaxTime", 10) env.setParam("MaxTim*", 10) env.setParam("MaxTim?", 10)Java
// Set int param env.set(MDO.IntParam.NumThreads, 5); // Set double param model.set(MDO.DoubleParam.MaxTime, 45.2);CPP
// Set int param env.set(MDO_IntParam_NumThreads, 5); // Set double param model.set(MDO_DoubleParam_MaxTime, 45.2);C
// Set int param MDOsetintparam(env, "NumThreads", 2); // Set double param double maxtime; MDOsetdblparam(m, "MaxTime", 34.2);C#
// Set int param env.Set(MDO.IntParam.NumThreads, 2); // Set double param model.Set(MDO.DoubleParam.MaxTime, 42.5);
8.2.1. Int参数¶
设置是否对模型对偶化
设置是否启用网络单纯形法
检测随机线性规划问题结构
设置内点法中最大迭代次数
启用或禁用控制台日志记录
指定是否启动MIP的对偶预处理方法
设置是否开启MIP自动参数配置
指定是否在MIP中启用非连通分量策略
在求解过程中引入惰性约束
控制cut模块的应用程度,越大的数值将使对应模块产生越大的影响
控制heuristic模块的应用程度,越大的数值将使对应模块产生越大的影响
控制probing模块的应用程度,越大的数值将使对应模块产生越大的影响
控制strong-branching模块的应用程度,越大的数值将使对应模块产生越大的影响
控制submip模块的应用程度,越大的数值将使对应模块产生越大的影响
设置MIP中的最大节点限制
设置MIP中最大解数目
设置允许延迟的最大节点数
设置MIP求解中根节点允许的最大并发线程数
设置获取较优解的下标
设置解缓存池的最大容量
设置选取的优化方法
设置所使用的线程数
设置优化问题的数值关注程度
启用或禁用求解器输出
设置所使用的post scaling方法
设置是否开启预处理方法
设置是否在单纯形法中使用列生成方法
设置是否在单纯形法中使用初始基解生成方式
设置单纯形法中的对偶定价策略
设置单纯形法中最大迭代次数
设置单纯形法中的原始定价策略
设置LP问题里解的类型
8.2.1.1. Dualization¶
设置是否对模型对偶化
类型: int
默认值: -1
最小值: -1
最大值: 1
-1
让求解器来决定
0
禁用模型对偶化
1
启用模型对偶化
8.2.1.2. EnableNetworkFlow¶
设置是否启用网络单纯形法
类型: int
默认值: 0
最小值: 0
最大值: 1
0
关闭网络单纯形法
1
启用网络单纯形法
8.2.1.3. EnableStochasticLP¶
检测随机线性规划问题结构
类型: int
默认值: 1
最小值: 0
最大值: 1
0
关闭检测方法
1
启用检测方法
8.2.1.4. IPM/MaxIterations¶
设置内点法中最大迭代次数
类型: int
默认值: 400
最小值: 0
最大值: 2147483647
8.2.1.5. LogToConsole¶
启用或禁用控制台日志记录。使用OutputFlag关闭所有日志记录。
类型: int
默认值: 1
最小值: 0
最大值: 1
0
禁用求解器输出到控制台。
1
启用求解器输出到控制台。
8.2.1.6. MIP/AllowDualPresolve¶
指定是否启动MIP的对偶预处理方法
类型: int
默认值: 1
最小值: 0
最大值: 1
0
禁用对偶预处理方法
1
允许使用对偶预处理方法
8.2.1.7. MIP/AutoConfiguration¶
设置是否开启MIP自动参数配置
类型: int
默认值: 1
最小值: 0
最大值: 1
0
禁用自动参数配置
1
启用自动参数配置
8.2.1.8. MIP/DetectDisconnectedComponents¶
指定是否在MIP中启用非连通分量策略
类型: int
默认值: 1
最小值: 0
最大值: 1
0
禁用非连通分量策略
1
启用非连通分量策略
8.2.1.9. MIP/EnableLazyConstr¶
在求解过程中引入惰性约束。如果激活此选项,求解器每当找到解时就会调用惰性约束的回调函数,并将产生的惰性约束用于缩减解空间。注意一些求解技术,如预处理中的对偶缩减,在此选项下会变得不可用,以避免和惰性约束的冲突
类型: int
默认值: 0
最小值: 0
最大值: 1
0
自动选择,不支持惰性约束
1
支持惰性约束
8.2.1.10. MIP/LevelCuts¶
控制cut模块的应用程度,越大的数值将使对应模块产生越大的影响
类型: int
默认值: -1
最小值: -1
最大值: 1
-1
让求解器决定
>= 0
模块的应用程度
8.2.1.11. MIP/LevelHeurs¶
控制heuristic模块的应用程度,越大的数值将使对应模块产生越大的影响
类型: int
默认值: -1
最小值: -1
最大值: 2
-1
让求解器决定
>= 0
模块的应用程度
8.2.1.12. MIP/LevelProbing¶
控制probing模块的应用程度,越大的数值将使对应模块产生越大的影响
类型: int
默认值: -1
最小值: -1
最大值: 3
-1
让求解器决定
>= 0
模块的应用程度
8.2.1.13. MIP/LevelStrong¶
控制strong-branching模块的应用程度,越大的数值将使对应模块产生越大的影响
类型: int
默认值: -1
最小值: -1
最大值: 5
-1
让求解器决定
>= 0
模块的应用程度
8.2.1.14. MIP/LevelSubmip¶
控制submip模块的应用程度,越大的数值将使对应模块产生越大的影响
类型: int
默认值: -1
最小值: -1
最大值: 3
-1
让求解器决定
>= 0
模块的应用程度
8.2.1.15. MIP/MaxNodes¶
设置MIP中的最大节点限制
类型: int
默认值: 2147483647
最小值: 0
最大值: 2147483647
8.2.1.16. MIP/MaxSols¶
设置MIP中最大解数目
类型: int
默认值: 2147483647
最小值: 1
最大值: 2147483647
8.2.1.17. MIP/MaxStallingNodes¶
设置允许延迟的最大节点数
类型: int
默认值: 2147483647
最小值: 0
最大值: 2147483647
8.2.1.18. MIP/RootParallelism¶
设置MIP求解中根节点允许的最大并发线程数
类型: int
默认值: 8
最小值: 1
最大值: 256
8.2.1.19. MIP/SolutionNumber¶
设置获取较优解的下标。当设置完成后,通过获取属性Xn得到该较优解。
类型: int
默认值: 0
最小值: 0
最大值: 65536
8.2.1.20. MIP/SolutionPoolSize¶
设置解缓存池的最大容量
类型: int
默认值: 0
最小值: 0
最大值: 65536
8.2.1.21. Method¶
设置选取的优化方法
类型: int
默认值: -1
最小值: -2
最大值: 2
-2
使用多线程单纯形法
-1
让求解器决定(并发优化)
0
原始单纯形法
1
对偶单纯形法
2
内点法
8.2.1.22. NumThreads¶
设置所使用的线程数
类型: int
默认值: 0
最小值: 0
最大值: 2147483647
0
让求解器决定所使用的线程数
>0
允许的最大线程数
8.2.1.23. NumericFocus¶
设置连续问题求解的数值关注程度。
类型: int
默认值: 0
最小值: 0
最大值: 2
0
自动选择,速度略有偏好
1
强烈关注数值精度。
2
轻度关注数值精度。
设置混合整数问题求解的数值关注程度。
类型: int
默认值: 0
最小值: 0
最大值: 3
0
自动选择,速度略有偏好
1
轻度关注数值精度。
2
中等关注数值精度。
3
强烈关注数值精度。
8.2.1.24. OutputFlag¶
启用或禁用求解器输出。使用LogFile和LogToConsole进行更细粒度的控制。
类型: int
默认值: 1
最小值: 0
最大值: 1
0
禁用求解器输出。
1
启用求解器输出。
8.2.1.25. PostScaling¶
设置所使用的post scaling方法。
类型: int
默认值: -1
最小值: -1
最大值: 3
-1
让solver决定。
0
禁用post scaling。
1
使用Curtis-Reid方法。
2
使用Equilibration方法。
3
使用Geometric方法。
8.2.1.26. Presolve¶
设置是否开启预处理方法
类型: int
默认值: -1
最小值: -1
最大值: 2
-1
让求解器决定
0
禁用所有 presolve 方法
1
启用适中的 presolve 方法
2
启用较强的 presolve 方法
8.2.1.27. SPX/ColumnGeneration¶
设置是否在单纯形法中使用列生成方法
类型: int
默认值: -1
最小值: -1
最大值: 1
-1
让求解器决定
0
禁用列生成
1
启用列生成
8.2.1.28. SPX/CrashStart¶
设置是否在单纯形法中使用初始基解生成方式
类型: int
默认值: -1
最小值: -1
最大值: 1
-1
让求解器决定
0
使用基本初始基解生成方式
1
使用进阶初始基解生成方式
8.2.1.29. SPX/DualPricing¶
设置单纯形法中的对偶定价策略
类型: int
默认值: -1
最小值: -1
最大值: 1
-1
让求解器决定
0
使用最陡边策略
1
使用近似最陡边策略
8.2.1.30. SPX/MaxIterations¶
设置单纯形法中最大迭代次数
类型: int
默认值: 2147483647
最小值: 0
最大值: 2147483647
8.2.1.31. SPX/PrimalPricing¶
设置单纯形法中的原始定价策略
类型: int
默认值: -1
最小值: -1
最大值: 2
-1
让求解器决定
0
使用最陡边策略
1
使用近似最陡边策略
2
使用部分定价策略
8.2.1.32. SolutionTarget¶
设置LP问题里解的类型
类型: int
默认值: 0
最小值: 0
最大值: 1
0
求得的解为基解(默认设置)
1
求得的解为原始/对偶可行解;一般情况下不保证为基解
8.2.2. Double参数¶
设置内点法中的对偶可行性(相对)容差
设置内点法中的对偶间隔(相对)容差
设置内点法中的原始可行性(相对)容差
设置目标值的切断值,以防止寻找比这个值更差的解
设置绝对的MIP间隔容差
设置相对的MIP间隔容差
设置MIP求解中整型判定精度
设置MIP中,重列非线形函数时的最大系数
设置MIP求解中目标值比较精度
设置最大求解时间
设置单纯形法的对偶可行性容差
设置单纯形法的原始可行性容差
8.2.2.1. IPM/DualTolerance¶
设置内点法中的对偶可行性(相对)容差
类型: double
默认值: 1e-08
最小值: 1e-12
最大值: 0.1
8.2.2.2. IPM/GapTolerance¶
设置内点法中的对偶间隔(相对)容差
类型: double
默认值: 1e-08
最小值: 1e-12
最大值: 0.1
8.2.2.3. IPM/PrimalTolerance¶
设置内点法中的原始可行性(相对)容差
类型: double
默认值: 1e-08
最小值: 1e-12
最大值: 0.1
8.2.2.4. MIP/Cutoff¶
设置目标值的切断值,以防止寻找比这个值更差的解
类型: double
默认值: 1.7976931348623157e+308
最小值: -1.7976931348623157e+308
最大值: 1.7976931348623157e+308
8.2.2.5. MIP/GapAbs¶
设置绝对的MIP间隔容差
类型: double
默认值: 1e-06
最小值: 0.0
最大值: 1.7976931348623157e+308
8.2.2.6. MIP/GapRel¶
设置相对的MIP间隔容差
类型: double
默认值: 0.0001
最小值: 0.0
最大值: 1.7976931348623157e+308
8.2.2.7. MIP/IntegerTolerance¶
设置MIP求解中整型判定精度
类型: double
默认值: 1e-06
最小值: 1e-09
最大值: 0.01
8.2.2.8. MIP/LinearizationBigM¶
设置MIP中,重列非线形函数时的最大系数
类型: double
默认值: 100000000.0
最小值: 0.0
最大值: 10000000000.0
8.2.2.9. MIP/ObjectiveTolerance¶
设置MIP求解中目标值比较精度
类型: double
默认值: 1e-06
最小值: 1e-09
最大值: 0.01
8.2.2.10. MaxTime¶
设置最大求解时间
类型: double
默认值: 1.7976931348623157e+308
最小值: 0.0
最大值: 1.7976931348623157e+308
0
不限制求解时间
>0
限制求解时间的秒数
8.2.2.11. SPX/DualTolerance¶
设置单纯形法的对偶可行性容差
类型: double
默认值: 1e-06
最小值: 1e-09
最大值: 0.001
8.2.2.12. SPX/PrimalTolerance¶
设置单纯形法的原始可行性容差
类型: double
默认值: 1e-06
最小值: 1e-09
最大值: 0.001