8.6.1. 整数型参数

C API对应参数接口参考

参数

说明

MDO_INT_PARAM_METHOD

“Method”

设置选取的优化方法

MDO_INT_PARAM_PRESOLVE

“Presolve”

设置是否开启预处理方法

MDO_INT_PARAM_DUALIZATION

“Dualization”

设置是否对模型对偶化

MDO_INT_PARAM_NUM_THREADS

“NumThreads”

设置所使用的线程数

MDO_INT_PARAM_ENABLE_NETWORK_FLOW

“EnableNetworkFlow”

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

MDO_INT_PARAM_ENABLE_STOCHASTIC_LP

“EnableStochasticLP”

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

MDO_INT_PARAM_SPX_COLUMN_GENERATION

“SPX/ColumnGeneration”

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

MDO_INT_PARAM_SPX_CRASH_START

“SPX/CrashStart”

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

MDO_INT_PARAM_SPX_MAX_ITERATIONS

“SPX/MaxIterations”

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

MDO_INT_PARAM_SPX_PRIMAL_PRICING

“SPX/PrimalPricing”

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

MDO_INT_PARAM_SPX_DUAL_PRICING

“SPX/DualPricing”

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

MDO_INT_PARAM_IPM_MAX_ITERATIONS

“IPM/MaxIterations”

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

MDO_INT_PARAM_MIP_MAX_NODES

“MIP/MaxNodes”

设置MIP中的最大节点限制

MDO_INT_PARAM_MIP_ROOT_PARALLELISM

“MIP/RootParallelism”

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

MDO_INT_PARAM_MIP_AUTO_CONFIGURATION

“MIP/AutoConfiguration”

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

MDO_INT_PARAM_MIP_MAX_STALLING_NODES

“MIP/MaxStallingNodes”

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

MDO_INT_PARAM_MIP_MAX_SOLS

“MIP/MaxSols”

设置MIP中最大解数目

MDO_INT_PARAM_MIP_DETECT_DISCONNECTED_COMPONENTS

“MIP/DetectDisconnectedComponents”

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

MDO_INT_PARAM_MIP_SOLUTION_POOL_SIZE

“MIP/SolutionPoolSize”

设置解缓存池的最大容量

MDO_INT_PARAM_MIP_ALLOW_DUAL_PRESOLVE

“MIP/AllowDualPresolve”

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

其中,C++、Java、Python的参数API在 MDO_INT_PARAM 的namespace里。

8.6.1.1. “Method”

整数型参数,用于设置优化器中使用的算法。

  • 所在组: Common

  • 默认值: -1

Note

如果使用选项-1,则根据允许的线程数,可以执行单纯形法或并发优化方法。

  • 如果允许的线程数为1,则将使用原始单纯形法或对偶单纯形方法。

  • 如果允许的线程数至少为2,则将通过并发优化方法开始使用单纯形法和内点法两个方法进行独立求解。

选项

说明

-2

使用多线程单纯形法。

-1

让求解器决定(并发优化)。

0

原始单纯形法。

1

对偶单纯形法。

2

内点法。

示例

C

Mdo_setIntParam(model, "Method", -1);

C++

model.setIntParam("Method", -1);

Python

model.set_int_param("Method", -1)

8.6.1.2. “NumThreads”

整数型参数,用于设置优化求解时使用的最大线程数。

  • 所在组: Common

  • 默认值: 0

选项

说明

0

使用所有物理 CPU 内核

>=1

允许的最大线程数

示例

C

Mdo_setIntParam(model, "NumThreads", 0);

C++

model.setIntParam("NumThreads", 0);

Python

model.set_int_param("NumThreads", 0)

8.6.1.3. “Presolve”

整数型参数,用于设置 presolver 级别。

  • 所在组: Common

  • 默认值: -1

选项

说明

-1

让求解器决定。

0

禁用所有 presolve 方法。

1

启用适中的 presolve 方法。

2

启用较强的 presolve 方法。

Note

对于选项0, MindOpt 仍将删除空的和多余的行/列,以防止出现数值问题。

示例

C

Mdo_setIntParam(model, "Presolve", 0);

C++

model.setIntParam("Presolve", 0);

Python

model.set_int_param("Presolve", 0)

8.6.1.4. “Dualization”

整数型参数,用于设置是否对模型进行对偶化.

  • 所在组: Common

  • 默认值: -1

选项

说明

-1

让求解器来决定。

0

禁用模型对偶化。

1

启用模型对偶化。

示例

C

Mdo_setIntParam(model, "Dualization", -1);

C++

model.setIntParam("Dualization", -1);

Python

model.set_int_param("Dualization", -1)

8.6.1.5. “SPX/MaxIterations”

整数型参数,用于设置单纯形法中的最大迭代次数。

  • 所在组: simplex method

  • 默认值: 2147483647

  • 取值范围: [0, 2147483647]

示例

C

Mdo_setIntParam(model, "SPX/MaxIterations", 2147483647);

C++

model.setIntParam("SPX/MaxIterations", 2147483647);

Python

model.set_int_param("SPX/MaxIterations", 2147483647)

8.6.1.6. “SPX/ColumnGeneration”

整数型参数,用于设置是否在单纯形法中使用列生成。

  • 所在组: simplex method

  • 默认值: -1

选项

说明

-1

让求解器决定。

0

禁用列生成。

1

启用列生成。

示例

C

Mdo_setIntParam(model, "SPX/ColumnGeneration", -1);

C++

model.setIntParam("SPX/ColumnGeneration", -1);

Python

model.set_int_param("SPX/ColumnGeneration", -1)

8.6.1.7. “SPX/CrashStart”

整数型参数,用于设置是否在单纯形法中使用初始基解生成方式。

  • 所在组: simplex method

  • 默认值: -1

选项

说明

-1

让求解器决定。

0

使用基本初始基解生成方式。

1

使用进阶初始基解生成方式。

示例

C

Mdo_setIntParam(model, "SPX/CrashStart", -1);

C++

model.setIntParam("SPX/CrashStart", -1);

Python

model.set_int_param("SPX/CrashStart", -1)

8.6.1.8. “SPX/PrimalPricing”

整数型参数,用于设置单纯形法中的原始定价策略。

  • 所在组: simplex method

  • 默认值: -1

选项

说明

-1

让求解器决定。

0

使用最陡边策略。

1

使用近似最陡边策略。

2

使用部分定价策略。

示例

C

Mdo_setIntParam(model, "SPX/PrimalPricing", -1);

C++

model.setIntParam("SPX/PrimalPricing", -1);

Python

model.set_int_param("SPX/PrimalPricing", -1)

8.6.1.9. “SPX/DualPricing”

整数型参数,用于设置单纯形法中的对偶定价策略。

  • 所在组: simplex method

  • 默认值: -1

选项

说明

-1

让求解器决定。

0

使用最陡边策略。

1

使用近似最陡边策略。

示例

C

Mdo_setIntParam(model, "SPX/DualPricing", -1);

C++

model.setIntParam("SPX/DualPricing", -1);

Python

model.set_int_param("SPX/DualPricing", -1)

8.6.1.10. “IPM/MaxIterations”

整数型参数,用于设置内点法中最大迭代次数。

  • 所在组: interior point method

  • 默认值: 400

  • 取值范围: [0, 2147483647]

示例

C

Mdo_setIntParam(model, "IPM/MaxIterations", 400);

C++

model.setIntParam("IPM/MaxIterations", 400);

Python

model.set_int_param("IPM/MaxIterations", 400)

8.6.1.11. “EnableNetworkFlow”

整数型参数,用于设置是否启用网络单纯形法。

  • 所在组: common

  • 默认值: 0

选项

说明

0

关闭网络单纯形法。

1

启用网络单纯形法。

示例

C

Mdo_setIntParam(model, "EnableNetworkFlow", 0);

C++

model.setIntParam("EnableNetworkFlow", 0);

Python

model.set_int_param("EnableNetworkFlow", 0)

8.6.1.12. “EnableStochasticLP”

整数型参数,用于设置是否检测随机线性规划问题结构。

  • 所在组: common

  • 默认值: 0

选项

说明

0

关闭检测方法。

1

启用检测方法。

示例

C

Mdo_setIntParam(model, "EnableStochasticLP", 0);

C++

model.setIntParam("EnableStochasticLP", 0);

Python

model.set_int_param("EnableStochasticLP", 0)

8.6.1.13. “MIP/MaxNodes”

整数型参数,用于设置MIP求解中最大节点限制。

  • 所在组: milp method

  • 默认值: 2147483647

  • 取值范围: [0, 2147483647]

示例

C

Mdo_setIntParam(model, "MIP/MaxNodes", 2147483647);

C++

model.setIntParam("MIP/MaxNodes", 2147483647);

Python

model.set_int_param("MIP/MaxNodes", 2147483647)

8.6.1.14. “MIP/RootParallelism”

整数型参数,用于设置MIP求解中根节点允许的最大并发线程数。根节点并行性是用不同的参数同时解决多个根节点副本; 因此,线程数越大,所需的内存就越大。

  • 所在组: milp method

  • 默认值: 8

  • 取值范围: [1, 256]

示例

C

Mdo_setIntParam(model, "MIP/RootParallelism", 3);

C++

model.setIntParam("MIP/RootParallelism", 3);

Python

model.set_int_param("MIP/RootParallelism", 3)

8.6.1.15. “MIP/AutoConfiguration”

整数型参数,用于设置对MIP问题是否启用自动参数配置(或采用默认参数)

  • 所在组: milp method

  • 默认值: 1。 代表会启用自动参数配置。

  • 取值范围: {0, 1}

示例

C

Mdo_setIntParam(model, "MIP/AutoConfiguration", 1);

C++

model.setIntParam("MIP/AutoConfiguration", 1);

Python

model.set_int_param("MIP/AutoConfiguration", 1)

8.6.1.16. “MIP/MaxStallingNodes”

整数型参数,用于设置允许延迟的最大节点数。

  • 所在组: milp method

  • 默认值: 2147483647

  • 取值范围: [0, 2147483647]

示例

C

Mdo_setIntParam(model, "MIP/MaxStallingNodes", 2147483647);

C++

model.setIntParam("MIP/MaxStallingNodes", 2147483647);

Python

model.set_int_param("MIP/MaxStallingNodes", 2147483647)

8.6.1.17. “MIP/MaxSols”

整数型参数,用于设置MIP中最大解数目。

  • 所在组: milp method

  • 默认值: 8

  • 取值范围: [1, 256]

示例

C

Mdo_setIntParam(model, "MIP/MaxSols", 256);

C++

model.setIntParam("MIP/MaxSols", 256);

Python

model.set_int_param("MIP/MaxSols", 256)

8.6.1.18. “MIP/DetectDisconnectedComponents”

整数型参数,用于指定是否在MIP中启用非连通分量策略。

  • 所在组: milp method

  • 默认值: 1

  • 取值范围: [0, 1]

示例

C

Mdo_setIntParam(model, "MIP/DetectDisconnectedComponents", 1);

C++

model.setIntParam("MIP/DetectDisconnectedComponents", 1);

Python

model.set_int_param("MIP/DetectDisconnectedComponents", 1)

8.6.1.19. “MIP/SolutionPoolSize”

整数型参数,用于设置解缓存池的最大容量。

  • 所在组: milp method

  • 默认值: 0

  • 取值范围: [0, 65536]

示例

C

Mdo_setIntParam(model, "MIP/SolutionPoolSize", 65536);

C++

model.setIntParam("MIP/SolutionPoolSize", 65536);

Python

model.set_int_param("MIP/SolutionPoolSize", 65536)

8.6.1.20. “MIP/AllowDualPresolve”

整数型参数,用于指定是否启动MIP的对偶预处理方法。

  • 所在组: milp method

  • 默认值: 1

  • 取值范围: {0, 1}

示例

C

Mdo_setIntParam(model, "MIP/AllowDualPresolve", 1);

C++

model.setIntParam("MIP/AllowDualPresolve", 1);

Python

model.set_int_param("MIP/AllowDualPresolve", 1)