控制优化器

描述 C++ API 中用于控制优化器的参数。

尽管 CPLEX 缺省值已足以求解大部分问题,但 CPLEX 仍提供了各种参数来控制各种算法选项。 CPLEX 参数可采用类型为 boolnumintstring 的值。 IloCplex 提供了四个类别的参数,这些参数在嵌套枚举类型中列出:

要从 Concert Technology 访问您感兴趣的参数的当前值,请使用方法 getParam。 要访问参数的缺省值,请使用方法 getDefault。 使用 getMingetMax 方法可访问 numint 类型的参数的最小值和最大值。

一些整数参数与嵌套枚举相关联,后者定义参数可采用的值的符号常量。 表 表 1 汇总这些参数及其枚举类型。
表 1. 整数参数的嵌套枚举
此枚举: 用于此参数:
IloCplex::Algorithm IloCplex::RootAlg
IloCplex::Algorithm IloCplex::NodeAlg
IloCplex::MIPEmphasisType IloCplex::MIPEmphasis
IloCplex::VariableSelect IloCplex::VarSel
IloCplex::NodeSelect IloCplex::NodeSel
IloCplex::PrimalPricing IloCplex::PPriInd
IloCplex::DualPricing IloCplex::DPriInd
IloCplex::BranchDirection IloCplex::BrDir

当然,在 Concert Technology 中提供了用于设置这些参数的例程。 请使用下列方法来设置 CPLEX 参数的值:

例如,通过以下调用,可将用于控制单纯形法算法最优性容差的数字参数 IloCplex::EpOpt 设置为 0.0001:

setParam(IloCplex::EpOpt, 0.0001);

《CPLEX 参数参考手册》记录了每个参数的类型(boolintnumstring)以及表示该参数的 Concert Technology 枚举值、符号常量和引用号。

方法 setDefaults 将所有参数(日志文件除外)重置为其缺省值,包括 CPLEX 回调函数。此例程将回调函数重置为 NULL

对 MIP 进行求解时,CPLEX 将提供对求解过程的其他控制。 您可使用优先顺序和分支方向以静态方式控制分支。 启发式算法对这些控制作了探讨。 这些控制允许根据求解期间不会更改的数据来控制求解过程,就此而言,这些控制是静态的,因此可以在模型求解之前进行设置。

MIP 求解过程的动态控制是通过目标或控制回调来提供。 使用目标使用旧优化回调对它们进行探讨。 目标和回调允许根据求解过程中生成的信息来控制求解过程。 目标和回调:比较对每种方法的优势作了对比。