Class GurobiSolverConfiguration
Allows to configure parameters for the Gurobi solver.
Inherited Members
Namespace: OPTANO.Modeling.Optimization.Solver.Gurobi501
Assembly: Optimization.Solver.Gurobi501.dll
Syntax
public class GurobiSolverConfiguration : SolverConfiguration
Properties
AggFill
Controls the amount of fill allowed during presolve aggregation.Larger values generally lead to presolved models with fewer rows andcolumns, but with more constraint matrix non-zeros. The default value chooses automatically, and usually works well.
Declaration
[Display(Name = "Allowed fill during presolve aggregation", ShortName = "AggFill", Description = "Controls the amount of fill allowed during presolve aggregation.Larger values generally lead to presolved models with fewer rows andcolumns, but with more constraint matrix non-zeros. The default value chooses automatically, and usually works well. ")]
public int? AggFill { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Aggregate
Enables or disables aggregation in presolve. In rare instances,aggregation can lead to an accumulation of numerical errors. Turningit off can sometimes improve solution accuracy.
Declaration
[Display(Name = "Presolve aggregation control", ShortName = "Aggregate", Description = "Enables or disables aggregation in presolve. In rare instances,aggregation can lead to an accumulation of numerical errors. Turningit off can sometimes improve solution accuracy. ")]
public bool? Aggregate { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
ApplicationName
In case you are using a Gurobi application license, use this property to set your application name
Declaration
public string ApplicationName { get; set; }
Property Value
Type | Description |
---|---|
System.String |
BarConvTol
The barrier solver terminates when the relative difference between theprimal and dual objective values is less than the specified tolerance(with a GRB_OPTIMAL status). Tightening this tolerance oftenproduces a more accurate solution, which can sometimes reduce the timespent in crossover. Loosening it causes the barrier algorithm toterminate with a less accurate solution, which can be useful whenbarrier is making very slow progress in later iterations. Note: Barrier only
Declaration
[Display(Name = "Barrier convergence tolerance", ShortName = "BarConvTol", Description = "The barrier solver terminates when the relative difference between theprimal and dual objective values is less than the specified tolerance(with a GRB_OPTIMAL status). Tightening this tolerance oftenproduces a more accurate solution, which can sometimes reduce the timespent in crossover. Loosening it causes the barrier algorithm toterminate with a less accurate solution, which can be useful whenbarrier is making very slow progress in later iterations. Note: Barrier only ")]
public double? BarConvTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
BarCorrectors
Limits the number of central corrections performed in each barrieriteration. The default value chooses automatically, depending onproblem characteristics. The automatic strategy generally works well,although it is often possible to obtain higher performance on aspecific model by selecting a value manually. Note: Barrier only
Declaration
[Display(Name = "Central correction limit", ShortName = "BarCorrectors", Description = "Limits the number of central corrections performed in each barrieriteration. The default value chooses automatically, depending onproblem characteristics. The automatic strategy generally works well,although it is often possible to obtain higher performance on aspecific model by selecting a value manually. Note: Barrier only ")]
public int? BarCorrectors { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
BarHomogeneous
Determines whether to use the homogeneous barrier algorithm. At thedefault setting (-1), it is only used when barrier solves a noderelaxation for a MIP model. Setting the parameter to 0 turns it off,and setting it to 1 forces it on. The homogeneous algorithm is usefulfor recognizing infeasibility or unboundedness. It is a bit slowerthan the default algorithm. Note: Barrier only
Declaration
[Display(Name = "Barrier homogeneous algorithm", ShortName = "BarHomogeneous", Description = "Determines whether to use the homogeneous barrier algorithm. At thedefault setting (-1), it is only used when barrier solves a noderelaxation for a MIP model. Setting the parameter to 0 turns it off,and setting it to 1 forces it on. The homogeneous algorithm is usefulfor recognizing infeasibility or unboundedness. It is a bit slowerthan the default algorithm. Note: Barrier only ")]
public int? BarHomogeneous { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
BarIterLimit
Limits the number of barrier iterations performed. This parameter israrely used. If you would like barrier to terminate early, it isalmost always better to use theBarConvTol parameter instead. Optimization returns with an ITERATION_LIMIT status if thelimit is exceeded (see the Status Codesection for further details). Note: Barrier only
Declaration
[Display(Name = "Barrier iteration limit", ShortName = "BarIterLimit", Description = "Limits the number of barrier iterations performed. This parameter israrely used. If you would like barrier to terminate early, it isalmost always better to use theBarConvTol parameter instead. Optimization returns with an ITERATION_LIMIT status if thelimit is exceeded (see the Status Codesection for further details). Note: Barrier only ")]
public int? BarIterLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
BarOrder
Chooses the barrier sparse matrix fill-reducing algorithm. A value of0 chooses Approximate Minimum Degree ordering, while a value of 1chooses Nested Dissection ordering. The default value of -1 choosesautomatically. You should only modify this parameter if you noticethat the barrier ordering phase is consuming a significant fraction ofthe overall barrier runtime. Note: Barrier only
Declaration
[Display(Name = "Barrier ordering algorithm", ShortName = "BarOrder", Description = "Chooses the barrier sparse matrix fill-reducing algorithm. A value of0 chooses Approximate Minimum Degree ordering, while a value of 1chooses Nested Dissection ordering. The default value of -1 choosesautomatically. You should only modify this parameter if you noticethat the barrier ordering phase is consuming a significant fraction ofthe overall barrier runtime. Note: Barrier only ")]
public int? BarOrder { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
BarQCPConvTol
When solving a QCP model, the barrier solver terminates when therelative difference between the primal and dual objective values isless than the specified tolerance (with a GRB_OPTIMALstatus). Tightening this tolerance may lead to a more accuratesolution, but it may also lead to a failure to converge. Note: Barrier only
Declaration
[Display(Name = "Barrier QCP convergence tolerance", ShortName = "BarQCPConvTol", Description = "When solving a QCP model, the barrier solver terminates when therelative difference between the primal and dual objective values isless than the specified tolerance (with a GRB_OPTIMALstatus). Tightening this tolerance may lead to a more accuratesolution, but it may also lead to a failure to converge. Note: Barrier only ")]
public double? BarQCPConvTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
BranchDir
Determines which child node is explored first in the branch-and-cutsearch. The default value chooses automatically. A value of -1 willalways explore the down branch first, while a value of 1 will alwaysexplore the up branch first. Changing the value of this parameter rarely produces a significantbenefit. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Branch direction preference", ShortName = "BranchDir", Description = "Determines which child node is explored first in the branch-and-cutsearch. The default value chooses automatically. A value of -1 willalways explore the down branch first, while a value of 1 will alwaysexplore the up branch first. Changing the value of this parameter rarely produces a significantbenefit. Note: Only affects mixed integer programming (MIP) models ")]
public int? BranchDir { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
CliqueCuts
Controls clique cut generation. Use 0 to disable these cuts, 1 formoderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value choose automatically. Overrides theCuts parameter. We have observed that setting this parameter to its aggressive settingcan produce a significant benefit for some large set partitioningmodels. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Clique cut generation", ShortName = "CliqueCuts", Description = "Controls clique cut generation. Use 0 to disable these cuts, 1 formoderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value choose automatically. Overrides theCuts parameter. We have observed that setting this parameter to its aggressive settingcan produce a significant benefit for some large set partitioningmodels. Note: Only affects mixed integer programming (MIP) models ")]
public int? CliqueCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ComputeIIS
Specifies whether the IIS
should be computed or not. You will find the IIS in the returned solution.
Declaration
[Display(Name = "Compute IIS", ShortName = "Compute IIS", Description = "Specifies whether the IIS should be computed or not - you will find the IIS in the returned solution ")]
public bool ComputeIIS { get; set; }
Property Value
Type | Description |
---|---|
System.Boolean |
CoverCuts
Controls cover cut generation. Use 0 to disable these cuts, 1 formoderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Cover cut generation", ShortName = "CoverCuts", Description = "Controls cover cut generation. Use 0 to disable these cuts, 1 formoderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? CoverCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Crossover
Determines the crossover strategy used to transform the interiorsolution produced by barrier into a basic solution (note thatcrossover is not available for QP or QCP models). Crossover consistsof three phases: (i) a primal push phase, where primalvariables are pushed to bounds, (ii) a dual push phase, wheredual variables are pushed to bounds, and (iii) a cleanupphase, where simplex is used to remove any primal or dualinfeasibilities that remain after the push phases are complete. Theorder of the first two phases and the algorithm used for the thirdphase are both controlled by the Crossover parameter: Parameter valueFirst pushSecond pushCleanup1DualPrimalPrimal2DualPrimalDual3PrimalDualPrimal4PrimalDualDual The default value of -1 chooses the strategy automatically. Use value0 to disable crossover; this setting returns the interior solutioncomputed by barrier. Note: Barrier only
Declaration
[Display(Name = "Barrier crossover strategy", ShortName = "Crossover", Description = "Determines the crossover strategy used to transform the interiorsolution produced by barrier into a basic solution (note thatcrossover is not available for QP or QCP models). Crossover consistsof three phases: (i) a primal push phase, where primalvariables are pushed to bounds, (ii) a dual push phase, wheredual variables are pushed to bounds, and (iii) a cleanupphase, where simplex is used to remove any primal or dualinfeasibilities that remain after the push phases are complete. Theorder of the first two phases and the algorithm used for the thirdphase are both controlled by the Crossover parameter: Parameter valueFirst pushSecond pushCleanup1DualPrimalPrimal2DualPrimalDual3PrimalDualPrimal4PrimalDualDual The default value of -1 chooses the strategy automatically. Use value0 to disable crossover; this setting returns the interior solutioncomputed by barrier. Note: Barrier only ")]
public int? Crossover { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
CrossoverBasis
Determines the initial basis construction strategy for crossover. Thedefault value (0) chooses an initial basis quickly. A value of 1 cantake much longer, but often produces a more numerically stable startbasis. Note: Barrier only
Declaration
[Display(Name = "Crossover initial basis construction strategy", ShortName = "CrossoverBasis", Description = "Determines the initial basis construction strategy for crossover. Thedefault value (0) chooses an initial basis quickly. A value of 1 cantake much longer, but often produces a more numerically stable startbasis. Note: Barrier only ")]
public bool? CrossoverBasis { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
CutAggPasses
A non-negative value indicates the maximum number of constraintaggregation passes performed during cut generation. Overridesthe Cuts parameter. Changing the value of this parameter rarely produces a significantbenefit. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Constraint aggregation passes performed during cut generation", ShortName = "CutAggPasses", Description = "A non-negative value indicates the maximum number of constraintaggregation passes performed during cut generation. Overridesthe Cuts parameter. Changing the value of this parameter rarely produces a significantbenefit. Note: Only affects mixed integer programming (MIP) models ")]
public int? CutAggPasses { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Cutoff
Indicates that you aren't interested in solutions whose objectivevalues are worse than the specified value. If the objective value forthe optimal solution is better than the specified cutoff, the solverwill return the optimal solution. Otherwise, it will terminate with aCUTOFF status (see theStatus Code section for further details).
Declaration
[Display(Name = "Objective cutoff", ShortName = "Cutoff", Description = "Indicates that you aren't interested in solutions whose objectivevalues are worse than the specified value. If the objective value forthe optimal solution is better than the specified cutoff, the solverwill return the optimal solution. Otherwise, it will terminate with aCUTOFF status (see theStatus Code section for further details). ")]
public double? Cutoff { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
CutPasses
A non-negative value indicates the maximum number of cutting planepasses performed during root cut generation. The default valuechooses the number of cut passes automatically. You should experiment with different values of this parameter if younotice the MIP solver spending significant time on root cut passesthat have little impact on the objective bound. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Root cutting plane pass limit", ShortName = "CutPasses", Description = "A non-negative value indicates the maximum number of cutting planepasses performed during root cut generation. The default valuechooses the number of cut passes automatically. You should experiment with different values of this parameter if younotice the MIP solver spending significant time on root cut passesthat have little impact on the objective bound. Note: Only affects mixed integer programming (MIP) models ")]
public int? CutPasses { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Cuts
Global cut aggressiveness setting. Use value 0 to shut off cuts, 1for moderate cut generation, 2 for aggressive cut generation,and 3 for very aggressive cut generation. This parameter isoverridden by the parameters that control individual cut types(e.g., CliqueCuts). Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Global cut generation control", ShortName = "Cuts", Description = "Global cut aggressiveness setting. Use value 0 to shut off cuts, 1for moderate cut generation, 2 for aggressive cut generation,and 3 for very aggressive cut generation. This parameter isoverridden by the parameters that control individual cut types(e.g., CliqueCuts). Note: Only affects mixed integer programming (MIP) models ")]
public int? Cuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
DisplayInterval
Determines the frequency at which log lines are printed (in seconds).
Declaration
[Display(Name = "Frequency at which log lines are printed", ShortName = "DisplayInterval", Description = "Determines the frequency at which log lines are printed (in seconds). ")]
public int? DisplayInterval { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
DualReductions
Determines whether dual reductions are performed in presolve. Youshould disable these reductions if you receivedan optimization status of INF_OR_UNBD and would like a moredefinitive conclusion.
Declaration
[Display(Name = "Disables dual reductions in presolve", ShortName = "DualReductions", Description = "Determines whether dual reductions are performed in presolve. Youshould disable these reductions if you receivedan optimization status of INF_OR_UNBD and would like a moredefinitive conclusion. ")]
public bool? DualReductions { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
FeasibilityTol
All constraints must be satisfied to a tolerance ofFeasibilityTol. Tightening this tolerance can produce smallerconstraint violations, but for numerically challenging models it cansometimes lead to much larger iteration counts.
Declaration
[Display(Name = "Primal feasibility tolerance", ShortName = "FeasibilityTol", Description = "All constraints must be satisfied to a tolerance ofFeasibilityTol. Tightening this tolerance can produce smallerconstraint violations, but for numerically challenging models it cansometimes lead to much larger iteration counts. ")]
public double? FeasibilityTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FeasRelaxBigM
When relaxing a constraint in a feasibility relaxation, it issometimes necessary to introduce a big-M value. This parameterdetermines the default magnitude of that value.
Declaration
[Display(Name = "Big-M value for feasibility relaxations", ShortName = "FeasRelaxBigM", Description = "When relaxing a constraint in a feasibility relaxation, it issometimes necessary to introduce a big-M value. This parameterdetermines the default magnitude of that value. ")]
public double? FeasRelaxBigM { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FlowCoverCuts
Controls flow cover cut generation. Use 0 to disable these cuts,1 for moderate cut generation, or 2 for aggressivecut generation. The default -1 value chooses automatically.Overrides the Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Flow cover cut generation", ShortName = "FlowCoverCuts", Description = "Controls flow cover cut generation. Use 0 to disable these cuts,1 for moderate cut generation, or 2 for aggressivecut generation. The default -1 value chooses automatically.Overrides the Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? FlowCoverCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
FlowPathCuts
Controls flow path cut generation. Use 0 to disable these cuts,1 for moderate cut generation, or 2 for aggressivecut generation. The default -1 value chooses automatically.Overrides the Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Flow path cut generation", ShortName = "FlowPathCuts", Description = "Controls flow path cut generation. Use 0 to disable these cuts,1 for moderate cut generation, or 2 for aggressivecut generation. The default -1 value chooses automatically.Overrides the Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? FlowPathCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
GomoryPasses
A non-negative value indicates the maximum number of Gomory cut passesperformed. Overrides the Cutsparameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Root Gomory cut pass limit", ShortName = "GomoryPasses", Description = "A non-negative value indicates the maximum number of Gomory cut passesperformed. Overrides the Cutsparameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? GomoryPasses { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
GUBCoverCuts
Controls GUB cover cut generation. Use 0 to disable these cuts, 1 formoderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "GUB cover cut generation", ShortName = "GUBCoverCuts", Description = "Controls GUB cover cut generation. Use 0 to disable these cuts, 1 formoderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? GUBCoverCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Heuristics
Determines the amount of time spent in MIP heuristics. You can thinkof the value as the desired fraction of total MIP runtime devoted toheuristics (so by default, we aim to spend 5% of runtime onheuristics). Larger values produce more and better feasiblesolutions, at a cost of slower progress in the best bound. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Turn MIP heuristics up or down", ShortName = "Heuristics", Description = "Determines the amount of time spent in MIP heuristics. You can thinkof the value as the desired fraction of total MIP runtime devoted toheuristics (so by default, we aim to spend 5% of runtime onheuristics). Larger values produce more and better feasiblesolutions, at a cost of slower progress in the best bound. Note: Only affects mixed integer programming (MIP) models ")]
public double? Heuristics { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
IISMethod
Chooses the IIS method to use. Method 0 is often faster, while method1 can produce a smaller IIS. The default value of -1 choosesautomatically.
Declaration
[Display(Name = "IIS method", ShortName = "IISMethod", Description = "Chooses the IIS method to use. Method 0 is often faster, while method1 can produce a smaller IIS. The default value of -1 choosesautomatically. ")]
public int? IISMethod { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ImpliedCuts
Controls implied bound cut generation. Use 0 to disable these cuts, 1for moderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Implied bound cut generation", ShortName = "ImpliedCuts", Description = "Controls implied bound cut generation. Use 0 to disable these cuts, 1for moderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? ImpliedCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ImproveStartGap
The MIP solver can change parameter settings in the middle of thesearch in order to adopt a strategy that gives up on moving the bestbound and instead devotes all of its effort towards finding betterfeasible solutions. This parameter allows you to specify anoptimality gap at which the MIP solver switches to a solutionimprovement strategy. For example, setting this parameter to 0.1 willcause the MIP solver to switch strategies once the relative optimalitygap is smaller than 0.1. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Trigger solution improvement", ShortName = "ImproveStartGap", Description = "The MIP solver can change parameter settings in the middle of thesearch in order to adopt a strategy that gives up on moving the bestbound and instead devotes all of its effort towards finding betterfeasible solutions. This parameter allows you to specify anoptimality gap at which the MIP solver switches to a solutionimprovement strategy. For example, setting this parameter to 0.1 willcause the MIP solver to switch strategies once the relative optimalitygap is smaller than 0.1. Note: Only affects mixed integer programming (MIP) models ")]
public double? ImproveStartGap { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
ImproveStartTime
The MIP solver can change parameter settings in the middle of thesearch in order to adopt a strategy that gives up on moving the bestbound and instead devotes all of its effort towards finding betterfeasible solutions. This parameter allows you to specify the timewhen the MIP solver switches to a solution improvement strategy. Forexample, setting this parameter to 10 will cause the MIP solver toswitch strategies 10 seconds after starting the optimization. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Trigger solution improvement", ShortName = "ImproveStartTime", Description = "The MIP solver can change parameter settings in the middle of thesearch in order to adopt a strategy that gives up on moving the bestbound and instead devotes all of its effort towards finding betterfeasible solutions. This parameter allows you to specify the timewhen the MIP solver switches to a solution improvement strategy. Forexample, setting this parameter to 10 will cause the MIP solver toswitch strategies 10 seconds after starting the optimization. Note: Only affects mixed integer programming (MIP) models ")]
public double? ImproveStartTime { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
InfUnbdInfo
Determines whether simplex (and crossover) will compute additionalinformation when a model is determined to be infeasible or unbounded.Set this parameter if you want to query the unbounded ray forunbounded models (through theUnbdRayattribute), or theinfeasibility proof for infeasible models (through theFarkasDualandFarkasProofattributes). Note: LP only
Declaration
[Display(Name = "Generate additional info for infeasible/unbounded models", ShortName = "InfUnbdInfo", Description = "Determines whether simplex (and crossover) will compute additionalinformation when a model is determined to be infeasible or unbounded.Set this parameter if you want to query the unbounded ray forunbounded models (through theUnbdRayattribute), or theinfeasibility proof for infeasible models (through theFarkasDualandFarkasProofattributes). Note: LP only ")]
public bool? InfUnbdInfo { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
IntFeasTol
An integrality restriction on a variable is considered satisfied whenthe variable's value is less than IntFeasTol from the nearestinteger value. Tightening this tolerance can produce smallerintegrality violations, but very tight tolerances may significantlyincrease runtime. Loosening this tolerance rarely reduces runtime. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Integer feasibility tolerance", ShortName = "IntFeasTol", Description = "An integrality restriction on a variable is considered satisfied whenthe variable's value is less than IntFeasTol from the nearestinteger value. Tightening this tolerance can produce smallerintegrality violations, but very tight tolerances may significantlyincrease runtime. Loosening this tolerance rarely reduces runtime. Note: Only affects mixed integer programming (MIP) models ")]
public double? IntFeasTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
IsvName
In case you are using a Gurobi application license, use this property to set your Independent Software Vendor name
Declaration
public string IsvName { get; set; }
Property Value
Type | Description |
---|---|
System.String |
IterationLimit
Limits the number of simplex iterations performed. The limit appliesto MIP, barrier crossover, and simplex. Optimization returns with anITERATION_LIMIT status if the limit is exceeded (see theStatus Code section for furtherdetails).
Declaration
[Display(Name = "Simplex iteration limit", ShortName = "IterationLimit", Description = "Limits the number of simplex iterations performed. The limit appliesto MIP, barrier crossover, and simplex. Optimization returns with anITERATION_LIMIT status if the limit is exceeded (see theStatus Code section for furtherdetails). ")]
public double? IterationLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
LogToConsole
Enables or disables console logging. UseOutputFlagto shut off all logging.
Declaration
[Display(Name = "Console logging", ShortName = "LogToConsole", Description = "Enables or disables console logging. UseOutputFlagto shut off all logging. ")]
public bool? LogToConsole { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
MarkowitzTol
The Markowitz tolerance is used to limit numerical error in thesimplex algorithm. Specifically, larger values reduce the errorintroduced in the simplex basis factorization. A larger value mayavoid numerical problems in rare situations, but it will also harmperformance.
Declaration
[Display(Name = "Threshold pivoting tolerance", ShortName = "MarkowitzTol", Description = "The Markowitz tolerance is used to limit numerical error in thesimplex algorithm. Specifically, larger values reduce the errorintroduced in the simplex basis factorization. A larger value mayavoid numerical problems in rare situations, but it will also harmperformance. ")]
public double? MarkowitzTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
Method
Algorithm used to solve continuous models or the root node of a MIPmodel. Options are: -1=automatic, 0=primal simplex, 1=dual simplex,2=barrier, 3=concurrent, 4=deterministic concurrent. In the current release, the default Automatic (-1) setting willtypically choose non-deterministic concurrent (Method=3) for an LP,barrier (Method=2) for a QP or QCP, and dual (Method=1) for the MIProot node. Only the simplex and barrier algorithms are available forcontinuous QP models. Only primal and dual simplex are available forsolving the root of an MIQP model. Only barrier is available forcontinuous QCP models. Concurrent optimizers run multiple solvers on multiple threadssimultaneously, and choose the one that finishes first. Deterministicconcurrent (Method=4) gives the exact same result each time, whileMethod=3 is often faster but can produce different optimal bases whenrun multiple times. The default setting is rarely significantly slower than the bestpossible setting, so you generally won't see a big gain from changingthis parameter. There are classes of models where one particularalgorithm is consistently fastest, though, so you may want toexperiment with different options when confronted with a particularlydifficult model. Note that if memory is tight on an LP model, you should consider usingthe dual simplex method (Method=1). The concurrent optimizer,which is typically chosen when using the default setting, consumes alot more memory than dual simplex alone.
Declaration
[Display(Name = "Algorithm used to solve continuous models", ShortName = "Method", Description = "Algorithm used to solve continuous models or the root node of a MIPmodel. Options are: -1=automatic, 0=primal simplex, 1=dual simplex,2=barrier, 3=concurrent, 4=deterministic concurrent. In the current release, the default Automatic (-1) setting willtypically choose non-deterministic concurrent (Method=3) for an LP,barrier (Method=2) for a QP or QCP, and dual (Method=1) for the MIProot node. Only the simplex and barrier algorithms are available forcontinuous QP models. Only primal and dual simplex are available forsolving the root of an MIQP model. Only barrier is available forcontinuous QCP models. Concurrent optimizers run multiple solvers on multiple threadssimultaneously, and choose the one that finishes first. Deterministicconcurrent (Method=4) gives the exact same result each time, whileMethod=3 is often faster but can produce different optimal bases whenrun multiple times. The default setting is rarely significantly slower than the bestpossible setting, so you generally won't see a big gain from changingthis parameter. There are classes of models where one particularalgorithm is consistently fastest, though, so you may want toexperiment with different options when confronted with a particularlydifficult model. Note that if memory is tight on an LP model, you should consider usingthe dual simplex method (Method=1). The concurrent optimizer,which is typically chosen when using the default setting, consumes alot more memory than dual simplex alone. ")]
public int? Method { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MinRelNodes
Number of nodes to explore in the minimum relaxation heuristic. Notethat this heuristic is only applied at the end of the MIP root, andonly when no other root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor qualitysolutions. You should generally only use it if other means, includingexploration of the tree with default settings, fail to produce afeasible solution. The default value automatically chooses whether to apply theheuristic. It will only rarely choose to do so. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Minimum relaxation heuristic control", ShortName = "MinRelNodes", Description = "Number of nodes to explore in the minimum relaxation heuristic. Notethat this heuristic is only applied at the end of the MIP root, andonly when no other root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor qualitysolutions. You should generally only use it if other means, includingexploration of the tree with default settings, fail to produce afeasible solution. The default value automatically chooses whether to apply theheuristic. It will only rarely choose to do so. Note: Only affects mixed integer programming (MIP) models ")]
public int? MinRelNodes { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MIPFocus
The MIPFocus parameter allows you to modify your high-levelsolution strategy, depending on your goals. By default, the GurobiMIP solver strikes a balance between finding new feasible solutionsand proving that the current solution is optimal. If you are moreinterested in finding feasible solutions quickly, you can selectMIPFocus=1. If you believe the solver is having no troublefinding good quality solutions, and wish to focus more attention onproving optimality, select MIPFocus=2. If the best objectivebound is moving very slowly (or not at all), you may want to tryMIPFocus=3 to focus on the bound. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Set the focus of the MIP solver", ShortName = "MIPFocus", Description = "The MIPFocus parameter allows you to modify your high-levelsolution strategy, depending on your goals. By default, the GurobiMIP solver strikes a balance between finding new feasible solutionsand proving that the current solution is optimal. If you are moreinterested in finding feasible solutions quickly, you can selectMIPFocus=1. If you believe the solver is having no troublefinding good quality solutions, and wish to focus more attention onproving optimality, select MIPFocus=2. If the best objectivebound is moving very slowly (or not at all), you may want to tryMIPFocus=3 to focus on the bound. Note: Only affects mixed integer programming (MIP) models ")]
public int? MIPFocus { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MIPSepCuts
Controls MIP separation cut generation. Use 0 to disable these cuts, 1for moderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "MIP separation cut generation", ShortName = "MIPSepCuts", Description = "Controls MIP separation cut generation. Use 0 to disable these cuts, 1for moderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? MIPSepCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MIQCPMethod
Controls the method used to solve MIQCP models. Value 1 uses alinearized, outer-approximation approach, while value 0 solvescontinuous QCP relaxations at each node. The default setting (-1)chooses automatically. Note: MIQCP only
Declaration
[Display(Name = "Method used to solve MIQCP models", ShortName = "MIQCPMethod", Description = "Controls the method used to solve MIQCP models. Value 1 uses alinearized, outer-approximation approach, while value 0 solvescontinuous QCP relaxations at each node. The default setting (-1)chooses automatically. Note: MIQCP only ")]
public int? MIQCPMethod { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MIRCuts
Controls Mixed Integer Rounding (MIR) cut generation. Use 0 to disablethese cuts, 1 for moderate cut generation, or 2 for aggressive cutgeneration. The default -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "MIR cut generation", ShortName = "MIRCuts", Description = "Controls Mixed Integer Rounding (MIR) cut generation. Use 0 to disablethese cuts, 1 for moderate cut generation, or 2 for aggressive cutgeneration. The default -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? MIRCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ModKCuts
Controls mod-k cut generation. Use 0 to disablethese cuts, 1 for moderate cut generation, or 2 for aggressive cutgeneration. The default -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Mod-k cut generation", ShortName = "ModKCuts", Description = "Controls mod-k cut generation. Use 0 to disablethese cuts, 1 for moderate cut generation, or 2 for aggressive cutgeneration. The default -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? ModKCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NetworkCuts
Controls network cut generation. Use 0 to disablethese cuts, 1 for moderate cut generation, or 2 for aggressive cutgeneration. The default -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Network cut generation", ShortName = "NetworkCuts", Description = "Controls network cut generation. Use 0 to disablethese cuts, 1 for moderate cut generation, or 2 for aggressive cutgeneration. The default -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? NetworkCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NodefileDir
Determines the directory into which nodes are written when node memoryusage exceeds the specifiedNodefileStartvalue. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Directory for MIP node files", ShortName = "NodefileDir", Description = "Determines the directory into which nodes are written when node memoryusage exceeds the specifiedNodefileStartvalue. Note: Only affects mixed integer programming (MIP) models ")]
public string NodefileDir { get; set; }
Property Value
Type | Description |
---|---|
System.String |
NodefileStart
If you find that the Gurobi optimizer exhausts memory when solving aMIP, you should modify the NodefileStart parameter. When theamount of memory used to store nodes (measured in GBytes) exceeds thespecified parameter value, nodes are written to disk. We recommend asetting of 0.5, but you may wish to choose a different value,depending on the memory available in your machine. By default, nodesare written to the current working directory. TheNodefileDirparameter can be used to choose a different location. If you still exhaust memory after setting the NodefileStartparameter to a small value, you should try limiting the thread count.Each thread in parallel MIP requires a copy of the model, as well asseveral other large data structures. Reducing theThreadsparameter can sometimes significantly reduce memory usage. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Memory threshold for writing MIP tree nodes to disk", ShortName = "NodefileStart", Description = "If you find that the Gurobi optimizer exhausts memory when solving aMIP, you should modify the NodefileStart parameter. When theamount of memory used to store nodes (measured in GBytes) exceeds thespecified parameter value, nodes are written to disk. We recommend asetting of 0.5, but you may wish to choose a different value,depending on the memory available in your machine. By default, nodesare written to the current working directory. TheNodefileDirparameter can be used to choose a different location. If you still exhaust memory after setting the NodefileStartparameter to a small value, you should try limiting the thread count.Each thread in parallel MIP requires a copy of the model, as well asseveral other large data structures. Reducing theThreadsparameter can sometimes significantly reduce memory usage. Note: Only affects mixed integer programming (MIP) models ")]
public double? NodefileStart { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
NodeLimit
Limits the number of MIP nodes explored. Optimization returns with anNODE_LIMIT status if the limit is exceeded (see theStatus Code section for furtherdetails). Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "MIP node limit", ShortName = "NodeLimit", Description = "Limits the number of MIP nodes explored. Optimization returns with anNODE_LIMIT status if the limit is exceeded (see theStatus Code section for furtherdetails). Note: Only affects mixed integer programming (MIP) models ")]
public double? NodeLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
NodeMethod
Algorithm used for MIP node relaxations (0=primal simplex, 1=dualsimplex, 2=barrier). Note that barrier is not an option for MIQP noderelaxations. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Method used to solve MIP node relaxations", ShortName = "NodeMethod", Description = "Algorithm used for MIP node relaxations (0=primal simplex, 1=dualsimplex, 2=barrier). Note that barrier is not an option for MIQP noderelaxations. Note: Only affects mixed integer programming (MIP) models ")]
public int? NodeMethod { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NormAdjust
Chooses from among multiple pricing norm variants. The details of howthis parameter affects the simplex pricing algorithm are subtle anddifficult to describe, so we've simply labeled the options 0 through3. The default value of -1 chooses automatically. Changing the value of this parameter rarely produces a significantbenefit.
Declaration
[Display(Name = "Simplex pricing norm", ShortName = "NormAdjust", Description = "Chooses from among multiple pricing norm variants. The details of howthis parameter affects the simplex pricing algorithm are subtle anddifficult to describe, so we've simply labeled the options 0 through3. The default value of -1 chooses automatically. Changing the value of this parameter rarely produces a significantbenefit. ")]
public int? NormAdjust { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ObjScale
Divides the model objective by the specified value to avoid numericalerrors that may result from very large objective coefficients. Thedefault value of 0 decides on the scaling automatically. A value lessthan zero uses the maximum coefficient to the specified power as thescaling (so ObjScale=-0.5 would scale by the square root ofthe largest objective coefficient). Objective scaling can be useful when the objective contains extremelylarge values, but it can also lead to large dual violations, so itshould be used sparingly.
Declaration
[Display(Name = "Objective scaling", ShortName = "ObjScale", Description = "Divides the model objective by the specified value to avoid numericalerrors that may result from very large objective coefficients. Thedefault value of 0 decides on the scaling automatically. A value lessthan zero uses the maximum coefficient to the specified power as thescaling (so ObjScale=-0.5 would scale by the square root ofthe largest objective coefficient). Objective scaling can be useful when the objective contains extremelylarge values, but it can also lead to large dual violations, so itshould be used sparingly. ")]
public double? ObjScale { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
OptimalityTol
Reduced costs must all be smaller than OptimalityTol in theimproving direction in order for a model to be declared optimal.
Declaration
[Display(Name = "Dual feasibility tolerance", ShortName = "OptimalityTol", Description = "Reduced costs must all be smaller than OptimalityTol in theimproving direction in order for a model to be declared optimal. ")]
public double? OptimalityTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
OutputFlag
Enables or disables solver output. UseLogFile andLogToConsolefor finer-grain control. Setting OutputFlag to 0is equivalent to settingLogFileto ""andLogToConsoleto 0.
Declaration
[Display(Name = "Solver output control", ShortName = "OutputFlag", Description = "Enables or disables solver output. UseLogFile andLogToConsolefor finer-grain control. Setting OutputFlag to 0is equivalent to settingLogFileto \"\"andLogToConsoleto 0. ")]
public bool? OutputFlag { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
PerturbValue
Magnitude of the simplex perturbation. Note that perturbation is onlyapplied when progress has stalled, so the parameter will often have noeffect.
Declaration
[Display(Name = "Simplex perturbation magnitude", ShortName = "PerturbValue", Description = "Magnitude of the simplex perturbation. Note that perturbation is onlyapplied when progress has stalled, so the parameter will often have noeffect. ")]
public double? PerturbValue { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
PreCrush
Allows presolve to translate constraints on the original model toequivalent constraints on the presolved model. You must turn thisparameter on when you are using callbacks to add your own cuts.
Declaration
[Display(Name = "Allows presolve to translate constraints on the original model to equivalent constraints on the presolved model", ShortName = "PreCrush", Description = "Allows presolve to translate constraints on the original model toequivalent constraints on the presolved model. You must turn thisparameter on when you are using callbacks to add your own cuts. ")]
public bool? PreCrush { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
PreDepRow
Controls the presolve dependent row reduction, which eliminateslinearly dependent constraints from the constraint matrix. Thedefault setting (-1) applies the reduction to continuous models butnot to MIP models. Setting 0 turns the reduction off for all models.Setting 1 turns it on for all models.
Declaration
[Display(Name = "Presolve dependent row reduction", ShortName = "PreDepRow", Description = "Controls the presolve dependent row reduction, which eliminateslinearly dependent constraints from the constraint matrix. Thedefault setting (-1) applies the reduction to continuous models butnot to MIP models. Setting 0 turns the reduction off for all models.Setting 1 turns it on for all models. ")]
public int? PreDepRow { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreDual
Controls whether presolve forms the dual of a continuousmodel. Depending on the structure of the model, solving the dual canreduce overall solution time. The default setting uses a heuristic todecide. Setting 0 forbids presolve from forming the dual, whilesetting 1 forces it to take the dual. Setting 2 employs a moreexpensive heuristic that forms both the presolved primal and dualmodels (on two threads), and heuristically chooses one of them. Note: LP only
Declaration
[Display(Name = "Presolve dualization", ShortName = "PreDual", Description = "Controls whether presolve forms the dual of a continuousmodel. Depending on the structure of the model, solving the dual canreduce overall solution time. The default setting uses a heuristic todecide. Setting 0 forbids presolve from forming the dual, whilesetting 1 forces it to take the dual. Setting 2 employs a moreexpensive heuristic that forms both the presolved primal and dualmodels (on two threads), and heuristically chooses one of them. Note: LP only ")]
public int? PreDual { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PrePasses
Limits the number of passes performed by presolve. The defaultsetting (-1) chooses the number of passes automatically. Youshould experiment with this parameter when you find thatpresolve is consuming a large fraction of total solve time.
Declaration
[Display(Name = "Presolve pass limit", ShortName = "PrePasses", Description = "Limits the number of passes performed by presolve. The defaultsetting (-1) chooses the number of passes automatically. Youshould experiment with this parameter when you find thatpresolve is consuming a large fraction of total solve time. ")]
public int? PrePasses { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreQLinearize
Controls presolve Q matrix linearization. Option 1 attempts tolinearize quadratic constraints or a quadratic objective, potentiallytransforming an MIQP or MIQCP into an MILP. Option 0 shuts off thetransformation. The default setting (-1) choose automatically. Theautomatic setting works well, but there are cases where forcing Qlinearization can be beneficial.
Declaration
[Display(Name = "Presolve Q matrix linearization", ShortName = "PreQLinearize", Description = "Controls presolve Q matrix linearization. Option 1 attempts tolinearize quadratic constraints or a quadratic objective, potentiallytransforming an MIQP or MIQCP into an MILP. Option 0 shuts off thetransformation. The default setting (-1) choose automatically. Theautomatic setting works well, but there are cases where forcing Qlinearization can be beneficial. ")]
public int? PreQLinearize { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Presolve
Controls the presolve level. A value of -1 corresponds to an automaticsetting. Other options are off (0), conservative (1), or aggressive(2). More aggressive application of presolve takes more time,but can sometimes lead to a significantly tighter model.
Declaration
[Display(Name = "Presolve level", ShortName = "Presolve", Description = "Controls the presolve level. A value of -1 corresponds to an automaticsetting. Other options are off (0), conservative (1), or aggressive(2). More aggressive application of presolve takes more time,but can sometimes lead to a significantly tighter model. ")]
public int? Presolve { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreSparsify
Controls the presolve sparsify reduction. This reduction can sometimessignificantly reduce the number of nonzero values in the presolvedmodel. Value 0 shuts off the reduction, while value 1 forces it on.The default value of -1 chooses automatically. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Presolve sparsify reduction", ShortName = "PreSparsify", Description = "Controls the presolve sparsify reduction. This reduction can sometimessignificantly reduce the number of nonzero values in the presolvedmodel. Value 0 shuts off the reduction, while value 1 forces it on.The default value of -1 chooses automatically. Note: Only affects mixed integer programming (MIP) models ")]
public int? PreSparsify { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PSDTol
Sets a limit on the amount of diagonal perturbation that the optimizeris allowed to perform on a Q matrix in order to correct minor PSDviolations. If a larger perturbation is required, the optimizer willterminate with a GRB_ERROR_Q_NOT_PSD error. Note: QP/QCP/MIQP/MIQCP only
Declaration
[Display(Name = "Positive semi-definite tolerance", ShortName = "PSDTol", Description = "Sets a limit on the amount of diagonal perturbation that the optimizeris allowed to perform on a Q matrix in order to correct minor PSDviolations. If a larger perturbation is required, the optimizer willterminate with a GRB_ERROR_Q_NOT_PSD error. Note: QP/QCP/MIQP/MIQCP only ")]
public double? PSDTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
PumpPasses
Number of passes of the feasibility pump heuristic. Note that thisheuristic is only applied at the end of the MIP root, and only when noother root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor qualitysolutions. You should generally only use it if other means, includingexploration of the tree with default settings, fail to produce afeasible solution. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Feasibility pump heuristic control", ShortName = "PumpPasses", Description = "Number of passes of the feasibility pump heuristic. Note that thisheuristic is only applied at the end of the MIP root, and only when noother root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor qualitysolutions. You should generally only use it if other means, includingexploration of the tree with default settings, fail to produce afeasible solution. Note: Only affects mixed integer programming (MIP) models ")]
public int? PumpPasses { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
QCPDual
Determines whether dual variable values are computed for QCP models.Computing them can add significant time to the optimization, so youshould only set this parameter to 1 if you need them.
Declaration
[Display(Name = "Compute dual variables for QCP models", ShortName = "QCPDual", Description = "Determines whether dual variable values are computed for QCP models.Computing them can add significant time to the optimization, so youshould only set this parameter to 1 if you need them. ")]
public bool? QCPDual { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
Quad
Enables or disables quad precision computation in simplex. The -1default setting allows the algorithm to decide. Quad precision cansometimes help solve numerically challenging models, but it can alsosignificantly increase runtime.
Declaration
[Display(Name = "Quad precision computation in simplex", ShortName = "Quad", Description = "Enables or disables quad precision computation in simplex. The -1default setting allows the algorithm to decide. Quad precision cansometimes help solve numerically challenging models, but it can alsosignificantly increase runtime. ")]
public int? Quad { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ResultFile
Specifies the name of the result file to be written upon completion ofoptimization. The type of the result file is determined by the filesuffix. Possible suffixes are .sol (the solution vector),.bas (the simplex basis), or .mst (the solution vector onthe integer variables). More information on the file formats can befound in the File Format section.
Declaration
[Display(Name = "Result file written upon completion of optimization", ShortName = "ResultFile", Description = "Specifies the name of the result file to be written upon completion ofoptimization. The type of the result file is determined by the filesuffix. Possible suffixes are .sol (the solution vector),.bas (the simplex basis), or .mst (the solution vector onthe integer variables). More information on the file formats can befound in the File Format section. ")]
public string ResultFile { get; set; }
Property Value
Type | Description |
---|---|
System.String |
RINS
Frequency of the RINS heuristic. Default value (-1) choosesautomatically. A value of 0 shuts off RINS. A positive valuen applies RINS at every n-th node of the MIP searchtree. Increasing the frequency of the RINS heuristic shifts the focusof the MIP search away from proving optimality, and towardsfinding good feasible solutions. We recommend that youtryMIPFocus,ImproveStartGap, orImproveStartTimebefore experimenting with this parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "RINS heuristic", ShortName = "RINS", Description = "Frequency of the RINS heuristic. Default value (-1) choosesautomatically. A value of 0 shuts off RINS. A positive valuen applies RINS at every n-th node of the MIP searchtree. Increasing the frequency of the RINS heuristic shifts the focusof the MIP search away from proving optimality, and towardsfinding good feasible solutions. We recommend that youtryMIPFocus,ImproveStartGap, orImproveStartTimebefore experimenting with this parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? RINS { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ScaleFlag
Enables or disables model scaling. Scaling usually improves thenumerical properties of the model, which typically leads to reducedsolution times, but it may sometimes lead to larger constraintviolations in the original, unscaled model.
Declaration
[Display(Name = "Model scaling", ShortName = "ScaleFlag", Description = "Enables or disables model scaling. Scaling usually improves thenumerical properties of the model, which typically leads to reducedsolution times, but it may sometimes lead to larger constraintviolations in the original, unscaled model. ")]
public bool? ScaleFlag { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
Sifting
Enables or disables sifting within dual simplex. Sifting can beuseful for LP models where the number of variables is many timeslarger than the number of constraints (we typically only seesignificant benefits when the ratio is 100 or more). Options areAutomatic (-1), Off (0), Moderate (1), and Aggressive (2). With aModerate setting, sifting will be applied to LP models and to the rootnode for MIP models. With an Aggressive setting, sifting will beapplied any time dual simplex is used, including at the nodes of aMIP. Note that this parameter has no effect if you aren't using dualsimplex. Note also that Gurobi will ignore this parameter in caseswhere sifting is obviously a worse choice than dual simplex.
Declaration
[Display(Name = "Sifting within dual simplex", ShortName = "Sifting", Description = "Enables or disables sifting within dual simplex. Sifting can beuseful for LP models where the number of variables is many timeslarger than the number of constraints (we typically only seesignificant benefits when the ratio is 100 or more). Options areAutomatic (-1), Off (0), Moderate (1), and Aggressive (2). With aModerate setting, sifting will be applied to LP models and to the rootnode for MIP models. With an Aggressive setting, sifting will beapplied any time dual simplex is used, including at the nodes of aMIP. Note that this parameter has no effect if you aren't using dualsimplex. Note also that Gurobi will ignore this parameter in caseswhere sifting is obviously a worse choice than dual simplex. ")]
public int? Sifting { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SiftMethod
LP method used to solve sifting sub-problems. Options are Automatic(-1), Primal Simplex (0), Dual Simplex (1), and Barrier (2). Notethat this parameter only has an effect when you are using dual simplexand sifting has been selected (either automatically by dual simplex,or through the Sifting parameter). Changing the value of this parameter rarely produces a significantbenefit.
Declaration
[Display(Name = "LP method used to solve sifting sub-problems", ShortName = "SiftMethod", Description = "LP method used to solve sifting sub-problems. Options are Automatic(-1), Primal Simplex (0), Dual Simplex (1), and Barrier (2). Notethat this parameter only has an effect when you are using dual simplexand sifting has been selected (either automatically by dual simplex,or through the Sifting parameter). Changing the value of this parameter rarely produces a significantbenefit. ")]
public int? SiftMethod { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SimplexPricing
Determines the simplex variable pricing strategy. Available optionsare Automatic (-1), Partial Pricing (0), Steepest Edge (1), Devex (2),and Quick-Start Steepest Edge (3). Changing the value of this parameter rarely produces a significantbenefit.
Declaration
[Display(Name = "Simplex variable pricing strategy", ShortName = "SimplexPricing", Description = "Determines the simplex variable pricing strategy. Available optionsare Automatic (-1), Partial Pricing (0), Steepest Edge (1), Devex (2),and Quick-Start Steepest Edge (3). Changing the value of this parameter rarely produces a significantbenefit. ")]
public int? SimplexPricing { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SolutionLimit
Limits the number of feasible MIP solutions found. Optimizationreturns with a SOLUTION_LIMIT status once the limit has beenreached (see the Status Code sectionfor further details). Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "MIP feasible solution limit", ShortName = "SolutionLimit", Description = "Limits the number of feasible MIP solutions found. Optimizationreturns with a SOLUTION_LIMIT status once the limit has beenreached (see the Status Code sectionfor further details). Note: Only affects mixed integer programming (MIP) models ")]
public int? SolutionLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SolutionNumber
When querying attributeXn to retrieve an alternate MIPsolution, this parameter determines which alternate solution isretrieved. The value of this parameter should be less than the valueof the SolCountattribute. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Sub-optimal MIP solution retrieval", ShortName = "SolutionNumber", Description = "When querying attributeXn to retrieve an alternate MIPsolution, this parameter determines which alternate solution isretrieved. The value of this parameter should be less than the valueof the SolCountattribute. Note: Only affects mixed integer programming (MIP) models ")]
public int? SolutionNumber { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SubMIPCuts
Controls sub-MIP cut generation. Use 0 to disablethese cuts, 1 for moderate cut generation, or 2 for aggressive cutgeneration. The default -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Sub-MIP cut generation", ShortName = "SubMIPCuts", Description = "Controls sub-MIP cut generation. Use 0 to disablethese cuts, 1 for moderate cut generation, or 2 for aggressive cutgeneration. The default -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? SubMIPCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SubMIPNodes
Limits the number of nodes explored by the RINS heuristic. Exploringmore nodes can produce better solutions, but it generally takeslonger. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Nodes explored by sub-MIP heuristics", ShortName = "SubMIPNodes", Description = "Limits the number of nodes explored by the RINS heuristic. Exploringmore nodes can produce better solutions, but it generally takeslonger. Note: Only affects mixed integer programming (MIP) models ")]
public int? SubMIPNodes { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Symmetry
Controls MIP symmetry detection. A value of -1 corresponds to anautomatic setting. Other options are off (0), conservative (1), oraggressive (2). Changing the value of this parameter rarely produces a significantbenefit. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "MIP symmetry detection", ShortName = "Symmetry", Description = "Controls MIP symmetry detection. A value of -1 corresponds to anautomatic setting. Other options are off (0), conservative (1), oraggressive (2). Changing the value of this parameter rarely produces a significantbenefit. Note: Only affects mixed integer programming (MIP) models ")]
public int? Symmetry { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Threads
Controls the number of threads to apply to parallel barrier orparallel MIP. The default value of 0 is an automatic setting.It will generally use all of the cores in the machine, butit may choose to use fewer. While you will generally get the best performance by using allavailable cores in your machine, there are a few exceptions. One isof course when you are sharing a machine with other jobs. In thiscase, you should select a thread count that doesn't oversubscribe themachine. We have also found that certain classes of MIP models benefit fromreducing the thread count, often all the way down to one thread.Starting multiple threads introduces contention for machine resources.For classes of models where the first solution found by the MIP solveris almost always optimal, and that solution isn't found at the root,it is often better to allow a single thread to explore the search treeuncontended. Another situation where reducing the thread count can be helpful iswhen memory is tight. Each thread can consume a significant amount ofmemory.
Declaration
[Display(Name = "Number of parallel threads to use", ShortName = "Threads", Description = "Controls the number of threads to apply to parallel barrier orparallel MIP. The default value of 0 is an automatic setting.It will generally use all of the cores in the machine, butit may choose to use fewer. While you will generally get the best performance by using allavailable cores in your machine, there are a few exceptions. One isof course when you are sharing a machine with other jobs. In thiscase, you should select a thread count that doesn't oversubscribe themachine. We have also found that certain classes of MIP models benefit fromreducing the thread count, often all the way down to one thread.Starting multiple threads introduces contention for machine resources.For classes of models where the first solution found by the MIP solveris almost always optimal, and that solution isn't found at the root,it is often better to allow a single thread to explore the search treeuncontended. Another situation where reducing the thread count can be helpful iswhen memory is tight. Each thread can consume a significant amount ofmemory. ")]
public int? Threads { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
VarBranch
Controls the branch variable selection strategy. The default -1setting makes an automatic choice, depending on problemcharacteristics. Available alternatives are Pseudo Reduced CostBranching (0), Pseudo Shadow Price Branching (1), MaximumInfeasibility Branching (2), and Strong Branching (3). Changing the value of this parameter rarely produces a significantbenefit. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Branch variable selection strategy", ShortName = "VarBranch", Description = "Controls the branch variable selection strategy. The default -1setting makes an automatic choice, depending on problemcharacteristics. Available alternatives are Pseudo Reduced CostBranching (0), Pseudo Shadow Price Branching (1), MaximumInfeasibility Branching (2), and Strong Branching (3). Changing the value of this parameter rarely produces a significantbenefit. Note: Only affects mixed integer programming (MIP) models ")]
public int? VarBranch { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ZeroHalfCuts
Controls zero-half cut generation. Use 0 to disable these cuts, 1 formoderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Zero-half cut generation", ShortName = "ZeroHalfCuts", Description = "Controls zero-half cut generation. Use 0 to disable these cuts, 1 formoderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overridesthe Cuts parameter. Note: Only affects mixed integer programming (MIP) models ")]
public int? ZeroHalfCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ZeroObjNodes
Number of nodes to explore in the zero objective heuristic. Note thatthis heuristic is only applied at the end of the MIP root, and onlywhen no other root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor qualitysolutions. You should generally only use it if other means, includingexploration of the tree with default settings, fail to produce afeasible solution. Note: Only affects mixed integer programming (MIP) models
Declaration
[Display(Name = "Zero objective heuristic control", ShortName = "ZeroObjNodes", Description = "Number of nodes to explore in the zero objective heuristic. Note thatthis heuristic is only applied at the end of the MIP root, and onlywhen no other root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor qualitysolutions. You should generally only use it if other means, includingexploration of the tree with default settings, fail to produce afeasible solution. Note: Only affects mixed integer programming (MIP) models ")]
public int? ZeroObjNodes { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |