|
|
CBC 混合整数规划求解器CBC(COIN-OR Branch and Cut)是一个开源混合整数规划求解器,与 COIN-OR LP 求解器 CLP 和 COIN-OR 割生成器库 Cgl 配合使用。该代码主要由 John J. Forrest 编写。本节中的大部分 CBC 文档来自 CBC 独立版本的帮助信息。 GAMS 中的 CBC 链接支持连续变量、二元变量、整数变量、半连续变量、半整数变量、类型 1 和类型 2 的特殊有序集以及分支优先级。 使用可以在 GAMS 程序内部使用以下语句来指定使用 CBC: Option LP = CBC; { 或 MIP 或 RMIP }
上述语句应出现在 Solve 语句之前。如果在 GAMS 安装期间已将 CBC 指定为默认求解器,则无需上述语句。 有关求解器选项文件的用法和语法,请参见第 求解器选项文件 节。以下是选项文件 cuts root
perturbation off
这将使 CBC 仅在根节点使用割生成器,并关闭 LP 松弛的扰动。 GAMS/CBC 目前不支持 GAMS 分支切割启发式(BCH)功能。如果需要将 GAMS/CBC 与 BCH 结合使用,请考虑使用版本 ≤ 23.3 的 GAMS 系统。 GAMS/CBC 当前支持的 GAMS 参数包括:reslim、iterlim、nodlim、optca、optcr、cheat、cutoff 和 threads。 选项列表有许多参数会影响 CBC 分支定界算法的性能。首先尝试使用默认设置,仔细查看日志文件。割平面有帮助吗?它们是否耗时太长?查看输出以了解哪些割平面有效,然后进行调优(参见选项 cuts)。如果 preprocessing 减小了问题规模或增强了多个系数,那么将其保持开启可能是明智的。关闭未提供解的 heuristics。另一个需要关注的主要领域是搜索。希望好的解能在搜索的早期阶段获得,因此关键点在于选择最佳的分支变量。查看强分支是否表现良好——还是它只是消耗了大量的迭代次数?调整选项 strongBranching 和 trustpseudocosts。 下面,我们总结所有可用的 CBC 选项。 常规选项
LP 选项
MIP 选项
割平面生成器的 MIP 选项
原始启发式的 MIP 选项
选项详细说明以下是所有 CBC 选项的详细说明,包括取值范围和默认值。 allowableGap:如果目标函数值与当前最佳整数解之间的绝对差距低于此值则停止。范围:[0, 1e20],默认值:0 allowableFractionGap:如果分数差距低于此值则停止。范围:[0, 1e20],默认值:0 allowablePercentageGap:如果百分比差距低于此值则停止。范围:[0, 1e20],默认值:0 autoScale:是否在目标、右端项和边界看起来异常时自动缩放问题(实验性)。范围:0, 1,默认值:0 biasLU:分解是否偏向于 U。范围:LX, UX, UU,默认值:LX bscale:在内点法中是否缩放。范围:-5 到 5,默认值:off cliqueCuts:是否启用团割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on clocktype:时间测量的时钟类型。范围:wall, cpu,默认值:wall combineCuts:是否启用组合割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on combineSolutions:尝试组合两个现有解以找到更好的解。范围:off, on, both, before, intree,默认值:on costCuts:是否启用成本割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on crash:是否为问题创建基。范围:-1 到 100,默认值:off crossOver2:交叉 2 启发式。范围:off, on, both, before, intree,默认值:on crossover:是否在障碍法完成后使用单纯形法获取基本解。范围:off, on, both,默认值:on cutDepth:割平面在分支定界树中的深度限制。范围:-1 到 100,默认值:-1 cutLength:割平面可以包含的项数限制。范围:-1 到 100,默认值:-1 cutoff:截止值。范围:[-1e50, 1e50],默认值:1e+50 cuts:割平面生成器的整体设置。范围:off, on, root, ifmove,默认值:on cutup:目标向上截止值。范围:[-1e50, 1e50],默认值:1e+50 denseThreshold:使用稠密分解的阈值。范围:-1 到 100000,默认值:-1 depthMiniBab:使用小型分支定价的深度。范围:0 到 100,默认值:0 dins:距离诱导邻域搜索。范围:off, on, both, before,默认值:off divingCoefficient:系数潜水启发式。范围:off, on, both, before,默认值:off divingFractional:分数潜水启发式。范围:off, on, both, before,默认值:off divingGuided:引导潜水启发式。范围:off, on, both, before,默认值:off divingLineSearch:线搜索潜水启发式。范围:off, on, both, before,默认值:off divingPseudoCost:伪成本潜水启发式。范围:off, on, both, before,默认值:off divingRandom:随机潜水启发式。范围:off, on, both, before,默认值:off divingSOS:SOS 潜水启发式。范围:off, on, both, before,默认值:off divingVectorLength:向量长度潜水启发式。范围:off, on, both, before,默认值:off doHeuristics:是否在求解过程中使用启发式方法。范围:off, on,默认值:on dualPivot:对偶转轴选择算法。范围:Dantzig, automatic, steepest, partial, PE, steepestPE,默认值:automatic factorization:使用哪种分解。范围:normal, iterative, dense, small, barrier, simplex,默认值:normal fathomDiscipline:判断节点是否应被裁减的严格程度。范围:-3 到 3,默认值:off (0) feasibilityPump:可行性泵启发式。范围:off, on, both, before,默认值:off flowCoverCuts:是否启用流覆盖割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on forceSolution:强制解中包含的变量值。范围:[-100, 100],默认值:0 gamma:是否正则化障碍法。范围:off, on,默认值:off gcdCuts:是否启用最大公约数(GCD)割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:off gmiCuts:是否启用 Gomory 混合整数(GMI)割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on gomoryCuts:是否启用 Gomory 割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on greedyHeuristic:贪婪启发式。范围:off, on, both, before,默认值:off gubCuts:是否启用广义上界(GUB)割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on heuristics:启发式方法的整体设置。范围:off, on,默认值:on idiotCrash:是否尝试 idiot crash。范围:-1 到 100,默认值:-1 iterlim:停止前的最大迭代次数。范围:[0, 2147483647],默认值:GAMS iterlim KKT:是否在障碍法中使用 KKT 分解。范围:0, 1,默认值:0 knapsackCuts:是否启用背包割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on lagomoryCuts:是否启用滞后 Gomory 割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on latwocuts:是否启用惰性双割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal,默认值:on liftProjectCuts:是否启用提升投影割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal,默认值:on localBranching:局部分支启发式。范围:off, on, both, before,默认值:off logLevel:日志级别。0 表示无输出,1 表示正常输出,2 表示详细输出,3 表示非常详细。范围:0 到 3,默认值:1 maxFactor:重新分解之间的最大迭代次数。范围:[1, 1000000],默认值:200 maxNodes:分支定界树中允许的最大节点数。范围:[0, 2147483647],默认值:GAMS nodlim maxSavedFeasibleSolutions:保留的可行解的最大数量。范围:0 到 10000,默认值:1 maxSolutions:找到的解达到此数量后停止。范围:0 到 10000,默认值:0 mirCuts:是否启用混合整数舍入(MIR)割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on multipleRootCuts:是否在根节点使用多重割平面生成。范围:off, on,默认值:off naiveHeuristics:朴素启发式。范围:-2 到 100,默认值:off nodeComparison:节点比较策略。范围:sameProx, sameU, samePseudo,默认值:sameProx nodeLimit:分支定界树中处理的最大节点数限制。范围:[0, 2147483647],默认值:GAMS nodlim nodeStrategy:节点选择策略。范围:fewest, depth, up, down,默认值:fewest normalizeCuts:是否归一化割平面。范围:off, on,默认值:on numberBB:已处理的分支定界节点数。范围:[0, 2147483647],默认值:0 optimizationDirection:优化方向。范围:1(最小化),-1(最大化),默认值:1 outputFormat:输出格式。范围:normal, mps,默认值:normal passPresolve:预求解的轮数。范围:-1 到 1000,默认值:5 perturbation:是否扰动问题。范围:0(关闭)到 100,默认值:1 preprocess:是否预处理。范围:off, on, equal, equal2, equal3,默认值:on presolve:是否预求解问题。范围:off, on, more,默认值:on primalPivot:原始转轴选择算法。范围:Dantzig, automatic, steepest, partial, PE, steepestPE,默认值:automatic primalWeight:初始算法将不可行的代价视为。范围:[1, 1e20],默认值:1e+10 printFrequency:打印日志的频率(节点数间隔)。范围:0 到 2000000,默认值:1000 probingCuts:是否启用探测割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:on proximitySearch:邻近搜索启发式。范围:off, on, both, before,默认值:off psi:Positive Edge 准则的二维定价因子。范围:[-1, 1],默认值:-0.5 randomHeuristic:随机启发式。范围:off, on, both, before,默认值:off randomSeed:CBC 随机种子。范围:[0, 2147483647],默认值:1234567 randomSeedClp:CLP 随机种子。范围:[0, 2147483647],默认值:1234567 reduceAndSplitCuts:是否启用化简与分割割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal,默认值:off refactorFrequency:重新分解频率。范围:0 到 2000000,默认值:200 rens:松弛富集邻域搜索启发式。范围:off, on, both, before,默认值:off residualCuts:是否启用残差割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal,默认值:on reslim:资源限制(秒)。范围:[0, 1e20],默认值:GAMS reslim rins:松弛诱导邻域搜索启发式。范围:off, on, both, before,默认值:off roundingHeuristic:舍入启发式。范围:off, on, both, before,默认值:on scaling:是否缩放问题。范围:off, automatic, equilibrium, geometric,默认值:automatic slowCutAnalysis:慢速割平面分析。范围:0 到 100,默认值:0 smallFactorization:使用小规模分解的阈值。范围:-1 到 100000,默认值:-1 solutionLimit:解的数量限制。范围:[0, 2147483647],默认值:GAMS strongBranching:强分支设置。范围:0 到 100,默认值:5 timelimit:时间限制(秒)。范围:[0, 1e20],默认值:GAMS reslim tol_presolve:预求解容差。范围:[1e-20, ∞],默认值:1e-08 tol_primal:原始容差。范围:[1e-20, ∞],默认值:1e-07 trustPseudoCosts:伪成本信任度。范围:{-3, ..., ∞},默认值:10 twoMirCuts:是否启用双 MIR 割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal, forceandglobal, forceOnGlobal,默认值:root VndVariableNeighborhoodSearch:变邻域搜索启发式。范围:off, on, both, before, intree,默认值:off vubheuristic:变量上界启发式。范围:{-2, ..., 20},默认值:-1 writemps:创建 MPS 文件。范围:字符串,默认值:空 zeroHalfCuts:是否启用零半割平面生成器。范围:off, on, root, ifmove, forceOn, onglobal,默认值:ifmove
在线留言尊敬的客户朋友,如您有任何意见建议,请通过下表反馈给我们,我们会尽快与您联系。
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||