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