![]() |
MAiNGO
|
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... | |
Settings & | operator= (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... | |
Struct for storing settings for MAiNGO.
Contains settings for MAiNGO. The default values an be found in settings.cpp.
Settings::Settings | ( | ) |
Constructor, sets default values (cf. settings.cpp).
|
default |
Default copy constructor.
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.
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.
bool maingo::Settings::BAB_constraintPropagation |
Whether to do constraint propagation. If false, no constraint propagation is executed.
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.
unsigned maingo::Settings::BAB_logFreq |
Like BAB_printFreq, but for log.
unsigned maingo::Settings::BAB_maxIterations |
Maximum number of iterations (i.e., maximum number of nodes visited in the Branch-and-Bound tree)
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)
babBase::enums::NS maingo::Settings::BAB_nodeSelection |
How to select the next node to process. See documentation of babBase::enums::NS for possible values.
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)
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)
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)
bool maingo::Settings::confirmTermination |
Whether to ask the user before terminating when reaching time, node, or iteration limits.
double maingo::Settings::deltaEq |
Absolute feasibility tolerance for equality constraints (i.e., constraint is considered satisfied if |hi_(x)|<=UBP_delta_eq.
double maingo::Settings::deltaIneq |
Absolute feasibility tolerance for inequality constraints (i.e., constraint is considered satisfied if gi_(x)<=UBP_delta_ineq.
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)
double maingo::Settings::epsilonA |
Absolute optimality tolerance, i.e., termination when (UBD-LBD) < BAB_epsilon_a.
double maingo::Settings::epsilonR |
Relative optimality tolerance, i.e., termination when (UBD-LBD) < BAB_epsilon_r * UBD.
double maingo::Settings::infinity |
User definition of infinity (used to initialize UBD and LBD) [currently cannot be set by the user via set_option].
unsigned maingo::Settings::LBP_activateMoreScaling |
Number of consecutive iterations without LBD improvement needed to activate more aggressive scaling in LP solver (e.g., CPLEX)
bool maingo::Settings::LBP_addAuxiliaryVars |
Whether to add auxiliary variables for common factors in the lower bounding DAG/problem.
lbp::LINP maingo::Settings::LBP_linPoints |
At which points to linearize for affine relaxation. See documentation of lbp::LINP for possible values.
unsigned maingo::Settings::LBP_maxNumberOfAddedFactors |
Maximum number of added factor as auxiliaries.
unsigned maingo::Settings::LBP_minFactorsForAux |
Minimum number of common factors to add an auxiliary variable.
double maingo::Settings::LBP_obbtMinImprovement |
How much improvement needs to be achievable (relative to initial diameter) to conduct OBBT for a variable.
lbp::LBP_SOLVER maingo::Settings::LBP_solver |
Solver for solution of lower bounding problems.
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)
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)
unsigned maingo::Settings::maxTime |
CPU time limit in seconds.
double maingo::Settings::MC_envelTol |
(see MC++ documentation for details)
double maingo::Settings::MC_mvcompTol |
(see MC++ documentation for details)
bool maingo::Settings::MC_mvcompUse |
Whether to use multivariate composition theorem for computing McCormick relaxations (see MC++ documentation for details)
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)
unsigned maingo::Settings::PRE_maxLocalSearches |
Number of local searches in the multistart heuristic during preprocessing at the root node.
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.
bool maingo::Settings::PRE_printEveryLocalSearch |
Whether to print every run during multistart at the root node.
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.
double maingo::Settings::relNodeTol |
Relative tolerance for minimum node size.
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!)
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!)
bool maingo::Settings::terminateOnFeasiblePoint |
Whether to terminate as soon as the first feasible point was found (no guarantee of global or local optimality!)
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).
unsigned maingo::Settings::UBP_maxStepsBab |
Maximum number of steps the local solver is allowed to take at each BaB node.
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.
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.
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::UBP_SOLVER maingo::Settings::UBP_solverBab |
Solver to be used during Branch-and-Bound. See documentation of ubp::UBP_SOLVER for possible values.
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.
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)
bool maingo::Settings::writeCsv |
Whether to write a csv-log file (named bab.csv). Currently, this only include time, LBD, UBD, and final output.
bool maingo::Settings::writeLog |
Whether to write a log file (named bab.log)
bool maingo::Settings::writeResFile |
Whether to write an additional file containing non-standard information about the solved model.
unsigned maingo::Settings::writeToLogSec |
Write to log file after a given ammount of CPU seconds.
PARSING_LANGUAGE maingo::Settings::writeToOtherLanguage |
Write to a file in a different modeling language.