CBC Options

ampl: option solver cbc; # change the solver
ampl: option cbc_options 'option1=value1 option2=value2'; # specify options
ampl: solve; # solve the problem

Solver options obtained with $ cbc -=.

CBCMP Optimizer Options for AMPL
--------------------------------------------

To set these options, assign a string specifying their values to the AMPL
option "cbcmp_options". For example:

   ampl: option cbcmp_options 'mipgap=1e-6';

 Options:

:cplexUse (cplexUse)
      Whether to use Cplex!

      off - Turn off
      on  - Turn on

:mixedIntegerRoundingCuts (mixedIntegerRoundingCuts)
      Whether to use Mixed Integer Rounding cuts

      off      - disabled
      on       - enabled
      root     - enabled only on root node
      ifmove   - enabled in the tree if it moves the objective value
      forceOn  - enabled at every node
      onglobal - 

acc:sos2
      Solver acceptance level for 'SOS2Constraint', default 2:

      0 - Not accepted natively, automatic redefinition will be attempted
      1 - Accepted but automatic redefinition will be used where possible
      2 - Accepted natively and preferred

alg:basis (basis)
      Whether to use or return a basis:

      0 - No
      1 - Use incoming basis (if provided)
      2 - Return final basis
      3 - Both (1 + 2 = default)

alg:perturbation (perturbation)
      Whether to perturb the problem

      off - Turn off
      on  - Turn on

alg:relax (relax)
      0*/1: Whether to relax integrality of variables.

bar:bscale (bscale)
      Whether to scale in barrier (and ordering speed)

      off  - 
      on   - 
      off1 - 
      on1  - 
      off2 - 
      on2  - 

bar:cholesky (cholesky)
      Which cholesky algorithm

      native                    - 
      dense                     - 
      fudgeLong_dummy           - 
      wssmp_dummy               - 
      UniversityOfFlorida_dummy - 
      Taucs_dummy               - 
      Mumps_dummy               - 
      Pardiso_dummy             - 

bar:crash (crash)
      Whether to create basis for problem

      off - Turn off
      on  - Turn on

bar:crossover (crossover)
      Whether to get a basic solution with the simplex algorithm after the
      barrier algorithm finished

      on       - 
      off      - 
      maybe    - 
      presolve - 

bar:gammadelta (gamma(Delta))
      Whether to regularize barrier

      off         - 
      on          - 
      gamma       - 
      delta       - 
      onstrong    - 
      gammastrong - 
      deltastrong - 

bar:kkt (KKT)
      Whether to use KKT factorization in barrier

      off - Turn off
      on  - Turn on

cut:cliqueCuts (cliqueCuts)
      Whether to use Clique cuts

      off      - disabled
      on       - enabled
      root     - enabled only on root node
      ifmove   - enabled in the tree if it moves the objective value
      forceOn  - enabled at every node
      onglobal - 

cut:cut (cutsOnOff)
      Switches all cut generators on or off

      off     - disabled
      on      - enabled
      root    - enabled only on root node
      ifmove  - enabled in the tree if it moves the objective value
      forceOn - enabled at every node

cut:flowcovercuts (flowCoverCuts)
      Whether to use Flow Cover cuts

      off      - disabled
      on       - enabled
      root     - enabled only on root node
      ifmove   - enabled in the tree if it moves the objective value
      forceOn  - enabled at every node
      onglobal - 

cut:gmicuts (GMICuts)
      Whether to use alternative Gomory cuts

      off         - 
      on          - 
      root        - 
      ifmove      - 
      forceOn     - 
      endonly     - 
      long        - 
      longroot    - 
      longifmove  - 
      forceLongOn - 
      longendonly - 

cut:gomorycuts (gomoryCuts)
      Whether to use Gomory cuts

      off            - 
      on             - 
      root           - 
      ifmove         - 
      forceOn        - 
      onglobal       - 
      forceandglobal - 
      forceLongOn    - 
      long           - 

cut:knapsackcuts (knapsackCuts)
      Whether to use Knapsack cuts

      off            - 
      on             - 
      root           - 
      ifmove         - 
      forceOn        - 
      onglobal       - 
      forceandglobal - 

cut:lagomorycuts (lagomoryCuts)
      Whether to use Lagrangean Gomory cuts

      off             - 
      endonlyroot     - 
      endcleanroot    - 
      root            - 
      endonly         - 
      endclean        - 
      endboth         - 
      onlyaswell      - 
      cleanaswell     - 
      bothaswell      - 
      onlyinstead     - 
      cleaninstead    - 
      bothinstead     - 
      onlyaswellroot  - 
      cleanaswellroot - 
      bothaswellroot  - 

cut:latwomircuts (latwomirCuts)
      Whether to use Lagrangean TwoMir cuts

      off          - 
      endonlyroot  - 
      endcleanroot - 
      endbothroot  - 
      endonly      - 
      endclean     - 
      endboth      - 
      onlyaswell   - 
      cleanaswell  - 
      bothaswell   - 
      onlyinstead  - 
      cleaninstead - 
      bothinstead  - 

cut:liftandprojectcuts (liftAndProjectCuts)
      Whether to use Lift and Project cuts

      off     - disabled
      on      - enabled
      root    - enabled only on root node
      ifmove  - enabled in the tree if it moves the objective value
      forceOn - enabled at every node

cut:probingCuts (probingCuts)
      Whether to use Probing cuts

      off              - 
      on               - 
      root             - 
      ifmove           - 
      forceOn          - 
      onglobal         - 
      forceonglobal    - 
      forceOnBut       - 
      forceOnStrong    - 
      forceOnButStrong - 
      strongRoot       - 

cut:reduce2andsplitcts (reduce2AndSplitCuts)
      Whether to use Reduce-and-Split cuts - style 2

      off      - 
      on       - 
      root     - 
      longOn   - 
      longRoot - 

cut:reduceandsplitcuts (reduceAndSplitCuts)
      Whether to use Reduce-and-Split cuts

      off     - disabled
      on      - enabled
      root    - enabled only on root node
      ifmove  - enabled in the tree if it moves the objective value
      forceOn - enabled at every node

cut:residualcapacitycuts (residualCapacityCuts)
      Whether to use Residual Capacity cuts

      off     - disabled
      on      - enabled
      root    - enabled only on root node
      ifmove  - enabled in the tree if it moves the objective value
      forceOn - enabled at every node

cut:twomircuts (twoMirCuts)
      Whether to use Two phase Mixed Integer Rounding cuts

      off            - 
      on             - 
      root           - 
      ifmove         - 
      forceOn        - 
      onglobal       - 
      forceandglobal - 
      forceLongOn    - 

cut:zeroHalfCuts (zeroHalfCuts)
      Whether to use zero half cuts

      off      - disabled
      on       - enabled
      root     - enabled only on root node
      ifmove   - enabled in the tree if it moves the objective value
      forceOn  - enabled at every node
      onglobal - 

cvt:bigM (cvt:bigm, cvt:mip:bigM, cvt:mip:bigm)
      Default value of big-M for linearization of logical constraints. Not
      used by default. Use with care (prefer tight bounds). Should be smaller
      than (1.0 / [integrality tolerance])

cvt:mip:eps (cvt:cmp:eps)
      Tolerance for strict comparison of continuous variables for MIP. Ensure
      larger than the solver's feasibility tolerance.

cvt:plapprox:domain (plapprox:domain, plapproxdomain)
      For piecewise-linear approximated functions, both arguments and result
      are bounded to +-[pladomain]. Default 1e6.

cvt:plapprox:reltol (plapprox:reltol, plapproxreltol)
      Relative tolerance for piecewise-linear approximation. Default 0.01.

cvt:pre:all
      0/1*: Set to 0 to disable most presolve in the flat converter.

cvt:pre:eqbinary
      0/1*: Preprocess reified equality comparison with a binary variable.

cvt:pre:eqresult
      0/1*: Preprocess reified equality comparison's boolean result bounds.

cvt:quadcon (passquadcon)
      0*/1: Multiply out and pass quadratic constraint terms to the solver,
      vs. linear approximation.

cvt:quadobj (passquadobj)
      0*/1: Multiply out and pass quadratic objective terms to the solver, vs.
      linear approximation.

cvt:sos (sos)
      0/1*: Whether to honor declared suffixes .sosno and .ref describing SOS
      sets. Each distinct nonzero .sosno value designates an SOS set, of type
      1 for positive .sosno values and of type 2 for negative values. The .ref
      suffix contains corresponding reference values used to order the
      variables.

cvt:sos2 (sos2)
      0/1*: Whether to honor SOS2 constraints for nonconvex piecewise-linear
      terms, using suffixes .sos and .sosref provided by AMPL.

double:allowableGap (allowableGap)
      Stop when gap between best possible and best less than this (default 0).

double:artificialCost (artificialCost)
      Costs >= this treated as artificials in feasibility pump (default 0).

double:cutoff (cutoff)
      Bound on the objective value for all solutions (default 1e+50).

double:dextra3 (dextra3)
      Extra double parameter 3 (default 0).

double:dextra4 (dextra4)
      Extra double parameter 4 (default 0).

double:dextra5 (dextra5)
      Extra double parameter 5 (default 0).

double:dualBound (dualBound)
      Initially algorithm acts as if no gap between bounds exceeds this value
      (default 1e+10).

double:dualTolerance (dualTolerance)
      For an optimal solution no dual infeasibility may exceed this value
      (default 1e-07).

double:fixOnDj (fixOnDj)
      Try heuristic based on fixing variables with reduced costs greater than
      this (default -1).

double:fractionforBAB (fractionforBAB)
      Fraction in feasibility pump (default 0.5).

double:increment (increment)
      A valid solution must be at least this much better than last integer
      solution (default 1e-05).

double:infeasibilityWeight (infeasibilityWeight)
      Each integer infeasibility is expected to cost this much (default 0).

double:integerTolerance (integerTolerance)
      For a feasible solution no integer variable may be more than this away
      from an integer value (default 1e-07).

double:objectiveScale (objectiveScale)
      Scale factor to apply to objective (default 1).

double:preTolerance (preTolerance)
      Tolerance to use in presolve (default 1e-08).

double:primalTolerance (primalTolerance)
      For a feasible solution no primal infeasibility, i.e., constraint
      violation, may exceed this value (default 1e-07).

double:primalWeight (primalWeight)
      Initially algorithm acts as if it costs this much to be infeasible
      (default 1e+10).

double:psi (psi)
      Two-dimension pricing factor for Positive Edge criterion (default -0.5).

double:pumpCutoff (pumpCutoff)
      Fake cutoff for use in feasibility pump (default 0).

double:pumpIncrement (pumpIncrement)
      Fake increment for use in feasibility pump (default 0).

double:ratioGap (ratioGap)
      Stop when gap between best possible and best known is less than this
      fraction of larger of two (default 0).

double:reallyObjectiveScale (reallyObjectiveScale)
      Scale factor to apply to objective in place (default 1).

double:rhsScale (rhsScale)
      Scale factor to apply to rhs and bounds (default 1).

double:seconds (seconds)
      maximum seconds (default 1e+08).

double:tightenFactor (tightenFactor)
      Tighten bounds using this times largest activity at continuous solution
      (default -1).

double:zeroTolerance (zeroTolerance)
      Kill all coefficients whose absolute value is less than this value
      (default 1e-20).

int:cppGenerate (cppGenerate)
      Generates C++ code (default -1).

int:cutDepth (cutDepth)
      Depth in tree at which to do cuts (default -1).

int:cutLength (cutLength)
      Length of a cut (default -1).

int:decompose (decompose)
      Whether to try decomposition (default 0).

int:denseThreshold (denseThreshold)
      Threshold for using dense factorization (default -1).

int:depthMiniBab (depthMiniBab)
      Depth at which to try mini branch-and-bound (default -1).

int:diveOpt (diveOpt)
      Diving options (default -1).

int:diveSolves (diveSolves)
      Diving solve option (default 100).

int:dualize (dualize)
      Solves dual reformulation (default 3).

int:expensiveStrong (expensiveStrong)
      Whether to do even more strong branching (default 0).

int:experiment (experiment)
      Whether to use testing features (default 0).

int:extra1 (extra1)
      Extra integer parameter 1 (default -1).

int:extra2 (extra2)
      Extra integer parameter 2 (default -1).

int:extra3 (extra3)
      Extra integer parameter 3 (default -1).

int:extra4 (extra4)
      Extra integer parameter 4 (default -1).

int:extraVariables (extraVariables)
      Allow creation of extra integer variables (default 0).

int:forceSolution (forceSolution)
      Whether to use given solution as crash for BAB (default -1).

int:hOptions (hOptions)
      Heuristic options (default 0).

int:hotStartMaxIts (hotStartMaxIts)
      Maximum iterations on hot start (default 100).

int:idiotCrash (idiotCrash)
      Whether to try idiot crash (default -1).

int:logLevel (logLevel)
      Level of detail in Coin branch and Cut output (default 1).

int:maxFactor (maxFactor)
      Maximum number of iterations between refactorizations (default 200).

int:maxIterations (maxIterations)
      Maximum number of iterations before stopping (default 2147483647).

int:maxNodes (maxNodes)
      Maximum number of nodes to do (default 2147483647).

int:maxSavedSolutions (maxSavedSolutions)
      Maximum number of solutions to save (default -1).

int:maxSolutions (maxSolutions)
      Maximum number of feasible solutions to get (default -1).

int:mipOptions (mipOptions)
      Dubious options for mip (default 1057).

int:moreMipOptions (moreMipOptions)
      More dubious options for mip (default -1).

int:moreSpecialOptions (moreSpecialOptions)
      Yet more dubious options for Simplex - see ClpSimplex.hpp (default -1).

int:moreTune (moreTune)
      Yet more dubious ideas for feasibility pump (default 0).

int:multipleRootPasses (multipleRootPasses)
      Do multiple root passes to collect cuts and solutions (default 0).

int:numberAnalyze (numberAnalyze)
      Number of analysis iterations (default -1).

int:outputFormat (outputFormat)
      Which output format to use (default 2).

int:passCuts (passCuts)
      Number of rounds that cut generators are applied in the root node
      (default 20).

int:passFeasibilityPump (passFeasibilityPump)
      How many passes to do in the Feasibility Pump heuristic (default 20).

int:passPresolve (passPresolve)
      How many passes in presolve (default 5).

int:passTreeCuts (passTreeCuts)
      Number of rounds that cut generators are applied in the tree (default
      1).

int:pertValue (pertValue)
      Method of perturbation (default 50).

int:pOptions (pOptions)
      Dubious print options (default 0).

int:preOpt (preOpt)
      Presolve options (default -1).

int:pumpTune (pumpTune)
      Dubious ideas for feasibility pump (default 1003).

int:randomCbcSeed (randomCbcSeed)
      Random seed for Cbc (default -1).

int:randomSeed (randomSeed)
      Random seed for Clp (default 1234567).

int:slogLevel (slogLevel)
      Level of detail in (LP) Solver output (default 1).

int:slowcutpasses (slowcutpasses)
      Maximum number of rounds for slower cut generators (default 10).

int:slpValue (slpValue)
      Number of slp passes before primal (default -1).

int:smallFactorization (smallFactorization)
      Threshold for using small factorization (default -1).

int:specialOptions (specialOptions)
      Dubious options for Simplex - see ClpSimplex.hpp (default -1).

int:sprintCrash (sprintCrash)
      Whether to try sprint crash (default -1).

int:strategy (strategy)
      Switches on groups of features (default 1).

int:strongBranching (strongBranching)
      Number of variables to look at in strong branching (default 5).

int:substitution (substitution)
      How long a column to substitute for in presolve (default 3).

int:testOsi (testOsi)
      Test OsiObject stuff (default -1).

int:trustPseudoCosts (trustPseudoCosts)
      Number of branches before we trust pseudocosts (default 5).

int:tunePreProcess (tunePreProcess)
      Dubious tuning parameters for preprocessing (default -1).

int:verbose (verbose)
      Switches on longer help on single ? (default 0).

int:vubheuristic (vubheuristic)
      Type of VUB heuristic (default -1).

lim:time (timelim, timelimit)
      Limit on solve time (in seconds; default: no limit).

lp:dualpivot (dualPivot)
      Dual pivot choice algorithm

      automatic  - 
      dantzig    - 
      partial    - 
      steepest   - 
      PEsteepest - 
      PEdantzig  - 

lp:pfi (PFI)
      Whether to use Product Form of Inverse in simplex

      off - Turn off
      on  - Turn on

lp:primalpivot (primalPivot)
      Primal pivot choice algorithm

      auto!matic - 
      exact      - 
      dantzig    - 
      partial    - 
      steepest   - 
      change     - 
      sprint     - 
      PEsteepest - 
      PEdantzig  - 

mip:combine2Solutions (combine2Solutions)
      Whether to use crossover solution heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:combineSolutions (combineSolutions)
      Whether to use combine solution heuristic

      off         - 
      on          - 
      both        - 
      before      - 
      onquick     - 
      bothquick   - 
      beforequick - 

mip:constraintfromCutoff (constraintfromCutoff)
      Whether to use cutoff as constraint

      off           - 
      on            - 
      variable      - 
      forcevariable - 
      conflict      - 

mip:costStrategy (costStrategy)
      How to use costs for branching priorities

      off          - 
      priorities   - 
      columnOrder  - 
      01first      - 
      01last       - 
      length       - 
      singletons   - 
      nonzero      - 
      generalForce - 

mip:dins (Dins)
      Whether to try Distance Induced Neighborhood Search

      off    - 
      on     - 
      both   - 
      before - 
      often  - 

mip:divingcoefficient (DivingCoefficient)
      Whether to try Coefficient diving heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:divingfractional (DivingFractional)
      Whether to try Fractional diving heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:divingguided (DivingGuided)
      Whether to try Guided diving heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:divinglinesearch (DivingLineSearch)
      Whether to try Linesearch diving heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:divingpseudocost (DivingPseudoCost)
      Whether to try Pseudocost diving heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:divingsome (DivingSome)
      Whether to try Diving heuristics

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:divingvectorlength (DivingVectorLength)
      Whether to try Vectorlength diving heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:dwHeuristic (dwHeuristic)
      Whether to try Dantzig Wolfe heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:feasibilitypumpfeasibilityPump
      Whether to try the Feasibility Pump heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:greedyheuristic (greedyHeuristic)
      Whether to use a greedy heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:heuristics (heuristicsOnOff)
      Switches most primal heuristics on or off

      off - Turn off
      on  - Turn on

mip:localtreesearch (localTreeSearch)
      Whether to use local tree search when a solution is found

      off - Turn off
      on  - Turn on

mip:naiveheuristics (naiveHeuristics)
      Whether to try some stupid heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:nodestrategy (nodeStrategy)
      What strategy to use to select the next node from the branch and cut
      tree

      hybrid     - 
      fewest     - 
      depth      - 
      upfewest   - 
      downfewest - 
      updepth    - 
      downdepth  - 

mip:pivotandcomplement (pivotAndComplement)
      Whether to try Pivot and Complement heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:pivotandfix (pivotAndFix)
      Whether to try Pivot and Fix heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:proximitysearch (proximitySearch)
      Whether to do proximity search heuristic

      off    - 
      on     - 
      both   - 
      before - 
      10     - 
      100    - 
      300    - 

mip:randomizedrounding (randomizedRounding)
      Whether to try randomized rounding heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:rens (Rens)
      Whether to try Relaxation Enforced Neighborhood Search

      off         - 
      on          - 
      both        - 
      before      - 
      200         - 
      1000        - 
      10000       - 
      dj          - 
      djbefore    - 
      usesolution - 

mip:rins (Rins)
      Whether to try Relaxed Induced Neighborhood Search

      off    - 
      on     - 
      both   - 
      before - 
      often  - 

mip:round (round)
      Whether to round integer variables to integral values before returning
      the solution, and whether to report that the solver returned noninteger
      values for integer values: sum of

      1 ==> Round nonintegral integer variables
      2 ==> Modify solve_result
      4 ==> Modify solve_message

      Default = 0. Modifications that were or would be made are reported in
      solve_result and solve_message only if the maximum deviation from
      integrality exceeded mip:round_reptol.

mip:round_reptol (round_reptol)
      Tolerance for reporting rounding of integer variables to integer values;
      see "mip:round". Default = 1e-9.

mip:roundingheuristic (roundingHeuristic)
      Whether to use simple (but effective) Rounding heuristic

      off    - disabled
      on     - use every node in the tree
      both   - 
      before - 

mip:vndvariableneighborhoodsearch (VndVariableNeighborhoodSearch)
      Whether to try Variable Neighborhood Search

      off    - 
      on     - 
      both   - 
      before - 
      intree - 

obj:no (objno)
      Objective to optimize:

      0 - None
      1 - First (default, if available)
      2 - Second (if available), etc.

pre:autoScale
      Whether to scale objective, rhs and bounds of problem if they look odd:

      off - Turn off
      on  - Turn on

pre:biasLU
      Whether factorization biased towards U:

      UU - 
      UX - 
      LX - 
      LL - 

pre:factorization (factorization)
      Which factorization to use

      normal - 
      dense  - 
      simple - 
      osl    - 

pre:preprocess (preprocess)
      Whether to use integer preprocessing

      off             - 
      on              - 
      save            - 
      equal           - 
      sos             - 
      trysos          - 
      equalall        - 
      strategy        - 
      aggregate       - 
      forcesos        - 
      stopaftersaving - 

pre:presolve (presolve)
      Whether to presolve problem

      on   - 
      off  - 
      more - 
      file - 

pre:scaling (scaling)
      Whether to scale problem

      off         - 
      equilibrium - 
      geometric   - 
      automatic   - 
      dynamic     - 
      rowsonly    - 

pre:sparsefactor (sparseFactor)
      Whether factorization treated as sparse

      off - Turn off
      on  - Turn on

tech:debug (debug)
      0*/1: whether to assist testing & debugging, e.g., by outputting
      auxiliary information.

tech:exportfile (writeprob, writemodel)
      Specifies the name of a file where to export the model before solving
      it. This file name can have extension ".lp()", ".mps", etc. Default = ""
      (don't export the model).

tech:justexportfile (justwriteprob, justwritemodel)
      Specifies the name of a file where to export the model, do not solve
      it.This file name can have extension ".lp()", ".mps", etc. Default = ""
      (don't export the model).

tech:messages (messages)
      Controls if Clpnnnn is printed

      off - Turn off
      on  - Turn on

tech:optionfile (optionfile, option:file)
      Name of solver option file. (surrounded by 'single' or "double" quotes
      if the name contains blanks). Lines that start with # are ignored.
      Otherwise, each nonempty line should contain "name=value".

tech:outlev (outlev)
      0*/1: Whether to write log lines (chatter) to stdout and to file.

tech:timing (timing)
      0*/1: Whether to display timings for the run.

tech:version (version)
      Single-word phrase: report version details before solving the problem.

tech:wantsol (wantsol)
      In a stand-alone invocation (no "-AMPL" on the command line), what
      solution information to write. Sum of

      1 - Write ".sol" file
      2 - Primal variables to stdout
      4 - Dual variables to stdout
      8 - Suppress solution message.

tech:writegraph (writegraph, exportgraph)
      File to export conversion graph. Format: JSON Lines.