CBC Options

GAMS/CoinCBC brings the open source LP/MIP solver Cbc from the COIN-OR foundation to the broad audience of GAMS users.
CBC (COIN-OR branch and cut) is an open-source mixed integer programming solver working with the COIN-OR LP solver CLP and the COIN-OR Cut generator libraries CGL. The code has been written primarily by John J. Forrest, who is the COIN-OR project leader for CBC. The GAMS interface for Cbc is maintained by Stefan Vigerske, Humboldt-University Berlin, in a separate COIN-OR project called GAMSLinks.
For more information visit the web site for COIN-OR, Cbc, Cgl, Clp, and GAMSlinks.
For documentation of GAMS parameters, see the GAMS parameters documentation.

CBC implements a branch and cut algorithm. There are many parameters which can affect the performance.
First just try with default settings and look carefully at the log file.
Did cuts help? Did they take too long? Look at the output to see which cuts were effective and then do some tuning (see the option cuts).
If the pre-processing reduced the size of the problem or strengthened many coefficients then it is probably wise to leave it on.
Switch off heuristics which did not provide solutions.
The other major area to look at is the search. Hopefully good solutions were obtained fairly early in the search so the important point is to select the best variable to branch on. See whether strong branching did a good job - or did it just take a lot of iterations. Adjust the options strongbranching and trustpseudocosts.

For more information about this solver please inspect the complete CBC manual.

Summary of CBC Options

General Options

iterlim iteration limit
names specifies whether variable and equation names should be given to CBC
reslim resource limit
special options passed unseen to CBC
writemps create MPS file for problem

LP Options

crash use crash method to get dual feasible
crossover crossover to simplex algorithm after barrier
dualpivot dual pivot choice algorithm
idiotcrash idiot crash
maxfactor maximum number of iterations between refactorizations
perturbation perturbation of problem
presolve switch for initial presolve of LP
primalpivot primal pivot choice algorithm
scaling scaling method
sifting synonym for sprint crash
sprintcrash sprint crash
startalg LP solver for root node
tol_dual dual feasibility tolerance
tol_presolve tolerance used in presolve
tol_primal primal feasibility tolerance

MIP Options

coststrategy how to use costs as priorities
cutoff cutoff for objective function value
increment increment of cutoff when new incumbent
mipstart whether it should be tried to use the initial variable levels as initial MIP solution
nodelim node limit
nodestrategy how to select nodes
nodlim node limit
optca absolute stopping tolerance
optcr relative stopping tolerance
preprocess integer presolve
printfrequency frequency of status prints
sollim limit on number of solutions
strongbranching strong branching
threads number of threads to use (available on Unix variants only)
tol_integer tolerance for integrality
trustpseudocosts after howmany nodes we trust the pseudo costs

MIP Options for Cutting Plane Generators

cliquecuts Clique Cuts
cutdepth depth in tree at which cuts are applied
cuts global switch for cutgenerators
cut_passes_root number of cut passes at root node
cut_passes_tree number of cut passes at nodes in the tree
flowcovercuts Flow Cover Cuts
gomorycuts Gomory Cuts
knapsackcuts Knapsack Cover Cuts
liftandprojectcuts Lift and Project Cuts
mircuts Mixed Integer Rounding Cuts
probingcuts Probing Cuts
reduceandsplitcuts Reduce and Split Cuts
residualcapacitycuts Residual Capacity Cuts
twomircuts Two Phase Mixed Integer Rounding Cuts

MIP Options for Heuristics

combinesolutions combine solutions heuristic
feaspump feasibility pump
feaspump_passes number of feasibility passes
greedyheuristic greedy heuristic
heuristics global switch for heuristics
localtreesearch local tree search heuristic
rins relaxed induced neighborhood search
roundingheuristic rounding heuristic

MIP Options for the GAMS Branch Cut and Heuristic Facility

usercutcall The GAMS command line to call the cut generator
usercutfirst Calls the cut generator for the first n nodes
usercutfreq Determines the frequency of the cut generator model calls
usercutinterval Determines the interval when to apply the multiplier for the frequency of the cut generator model calls
usercutmult Determines the multiplier for the frequency of the cut generator model calls
usercutnewint Calls the cut generator if the solver found a new integer feasible solution
usergdxin The name of the GDX file read back into CBC
usergdxname The name of the GDX file exported from the solver with the solution at the node
usergdxnameinc The name of the GDX file exported from the solver with the incumbent solution
usergdxprefix Prefixes usergdxin, usergdxname, and usergdxnameinc
userheurcall The GAMS command line to call the heuristic
userheurfirst Calls the heuristic for the first n nodes
userheurfreq Determines the frequency of the heuristic model calls
userheurinterval Determines the interval when to apply the multiplier for the frequency of the heuristic model calls
userheurmult Determines the multiplier for the frequency of the heuristic model calls
userheurnewint Calls the heuristic if the solver found a new integer feasible solution
userheurobjfirst Calls the heuristic if the LP value of the node is closer to the best bound than the current incumbent
userjobid Postfixes gdxname, gdxnameinc, and gdxin
userkeep Calls gamskeep instead of gams

Detailed Descriptions of CBC Options

cliquecuts (string) Clique Cuts

Determines whether and when CBC should try to generate clique cuts. See the option cuts for an explanation on the different values.
Clique cuts are of the form "sum of a set of variables <= 1".
Reference: M. Eso, Parallel branch and cut for set partitioning, Cornell University, 1999.
(default = ifmove)

combinesolutions (integer) combine solutions heuristic

This parameter control the use of a heuristic which does branch and cut on the given problem by just using variables which have appeared in one or more solutions. It is obviously only tried after two or more solutions.
(default = 1)
0. Turns the combine solutions heuristic off.
1. Turns the combine solutions heuristic on.

coststrategy (string) how to use costs as priorities

This parameter influence the branching variable selection.
If turned on, then the variables are sorted in order of their absolute costs, and branching is done first on variables with largest cost. This primitive strategy can be surprisingly effective.
(default = off)
off. Turns off a specific cost strategy.
priorities. Assigns highest priority to variables with largest absolute cost.
columnorder. Assigns the priorities 1, 2, 3,.. with respect to the column ordering.
binaryfirst. Handles two sets of priorities such that binary variables get high priority.
binarylast. Handles two sets of priorities such that binary variables get low priority.
length. Assigns high priority to variables that are at most nonzero.

crash (string) use crash method to get dual feasible

Determines whether CLP should use a crash algorithm to find a dual feasible basis.
(default = off)
off. Switch off the creation of dual feasible basis by the crash method.
on. Switch on the creation of dual feasible basis by the crash method.
solow_halim. Switch on a crash variant due to Solow and Halim.
halim_solow. Switch on a crash variant due to Solow and Halim with modifications of John J. Forrest.

crossover (integer) crossover to simplex algorithm after barrier

Determines whether CLP should crossover to the simplex algorithm after the barrier algorithm finished.
Interior point algorithms do not obtain a basic solution. This option will crossover to a basic solution suitable for ranging or branch and cut. With the current state of the quadratic solver it may be a good idea to switch off the crossover for quadratic problems (and maybe presolve as well). CLP does this.
(default = 1)
0. Turn off crossover to simplex algorithm after barrier algorithm finished.
1. Turn on crossover to simplex algorithm after barrier algorithm finished.

cutdepth (integer) depth in tree at which cuts are applied

If the depth in the tree is a multiple of cutdepth, then cut generators are applied.
Cut generators may be off, on only at the root, on if they look useful, or on at some interval. Setting this option to a positive value K let CBC call a cutgenerator on a node whenever the depth in the tree is a multiple of K.
(default = -1)
-1. Does not turn on cut generators because the depth of the tree is a multiple of a value.

cutoff (real) cutoff for objective function value

CBC stops if the objective function values exceeds (in case of maximization) or falls below (in case of minimization) this value.
(default = GAMS cutoff)

cuts (string) global switch for cutgenerators

A global switch to turn on or off the cutgenerators.
This can be used to switch on or off all default cut generators. Then you can set individual ones off or on using the specific options.
(default = on)
off. Turns off all cut generators.
on. Turns on all default cut generators and CBC will try them in the branch and cut tree (see the option cutdepth on how to fine tune the behaviour).
root. Let CBC generate cuts only at the root node.
ifmove. Let CBC use cut generators in the tree if they look as if they are doing some good and moving the objective value.
forceon. Turns on all default cut generators and force CBC to use the cut generator at every node.

cut_passes_root (integer) number of cut passes at root node

Determines the number of rounds that the cut generators are applied in the root node.
A negative value -n means that n passes are also applied if the objective does not drop.
(default = 100 passes if the MIP has less than 500 columns, 100 passes (but stop if the drop in the objective function value is small) if it has less than 5000 columns, and 20 passes otherwise.)

cut_passes_tree (integer) number of cut passes at nodes in the tree

Determines the number of rounds that the cut generators are applied in the nodes of the tree other than the root node.
A negative value -n means that n passes are also applied if the objective does not drop.
(default = 1)

dualpivot (string) dual pivot choice algorithm

Choice of the pivoting strategy in the dual simplex algorithm.
(default = auto)
auto. Let CLP use a variant of the steepest choice method which starts like partial, i.e., scans only a subset of the primal infeasibilities, and later changes to full pricing when the factorization becomes denser.
dantzig. Let CLP use the pivoting strategy due to Dantzig.
steepest. Let CLP use the steepest choice method.
partial. Let CLP use a variant of the steepest choice method which scans only a subset of the primal infeasibilities to select the pivot step.

feaspump (integer) feasibility pump

This parameter control the use of the feasibility pump heuristic at the root.
This is due to Fischetti and Lodi and uses a sequence of LPs to try and get an integer feasible solution. Some fine tuning is available by the option feaspump_passes.
Reference: M. Fischetti, F. Glover, and A. Lodi, The feasibility pump, Math. Programming, 104 (2005), pp. 91-104.
(default = 1)
0. Turns the feasibility pump off.
1. Turns the feasiblity pump on.

feaspump_passes (integer) number of feasibility passes

This fine tunes the feasibility pump heuristic by setting the number of passes.
(default = 20)

flowcovercuts (string) Flow Cover Cuts

Determines whether and when CBC should try to generate flow cover cuts.
See the option cuts for an explanation on the different values.
The flow cover cut generator generates lifted simple generalized flow cover inequalities. Since flow cover inequalities are generally not facet-defining, they are lifted to obtain stronger inequalities. Although flow cover inequalities requires a special problem structure to be generated, they are quite useful for solving general mixed integer linear programs.
Reference: Z. Gu, G.L. Nemhauser, M.W.P. Savelsbergh, Lifted flow cover inequalities for mixed 0-1 integer programs, Math. Programming A 85 (1999) 439-467.
(default = ifmove)

gomorycuts (string) Gomory Cuts

Determines whether and when CBC should try to generate mixed-integer Gomory cuts.
See the option cuts for an explanation on the different values.
Reference: Laurence A. Wolsey, Integer Programming, Wiley, John & Sons, (1998) 124-132.
(default = ifmove)

greedyheuristic (string) greedy heuristic

This parameter control the use of a pair of greedy heuristic which will try to obtain a solution. It may just fix a percentage of variables and then try a small branch and cut run.
(default = on)
off. Turns off the greedy heuristic.
on. Turns on the greedy heuristic.
root. Turns on the greedy heuristic only for the root node.

heuristics (integer) global switch for heuristics

This parameter can be used to switch on or off all heuristics, except for the local tree search as it dramatically alters the search. Then you can set individual ones off or on.
(default = 1)
0. Turns all MIP heuristics off.
1. Turns all MIP heuristics on (except local tree search).

idiotcrash (integer) idiot crash

This is a type of `crash' which works well on some homogeneous problems. It works best on problems with unit elements and right hand sides but will do something to any model. It should only be used before the primal simplex algorithm.
A positive number determines the number of passes that idiotcrash is called.
(default = -1)
-1. Let CLP decide by itself whether to use it.
0. Switch this method off.

increment (real) increment of cutoff when new incumbent

A valid solution must be at least this much better than last integer solution.
If this option is not set then it CBC will try and work one out. E.g., if all objective coefficients are multiples of 0.01 and only integer variables have entries in objective then this can be set to 0.01.
(default = GAMS cheat)

iterlim (integer) iteration limit

For an LP, this is the maximum number of iterations to solve the LP. For a MIP, this option is ignored.
(default = GAMS iterlim)

knapsackcuts (string) Knapsack Cover Cuts

Determines whether and when CBC should try to generate knapsack cover cuts.
See the option cuts for an explanation on the different values.
The knapsack cover cut generator looks for a series of different types of minimal covers. If a minimal cover is found, it lifts the associated minimal cover inequality and adds the lifted cut to the cut set.
Reference: S. Martello, and P. Toth, Knapsack Problems, Wiley, 1990, p30.
(default = ifmove)

liftandprojectcuts (string) Lift and Project Cuts

Determines whether and when CBC should try to generate lift and project cuts. They might be expensive to compute, thus they are switched off by default.
See the option cuts for an explanation on the different values.
Reference: E. Balas and M. Perregaard, A precise correspondence between lift-and-project cuts, simple disjunctive cuts, and mixed integer Gomory cuts for 0-1 programming. Math. Program., 94(203,Ser. B):221-245,2003.
(default = off)

localtreesearch (integer) local tree search heuristic

This parameter control the use of a local search algorithm when a solution is found.
It is from Fischetti and Lodi and is not really a heuristic although it can be used as one (with limited functionality). This heuristic is not controlled by the option heuristics.
Reference: M. Fischetti and A. Lodi, Local Branching, Math. Programming B, 98 (2003), pp. 23-47.
(default = 0)
0. Turns the local tree search off.
1. Turns the local tree search on.

maxfactor (integer) maximum number of iterations between refactorizations

Maximum number of iterations between refactorizations in CLP.
If this is left at the default value of 200 then CLP will guess at a value to use. CLP may decide to refactorize earlier for accuracy.
(default = 200)

mipstart (integer) whether it should be tried to use the initial variable levels as initial MIP solution

This option controls the use of advanced starting values for mixed integer programs. A setting of 1 indicates that the variable level values should be checked to see if they provide an integer feasible solution before starting optimization.
(default = 0)
0. Do not use the initial variable levels.
1. Try to use the initial variable levels as a MIP starting solution.

mircuts (string) Mixed Integer Rounding Cuts

Determines whether and when CBC should try to generate mixed integer rounding cuts.
See the option cuts for an explanation on the different values.
Reference: H. Marchand and L. A. Wolsey, Aggregation and Mixed Integer Rounding to Solve MIPs, Operations Research, 49(3), (2001).
(default = ifmove)

names (integer) specifies whether variable and equation names should be given to CBC

This option causes GAMS names for the variables and equations to be loaded into Cbc. These names will then be used for error messages, log entries, and so forth. Turning names off may help if memory is very tight.
(default = 0)
0. Do not load variable and equation names.
1. Load variable and equation names.

nodelim (integer) node limit

Maximum number of nodes that are considered in the Branch and Bound.
(default = GAMS nodlim)

nodestrategy (string) how to select nodes

This determines the strategy used to select the next node from the branch and cut tree.
(default = fewest)
hybrid. Let CBC do first a breath search on nodes with a small depth in the tree and then switch to choose nodes with fewest infeasibilities.
fewest. This will let CBC choose the node with the fewest infeasibilities.
depth. This will let CBC always choose the node deepest in tree. It gives minimum tree size but may take a long time to find the best solution.
upfewest. This will let CBC choose the node with the fewest infeasibilities and do up branches first.
downfewest. This will let CBC choose the node with the fewest infeasibilities and do down branches first.
updepth. This will let CBC choose the node deepest in tree and do up branches first.
downdepth. This will let CBC choose the node deepest in tree and do down branches first.

nodlim (integer) node limit

Maximum number of nodes that are considered in the Branch and Bound. This option is overwritten by nodelim, if set.
(default = GAMS nodlim)

optca (real) absolute stopping tolerance

Absolute optimality criterion for a MIP. CBC stops if the gap between the best known solution and the best possible solution is less than this value.
(default = GAMS optca)

optcr (real) relative stopping tolerance

Relative optimality criterion for a MIP. CBC stops if the relative gap between the best known solution and the best possible solution is less than this value.
(default = GAMS optcr)

perturbation (integer) perturbation of problem

Determines whether CLP should perturb the problem before starting. Perturbation helps to stop cycling, but CLP uses other measures for this. However, large problems and especially ones with unit elements and unit right hand sides or costs benefit from perturbation. Normally CLP tries to be intelligent, but you can switch this off.
(default = 1)
0. Turns off perturbation of LP.
1. Turns on perturbation of LP.

preprocess (string) integer presolve

This option controls the MIP specific presolve routines. They try to reduce the size of the model in a similar way to presolve and also try to strengthen the model. This can be very useful and is worth trying.
(default = on)
off. Turns off the presolve routines.
on. Turns on the presolve routines.
equal. Turns on the presolve routines and let CBC turn inequalities with more than 5 elements into equalities (cliques) by adding slack variables.
equalall. Turns on the presolve routines and let CBC turn all inequalities into equalities by adding slack variables.
sos. This option let CBC search for rows with upper bound 1 and where all nonzero coefficients are 1 and creates special ordered sets if the sets are not overlapping and all integer variables (except for at most one) are in the sets.
trysos. This option is similar to sos, but allows any number integer variables to be outside of the sets.

presolve (integer) switch for initial presolve of LP

Presolve analyzes the model to find such things as redundant constraints, constraints which fix some variables, constraints which can be transformed into bounds, etc. For the initial solve of any problem this is worth doing unless you know that it will have no effect.
(default = 1)
0. Turns off the initial presolve.
1. Turns on the initial presolve.

primalpivot (string) primal pivot choice algorithm

Choice of the pivoting strategy in the primal simplex algorithm.
(default = auto)
auto. Let CLP use a variant of the exact devex method.
dantzig. Let CLP use the pivoting strategy due to Dantzig.
steepest. Let CLP use the steepest choice method.
partial. Let CLP use a variant of the exact devex method which scans only a subset of the primal infeasibilities to select the pivot step.
exact. Let CLP use the exact devex method.
change. Let CLP initially use Dantzig pivot method until the factorization becomes denser.

printfrequency (integer) frequency of status prints

Controls the number of nodes that are evaluated between status prints.
(default = 0)
0. Automatic choice, which is 100 for large problems and 1000 for small problems.

probingcuts (string) Probing Cuts

Determines whether and when CBC should try to generate cuts based on probing.
Additional to the values for the option cuts three more values are possible here.
Reference: M. Savelsbergh, Preprocessing and Probing Techniques for Mixed Integer Programming Problems, ORSA Journal on Computing 6 (1994), 445.
(default = ifmove)
off. Turns off Probing.
on. Turns on Probing and CBC will try it in the branch and cut tree (see the option cutdepth how to fine tune this behaviour).
root. Let CBC do Probing only at the root node.
ifmove. Let CBC do Probing in the tree if it looks as if it is doing some good and moves the objective value.
forceon. Turns on Probing and forces CBC to do Probing at every node.
forceonbut. Turns on Probing and forces CBC to call the cut generator at every node, but does only probing, not strengthening etc.
forceonstrong. If CBC is forced to turn Probing on at every node (by setting this option to force), but this generator produces no cuts, then it is actually turned on only weakly (i.e., just every now and then). Setting forceonstrong forces CBC strongly to do probing at every node.
forceonbutstrong. This is like forceonstrong, but does only probing (column fixing) and turns off row strengthening, so the matrix will not change inside the branch and bound.

reduceandsplitcuts (string) Reduce and Split Cuts

Determines whether and when CBC should try to generate reduced and split cuts.
See the option cuts for an explanation on the different values.
Reduce and split cuts are variants of Gomory cuts. Starting from the current optimal tableau, linear combinations of the rows of the current optimal simplex tableau are used for generating Gomory cuts. The choice of the linear combinations is driven by the objective of reducing the coefficients of the non basic continuous variables in the resulting row.
Reference: K. Anderson, G. Cornuejols, and Yanjun Li, Reduce-and-Split Cuts: Improving the Performance of Mixed Integer Gomory Cuts, Management Science 51 (2005).
(default = off)

residualcapacitycuts (string) Residual Capacity Cuts

Determines whether and when CBC should try to generate residual capacity cuts.
See the option cuts for an explanation on the different values.
These inequalities are particularly useful for Network Design and Capacity Planning models.
References:
T.L. Magnanti, P. Mirchandani, and R. Vachani, The convex hull of two core capacitated network design problems, Math. Programming, 60 (1993), pp. 233-250.
A. Atamturk and D. Rajan, On splittable and unsplittable flow capacitated network design arc-set polyhedra, Math. Programming, 92 (2002), pp. 315-333.
(default = off)

reslim (real) resource limit

Maximum time in seconds.
(default = GAMS reslim)

rins (integer) relaxed induced neighborhood search

This parameter control the use of the relaxed induced neighborhood search heuristic.
This heuristic compares the current solution with the best incumbent, fixes all discrete variables with the same value, presolves the problem, and does a branch and bound for 200 nodes.
Reference: E. Danna, E. Rothberg, and C. Le Pape, Exploring relaxation induced neighborhoods to improve MIP solutions, Math. Programming, 102 (1) (2005), pp. 71-91.
(default = 0)
0. Turns the relaxed induced neighborhood search off.
1. Turns the relaxed induced neighborhood search on.

roundingheuristic (integer) rounding heuristic

This parameter control the use of a simple (but effective) rounding heuristic at each node of tree.
(default = 1)
0. Turns the rounding heuristic off.
1. Turns the rounding heuristic on.

scaling (string) scaling method

Scaling can help in solving problems which might otherwise fail because of lack of accuracy. It can also reduce the number of iterations. It is not applied if the range of elements is small. Both methods do several passes alternating between rows and columns using current scale factors from one and applying them to the other.
(default = auto)
off. Turns off scaling.
auto. Let CLP choose the scaling method automatically. It decides for one of these methods depending on which gives the better ratio of the largest element to the smallest one.
equilibrium. Let CLP use an equilibrium based scaling method which uses the largest scaled element.
geometric. Let CLP use a geometric based scaling method which uses the squareroot of the product of largest and smallest element.

sifting (integer) synonym for sprint crash

Synonym for sprintcrash.
(default = -1)

sollim (integer) limit on number of solutions

A limit on number of feasible solutions that CBC should find for a MIP.
(default = -1)
-1. No limit on the number of feasible solutions.

special (string) options passed unseen to CBC

This parameter let you specify CBC options which are not supported by the GAMS/CoinCBC interface.
The string value given to this parameter is split up into parts at each space and added to the array of parameters given to CBC (in front of the -solve command). Hence, you can use it like the command line parameters for the CBC standalone version.

sprintcrash (integer) sprint crash

For long and thin problems this method may solve a series of small problems created by taking a subset of the columns. Cplex calls it `sifting'. A positive number determines the number of passes that sprintcrash is called.
(default = -1)
-1. Let CLP decide by itself whether to use it.
0. Switch this method off.

startalg (string) LP solver for root node

Determines the algorithm to use for an LP or the initial LP relaxation if the problem is a MIP.
(default = dual)
primal. Let CLP use the primal simplex algorithm.
dual. Let CLP use the dual simplex algorithm.
barrier. Let CLP use a primal dual predictor corrector algorithm.

strongbranching (integer) strong branching

Determines the number of variables to look at in strong branching.
In order to decide which variable to branch on, the code will choose up to this number of unsatisfied variables and try minimal up and down branches. The most effective one is chosen. If a variable is branched on many times then the previous average up and down costs may be used - see the option trustpseudocosts.
(default = 5)

threads (integer) number of threads to use (available on Unix variants only)

This option controls the multithreading feature of CBC. A number between 1 and 100 sets the number of threads used for parallel branch and bound. A number 100+n with n between 1 and 100 says that n threads are used to parallelize the branch and bound, but also heuristics such as RINS which do branch and bound on a reduced model also use threads. A number 200+n with n between 1 and 100 says that n threads are used to parallelize the branch and bound, but also the cut generators at the root node (i.e., before threads are useful) are run in parallel. A number 300+n with n between 1 and 100 combines the 100+n and 200+n options. Thus, n threads are used to parallelize the branch and bound, but also heuristics use threads and the cut generators at the root node are run in parallel. The 100+n, 200+n, and 300+n options are experimental.
(default = 1)

tol_dual (real) dual feasibility tolerance

The maximum amount the dual constraints can be violated and still be considered feasible.
(default = 1e-7)

tol_integer (real) tolerance for integrality

For an optimal solution, no integer variable may be farther than this from an integer value.
(default = 1e-6)

tol_presolve (real) tolerance used in presolve

The tolerance used in presolve.
(default = 1e-8)

tol_primal (real) primal feasibility tolerance

The maximum amount the primal constraints can be violated and still be considered feasible.
(default = 1e-7)

trustpseudocosts (integer) after howmany nodes we trust the pseudo costs

Using strong branching computes pseudo-costs. This parameter determines after how many branches for a variable we just trust the pseudo costs and do not do any more strong branching.
(default = 5)

twomircuts (string) Two Phase Mixed Integer Rounding Cuts

Determines whether and when CBC should try to generate two phase mixed integer rounding cuts.
See the option cuts for an explanation on the different values.
Reference: S. Dash, and O. Guenluek, Valid Inequalities Based on Simple Mixed-integer Sets, to appear in Math. Programming.
(default = root)

usercutcall (string) The GAMS command line to call the cut generator

The GAMS command line (minus the gams executable name) to call the cut generator.

usercutfirst (integer) Calls the cut generator for the first n nodes

Calls the cut generator for the first n nodes.
(default = 10)

usercutfreq (integer) Determines the frequency of the cut generator model calls

Determines the frequency of the cut generator model calls.
(default = 10)

usercutinterval (integer) Determines the interval when to apply the multiplier for the frequency of the cut generator model calls

Determines the interval when to apply the multiplier for the frequency of the cut generator model calls. See userheurinterval for details.
(default = 100)

usercutmult (integer) Determines the multiplier for the frequency of the cut generator model calls

Determines the multiplier for the frequency of the cut generator model calls.
(default = 2)

usercutnewint (integer) Calls the cut generator if the solver found a new integer feasible solution

Calls the cut generator if the solver found a new integer feasible solution.
(default = 0)
0. Do not call cut generator because a new integer feasible solution is found.
1. Let CBC call the cut generator if a new integer feasible solution is found.

usergdxin (string) The name of the GDX file read back into CBC

The name of the GDX file read back into CBC.
(default = bchin.gdx)

usergdxname (string) The name of the GDX file exported from the solver with the solution at the node

The name of the GDX file exported from the solver with the solution at the node.
(default = bchout.gdx)

usergdxnameinc (string) The name of the GDX file exported from the solver with the incumbent solution

The name of the GDX file exported from the solver with the incumbent solution.
(default = bchout_i.gdx)

usergdxprefix (string) Prefixes usergdxin, usergdxname, and usergdxnameinc

Prefixes to use for usergdxin, usergdxname, and usergdxnameinc.

userheurcall (string) The GAMS command line to call the heuristic

The GAMS command line (minus the gams executable name) to call the heuristic.

userheurfirst (integer) Calls the heuristic for the first n nodes

Calls the heuristic for the first n nodes.
(default = 10)

userheurfreq (integer) Determines the frequency of the heuristic model calls

Determines the frequency of the heuristic model calls.
(default = 10)

userheurinterval (integer) Determines the interval when to apply the multiplier for the frequency of the heuristic model calls

Determines the interval when to apply the multiplier for the frequency of the heuristic model calls. For example, for the first 100 (userheurinterval) nodes, the solver call every 10th (userheurfreq) node the heuristic. After 100 nodes, the frequency gets multiplied by 10 (userheurmult), so that for the next 100 node the solver calls the heuristic every 20th node. For nodes 200-300, the heuristic get called every 40th node, for nodes 300-400 every 80th node and after node 400 every 100th node.
(default = 100)

userheurmult (integer) Determines the multiplier for the frequency of the heuristic model calls

Determines the multiplier for the frequency of the heuristic model calls.
(default = 2)

userheurnewint (integer) Calls the heuristic if the solver found a new integer feasible solution

Calls the heuristic if the solver found a new integer feasible solution.
(default = 0)
0. Do not call heuristic because a new integer feasible solution is found.
1. Let CBC call the heuristic if a new integer feasible solution is found.

userheurobjfirst (integer) Calls the heuristic if the LP value of the node is closer to the best bound than the current incumbent

Similar to userheurfirst but only calls the heuristic if the relaxed objective value promises a significant improvement of the current incumbent, i.e., the LP value of the node has to be closer to the best bound than the current incumbent.
(default = 0)

userjobid (string) Postfixes gdxname, gdxnameinc, and gdxin

Postfixes to use for gdxname, gdxnameinc, and gdxin.

userkeep (integer) Calls gamskeep instead of gams

Calls gamskeep instead of gams
(default = 0)

writemps (string) create MPS file for problem

Write the problem formulation in MPS format. The parameter value is the name of the MPS file.