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参数

Dualization

设置是否对模型对偶化

EnableNetworkFlow

设置是否启用网络单纯形法

EnableStochasticLP

检测随机线性规划问题结构

IPM/MaxIterations

设置内点法中最大迭代次数

LogToConsole

启用或禁用控制台日志记录

MIP/AllowDualPresolve

指定是否启动MIP的对偶预处理方法

MIP/AutoConfiguration

设置是否开启MIP自动参数配置

MIP/DetectDisconnectedComponents

指定是否在MIP中启用非连通分量策略

MIP/EnableLazyConstr

在求解过程中引入惰性约束

MIP/LevelCuts

控制cut模块的应用程度,越大的数值将使对应模块产生越大的影响

MIP/LevelHeurs

控制heuristic模块的应用程度,越大的数值将使对应模块产生越大的影响

MIP/LevelProbing

控制probing模块的应用程度,越大的数值将使对应模块产生越大的影响

MIP/LevelStrong

控制strong-branching模块的应用程度,越大的数值将使对应模块产生越大的影响

MIP/LevelSubmip

控制submip模块的应用程度,越大的数值将使对应模块产生越大的影响

MIP/MaxNodes

设置MIP中的最大节点限制

MIP/MaxSols

设置MIP中最大解数目

MIP/MaxStallingNodes

设置允许延迟的最大节点数

MIP/RootParallelism

设置MIP求解中根节点允许的最大并发线程数

MIP/SolutionNumber

设置获取较优解的下标

MIP/SolutionPoolSize

设置解缓存池的最大容量

Method

设置选取的优化方法

NumThreads

设置所使用的线程数

NumericFocus

设置优化问题的数值关注程度

OutputFlag

启用或禁用求解器输出

PostScaling

设置所使用的post scaling方法

Presolve

设置是否开启预处理方法

SPX/ColumnGeneration

设置是否在单纯形法中使用列生成方法

SPX/CrashStart

设置是否在单纯形法中使用初始基解生成方式

SPX/DualPricing

设置单纯形法中的对偶定价策略

SPX/MaxIterations

设置单纯形法中最大迭代次数

SPX/PrimalPricing

设置单纯形法中的原始定价策略

SolutionTarget

设置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参数

IPM/DualTolerance

设置内点法中的对偶可行性(相对)容差

IPM/GapTolerance

设置内点法中的对偶间隔(相对)容差

IPM/PrimalTolerance

设置内点法中的原始可行性(相对)容差

MIP/Cutoff

设置目标值的切断值,以防止寻找比这个值更差的解

MIP/GapAbs

设置绝对的MIP间隔容差

MIP/GapRel

设置相对的MIP间隔容差

MIP/IntegerTolerance

设置MIP求解中整型判定精度

MIP/LinearizationBigM

设置MIP中,重列非线形函数时的最大系数

MIP/ObjectiveTolerance

设置MIP求解中目标值比较精度

MaxTime

设置最大求解时间

SPX/DualTolerance

设置单纯形法的对偶可行性容差

SPX/PrimalTolerance

设置单纯形法的原始可行性容差

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

8.2.3. String参数

LogFile

确定MindOpt日志文件的名称

8.2.3.1. LogFile

确定MindOpt日志文件的名称。修改此参数将关闭当前日志文件并打开指定的文件。使用空字符串将不产生日志文件。使用OutputFlag关闭所有日志记录。

  • 类型: string

  • 默认值: ‘’