R/solver_controls.R

Defines functions .add_controls

.add_controls <- function(solver) {
    ROI_plugin_register_solver_control(solver, "nsol_max", "X")

    # Termination
    ROI_plugin_register_solver_control(solver, "BarIterLimit"  , "X") # Barrier iteration limit
    ROI_plugin_register_solver_control(solver, "BestBdStop"    , "X") # Best objective bound to stop
    ROI_plugin_register_solver_control(solver, "BestObjStop"   , "X") # Best objective value to stop
    ROI_plugin_register_solver_control(solver, "Cutoff"        , "X") # Objective cutoff
    ROI_plugin_register_solver_control(solver, "IterationLimit", "X") # Simplex iteration limit
    ROI_plugin_register_solver_control(solver, "NodeLimit"     , "X") # MIP node limit
    ROI_plugin_register_solver_control(solver, "SolutionLimit" , "X") # MIP feasible solution limit
    ROI_plugin_register_solver_control(solver, "TimeLimit"     , "X") # Time limit

    # Tolerances
    ROI_plugin_register_solver_control(solver, "BarConvTol"    , "X") # Barrier convergence tolerance
    ROI_plugin_register_solver_control(solver, "BarQCPConvTol" , "X") # Barrier QCP convergence tolerance
    ROI_plugin_register_solver_control(solver, "FeasibilityTol", "X") # Primal feasibility tolerance
    ROI_plugin_register_solver_control(solver, "IntFeasTol"    , "X") # Integer feasibility tolerance
    ROI_plugin_register_solver_control(solver, "MarkowitzTol"  , "X") # Threshold pivoting tolerance
    ROI_plugin_register_solver_control(solver, "MIPGap"        , "X") # Relative MIP optimality gap
    ROI_plugin_register_solver_control(solver, "MIPGapAbs"     , "X") # Absolute MIP optimality gap
    ROI_plugin_register_solver_control(solver, "OptimalityTol" , "X") # Dual feasibility tolerance
    ROI_plugin_register_solver_control(solver, "PSDTol"        , "X") # Positive semi-definite tolerance

    # Simplex
    ROI_plugin_register_solver_control(solver, "InfUnbdInfo"   , "X") # Generate additional info for infeasible/unbounded models
    ROI_plugin_register_solver_control(solver, "NormAdjust"    , "X") # Simplex pricing norm
    ROI_plugin_register_solver_control(solver, "ObjScale"      , "X") # Objective scaling
    ROI_plugin_register_solver_control(solver, "PerturbValue"  , "X") # Simplex perturbation magnitude
    ROI_plugin_register_solver_control(solver, "Quad"          , "X") # Quad precision computation in simplex
    ROI_plugin_register_solver_control(solver, "ScaleFlag"     , "X") # Model scaling
    ROI_plugin_register_solver_control(solver, "Sifting"       , "X") # Sifting within dual simplex
    ROI_plugin_register_solver_control(solver, "SiftMethod"    , "X") # LP method used to solve sifting sub-problems
    ROI_plugin_register_solver_control(solver, "SimplexPricing", "X") # Simplex variable pricing strategy

    # Barrier
    ROI_plugin_register_solver_control(solver, "BarCorrectors" , "X") # Central correction limit
    ROI_plugin_register_solver_control(solver, "BarHomogeneous", "X") # Barrier homogeneous algorithm
    ROI_plugin_register_solver_control(solver, "BarOrder"      , "X") # Barrier ordering algorithm
    ROI_plugin_register_solver_control(solver, "Crossover"     , "X") # Barrier crossover strategy
    ROI_plugin_register_solver_control(solver, "CrossoverBasis", "X") # Crossover initial basis construction strategy
    ROI_plugin_register_solver_control(solver, "QCPDual"       , "X") # Compute dual variables for QCP models

    # MIP
    ROI_plugin_register_solver_control(solver, "BranchDir"         , "X") # Branch direction preference
    ROI_plugin_register_solver_control(solver, "ConcurrentJobs"    , "X") # Enables distributed concurrent solver
    ROI_plugin_register_solver_control(solver, "ConcurrentMIP"     , "X") # Enables concurrent MIP solver
    ROI_plugin_register_solver_control(solver, "ConcurrentSettings", "X") # Create concurrent environments from a list of .prm files
    ROI_plugin_register_solver_control(solver, "DegenMoves"        , "X") # Degenerate simplex moves
    ROI_plugin_register_solver_control(solver, "Disconnected"      , "X") # Disconnected component strategy
    ROI_plugin_register_solver_control(solver, "DistributedMIPJobs", "X") # Enables the distributed MIP solver
    ROI_plugin_register_solver_control(solver, "Heuristics"        , "X") # Turn MIP heuristics up or down
    ROI_plugin_register_solver_control(solver, "ImproveStartGap"   , "X") # Trigger solution improvement
    ROI_plugin_register_solver_control(solver, "ImproveStartNodes" , "X") # Trigger solution improvement
    ROI_plugin_register_solver_control(solver, "ImproveStartTime"  , "X") # Trigger solution improvement
    ROI_plugin_register_solver_control(solver, "LazyConstraints"   , "X") # Programs that add lazy constraints must set this parameter
    ROI_plugin_register_solver_control(solver, "MinRelNodes"       , "X") # Minimum relaxation heuristic control
    ROI_plugin_register_solver_control(solver, "MIPFocus"          , "X") # Set the focus of the MIP solver
    ROI_plugin_register_solver_control(solver, "MIQCPMethod"       , "X") # Method used to solve MIQCP models
    ROI_plugin_register_solver_control(solver, "NodefileDir"       , "X") # Directory for MIP node files
    ROI_plugin_register_solver_control(solver, "NodefileStart"     , "X") # Memory threshold for writing MIP tree nodes to disk
    ROI_plugin_register_solver_control(solver, "NodeMethod"        , "X") # Method used to solve MIP node relaxations
    ROI_plugin_register_solver_control(solver, "NonConvex"         , "X") # Control how to deal with non-convex quadratic programs
    ROI_plugin_register_solver_control(solver, "NoRelHeurTime"     , "X") # Limits the amount of time (in seconds, "X") spent in the NoRel heuristic
    ROI_plugin_register_solver_control(solver, "NoRelHeurWork"     , "X") # Limits the amount of work performed by the NoRel heuristic
    ROI_plugin_register_solver_control(solver, "PartitionPlace"    , "X") # Controls when the partition heuristic runs
    ROI_plugin_register_solver_control(solver, "PumpPasses"        , "X") # Feasibility pump heuristic control
    ROI_plugin_register_solver_control(solver, "RINS"              , "X") # RINS heuristic
    ROI_plugin_register_solver_control(solver, "SolFiles"          , "X") # Location to store intermediate solution files
    ROI_plugin_register_solver_control(solver, "SolutionNumber"    , "X") # Sub-optimal MIP solution retrieval
    ROI_plugin_register_solver_control(solver, "StartNodeLimit"    , "X") # Node limit for MIP start sub-MIP
    ROI_plugin_register_solver_control(solver, "StartNumber"       , "X") # Set index of MIP start
    ROI_plugin_register_solver_control(solver, "SubMIPNodes"       , "X") # Nodes explored by sub-MIP heuristics
    ROI_plugin_register_solver_control(solver, "Symmetry"          , "X") # MIP symmetry detection
    ROI_plugin_register_solver_control(solver, "VarBranch"         , "X") # Branch variable selection strategy
    ROI_plugin_register_solver_control(solver, "ZeroObjNodes"      , "X") # Zero objective heuristic control

    # Presolve
    ROI_plugin_register_solver_control(solver, "AggFill"       , "X") # Allowed fill during presolve aggregation
    ROI_plugin_register_solver_control(solver, "Aggregate"     , "X") # Presolve aggregation control
    ROI_plugin_register_solver_control(solver, "DualReductions", "X") # Disables dual reductions in presolve
    ROI_plugin_register_solver_control(solver, "PreCrush"      , "X") # Allows presolve to translate constraints on the original model to equivalent constraints on the presolved model
    ROI_plugin_register_solver_control(solver, "PreDepRow"     , "X") # Presolve dependent row reduction
    ROI_plugin_register_solver_control(solver, "PreDual"       , "X") # Presolve dualization
    ROI_plugin_register_solver_control(solver, "PreMIQCPForm"  , "X") # Format of presolved MIQCP model
    ROI_plugin_register_solver_control(solver, "PrePasses"     , "X") # Presolve pass limit
    ROI_plugin_register_solver_control(solver, "PreQLinearize" , "X") # Presolve Q matrix linearization
    ROI_plugin_register_solver_control(solver, "Presolve"      , "X") # Presolve level
    ROI_plugin_register_solver_control(solver, "PreSOS1BigM"   , "X") # Controls SOS1 conversion to binary form
    ROI_plugin_register_solver_control(solver, "PreSOS2BigM"   , "X") # Controls SOS2 conversion to binary form
    ROI_plugin_register_solver_control(solver, "PreSparsify"   , "X") # Presolve sparsify reduction

    # Tuning
    ROI_plugin_register_solver_control(solver, "TuneBaseSettings", "X") # Comma-separated list of base parameter settings
    ROI_plugin_register_solver_control(solver, "TuneCleanup"     , "X") # Enables a tuning cleanup phase
    ROI_plugin_register_solver_control(solver, "TuneCriterion"   , "X") # Specify tuning criterion
    ROI_plugin_register_solver_control(solver, "TuneJobs"        , "X") # Enables distributed tuning
    ROI_plugin_register_solver_control(solver, "TuneOutput"      , "X") # Tuning output level
    ROI_plugin_register_solver_control(solver, "TuneResults"     , "X") # Number of improved parameter sets returned
    ROI_plugin_register_solver_control(solver, "TuneTimeLimit"   , "X") # Time limit for tuning
    ROI_plugin_register_solver_control(solver, "TuneTrials"      , "X") # Perform multiple runs on each parameter set to limit the effect of random noise

    # Multiple Solutions
    ROI_plugin_register_solver_control(solver, "PoolGap"       , "X") # Relative gap for solutions in pool
    ROI_plugin_register_solver_control(solver, "PoolGapAbs"    , "X") # Absolute gap for solutions in pool
    ROI_plugin_register_solver_control(solver, "PoolSearchMode", "X") # Choose the approach used to find additional solutions
    ROI_plugin_register_solver_control(solver, "PoolSolutions" , "X") # Number of solutions to keep in pool

    # MIP Cuts
    ROI_plugin_register_solver_control(solver, "BQPCuts"        , "X") # BQP cut generation
    ROI_plugin_register_solver_control(solver, "Cuts"           , "X") # Global cut generation control
    ROI_plugin_register_solver_control(solver, "CliqueCuts"     , "X") # Clique cut generation
    ROI_plugin_register_solver_control(solver, "CoverCuts"      , "X") # Cover cut generation
    ROI_plugin_register_solver_control(solver, "CutAggPasses"   , "X") # Constraint aggregation passes performed during cut generation
    ROI_plugin_register_solver_control(solver, "CutPasses"      , "X") # Root cutting plane pass limit
    ROI_plugin_register_solver_control(solver, "FlowCoverCuts"  , "X") # Flow cover cut generation
    ROI_plugin_register_solver_control(solver, "FlowPathCuts"   , "X") # Flow path cut generation
    ROI_plugin_register_solver_control(solver, "GomoryPasses"   , "X") # Root Gomory cut pass limit
    ROI_plugin_register_solver_control(solver, "GUBCoverCuts"   , "X") # GUB cover cut generation
    ROI_plugin_register_solver_control(solver, "ImpliedCuts"    , "X") # Implied bound cut generation
    ROI_plugin_register_solver_control(solver, "InfProofCuts"   , "X") # Infeasibility proof cut generation
    ROI_plugin_register_solver_control(solver, "MIPSepCuts"     , "X") # MIP separation cut generation
    ROI_plugin_register_solver_control(solver, "MIRCuts"        , "X") # MIR cut generation
    ROI_plugin_register_solver_control(solver, "ModKCuts"       , "X") # Mod-k cut generation
    ROI_plugin_register_solver_control(solver, "NetworkCuts"    , "X") # Network cut generation
    ROI_plugin_register_solver_control(solver, "ProjImpliedCuts", "X") # Projected implied bound cut generation
    ROI_plugin_register_solver_control(solver, "PSDCuts"        , "X") # PSD cut generation
    ROI_plugin_register_solver_control(solver, "RelaxLiftCuts"  , "X") # Relax-and-lift cut generation
    ROI_plugin_register_solver_control(solver, "RLTCuts"        , "X") # RLT cut generation
    ROI_plugin_register_solver_control(solver, "StrongCGCuts"   , "X") # Strong-CG cut generation
    ROI_plugin_register_solver_control(solver, "SubMIPCuts"     , "X") # Sub-MIP cut generation
    ROI_plugin_register_solver_control(solver, "ZeroHalfCuts"   , "X") # Zero-half cut generation

    # Other
    ROI_plugin_register_solver_control(solver, "DisplayInterval" , "X") # Frequency at which log lines are printed
    ROI_plugin_register_solver_control(solver, "FeasRelaxBigM"   , "X") # Big-M value for feasibility relaxations
    ROI_plugin_register_solver_control(solver, "FuncPieceError"  , "X") # Error allowed for PWL translation of function constraint
    ROI_plugin_register_solver_control(solver, "FuncPieceLength" , "X") # Piece length for PWL translation of function constraint
    ROI_plugin_register_solver_control(solver, "FuncPieceRatio"  , "X") # Controls whether to under- or over-estimate function values in PWL approximation
    ROI_plugin_register_solver_control(solver, "FuncPieces"      , "X") # Sets strategy for PWL function approximation
    ROI_plugin_register_solver_control(solver, "FuncMaxVal"      , "X") # Maximum value for x and y variables in function constraints
    ROI_plugin_register_solver_control(solver, "IgnoreNames"     , "X") # Indicates whether to ignore names provided by users
    ROI_plugin_register_solver_control(solver, "IISMethod"       , "X") # IIS method
    ROI_plugin_register_solver_control(solver, "InputFile"       , "X") # File to be read before optimization commences
    ROI_plugin_register_solver_control(solver, "IntegralityFocus", "X") # Set the integrality focus
    ROI_plugin_register_solver_control(solver, "JSONSolDetail"   , "X") # Controls the level of detail stored in generated JSON solution
    ROI_plugin_register_solver_control(solver, "LogFile"         , "X") # Log file name
    ROI_plugin_register_solver_control(solver, "LogToConsole"    , "X") # Console logging
    ROI_plugin_register_solver_control(solver, "Method"          , "X") # Algorithm used to solve continuous models
    ROI_plugin_register_solver_control(solver, "MultiObjMethod"  , "X") # Warm-start method to solve for subsequent objectives
    ROI_plugin_register_solver_control(solver, "MultiObjPre"     , "X") # Initial presolve on multi-objective models
    ROI_plugin_register_solver_control(solver, "MultiObjSettings", "X") # Create multi-objective settings from a list of .prm files
    ROI_plugin_register_solver_control(solver, "NumericFocus"    , "X") # Set the numerical focus
    ROI_plugin_register_solver_control(solver, "ObjNumber"       , "X") # Set index of multi-objectives
    ROI_plugin_register_solver_control(solver, "OutputFlag"      , "verbose") # Solver output control
    ROI_plugin_register_solver_control(solver, "Record"          , "X") # Enable API call recording
    ROI_plugin_register_solver_control(solver, "ResultFile"      , "X") # Result file written upon completion of optimization
    ROI_plugin_register_solver_control(solver, "ScenarioNumber"  , "X") # Set index of scenario in multi-scenario models
    ROI_plugin_register_solver_control(solver, "Seed"            , "X") # Modify the random number seed
    ROI_plugin_register_solver_control(solver, "Threads"         , "X") # Number of parallel threads to use
    ROI_plugin_register_solver_control(solver, "UpdateMode"      , "X") # Change the behavior of lazy updates

    invisible( TRUE )
}
roigrp/ROI.plugin.gurobi documentation built on Dec. 22, 2021, 5:16 p.m.