MAiNGO
maingo::Settings Struct Reference

Struct for storing settings for MAiNGO. More...

#include <settings.h>

Public Member Functions

 Settings ()
 Constructor, sets default values (cf. settings.cpp). More...
 
 Settings (const Settings &)=default
 Default copy constructor. More...
 
Settingsoperator= (const Settings &)=default
 Default copy assignment. More...
 

Public Attributes

Tolerances and termination
double epsilonA
 Absolute optimality tolerance, i.e., termination when (UBD-LBD) < BAB_epsilon_a. More...
 
double epsilonR
 Relative optimality tolerance, i.e., termination when (UBD-LBD) < BAB_epsilon_r * UBD. More...
 
double deltaIneq
 Absolute feasibility tolerance for inequality constraints (i.e., constraint is considered satisfied if gi_(x)<=UBP_delta_ineq. More...
 
double deltaEq
 Absolute feasibility tolerance for equality constraints (i.e., constraint is considered satisfied if |hi_(x)|<=UBP_delta_eq. More...
 
double relNodeTol
 Relative tolerance for minimum node size. More...
 
unsigned BAB_maxNodes
 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
 Maximum number of iterations (i.e., maximum number of nodes visited in the Branch-and-Bound tree) More...
 
unsigned maxTime
 CPU time limit in seconds. More...
 
bool confirmTermination
 Whether to ask the user before terminating when reaching time, node, or iteration limits. More...
 
bool terminateOnFeasiblePoint
 Whether to terminate as soon as the first feasible point was found (no guarantee of global or local optimality!) More...
 
double targetLowerBound
 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
 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
 User definition of infinity (used to initialize UBD and LBD) [currently cannot be set by the user via set_option]. More...
 
Pre-processing
unsigned PRE_maxLocalSearches
 Number of local searches in the multistart heuristic during preprocessing at the root node. More...
 
unsigned PRE_obbtMaxRounds
 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
 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 & range reduction
babBase::enums::NS BAB_nodeSelection
 How to select the next node to process. See documentation of babBase::enums::NS for possible values. More...
 
babBase::enums::BV BAB_branchVariable
 Which dimension to branch in for the current node. See documentation of babBase::enums::BV for possible values. More...
 
bool BAB_alwaysSolveObbt
 Whether to solve OBBT (feasibility- and, once a feasible point has been found, also optimality-based) at every BaB node. More...
 
bool BAB_dbbt
 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
 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
 Whether to do constraint propagation. If false, no constraint propagation is executed. More...
 
LBP Settings
lbp::LBP_SOLVER LBP_solver
 Solver for solution of lower bounding problems. More...
 
lbp::LINP LBP_linPoints
 At which points to linearize for affine relaxation. See documentation of lbp::LINP for possible values. More...
 
bool LBP_subgradientIntervals
 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
 How much improvement needs to be achievable (relative to initial diameter) to conduct OBBT for a variable. More...
 
unsigned LBP_activateMoreScaling
 Number of consecutive iterations without LBD improvement needed to activate more aggressive scaling in LP solver (e.g., CPLEX) More...
 
bool LBP_addAuxiliaryVars
 Whether to add auxiliary variables for common factors in the lower bounding DAG/problem. More...
 
unsigned LBP_minFactorsForAux
 Minimum number of common factors to add an auxiliary variable. More...
 
unsigned LBP_maxNumberOfAddedFactors
 Maximum number of added factor as auxiliaries. More...
 
MC++ settings
bool MC_mvcompUse
 Whether to use multivariate composition theorem for computing McCormick relaxations (see MC++ documentation for details) More...
 
double MC_mvcompTol
 (see MC++ documentation for details) More...
 
double MC_envelTol
 (see MC++ documentation for details) More...
 
UBP Settings
ubp::UBP_SOLVER UBP_solverPreprocessing
 Solver to be used during pre-processing (i.e., multistart). See documentation of ubp::UBP_SOLVER for possible values. More...
 
unsigned UBP_maxStepsPreprocessing
 Maximum number of steps the local solver is allowed to take in each local run during multistart in pre-processing. More...
 
double UBP_maxTimePreprocessing
 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
 Solver to be used during Branch-and-Bound. See documentation of ubp::UBP_SOLVER for possible values. More...
 
unsigned UBP_maxStepsBab
 Maximum number of steps the local solver is allowed to take at each BaB node. More...
 
double UBP_maxTimeBab
 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
 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
 Number of points on the Pareto front to be computed in epsilon-constraint method (only available via the C++ API) More...
 
Output
VERB BAB_verbosity
 How much output to print from Branch & Bound solver. Possible values are VERB_NONE (=0), VERB_NORMAL (=1), VERB_ALL (=2) More...
 
VERB LBP_verbosity
 How much output to print from Lower Bounding Solver. Possible values are VERB_NONE (=0), VERB_NORMAL (=1), VERB_ALL (=2) More...
 
VERB UBP_verbosity
 How much output to print from Upper Bounding Solver. Possible values are VERB_NONE (=0), VERB_NORMAL (=1), VERB_ALL (=2) More...
 
unsigned BAB_printFreq
 After how many iterations to print progress on screen (additionally, a line is printed when a new incumbent is found) More...
 
unsigned BAB_logFreq
 Like BAB_printFreq, but for log. More...
 
OUTSTREAM_VERB outstreamVerbosity
 Where to print or write the output. Possible values are OUTSTREAM_NONE (=0), OUTSTREAM_OUTSTREAM (=1), OUTSTREAM_LOG (=2), OUTSTREAM_BOTH (=3) More...
 
bool writeLog
 Whether to write a log file (named bab.log) More...
 
unsigned writeToLogSec
 Write to log file after a given ammount of CPU seconds. More...
 
bool writeResFile
 Whether to write an additional file containing non-standard information about the solved model. More...
 
bool writeCsv
 Whether to write a csv-log file (named bab.csv). Currently, this only include time, LBD, UBD, and final output. More...
 
bool PRE_printEveryLocalSearch
 Whether to print every run during multistart at the root node. More...
 
PARSING_LANGUAGE writeToOtherLanguage
 Write to a file in a different modeling language. More...
 

Detailed Description

Struct for storing settings for MAiNGO.

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

Constructor & Destructor Documentation

◆ Settings() [1/2]

Settings::Settings ( )

Constructor, sets default values (cf. settings.cpp).

◆ Settings() [2/2]

maingo::Settings::Settings ( const Settings )
default

Default copy constructor.

Member Function Documentation

◆ operator=()

Settings& maingo::Settings::operator= ( const Settings )
default

Default copy assignment.

Member Data Documentation

◆ BAB_alwaysSolveObbt

bool maingo::Settings::BAB_alwaysSolveObbt

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

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

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

◆ BAB_dbbt

bool maingo::Settings::BAB_dbbt

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

Like BAB_printFreq, but for log.

◆ BAB_maxIterations

unsigned maingo::Settings::BAB_maxIterations

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

◆ BAB_maxNodes

unsigned maingo::Settings::BAB_maxNodes

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

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

◆ BAB_printFreq

unsigned maingo::Settings::BAB_printFreq

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

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

How much output to print from Branch & Bound solver. Possible values are VERB_NONE (=0), VERB_NORMAL (=1), VERB_ALL (=2)

◆ confirmTermination

bool maingo::Settings::confirmTermination

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

◆ deltaEq

double maingo::Settings::deltaEq

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

◆ deltaIneq

double maingo::Settings::deltaIneq

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

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

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

◆ epsilonR

double maingo::Settings::epsilonR

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

◆ infinity

double maingo::Settings::infinity

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

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

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

◆ LBP_linPoints

lbp::LINP maingo::Settings::LBP_linPoints

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

◆ LBP_maxNumberOfAddedFactors

unsigned maingo::Settings::LBP_maxNumberOfAddedFactors

Maximum number of added factor as auxiliaries.

◆ LBP_minFactorsForAux

unsigned maingo::Settings::LBP_minFactorsForAux

Minimum number of common factors to add an auxiliary variable.

◆ LBP_obbtMinImprovement

double maingo::Settings::LBP_obbtMinImprovement

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

Solver for solution of lower bounding problems.

◆ LBP_subgradientIntervals

bool maingo::Settings::LBP_subgradientIntervals

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

How much output to print from Lower Bounding Solver. Possible values are VERB_NONE (=0), VERB_NORMAL (=1), VERB_ALL (=2)

◆ maxTime

unsigned maingo::Settings::maxTime

CPU time limit in seconds.

◆ MC_envelTol

double maingo::Settings::MC_envelTol

(see MC++ documentation for details)

◆ MC_mvcompTol

double maingo::Settings::MC_mvcompTol

(see MC++ documentation for details)

◆ MC_mvcompUse

bool maingo::Settings::MC_mvcompUse

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

◆ outstreamVerbosity

OUTSTREAM_VERB maingo::Settings::outstreamVerbosity

Where to print or write the output. Possible values are OUTSTREAM_NONE (=0), OUTSTREAM_OUTSTREAM (=1), OUTSTREAM_LOG (=2), OUTSTREAM_BOTH (=3)

◆ PRE_maxLocalSearches

unsigned maingo::Settings::PRE_maxLocalSearches

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

◆ PRE_obbtMaxRounds

unsigned maingo::Settings::PRE_obbtMaxRounds

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

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

◆ PRE_pureMultistart

bool maingo::Settings::PRE_pureMultistart

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

Relative tolerance for minimum node size.

◆ targetLowerBound

double maingo::Settings::targetLowerBound

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

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

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

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

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

◆ UBP_maxStepsPreprocessing

unsigned maingo::Settings::UBP_maxStepsPreprocessing

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

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

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

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

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

How much output to print from Upper Bounding Solver. Possible values are VERB_NONE (=0), VERB_NORMAL (=1), VERB_ALL (=2)

◆ writeCsv

bool maingo::Settings::writeCsv

Whether to write a csv-log file (named bab.csv). Currently, this only include time, LBD, UBD, and final output.

◆ writeLog

bool maingo::Settings::writeLog

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

◆ writeResFile

bool maingo::Settings::writeResFile

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

◆ writeToLogSec

unsigned maingo::Settings::writeToLogSec

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

◆ writeToOtherLanguage

PARSING_LANGUAGE maingo::Settings::writeToOtherLanguage

Write to a file in a different modeling language.


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