MAiNGO
maingo::Settings Struct Reference

Struct for storing settings for MAiNGO. More...

#include <settings.h>

Public Attributes

Tolerances
double epsilonA = 1.0e-2
 Absolute optimality tolerance, i.e., termination when (UBD-LBD) < BAB_epsilon_a. More...
 
double epsilonR = 1.0e-2
 Relative optimality tolerance, i.e., termination when (UBD-LBD) < BAB_epsilon_r * UBD. More...
 
double deltaIneq = 1.0e-6
 Absolute feasibility tolerance for inequality constraints, i.e., constraint is considered satisfied if gi_(x)<=UBP_delta_ineq. More...
 
double deltaEq = 1.0e-6
 Absolute feasibility tolerance for equality constraints, i.e., constraint is considered satisfied if |hi_(x)|<=UBP_delta_eq. More...
 
double relNodeTol = 1.0e-9
 Relative tolerance for minimum node size. Nodes are discarded if in every dimension their width gets below this tolerance times the original width. In this case, global optimality to the desired optimality tolerances may not be reached. More...
 
Other termination settings
unsigned BAB_maxNodes = std::numeric_limits<unsigned>::max()
 Maximum number of nodes (i.e., solver terminates when more than BAB_maxnodes are held in memory; used to avoid excessive branching) More...
 
unsigned BAB_maxIterations = std::numeric_limits<unsigned>::max()
 Maximum number of iterations (i.e., maximum number of nodes visited in the Branch-and-Bound tree) More...
 
unsigned maxTime = 86400
 CPU time limit in seconds. More...
 
bool confirmTermination = false
 Whether to ask the user before terminating when reaching time, node, or iteration limits. More...
 
bool terminateOnFeasiblePoint = false
 Whether to terminate as soon as the first feasible point was found (no guarantee of global or local optimality!) More...
 
double targetLowerBound = std::numeric_limits<double>::max()
 Target value for the lower bound on the optimal objective. MAiNGO terminates once LBD>=targetLowerBound (no guarantee of global or local optimality!) More...
 
double targetUpperBound = -std::numeric_limits<double>::max()
 Target value for the upper bound on the optimal objective. MAiNGO terminates once UBD<=targetUpperBound (no guarantee of global or local optimality!) More...
 
double infinity = std::numeric_limits<double>::max()
 User definition of infinity (used to initialize UBD and LBD) [currently cannot be set by the user via set_option]. More...
 
Output
VERB BAB_verbosity = VERB_NORMAL
 How much output to print from Branch & Bound solver. See documentation of maingo::VERB for possible values. More...
 
VERB LBP_verbosity = VERB_NORMAL
 How much output to print from Lower Bounding Solver. See documentation of maingo::VERB for possible values. More...
 
VERB UBP_verbosity = VERB_NORMAL
 How much output to print from Upper Bounding Solver. See documentation of maingo::VERB for possible values. More...
 
unsigned BAB_printFreq = 100
 After how many iterations to print progress on screen (additionally, a line is printed when a new incumbent is found) More...
 
unsigned BAB_logFreq = 100
 Like BAB_printFreq, but for log. More...
 
LOGGING_DESTINATION loggingDestination = LOGGING_FILE_AND_STREAM
 Where to print or write the output. See documentation of maingo::LOGGING_DESTINATION for possible values. More...
 
unsigned writeToLogSec = 1800
 Write to log file after a given ammount of CPU seconds. More...
 
bool writeResultFile = true
 Whether to write an additional file containing non-standard information about the solved model. More...
 
bool writeCsv = false
 Whether to write csv-log files (named bab_statistics.csv and bab_iterations.csv). More...
 
bool writeJson = false
 Whether to write a json-log file (named bab.json). More...
 
bool PRE_printEveryLocalSearch = false
 Whether to print every run during multistart at the root node. More...
 
WRITING_LANGUAGE modelWritingLanguage = LANG_NONE
 In what modeling language to write the current model to a file in. See documentation of maingo::WRITING_LANGUAGE for possible values. More...
 
Pre-processing
unsigned PRE_maxLocalSearches = 3
 Number of local searches in the multistart heuristic during preprocessing at the root node. More...
 
unsigned PRE_obbtMaxRounds = 10
 Maximum number of rounds of optimization-based range reduction (OBBT; cf., e.g., Gleixner et al., J. Glob. Optim. 67 (2017) 731; maximizing and minimizing each variable subject to relaxed constraints) at the root node. If >=1 and a feasible point is found during multistart, one round of OBBT using an objective cut (f_cv<=UBD) is conducted as well. More...
 
bool PRE_pureMultistart = false
 Whether to perform a multistart only. A B&B tree will not be constructed and no lower bounding problems will be solved. More...
 
B&B settings - Tree management
babBase::enums::NS BAB_nodeSelection = babBase::enums::NS_BESTBOUND
 How to select the next node to process. See documentation of babBase::enums::NS for possible values. More...
 
babBase::enums::BV BAB_branchVariable = babBase::enums::BV_RELDIAM
 Which dimension to branch in for the current node. See documentation of babBase::enums::BV for possible values. More...
 
B&B settings - Range reduction
bool BAB_alwaysSolveObbt = true
 Whether to solve OBBT (feasibility- and, once a feasible point has been found, also optimality-based) at every BaB node. More...
 
bool BAB_dbbt = true
 Whether to do a single round of duality based bound tightening (DBBT, cf. Ryoo&Sahinidis, Comput. Chem. Eng. 19 (1995) 551). If false, no DBBT is used. If true, multipliers from CPLEX are used to tighten bounds (essentially for free). we tried additional rounds but without reasonable improvement. More...
 
bool BAB_probing = false
 Whether to do probing (cf. Ryoo&Sahinidis, Comput. Chem. Eng. 19 (1995) 551) at every node (can only be done if BAB_DBBT_maxrounds>=1) More...
 
bool BAB_constraintPropagation = true
 Whether to do constraint propagation. If false, no constraint propagation is executed. More...
 
LBP Settings
lbp::LBP_SOLVER LBP_solver = lbp::LBP_SOLVER_CLP
 Solver for solution of (mixed-integer) linear lower bounding problems. It also sets the solver when solving purely (mixed-integer) quadratic/linear problems. See documentation of lbp::LBP_SOLVER for possible values. More...
 
lbp::LINP LBP_linPoints = lbp::LINP_MID
 At which points to linearize for affine relaxation. See documentation of lbp::LINP for possible values. More...
 
bool LBP_subgradientIntervals = true
 Whether to use the heuristic to improve McCormick relaxations by tightening the range of each factor with the use of subgradients (cf. Najman & Mitsos, JOGO 2019) More...
 
double LBP_obbtMinImprovement = 0.01
 How much improvement needs to be achievable (relative to initial diameter) to conduct OBBT for a variable. More...
 
unsigned LBP_activateMoreScaling = 10000
 Number of consecutive iterations without LBD improvement needed to activate more aggressive scaling in LP solver (e.g., CPLEX) More...
 
bool LBP_addAuxiliaryVars = false
 Whether to add auxiliary variables for common factors in the lower bounding DAG/problem. More...
 
unsigned LBP_minFactorsForAux = 2
 Minimum number of common factors to add an auxiliary variable. More...
 
unsigned LBP_maxNumberOfAddedFactors = 1
 Maximum number of added factor as auxiliaries. More...
 
MC++ settings
bool MC_mvcompUse = true
 Whether to use multivariate composition theorem for computing McCormick relaxations (see MC++ documentation for details) More...
 
double MC_mvcompTol = 1.0e-9
 Tolerance used in the multivariate composition theorem for computing McCormick relaxations (see MC++ documentation for details) More...
 
double MC_envelTol = 1.0e-9
 Tolerance for computing the envelopes of intrinsic functions (see MC++ documentation for details) More...
 
UBP Settings
ubp::UBP_SOLVER UBP_solverPreprocessing = ubp::UBP_SOLVER_IPOPT
 Solver to be used during pre-processing (i.e., multistart). See documentation of ubp::UBP_SOLVER for possible values. More...
 
unsigned UBP_maxStepsPreprocessing = 3000
 Maximum number of steps the local solver is allowed to take in each local run during multistart in pre-processing. More...
 
double UBP_maxTimePreprocessing = 100.0
 Maximum CPU time the local solver is allowed to take in each local run during multistart in pre-processing. Usually, this should only be a fall-back option to prevent truly getting stuck in local solution. More...
 
ubp::UBP_SOLVER UBP_solverBab = ubp::UBP_SOLVER_SLSQP
 Solver to be used during Branch-and-Bound. See documentation of ubp::UBP_SOLVER for possible values. More...
 
unsigned UBP_maxStepsBab = 3
 Maximum number of steps the local solver is allowed to take at each BaB node. More...
 
double UBP_maxTimeBab = 10.0
 Maximum CPU time the local solver is allowed to take at each BaB node. Usually, this should only be a fall-back option to prevent truly getting stuck in local solution. More...
 
bool UBP_ignoreNodeBounds = false
 Flag indicating whether the UBP solvers should ignore the box constraints of the current node during the B&B (and consider only the ones of the root node instead). More...
 
Epsilon-constraint settings
unsigned EC_nPoints = 10
 Number of points on the Pareto front to be computed in epsilon-constraint method (only available via the C++ API) More...
 

Detailed Description

Struct for storing settings for MAiNGO.

Contains settings for MAiNGO. The default values an be found in settings.cpp.

Member Data Documentation

◆ BAB_alwaysSolveObbt

bool maingo::Settings::BAB_alwaysSolveObbt = true

Whether to solve OBBT (feasibility- and, once a feasible point has been found, also optimality-based) at every BaB node.

◆ BAB_branchVariable

babBase::enums::BV maingo::Settings::BAB_branchVariable = babBase::enums::BV_RELDIAM

Which dimension to branch in for the current node. See documentation of babBase::enums::BV for possible values.

◆ BAB_constraintPropagation

bool maingo::Settings::BAB_constraintPropagation = true

Whether to do constraint propagation. If false, no constraint propagation is executed.

◆ BAB_dbbt

bool maingo::Settings::BAB_dbbt = true

Whether to do a single round of duality based bound tightening (DBBT, cf. Ryoo&Sahinidis, Comput. Chem. Eng. 19 (1995) 551). If false, no DBBT is used. If true, multipliers from CPLEX are used to tighten bounds (essentially for free). we tried additional rounds but without reasonable improvement.

◆ BAB_logFreq

unsigned maingo::Settings::BAB_logFreq = 100

Like BAB_printFreq, but for log.

◆ BAB_maxIterations

unsigned maingo::Settings::BAB_maxIterations = std::numeric_limits<unsigned>::max()

Maximum number of iterations (i.e., maximum number of nodes visited in the Branch-and-Bound tree)

◆ BAB_maxNodes

unsigned maingo::Settings::BAB_maxNodes = std::numeric_limits<unsigned>::max()

Maximum number of nodes (i.e., solver terminates when more than BAB_maxnodes are held in memory; used to avoid excessive branching)

◆ BAB_nodeSelection

babBase::enums::NS maingo::Settings::BAB_nodeSelection = babBase::enums::NS_BESTBOUND

How to select the next node to process. See documentation of babBase::enums::NS for possible values.

◆ BAB_printFreq

unsigned maingo::Settings::BAB_printFreq = 100

After how many iterations to print progress on screen (additionally, a line is printed when a new incumbent is found)

◆ BAB_probing

bool maingo::Settings::BAB_probing = false

Whether to do probing (cf. Ryoo&Sahinidis, Comput. Chem. Eng. 19 (1995) 551) at every node (can only be done if BAB_DBBT_maxrounds>=1)

◆ BAB_verbosity

VERB maingo::Settings::BAB_verbosity = VERB_NORMAL

How much output to print from Branch & Bound solver. See documentation of maingo::VERB for possible values.

◆ confirmTermination

bool maingo::Settings::confirmTermination = false

Whether to ask the user before terminating when reaching time, node, or iteration limits.

◆ deltaEq

double maingo::Settings::deltaEq = 1.0e-6

Absolute feasibility tolerance for equality constraints, i.e., constraint is considered satisfied if |hi_(x)|<=UBP_delta_eq.

◆ deltaIneq

double maingo::Settings::deltaIneq = 1.0e-6

Absolute feasibility tolerance for inequality constraints, i.e., constraint is considered satisfied if gi_(x)<=UBP_delta_ineq.

◆ EC_nPoints

unsigned maingo::Settings::EC_nPoints = 10

Number of points on the Pareto front to be computed in epsilon-constraint method (only available via the C++ API)

◆ epsilonA

double maingo::Settings::epsilonA = 1.0e-2

Absolute optimality tolerance, i.e., termination when (UBD-LBD) < BAB_epsilon_a.

◆ epsilonR

double maingo::Settings::epsilonR = 1.0e-2

Relative optimality tolerance, i.e., termination when (UBD-LBD) < BAB_epsilon_r * UBD.

◆ infinity

double maingo::Settings::infinity = std::numeric_limits<double>::max()

User definition of infinity (used to initialize UBD and LBD) [currently cannot be set by the user via set_option].

◆ LBP_activateMoreScaling

unsigned maingo::Settings::LBP_activateMoreScaling = 10000

Number of consecutive iterations without LBD improvement needed to activate more aggressive scaling in LP solver (e.g., CPLEX)

◆ LBP_addAuxiliaryVars

bool maingo::Settings::LBP_addAuxiliaryVars = false

Whether to add auxiliary variables for common factors in the lower bounding DAG/problem.

◆ LBP_linPoints

lbp::LINP maingo::Settings::LBP_linPoints = lbp::LINP_MID

At which points to linearize for affine relaxation. See documentation of lbp::LINP for possible values.

◆ LBP_maxNumberOfAddedFactors

unsigned maingo::Settings::LBP_maxNumberOfAddedFactors = 1

Maximum number of added factor as auxiliaries.

◆ LBP_minFactorsForAux

unsigned maingo::Settings::LBP_minFactorsForAux = 2

Minimum number of common factors to add an auxiliary variable.

◆ LBP_obbtMinImprovement

double maingo::Settings::LBP_obbtMinImprovement = 0.01

How much improvement needs to be achievable (relative to initial diameter) to conduct OBBT for a variable.

◆ LBP_solver

lbp::LBP_SOLVER maingo::Settings::LBP_solver = lbp::LBP_SOLVER_CLP

Solver for solution of (mixed-integer) linear lower bounding problems. It also sets the solver when solving purely (mixed-integer) quadratic/linear problems. See documentation of lbp::LBP_SOLVER for possible values.

◆ LBP_subgradientIntervals

bool maingo::Settings::LBP_subgradientIntervals = true

Whether to use the heuristic to improve McCormick relaxations by tightening the range of each factor with the use of subgradients (cf. Najman & Mitsos, JOGO 2019)

◆ LBP_verbosity

VERB maingo::Settings::LBP_verbosity = VERB_NORMAL

How much output to print from Lower Bounding Solver. See documentation of maingo::VERB for possible values.

◆ loggingDestination

LOGGING_DESTINATION maingo::Settings::loggingDestination = LOGGING_FILE_AND_STREAM

Where to print or write the output. See documentation of maingo::LOGGING_DESTINATION for possible values.

◆ maxTime

unsigned maingo::Settings::maxTime = 86400

CPU time limit in seconds.

◆ MC_envelTol

double maingo::Settings::MC_envelTol = 1.0e-9

Tolerance for computing the envelopes of intrinsic functions (see MC++ documentation for details)

◆ MC_mvcompTol

double maingo::Settings::MC_mvcompTol = 1.0e-9

Tolerance used in the multivariate composition theorem for computing McCormick relaxations (see MC++ documentation for details)

◆ MC_mvcompUse

bool maingo::Settings::MC_mvcompUse = true

Whether to use multivariate composition theorem for computing McCormick relaxations (see MC++ documentation for details)

◆ modelWritingLanguage

WRITING_LANGUAGE maingo::Settings::modelWritingLanguage = LANG_NONE

In what modeling language to write the current model to a file in. See documentation of maingo::WRITING_LANGUAGE for possible values.

◆ PRE_maxLocalSearches

unsigned maingo::Settings::PRE_maxLocalSearches = 3

Number of local searches in the multistart heuristic during preprocessing at the root node.

◆ PRE_obbtMaxRounds

unsigned maingo::Settings::PRE_obbtMaxRounds = 10

Maximum number of rounds of optimization-based range reduction (OBBT; cf., e.g., Gleixner et al., J. Glob. Optim. 67 (2017) 731; maximizing and minimizing each variable subject to relaxed constraints) at the root node. If >=1 and a feasible point is found during multistart, one round of OBBT using an objective cut (f_cv<=UBD) is conducted as well.

◆ PRE_printEveryLocalSearch

bool maingo::Settings::PRE_printEveryLocalSearch = false

Whether to print every run during multistart at the root node.

◆ PRE_pureMultistart

bool maingo::Settings::PRE_pureMultistart = false

Whether to perform a multistart only. A B&B tree will not be constructed and no lower bounding problems will be solved.

◆ relNodeTol

double maingo::Settings::relNodeTol = 1.0e-9

Relative tolerance for minimum node size. Nodes are discarded if in every dimension their width gets below this tolerance times the original width. In this case, global optimality to the desired optimality tolerances may not be reached.

◆ targetLowerBound

double maingo::Settings::targetLowerBound = std::numeric_limits<double>::max()

Target value for the lower bound on the optimal objective. MAiNGO terminates once LBD>=targetLowerBound (no guarantee of global or local optimality!)

◆ targetUpperBound

double maingo::Settings::targetUpperBound = -std::numeric_limits<double>::max()

Target value for the upper bound on the optimal objective. MAiNGO terminates once UBD<=targetUpperBound (no guarantee of global or local optimality!)

◆ terminateOnFeasiblePoint

bool maingo::Settings::terminateOnFeasiblePoint = false

Whether to terminate as soon as the first feasible point was found (no guarantee of global or local optimality!)

◆ UBP_ignoreNodeBounds

bool maingo::Settings::UBP_ignoreNodeBounds = false

Flag indicating whether the UBP solvers should ignore the box constraints of the current node during the B&B (and consider only the ones of the root node instead).

◆ UBP_maxStepsBab

unsigned maingo::Settings::UBP_maxStepsBab = 3

Maximum number of steps the local solver is allowed to take at each BaB node.

◆ UBP_maxStepsPreprocessing

unsigned maingo::Settings::UBP_maxStepsPreprocessing = 3000

Maximum number of steps the local solver is allowed to take in each local run during multistart in pre-processing.

◆ UBP_maxTimeBab

double maingo::Settings::UBP_maxTimeBab = 10.0

Maximum CPU time the local solver is allowed to take at each BaB node. Usually, this should only be a fall-back option to prevent truly getting stuck in local solution.

◆ UBP_maxTimePreprocessing

double maingo::Settings::UBP_maxTimePreprocessing = 100.0

Maximum CPU time the local solver is allowed to take in each local run during multistart in pre-processing. Usually, this should only be a fall-back option to prevent truly getting stuck in local solution.

◆ UBP_solverBab

ubp::UBP_SOLVER maingo::Settings::UBP_solverBab = ubp::UBP_SOLVER_SLSQP

Solver to be used during Branch-and-Bound. See documentation of ubp::UBP_SOLVER for possible values.

◆ UBP_solverPreprocessing

ubp::UBP_SOLVER maingo::Settings::UBP_solverPreprocessing = ubp::UBP_SOLVER_IPOPT

Solver to be used during pre-processing (i.e., multistart). See documentation of ubp::UBP_SOLVER for possible values.

◆ UBP_verbosity

VERB maingo::Settings::UBP_verbosity = VERB_NORMAL

How much output to print from Upper Bounding Solver. See documentation of maingo::VERB for possible values.

◆ writeCsv

bool maingo::Settings::writeCsv = false

Whether to write csv-log files (named bab_statistics.csv and bab_iterations.csv).

◆ writeJson

bool maingo::Settings::writeJson = false

Whether to write a json-log file (named bab.json).

◆ writeResultFile

bool maingo::Settings::writeResultFile = true

Whether to write an additional file containing non-standard information about the solved model.

◆ writeToLogSec

unsigned maingo::Settings::writeToLogSec = 1800

Write to log file after a given ammount of CPU seconds.


The documentation for this struct was generated from the following file: