Option | type | B-BB | B-OA | B-QG | B-Hyb | |||

Algorithm choice | ||||||||
---|---|---|---|---|---|---|---|---|

algorithm | S | + | + | + | + | |||

Branch-and-bound options | ||||||||

allowable_fraction_gap | F | + | + | + | + | |||

allowable_gap | F | + | + | + | + | |||

cutoff | F | + | + | + | + | |||

cutoff_decr | F | + | + | + | + | |||

enable_dynamic_nlp | S | + | - | - | - | |||

integer_tolerance | F | + | + | + | + | |||

iteration_limit | I | + | + | + | + | |||

nlp_failure_behavior | S | + | - | - | - | |||

node_comparison | S | + | + | + | + | |||

node_limit | I | + | + | + | + | |||

num_cut_passes | I | - | - | + | + | |||

num_cut_passes_at_root | I | - | - | + | + | |||

number_before_trust | I | + | + | + | + | |||

number_strong_branch | I | + | + | + | + | |||

random_generator_seed | I | + | + | + | + | |||

read_solution_file | S | + | + | + | + | |||

solution_limit | I | + | + | + | + | |||

sos_constraints | S | + | + | + | + | |||

time_limit | F | + | + | + | + | |||

tree_search_strategy | S | + | + | + | + | |||

variable_selection | S | + | - | + | + | |||

ECP cuts generation | ||||||||

ecp_abs_tol | F | - | - | + | + | |||

ecp_max_rounds | I | - | - | + | + | |||

ecp_probability_factor | F | - | - | + | + | |||

ecp_rel_tol | F | - | - | + | + | |||

filmint_ecp_cuts | I | - | - | + | + | |||

Feasibility checker using OA cuts | ||||||||

feas_check_cut_types | S | - | - | + | + | |||

feas_check_discard_policy | S | - | - | + | + | |||

generate_benders_after_so_many_oa | I | - | - | + | + | |||

MILP Solver | ||||||||

cpx_parallel_strategy | I | - | - | - | - | |||

milp_solver | S | - | - | - | - | |||

milp_strategy | S | - | - | - | - | |||

number_cpx_threads | I | - | - | - | - | |||

MILP cutting planes in hybrid algorithm | ||||||||

2mir_cuts | I | - | + | + | + | |||

Gomory_cuts | I | - | + | + | + | |||

clique_cuts | I | - | + | + | + | |||

cover_cuts | I | - | + | + | + | |||

flow_cover_cuts | I | - | + | + | + | |||

lift_and_project_cuts | I | - | + | + | + | |||

mir_cuts | I | - | + | + | + | |||

reduce_and_split_cuts | I | - | + | + | + | |||

NLP interface | ||||||||

nlp_solver | S | + | + | + | + | |||

warm_start | S | + | - | - | - | |||

NLP solution robustness | ||||||||

max_consecutive_failures | I | + | - | - | - | |||

max_random_point_radius | F | + | - | - | - | |||

num_iterations_suspect | I | + | + | + | + | |||

num_retry_unsolved_random_point | I | + | + | + | + | |||

random_point_perturbation_interval | F | + | - | - | - | |||

random_point_type | S | + | - | - | - | |||

resolve_on_small_infeasibility | F | + | - | - | - | |||

NLP solves in hybrid algorithm (B-Hyb) | ||||||||

nlp_solve_frequency | I | - | - | - | + | |||

nlp_solve_max_depth | I | - | - | - | + | |||

nlp_solves_per_depth | F | - | - | - | + | |||

Nonconvex problems | ||||||||

coeff_var_threshold | F | + | - | - | - | |||

dynamic_def_cutoff_decr | S | + | - | - | - | |||

first_perc_for_cutoff_decr | F | + | - | - | - | |||

max_consecutive_infeasible | I | + | - | - | - | |||

num_resolve_at_infeasibles | I | + | - | - | - | |||

num_resolve_at_node | I | + | - | - | - | |||

num_resolve_at_root | I | + | - | - | - | |||

second_perc_for_cutoff_decr | F | + | - | - | - | |||

Outer Approximation Decomposition (B-OA) | ||||||||

oa_decomposition | S | - | - | + | + | |||

Outer Approximation cuts generation | ||||||||

add_only_violated_oa | S | - | + | + | + | |||

oa_cuts_scope | S | - | + | + | + | |||

oa_rhs_relax | F | - | + | + | + | |||

tiny_element | F | - | + | + | + | |||

very_tiny_element | F | - | + | + | + | |||

Output and Loglevel | ||||||||

bb_log_interval | I | + | + | + | + | |||

bb_log_level | I | + | + | + | + | |||

file_solution | S | + | + | + | + | |||

fp_log_frequency | F | - | - | + | + | |||

fp_log_level | I | - | - | + | + | |||

lp_log_level | I | - | + | + | + | |||

milp_log_level | I | - | - | - | - | |||

nlp_log_at_root | I | + | + | + | + | |||

nlp_log_level | I | + | + | + | + | |||

oa_cuts_log_level | I | - | + | + | + | |||

oa_log_frequency | F | + | - | - | + | |||

oa_log_level | I | + | - | - | + | |||

Primal Heuristics | ||||||||

feasibility_pump_objective_norm | I | + | + | + | + | |||

fp_pass_infeasible | S | + | + | + | + | |||

heuristic_RINS | S | + | + | + | + | |||

heuristic_dive_MIP_fractional | S | + | + | + | + | |||

heuristic_dive_MIP_vectorLength | S | + | + | + | + | |||

heuristic_dive_fractional | S | + | + | + | + | |||

heuristic_dive_vectorLength | S | + | + | + | + | |||

heuristic_feasibility_pump | S | + | + | + | + | |||

pump_for_minlp | S | + | + | + | + | |||

Strong branching setup | ||||||||

candidate_sort_criterion | S | + | + | + | + | |||

maxmin_crit_have_sol | F | + | + | + | + | |||

maxmin_crit_no_sol | F | + | + | + | + | |||

min_number_strong_branch | I | + | + | + | + | |||

number_before_trust_list | I | + | + | + | + | |||

number_look_ahead | I | + | + | + | + | |||

number_strong_branch_root | I | + | + | + | + | |||

setup_pseudo_frac | F | + | + | + | + | |||

trust_strong_branching_for_pseudo_cost | S | + | + | + | + |

algorithm:
Choice of the algorithm.

This will preset some of the options of bonmin depending on the algorithm choice.
The default value for this string option is ”B-BB”.

Possible values:

- B-BB: simple branch-and-bound algorithm,
- B-OA: OA Decomposition algorithm,
- B-QG: Quesada and Grossmann branch-and-cut algorithm,
- B-Hyb: hybrid outer approximation based branch-and-cut,
- B-Ecp: ECP cuts based branch-and-cut a la FilMINT.
- B-iFP: Iterated Feasibility Pump for MINLP.

allowable_fraction_gap:
Specify the value of relative gap under which the algorithm stops.

Stop the tree search when the gap between the objective value of the best known
solution and the best bound on the objective of any solution is less than this fraction
of the absolute value of the best known solution value. The valid range for this real
option is -1 ⋅ 10^{+20} ≤ allowable_fraction_gap ≤ 1 ⋅ 10^{+20} and its default value is
0.

allowable_gap:
Specify the value of absolute gap under which the algorithm stops.

Stop the tree search when the gap between the objective value of the best known
solution and the best bound on the objective of any solution is less than this. The
valid range for this real option is -1 ⋅ 10^{+20} ≤ allowable_gap ≤ 1 ⋅ 10^{+20} and its
default value is 0.

cutoff:
Specify cutoff value.

cutoff should be the value of a feasible solution known by the user (if any). The
algorithm will only look for solutions better than cutoff. The valid range for
this real option is -1 ⋅ 10^{+100} ≤ cutoff ≤ 1 ⋅ 10^{+100} and its default value is
1 ⋅ 10^{+100}.

cutoff_decr:
Specify cutoff decrement.

Specify the amount by which cutoff is decremented below a new best upper-bound
(usually a small positive value but in non-convex problems it may be a negative
value). The valid range for this real option is -1 ⋅ 10^{+10} ≤ cutoff_decr ≤ 1 ⋅ 10^{+10}
and its default value is 1 ⋅ 10^{-05}.

enable_dynamic_nlp:
Enable dynamic linear and quadratic rows addition in nlp

The default value for this string option is ”no”.

Possible values:

- no
- yes

integer_tolerance:
Set integer tolerance.

Any number within that value of an integer is considered integer. The valid range for
this real option is 0 < integer_tolerance < +inf and its default value is
1 ⋅ 10^{-06}.

iteration_limit:
Set the cumulative maximum number of iteration in the algorithm used to process
nodes continuous relaxations in the branch-and-bound.

value 0 deactivates option. The valid range for this integer option is
0 ≤ iteration_limit < +inf and its default value is 2147483647.

nlp_failure_behavior:
Set the behavior when an NLP or a series of NLP are unsolved by Ipopt (we call
unsolved an NLP for which Ipopt is not able to guarantee optimality within the
specified tolerances).

If set to ”fathom”, the algorithm will fathom the node when Ipopt fails to find a
solution to the nlp at that node within the specified tolerances. The algorithm
then becomes a heuristic, and the user will be warned that the solution
might not be optimal. The default value for this string option is ”stop”.

Possible values:

- stop: Stop when failure happens.
- fathom: Continue when failure happens.

node_comparison:
Choose the node selection strategy.

Choose the strategy for selecting the next node to be processed. The default value for
this string option is ”best-bound”.

Possible values:

- best-bound: choose node with the smallest bound,
- depth-first: Perform depth first search,
- breadth-first: Perform breadth first search,
- dynamic: Cbc dynamic strategy (starts with a depth first search and turn to best bound after 3 integer feasible solutions have been found).
- best-guess: choose node with smallest guessed integer solution

node_limit:
Set the maximum number of nodes explored in the branch-and-bound search.

The valid range for this integer option is 0 ≤ node_limit < +inf and its default
value is 2147483647.

num_cut_passes:
Set the maximum number of cut passes at regular nodes of the branch-and-cut.

The valid range for this integer option is 0 ≤ num_cut_passes < +inf and its default
value is 1.

num_cut_passes_at_root:
Set the maximum number of cut passes at regular nodes of the branch-and-cut.

The valid range for this integer option is 0 ≤ num_cut_passes_at_root < +inf and
its default value is 20.

number_before_trust:
Set the number of branches on a variable before its pseudo costs are to be
believed in dynamic strong branching.

A value of 0 disables pseudo costs. The valid range for this integer option is
0 ≤ number_before_trust < +inf and its default value is 8.

number_strong_branch:
Choose the maximum number of variables considered for strong branching.

Set the number of variables on which to do strong branching. The valid range for this
integer option is 0 ≤ number_strong_branch < +inf and its default value is
20.

random_generator_seed:
Set seed for random number generator (a value of -1 sets seeds to time since
Epoch).

The valid range for this integer option is -1 ≤ random_generator_seed < +inf and
its default value is 0.

read_solution_file:
Read a file with the optimal solution to test if algorithms cuts it.

For Debugging purposes only. The default value for this string option is ”no”.

Possible values:

- no
- yes

solution_limit:
Abort after that much integer feasible solution have been found by algorithm

value 0 deactivates option The valid range for this integer option is
0 ≤ solution_limit < +inf and its default value is 2147483647.

sos_constraints:
Whether or not to activate SOS constraints.

(only type 1 SOS are supported at the moment) The default value for this string
option is ”enable”.

Possible values:

- enable
- disable

time_limit:
Set the global maximum computation time (in secs) for the algorithm.

The valid range for this real option is 0 ≤ time_limit < +inf and its default value is
1 ⋅ 10^{+10}.

tree_search_strategy:
Pick a strategy for traversing the tree

All strategies can be used in conjunction with any of the node comparison functions.
Options which affect dfs-dive are max-backtracks-in-dive and max-dive-depth. The
dfs-dive won’t work in a non-convex problem where objective does not decrease
down branches. The default value for this string option is ”probed-dive”.

Possible values:

- top-node: Always pick the top node as sorted by the node comparison function
- dive: Dive in the tree if possible, otherwise pick top node as sorted by the tree comparison function.
- probed-dive: Dive in the tree exploring two children before continuing the dive at each level.
- dfs-dive: Dive in the tree if possible doing a depth first search. Backtrack on leaves or when a prescribed depth is attained or when estimate of best possible integer feasible solution in subtree is worst than cutoff. Once a prescribed limit of backtracks is attained pick top node as sorted by the tree comparison function
- dfs-dive-dynamic: Same as dfs-dive but once enough solution are found switch to best-bound and if too many nodes switch to depth-first.

variable_selection:
Chooses variable selection strategy

The default value for this string option is ”strong-branching”.

Possible values:

- most-fractional: Choose most fractional variable
- strong-branching: Perform strong branching
- reliability-branching: Use reliability branching
- qp-strong-branching: Perform strong branching with QP approximation
- lp-strong-branching: Perform strong branching with LP approximation
- nlp-strong-branching: Perform strong branching with NLP approximation
- osi-simple: Osi method to do simple branching
- osi-strong: Osi method to do strong branching
- random: Method to choose branching variable randomly

ecp_abs_tol:
Set the absolute termination tolerance for ECP rounds.

The valid range for this real option is 0 ≤ ecp_abs_tol < +inf and its default value is
1 ⋅ 10^{-06}.

ecp_max_rounds:
Set the maximal number of rounds of ECP cuts.

The valid range for this integer option is 0 ≤ ecp_max_rounds < +inf and its
default value is 5.

ecp_probability_factor:
Factor appearing in formula for skipping ECP cuts.

Choosing -1 disables the skipping. The valid range for this real option is
-inf < ecp_probability_factor < +inf and its default value is 10.

ecp_rel_tol:
Set the relative termination tolerance for ECP rounds.

The valid range for this real option is 0 ≤ ecp_rel_tol < +inf and its default value is
0.

filmint_ecp_cuts:
Specify the frequency (in terms of nodes) at which some a la filmint ecp cuts are
generated.

A frequency of 0 amounts to to never solve the NLP relaxation. The valid range for
this integer option is 0 ≤ filmint_ecp_cuts < +inf and its default value is
0.

feas_check_cut_types:
Choose the type of cuts generated when an integer feasible solution is found

If it seems too much memory is used should try Benders to use less The default value
for this string option is ”outer-approx”.

Possible values:

- outer-approx: Generate a set of Outer Approximations cuts.
- Benders: Generate a single Benders cut.

feas_check_discard_policy:
How cuts from feasibility checker are discarded

Normally to avoid cycle cuts from feasibility checker should not be discarded in the
node where they are generated. However Cbc sometimes does it if no care is taken
which can lead to an infinite loop in Bonmin (usually on simple problems). To
avoid this one can instruct Cbc to never discard a cut but if we do that
for all cuts it can lead to memory problems. The default policy here is to
detect cycles and only then impose to Cbc to keep the cut. The two other
alternative are to instruct Cbc to keep all cuts or to just ignore the problem and
hope for the best The default value for this string option is ”detect-cycles”.

Possible values:

- detect-cycles: Detect if a cycle occurs and only in this case force not to discard.
- keep-all: Force cuts from feasibility checker not to be discarded (memory hungry but sometimes better).
- treated-as-normal: Cuts from memory checker can be discarded as any other cuts (code may cycle then)

generate_benders_after_so_many_oa:
Specify that after so many oa cuts have been generated Benders cuts should be
generated instead.

It seems that sometimes generating too many oa cuts slows down the optimization
compared to Benders due to the size of the LP. With this option we specify that after
so many OA cuts have been generated we should switch to Benders cuts. The valid
range for this integer option is 0 ≤ generate_benders_after_so_many_oa < +inf
and its default value is 5000.

cpx_parallel_strategy:
Strategy of parallel search mode in CPLEX.

-1 = opportunistic, 0 = automatic, 1 = deterministic (refer to CPLEX documentation)
The valid range for this integer option is -1 ≤ cpx_parallel_strategy ≤ 1 and its
default value is 0.

milp_solver:
Choose the subsolver to solve MILP sub-problems in OA decompositions.

To use Cplex, a valid license is required and you should have compiled OsiCpx in
COIN-OR (see Osi documentation). The default value for this string option is
”Cbc_D”.

Possible values:

- Cbc_D: Coin Branch and Cut with its default
- Cbc_Par: Coin Branch and Cut with passed parameters
- Cplex: IBM Cplex

milp_strategy:
Choose a strategy for MILPs.

The default value for this string option is ”solve_to_optimality”.

Possible values:

- find_good_sol: Stop sub milps when a solution improving the incumbent is found
- solve_to_optimality: Solve MILPs to optimality

number_cpx_threads:
Set number of threads to use with cplex.

(refer to CPLEX documentation) The valid range for this integer option is
0 ≤ number_cpx_threads < +inf and its default value is 0.

2mir_cuts:
Frequency (in terms of nodes) for generating 2-MIR cuts in branch-and-cut

If k > 0, cuts are generated every k nodes, if -99 < k < 0 cuts are generated every
-k nodes but Cbc may decide to stop generating cuts, if not enough are generated at
the root node, if k = -99 generate cuts only at the root node, if k = 0 or 100 do not
generate cuts. The valid range for this integer option is -100 ≤ 2mir_cuts < +inf
and its default value is 0.

Gomory_cuts:
Frequency (in terms of nodes) for generating Gomory cuts in branch-and-cut.

If k > 0, cuts are generated every k nodes, if -99 < k < 0 cuts are generated every
-k nodes but Cbc may decide to stop generating cuts, if not enough are
generated at the root node, if k = -99 generate cuts only at the root node, if
k = 0 or 100 do not generate cuts. The valid range for this integer option is
-100 ≤ Gomory_cuts < +inf and its default value is -5.

clique_cuts:
Frequency (in terms of nodes) for generating clique cuts in branch-and-cut

If k > 0, cuts are generated every k nodes, if -99 < k < 0 cuts are generated every
-k nodes but Cbc may decide to stop generating cuts, if not enough are generated at
the root node, if k = -99 generate cuts only at the root node, if k = 0 or 100 do not
generate cuts. The valid range for this integer option is -100 ≤ clique_cuts < +inf
and its default value is -5.

cover_cuts:
Frequency (in terms of nodes) for generating cover cuts in branch-and-cut

If k > 0, cuts are generated every k nodes, if -99 < k < 0 cuts are generated every
-k nodes but Cbc may decide to stop generating cuts, if not enough are generated at
the root node, if k = -99 generate cuts only at the root node, if k = 0 or 100 do not
generate cuts. The valid range for this integer option is -100 ≤ cover_cuts < +inf
and its default value is 0.

flow_cover_cuts:
Frequency (in terms of nodes) for generating flow cover cuts in branch-and-cut

If k > 0, cuts are generated every k nodes, if -99 < k < 0 cuts are generated every
-k nodes but Cbc may decide to stop generating cuts, if not enough are
generated at the root node, if k = -99 generate cuts only at the root node, if
k = 0 or 100 do not generate cuts. The valid range for this integer option is
-100 ≤ flow_cover_cuts < +inf and its default value is -5.

lift_and_project_cuts:
Frequency (in terms of nodes) for generating lift-and-project cuts in
branch-and-cut

If k > 0, cuts are generated every k nodes, if -99 < k < 0 cuts are generated
every -k nodes but Cbc may decide to stop generating cuts, if not enough
are generated at the root node, if k = -99 generate cuts only at the root
node, if k = 0 or 100 do not generate cuts. The valid range for this integer
option is -100 ≤ lift_and_project_cuts < +inf and its default value is
0.

mir_cuts:
Frequency (in terms of nodes) for generating MIR cuts in branch-and-cut

If k > 0, cuts are generated every k nodes, if -99 < k < 0 cuts are generated every
-k nodes but Cbc may decide to stop generating cuts, if not enough are generated at
the root node, if k = -99 generate cuts only at the root node, if k = 0 or 100 do not
generate cuts. The valid range for this integer option is -100 ≤ mir_cuts < +inf
and its default value is -5.

reduce_and_split_cuts:
Frequency (in terms of nodes) for generating reduce-and-split cuts in
branch-and-cut

If k > 0, cuts are generated every k nodes, if -99 < k < 0 cuts are generated
every -k nodes but Cbc may decide to stop generating cuts, if not enough
are generated at the root node, if k = -99 generate cuts only at the root
node, if k = 0 or 100 do not generate cuts. The valid range for this integer
option is -100 ≤ reduce_and_split_cuts < +inf and its default value is
0.

nlp_solver:
Choice of the solver for local optima of continuous NLP’s

Note that option will work only if the specified solver has been installed. Ipopt
will usually be installed with Bonmin by default. For FilterSQP please see
http://www-unix.mcs.anl.gov/ leyffer/solvers.html on how to obtain it and
https://projects.coin-or.org/Bonmin/wiki/HintTricks on how to configure Bonmin to
use it. The default value for this string option is ”Ipopt”.

Possible values:

- Ipopt: Interior Point OPTimizer (https://projects.coin-or.org/Ipopt)
- filterSQP: Sequential quadratic programming trust region algorithm (http://www-unix.mcs.anl.gov/ leyffer/solvers.html)
- all: run all available solvers at each node

warm_start:
Select the warm start method

This will affect the function getWarmStart(), and as a consequence the warm starting
in the various algorithms. The default value for this string option is ”none”.

Possible values:

- none: No warm start, just start NLPs from optimal solution of the root relaxation
- fake_basis: builds fake basis, useful for cut management in Cbc (warm start is the same as in none)
- optimum: Warm start with direct parent optimum
- interior_point: Warm start with an interior point of direct parent

max_consecutive_failures:
(temporarily removed) Number n of consecutive unsolved problems before
aborting a branch of the tree.

When n > 0, continue exploring a branch of the tree until n consecutive problems in
the branch are unsolved (we call unsolved a problem for which Ipopt can not
guarantee optimality within the specified tolerances). The valid range for this integer
option is 0 ≤ max_consecutive_failures < +inf and its default value is
10.

max_random_point_radius:
Set max value r for coordinate of a random point.

When picking a random point, coordinate i will be in the interval [min(max(l,-r),u-r),
max(min(u,r),l+r)] (where l is the lower bound for the variable and u is its upper bound)
The valid range for this real option is 0 < max_random_point_radius < +inf and
its default value is 100000.

num_iterations_suspect:
Number of iterations over which a node is considered ”suspect” (for debugging
purposes only, see detailed documentation).

When the number of iterations to solve a node is above this number, the
subproblem at this node is considered to be suspect and it will be written into a
file (set to -1 to deactivate this). The valid range for this integer option is
-1 ≤ num_iterations_suspect < +inf and its default value is -1.

num_retry_unsolved_random_point:
Number k of times that the algorithm will try to resolve an unsolved NLP with a
random starting point (we call unsolved an NLP for which Ipopt is not able to
guarantee optimality within the specified tolerances).

When Ipopt fails to solve a continuous NLP sub-problem, if k > 0, the algorithm will
try again to solve the failed NLP with k new randomly chosen starting points or until
the problem is solved with success. The valid range for this integer option is
0 ≤ num_retry_unsolved_random_point < +inf and its default value is
0.

random_point_perturbation_interval:
Amount by which starting point is perturbed when choosing to pick random point
by perturbing starting point

The valid range for this real option is 0 < random_point_perturbation_interval < +inf
and its default value is 1.

random_point_type:
method to choose a random starting point

The default value for this string option is ”Jon”.

Possible values:

- Jon: Choose random point uniformly between the bounds
- Andreas: perturb the starting point of the problem within a prescribed interval
- Claudia: perturb the starting point using the perturbation radius suffix information

resolve_on_small_infeasibility:
If a locally infeasible problem is infeasible by less than this, resolve it with initial
starting point.

It is set to 0 by default with Ipopt. When using FilterSQP, Bonmin sets it to a small
value. The valid range for this real option is 0 ≤ resolve_on_small_infeasibility < +inf
and its default value is 0.

nlp_solve_frequency:
Specify the frequency (in terms of nodes) at which NLP relaxations are solved in
B-Hyb.

A frequency of 0 amounts to to never solve the NLP relaxation. The valid range for
this integer option is 0 ≤ nlp_solve_frequency < +inf and its default value is
10.

nlp_solve_max_depth:
Set maximum depth in the tree at which NLP relaxations are solved in B-Hyb.

A depth of 0 amounts to to never solve the NLP relaxation. The valid range for this
integer option is 0 ≤ nlp_solve_max_depth < +inf and its default value is
10.

nlp_solves_per_depth:
Set average number of nodes in the tree at which NLP relaxations are solved in
B-Hyb for each depth.

The valid range for this real option is 0 ≤ nlp_solves_per_depth < +inf and its
default value is 1 ⋅ 10^{+100}.

coeff_var_threshold:
Coefficient of variation threshold (for dynamic definition of cutoff_decr).

The valid range for this real option is 0 ≤ coeff_var_threshold < +inf and its
default value is 0.1.

dynamic_def_cutoff_decr:
Do you want to define the parameter cutoff_decr dynamically?

The default value for this string option is ”no”.

Possible values:

- no
- yes

first_perc_for_cutoff_decr:
The percentage used when, the coeff of variance is smaller than the threshold, to
compute the cutoff_decr dynamically.

The valid range for this real option is -inf < first_perc_for_cutoff_decr < +inf
and its default value is -0.02.

max_consecutive_infeasible:
Number of consecutive infeasible subproblems before aborting a branch.

Will continue exploring a branch of the tree until ”max_consecutive_infeasible”consecutive
problems are locally infeasible by the NLP sub-solver. The valid range for this integer
option is 0 ≤ max_consecutive_infeasible < +inf and its default value is
0.

num_resolve_at_infeasibles:
Number k of tries to resolve an infeasible node (other than the root) of the tree
with different starting point.

The algorithm will solve all the infeasible nodes with k different random starting
points and will keep the best local optimum found. The valid range for this integer
option is 0 ≤ num_resolve_at_infeasibles < +inf and its default value is
0.

num_resolve_at_node:
Number k of tries to resolve a node (other than the root) of the tree with different
starting point.

The algorithm will solve all the nodes with k different random starting points and
will keep the best local optimum found. The valid range for this integer option is
0 ≤ num_resolve_at_node < +inf and its default value is 0.

num_resolve_at_root:
Number k of tries to resolve the root node with different starting points.

The algorithm will solve the root node with k random starting points and will keep
the best local optimum found. The valid range for this integer option is
0 ≤ num_resolve_at_root < +inf and its default value is 0.

second_perc_for_cutoff_decr:
The percentage used when, the coeff of variance is greater than the threshold, to
compute the cutoff_decr dynamically.

The valid range for this real option is -inf < second_perc_for_cutoff_decr < +inf
and its default value is -0.05.

oa_decomposition:
If yes do initial OA decomposition

The default value for this string option is ”no”.

Possible values:

- no
- yes

add_only_violated_oa:
Do we add all OA cuts or only the ones violated by current point?

The default value for this string option is ”no”.

Possible values:

- no: Add all cuts
- yes: Add only violated cuts

oa_cuts_scope:
Specify if OA cuts added are to be set globally or locally valid

The default value for this string option is ”global”.

Possible values:

- local: Cuts are treated as locally valid
- global: Cuts are treated as globally valid

oa_rhs_relax:
Value by which to relax OA cut

RHS of OA constraints will be relaxed by this amount times the absolute value
of the initial rhs if it is ¿= 1 (otherwise by this amount). The valid range
for this real option is -0 ≤ oa_rhs_relax < +inf and its default value is
1 ⋅ 10^{-08}.

tiny_element:
Value for tiny element in OA cut

We will remove ”cleanly” (by relaxing cut) an element lower than this. The valid
range for this real option is -0 ≤ tiny_element < +inf and its default value is
1 ⋅ 10^{-08}.

very_tiny_element:
Value for very tiny element in OA cut

Algorithm will take the risk of neglecting an element lower than this. The valid range
for this real option is -0 ≤ very_tiny_element < +inf and its default value is
1 ⋅ 10^{-17}.

bb_log_interval:
Interval at which node level output is printed.

Set the interval (in terms of number of nodes) at which a log on node resolutions
(consisting of lower and upper bounds) is given. The valid range for this integer
option is 0 ≤ bb_log_interval < +inf and its default value is 100.

bb_log_level:
specify main branch-and-bound log level.

Set the level of output of the branch-and-bound : 0 - none, 1 - minimal, 2 - normal
low, 3 - normal high The valid range for this integer option is 0 ≤ bb_log_level ≤ 5
and its default value is 1.

file_solution:
Write a file bonmin.sol with the solution

The default value for this string option is ”no”.

Possible values:

- yes
- no

fp_log_frequency:
display an update on lower and upper bounds in FP every n seconds

The valid range for this real option is 0 < fp_log_frequency < +inf and its default
value is 100.

fp_log_level:
specify FP iterations log level.

Set the level of output of OA decomposition solver : 0 - none, 1 - normal, 2 - verbose
The valid range for this integer option is 0 ≤ fp_log_level ≤ 2 and its default value is
1.

lp_log_level:
specify LP log level.

Set the level of output of the linear programming sub-solver in B-Hyb or B-QG : 0 -
none, 1 - minimal, 2 - normal low, 3 - normal high, 4 - verbose The valid
range for this integer option is 0 ≤ lp_log_level ≤ 4 and its default value is
0.

milp_log_level:
specify MILP solver log level.

Set the level of output of the MILP subsolver in OA : 0 - none, 1 - minimal,
2 - normal low, 3 - normal high The valid range for this integer option is
0 ≤ milp_log_level ≤ 4 and its default value is 0.

nlp_log_at_root:
specify a different log level for root relaxation.

The valid range for this integer option is 0 ≤ nlp_log_at_root ≤ 12 and its default
value is 0.

nlp_log_level:
specify NLP solver interface log level (independent from ipopt print_level).

Set the level of output of the OsiTMINLPInterface : 0 - none, 1 - normal, 2 - verbose
The valid range for this integer option is 0 ≤ nlp_log_level ≤ 2 and its default value
is 1.

oa_cuts_log_level:
level of log when generating OA cuts.

0: outputs nothing, 1: when a cut is generated, its violation and index of row
from which it originates, 2: always output violation of the cut. 3: output
generated cuts incidence vectors. The valid range for this integer option is
0 ≤ oa_cuts_log_level < +inf and its default value is 0.

oa_log_frequency:
display an update on lower and upper bounds in OA every n seconds

The valid range for this real option is 0 < oa_log_frequency < +inf and its default
value is 100.

oa_log_level:
specify OA iterations log level.

Set the level of output of OA decomposition solver : 0 - none, 1 - normal, 2 - verbose
The valid range for this integer option is 0 ≤ oa_log_level ≤ 2 and its default value is
1.

feasibility_pump_objective_norm:
Norm of feasibility pump objective function

The valid range for this integer option is 1 ≤ feasibility_pump_objective_norm ≤ 2
and its default value is 1.

fp_pass_infeasible:
Say whether feasibility pump should claim to converge or not

The default value for this string option is ”no”.

Possible values:

- no: When master MILP is infeasible just bail out (don’t stop all algorithm). This is the option for using in B-Hyb.
- yes: Claim convergence, numerically dangerous.

heuristic_RINS:
if yes runs the RINS heuristic

The default value for this string option is ”no”.

Possible values:

- no
- yes

heuristic_dive_MIP_fractional:
if yes runs the Dive MIP Fractional heuristic

The default value for this string option is ”no”.

Possible values:

- no
- yes

heuristic_dive_MIP_vectorLength:
if yes runs the Dive MIP VectorLength heuristic

The default value for this string option is ”no”.

Possible values:

- no
- yes

heuristic_dive_fractional:
if yes runs the Dive Fractional heuristic

The default value for this string option is ”no”.

Possible values:

- no
- yes

heuristic_dive_vectorLength:
if yes runs the Dive VectorLength heuristic

The default value for this string option is ”no”.

Possible values:

- no
- yes

heuristic_feasibility_pump:
whether the heuristic feasibility pump should be used

The default value for this string option is ”no”.

Possible values:

- no
- yes

pump_for_minlp:
whether to run the feasibility pump heuristic for MINLP

The default value for this string option is ”no”.

Possible values:

- no
- yes

candidate_sort_criterion:
Choice of the criterion to choose candidates in strong-branching

The default value for this string option is ”best-ps-cost”.

Possible values:

- best-ps-cost: Sort by decreasing pseudo-cost
- worst-ps-cost: Sort by increasing pseudo-cost
- most-fractional: Sort by decreasing integer infeasibility
- least-fractional: Sort by increasing integer infeasibility

maxmin_crit_have_sol:
Weight towards minimum in of lower and upper branching estimates when a
solution has been found.

The valid range for this real option is 0 ≤ maxmin_crit_have_sol ≤ 1 and its default
value is 0.1.

maxmin_crit_no_sol:
Weight towards minimum in of lower and upper branching estimates when no
solution has been found yet.

The valid range for this real option is 0 ≤ maxmin_crit_no_sol ≤ 1 and its default
value is 0.7.

min_number_strong_branch:
Sets minimum number of variables for strong branching (overriding trust)

The valid range for this integer option is 0 ≤ min_number_strong_branch < +inf
and its default value is 0.

number_before_trust_list:
Set the number of branches on a variable before its pseudo costs are to be
believed during setup of strong branching candidate list.

The default value is that of ”number_before_trust” The valid range for this integer
option is -1 ≤ number_before_trust_list < +inf and its default value is
0.

number_look_ahead:
Sets limit of look-ahead strong-branching trials

The valid range for this integer option is 0 ≤ number_look_ahead < +inf and its
default value is 0.

number_strong_branch_root:
Maximum number of variables considered for strong branching in root node.

The valid range for this integer option is 0 ≤ number_strong_branch_root < +inf
and its default value is 2147483647.

setup_pseudo_frac:
Proportion of strong branching list that has to be taken from most-integer-infeasible
list.

The valid range for this real option is 0 ≤ setup_pseudo_frac ≤ 1 and its default
value is 0.5.

trust_strong_branching_for_pseudo_cost:
Whether or not to trust strong branching results for updating pseudo costs.

The default value for this string option is ”yes”.

Possible values:

- no
- yes