Class ABA_MASTER is the central object of the framework. The most important tasks of the class ABA_MASTER is the management of the implicit enumeration. Moreover, it provides already default implementations for constraints, cutting planes, and variables pools.
#include <master.h>
Inheritance diagram for ABA_MASTER::
|
|
Optimal, Error, OutOfMemory, Unprocessed,
Silent, Statistics, Subproblem, LinearProgram,
Full }
This enumeration defines the two currently implemented branching variable selection strategies.
This enumeration provides various methods for the initialization of the primal bound.
This enumeration defines the ways for automatic constraint elimination during the cutting plane phase.
This enumeration defines the ways for automatic variable elimination during the column generation algorithm.
This enumeration defines what kind of output can be generated for the VBCTOOL.
SoPlex, SYMPHONY, Vol, XPRESS_MP }
This enumeration defines which solvers can be used to solve theLP-relaxations.
The destructor.
This version of the function enumerationStrategy() changes the enumeration strategy.
Analyzes the enumeration strategy set in the parameter file { .abacus} and calls the corresponding comparison function for the subproblems s1 and s2. This function should be redefined for application specific enumeration strategies.
Can be used to check if the guarantee requirements are fulfilled, i.e., the difference between upper bound and the lower bound in respect to the lowerBound is less than this guarantee value in percent.
Can be used to control the correctness of the optimization if the value of the optimum solution has been loaded.
Opens the file specified with the parameter { OptimumFileName} in the configuration file { .abacus} and tries to find a line with the name of the problem instance (as specified in the constructor of ABA_MASTER) as first string.
Writes all parameters of the class ABA_MASTER together with their values to the global output stream.
This version of the function nbranchingVariableCandidates() sets the number of tested branching variable candidates.
This version of the function requiredGuarantee() changes the guarantee specification.
This version of the function maxLevel() changes the maximal enumeration depth.
The function maxCowTime().
This version of the function maxCowTime() set the maximal wall-clock time for the optimization.
This version of function objInteger() sets the assumption that the objective function values of all feasible solutions are integer.
The function tailOffNLp().
The function tailOffPercent().
This version of the function tailOffPercent() sets the minimal change of the dual bound for the tailing off analysis.
The version of the function outLevel() sets the output mode.
This version of the function logLevel() sets the output mode for the log-file.
Sets the number of optimizations of a subproblem until sons are created in ABA_SUB::branching().
This version of the function pricingFreq() sets the number of linear programs being solved between two additional pricing steps.
This version of the function skipFactor() sets the frequency for constraint and variable generation.
This version of the function skippingMode() sets the skipping strategy.
Sets the maximal number of constraints that are added in an iteration of the cutting plane algorithm.
Changes the maximal number of constraints that are buffered in an iteration of the cutting plane algorithm.
Changes the maximal number of variables that are added in an iteration of the subproblem optimization.
Changes the maximal number of variables that are buffered in an iteration of the subproblem optimization.
Changes the default value for the maximal number of iterations of the optimization of a subproblem.
This version of the function eliminateFixedSet() can be used to turn the elimination of fixed and set variables on or off.
Turns the output of the average distance of the added cuts from the fractional solution on or off.
bounds
In order to embed both minimization and maximization problems in this system we work internally with primal bounds, i.e., a value which is worse than the best known solution (often a value of a feasible solution), and dual bounds, i.e., a bound which is better than the best known solution. Primal and dual bounds are then interpreted as lower or upper bounds according to the sense of the optimization.
This version of the function primalBound() sets the primal bound to x and makes a new entry in the solution history. It is an error if the primal bound gets worse.
This version of the function dualBound() sets the dual bound to x and makes a new entry in the solution history.
We use this function ,e.g., to adapt the enumeration strategy in the DiveAndBest-Strategy.
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { STATUS[0]=="Optimal"}).
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { OUTLEVEL[0]=="Silent"}).
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { ENUMSTRAT[0]=="BestFirst"}).
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { BRANCHINGSTRAT[0]=="CloseHalf"}).
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { PRIMALBOUNDMODE[0]=="None"}).
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { SKIPPINGMODE[0]=="None"}).
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { CONELIMMODE[0]=="None"}).
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { VARELIMMODE[0]=="None"}).
Literal values for the enumerators of the corresponding enumeration type. The order of the enumerators is preserved. (e.g., { VBCMODE[0]=="None"}).
Array for the literal values for possible Osi solvers.
Is overloaded such that also a first set of cutting planes can be inserted into the cutting plane pool.
Can be used to initialize the sense of the optimization in derived classes, if this has not been already performed when the constructor of ABA_MASTER has been called.
Is called from the function bestFirstSearch() and from the function depthFirstSearch() if the subproblems s1 and s2 have the same priority.
Implements the depth first search enumeration strategy, i.e., the subproblem with maximum level is selected.
Implements the breadth first search enumeration strategy, i.e., the subproblem with minimum level is selected.
Performs depth-first search until a feasible solution is found, then the search process is continued with best-first search.
Is only a dummy. This function can be used to initialize parameters of derived classes and to overwrite parameters read from the file { .abacus} by the function ().
The default implementation of initializeOptimization() does nothing.
The default implementation of terminateOptimization() does nothing.
Reads the parameter-file { .abacus}, which is searched in the directory given by the environment variable ABACUS_DIR, and calls the virtual function initializeParameters() which can initialize parameters of derived classes and overwrite parameters of this class.
Initializes the LP solver specific default Parameters if they are not read from the parameter-file { .abacus}.
Adds the subproblem sub to the stream storing information for graphical output of the enumeration tree if this logging is turned on.
Updates the node information in the node with number id by writing the lower bound lb and the upper bound ub to the node.
Increments the counter for linear programs and should be called in each optimization call of the LP-relaxation.
Increments the counter of the number of fixed variables by n.
Increments the counter for the total number of added constraints by n.
Increments the counter for the total number of removed constraints by n.
Increments the counter for the total number of added variables by n.
Increments the counter for the total number of removed variables by n.
The number of candidates that are evaluated for branching on variables.
The number of subproblems already selected from the list of open subproblems.
Ouput for the Tree Interface is generated depending on the value of this variable.
The guarantee in percent which should be reached when the optimization stops.
true, if all objective function values of feasible solutions are assumed to be integer.
The minimal number of rounds, i.e., number of subproblem optimizations, a subproblem is dormant, i.e., it is not selected from the set of open subproblem if its status is Dormant, if possible.
The frequency constraints or variables are generated depending on the skipping mode.
Either constraints are generated only every skipFactor_ subproblem (SkipByNode) only every skipFactor_ level (SkipByLevel).
The maximal number of added constraints per iteration of the cutting plane algorithm.
The maximal number of added variables per iteration of the column generation algorithm.
The maximal number of iterations of the cutting plane/column generation algorithm in the subproblem.
If true, then an already earlier processed node is reoptimized if it becomes the new root of the remaining \ tree.
The name of a file storing a list of optimum solutions of problem instances.
If true then the average distance of the added cutting planes is output every iteration of the cutting plane algorithm.
The way constraints are automatically eliminated in the cutting plane algorithm.
The way variables are automatically eliminated in the column generation algorithm.
The tolerance for the elimination of constraints by the mode NonBinding/.
The tolerance for the elimination of variables by the mode ReducedCost.
The number of iterations an elimination criterion must be satisfied until a constraint can be removed.
The number of iterations an elimination criterion must be satisfied until a variable can be removed.
The timer for the cpu time spent in the heuristics for the computation of feasible solutions.
Class ABA_MASTER is the central object of the framework. The most important tasks of the class ABA_MASTER is the management of the implicit enumeration. Moreover, it provides already default implementations for constraints, cutting planes, and variables pools.
Definition at line 76 of file master.h.
The various statuses of the optimization process.
Definition at line 109 of file master.h.
This enumeration defines the different output levels:
Definition at line 131 of file master.h.
Definition at line 158 of file master.h.
This enumeration defines the two currently implemented branching variable selection strategies.
Definition at line 175 of file master.h.
This enumeration provides various methods for the initialization of the primal bound.
The modes OptimalPrimalBound and OptimalOnePrimalBound can be useful in the testing phase. For these modes the value of an optimum solution must stored in the file given by the parameter { OptimumFileName} in the parameter file.
Definition at line 202 of file master.h.
The way nodes are skipped for the generation of cuts.