Parameters
As described here, parameters can be specified either on the command line or in a
parameter file. On the command line, the executable name mibs
should be followed by pairs of parameters names
and value. The parameter name should always be preceded by a -
. the basic usage is as follows.
mibs -instance file.mps -auxiliaryInfoFile file.aux
(see the description of the input file format here). Note that specifying the name and location of the
auxiliary file is unnecessary if it has the same base name and is in the same folder.
To specify parameters in a separate parameter file, list one parameter name and value oer line (no -
). Then
call MibS like this.
mibs -param mibs.par
You can see an example of what the paramter file might look like
here (lines starting with a #
are
ignored). The header file MibParams.hpp
also provides additional information.
MibS is built on several other libraries that each have parameters. To distinguish parameters for different libraries, prefixes are used. As of version 1.2, however, the prefix can be left off as long as there is no name ambiguity.
ALPS Parameters
Parameter Name | Description |
---|---|
Alps_instance | Path to instance file |
Alps_timeLimit | Overall wallclock time limit |
Alps_nodeLimit | Limit on number of nodes explored |
Alps_msgLevel | Verbosity level for ALPS message. Set > 5 for additional debugging output |
Alps_logFileLevel | Whether to create log file and its verbosity. Currently, this option dumps parameter settings at level 1 and that’s it. |
Alps_searchStrategy | 0 : Best first 1 : Best estimate 2 : Breath first 3 : Depth first 4 Hybrid |
Alps_nodeLogInterval | How frequently to print status lines |
BLIS Parameters
Heuristics
These paramters conrol the MILP heuristics built into BLIS. MibS has its own heuristics (see below)
Parameter Name | Description |
---|---|
Blis_heurStrategy | When to call heuristics (default) 0 : disable 1 : root 2 : auto 3 : periodic |
Blis_heurCallFrequency | How often to call heuristics |
Blis_heurRoundStrategy | When to call rounding heuristic (default) 0 : disable 1 : root 2 : auto 3 : periodic |
Blis_heurRoundFreq | How often to call heuristics |
Branching
These paramters conrol the strategy for choosing from among the candidates. MibS has its own startegies for chosing the list of candidates (see below)
Blis_branchStrategy | MibS uses pseudocost branching by default and the other strategies are untested. 0 : max infeasibility 1 : pseudocost 2 : reliability 3 : strong |
Cuts
These are parameters for controlling generation of inequalites valid for
MILPs, which can be used to eliminate fractional solutions if desired. These
cuts are all off by default, as they’re usually not effective.
MibS has its own bilevel-specific cuts (see below)
Note that Blis_scaleConFactor
and Blis_denseConFactor
do affect the addition of bilevel-specific cuts.
Parameter Name | Description |
---|---|
Blis_cutStrategy | Strategy for cut generation (default) 0 : disable 1 : root 2 : auto 3 : periodic |
Blis_cutGenerationFrequency | How frequently to generate MILP cuts |
Blis_scaleConFactor | Level of dynamism above which cuts will be discarded. Note that setting this too low can result in incorrect results, since cuts necessary for validity may be thrown out |
Blis_denseConFactor | Cut density above which cuts will be discarded. Note that setting this too low can result in incorrect results, since cuts necessary for validity may be thrown out |
Blis_cutCliqueStrategy Blis_cutGomoryStrategy Blis_cutFlowCoverStrategy Blis_cutKnapsackStrategy Blis_cutMirStrategy Blis_cutOddHoleStrategy Blis_cutProbingStrategy Blis_cutTwoMirStrategy |
Strategy for generating individual classes of inequalities. 0 : disable 1 : root 2 : auto 3 : periodic |
Blis_cutCliqueFreq Blis_cutGomoryFreq Blis_cutFlowCoverFreq Blis_cutKnapsackFreq Blis_cutMirFreq Blis_cutOddHoleFreq Blis_cutProbingFreq Blis_cutTwoMirFreq |
Frequency for generating individual classes of inequalities. |
MibS Parameters
General
These are general MibS parameters
Parameter Name | Description |
---|---|
MibS_auxiliaryInfoFile | Path to auxiliary info file |
MibS_usePreprocessor | 0 : off 1 : on |
MibS_bilevelProblemType | 0 : general 1 : interdiction |
MibS_objBoundStrategy | How to derive a bound on lower level objective for preprocessing 0 : LL obj bound 1 : interdiction bound |
MibS_whichActiveConMethod | How to determine which constraints are binding 0 : simple 1 : basis |
MibS_upperFileFormat | 0 : MPS 1 : AMPL/GMPL |
MibS_writeSolnFile | Path to name of file to write optimal solution to |
MibS_writeInstanceFile | Path to name of file to write instance auxiliary file to |
Subsolvers
These are parameters related to solving subproblems for either checking feasibility or determining the best lower-level solution associated with a given upper-level solution by solving an auxiliary MILP.
Parameter Name | Description |
---|---|
MibS_solveSecondLevelWhenXYVarsInt | 0 : false 1 : true |
MibS_solveSecondLevelWhenXVarsInt | 0 : false 1 : true |
MibS_solveSecondLevelWhenLVarsInt | 0 : false 1 : true |
MibS_solveSecondLevelWhenLVarsFixed | 0 : false 1 : true |
MibS_computeBestUBWhenXVarsInt | 0 : false 1 : true |
MibS_computeBestUBWhenLVarsInt | 0 : false 1 : true |
MibS_computeBestUBWhenLVarsFixed | 0 : false 1 : true |
MibS_useLinkingSolutionPool | 0 : false 1 : true |
MibS_doDualFixing | 0 : false 1 : true |
MibS_feasCheckSolver | Options are currently - Cbc - SYMPHONY - CPLEX |
MibS_warmStartLL | 0 : false 1 : true |
MibS_maxThreadsLL | Number of threads to use for parallel solve of lower level problem |
MibS_whichCutsLL | 0 : no cuts 1 : gomory only 2 : all cuts |
Heuristics
These are parameters for controlling heuristics.
Parameter Name | Description |
---|---|
MibS_useLowerObjHeuristic | -1 : auto 0 : false 1 : true |
MibS_useObjCutHeuristic | -1 : auto 0 : false 1 : true |
MibS_useWSHeuristic | -1 : auto 0 : false 1 : true |
MibS_useGreedyHeuristic | 0 : false 1 : true |
Branching
These are parameters for controlling which variables are cnadidates for branching.
Parameter Name | Description |
---|---|
MibS_branchStrategy | 0 : fractional 1 : linking |
Cuts
These are parameters for controlling generation of valid inequalities. For an explanation, please see this technical report. Note that some parameter names related to cuts were changed in version 1.2 to corespond to the names in the report. The names used in earlier versions still work for backwards compatibility, but are not documented.
Parameter Name | Description |
---|---|
MibS_cutStrategy | 0 : branch only 1 : cut only 2 : use cut and branch |
MibS_maxCutDepth | Deepest level of the tree at which cuts should be generated |
MibS_turnOffDefaultCuts | Turn off all cuts not explicitly turned on by parameters 0 : false 1 : true |
MibS_useFractionalCuts | Whether to generate cuts when solution is fractional (see tech report) 0 : false 1 : true |
MibS_useIntegerNoGoodCut | Whether to generate integer no good cuts 0 : false 1 : true |
MibS_useValFuncCut | Whether to generate value function cuts 0 : false 1 : true |
MibS_useNoGoodCut | Whether to generate no good cuts 0 : false 1 : true |
MibS_useBendersBinaryCut | Whether to generate Benders binary cuts 0 : false 1 : true |
MibS_useBendersInterdictionCut | Whether to generate Benders intersection cuts 0 : false 1 : true |
MibS_bendersInterdictionCutType | Whether to generate a single or multiple cuts (from different solutions) in each iteration 0 : justOne 1 : multiple |
MibS_useGeneralizedNoGoodCut | Whether to generate generalized no good cuts 0 : false 1 : true |
MibS_useImprovingSolutionIC | Whether to generate improving solution intersection cuts 0 : false 1 : true |
MibS_bilevelFreeSetTypeISIC | What kind of bilevel free set type to use for improving solution ICs 0 : Derive solution by solving lower level problem to optimality 1 : Derive a solution by solving an auxiliary problem |
MibS_useImprovingDirectionIC | Whether to generate improving direction intersection cuts 0 : false 1 : true |
MibS_useHypecubeIC | Whether to generate hypercube intersection cuts 0 : false 1 : true |
MibS_useBoundCut | Whether to generate this cut (see tech report) 0 : false 1 : true |
MibS_boundCutOptimal | What kind of bound cut to generate (there is currently only one option) 0 : false 1 : true |