Class GurobiSolverConfiguration
Allows to configure parameters for the Gurobi solver.
Inherited Members
Namespace: OPTANO.Modeling.Optimization.Solver.Gurobi810
Assembly: Optimization.Solver.Gurobi810.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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 |
ApplyParameterFileBeforeModelingConfiguration
Gets or sets a value indicating whether the file specified in ParameterFilePath is applied before (true) or after (false) the other settings in GurobiSolverConfiguration.
Declaration
public bool ApplyParameterFileBeforeModelingConfiguration { get; set; }
Property Value
Type | Description |
---|---|
System.Boolean |
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? BarQCPConvTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
BestBdStop
Terminates as soon as the engine determines that the best bound on theobjective value is at least as good as the specified value.Optimization returns with an USER_OBJ_LIMIT status in this case. Note that you should always include a small tolerance in this value.Without this, a bound that satisfies the intended terminationcriterion may not actually lead to termination due to numericalround-off in the bound. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Best objective bound to stop", ShortName = "BestBdStop", Description = "Terminates as soon as the engine determines that the best bound on theobjective value is at least as good as the specified value.Optimization returns with an USER_OBJ_LIMIT status in this case. Note that you should always include a small tolerance in this value.Without this, a bound that satisfies the intended terminationcriterion may not actually lead to termination due to numericalround-off in the bound. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? BestBdStop { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
BestObjStop
Terminate as soon as the engine finds a feasible solution whoseobjective value is at least as good as the specified value.Optimization returns with an USER_OBJ_LIMIT status in this case. Note that you should always include a small tolerance in this value.Without this, a solution that satisfies the intended terminationcriterion may not actually lead to termination due to numericalround-off in the objective. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Best objective value to stop", ShortName = "BestObjStop", Description = "Terminate as soon as the engine finds a feasible solution whoseobjective value is at least as good as the specified value.Optimization returns with an USER_OBJ_LIMIT status in this case. Note that you should always include a small tolerance in this value.Without this, a solution that satisfies the intended terminationcriterion may not actually lead to termination due to numericalround-off in the objective. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? BestObjStop { 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? CliqueCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
CloudAccessID
Set this parameter to the Access ID for your Instant Cloud licensewhen launching a new instance. You can retrieve this string from youraccount on theGurobi Instant Cloud Managerwebsite. You must set this parameter through either a gurobi.lic file(using CLOUDACCESSID=id) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Access ID for Gurobi Instant Cloud", ShortName = "CloudAccessID", Description = "Set this parameter to the Access ID for your Instant Cloud licensewhen launching a new instance. You can retrieve this string from youraccount on theGurobi Instant Cloud Managerwebsite. You must set this parameter through either a gurobi.lic file(using CLOUDACCESSID=id) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CloudAccessID { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CloudPool
Set this parameter to the name of the cloud pool you would like to usefor your new Instant Cloud instance. You can browse your existingcloud pools or create new ones from your account on theGurobi Instant Cloud Managerwebsite. You must set this parameter through either a gurobi.lic file(using CLOUDPOOL=pool) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Cloud pool to use for Gurobi Instant Cloud instance", ShortName = "CloudPool", Description = "Set this parameter to the name of the cloud pool you would like to usefor your new Instant Cloud instance. You can browse your existingcloud pools or create new ones from your account on theGurobi Instant Cloud Managerwebsite. You must set this parameter through either a gurobi.lic file(using CLOUDPOOL=pool) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CloudPool { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CloudSecretKey
Set this parameter to the Secret Key for your Instant Cloud licensewhen launching a new instance. You can retrieve this string from youraccount on theGurobi Instant Cloud Managerwebsite. You must set this parameter through either a gurobi.lic file(using CLOUDSECRETKEY=key) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Secret Key for Gurobi Instant Cloud", ShortName = "CloudSecretKey", Description = "Set this parameter to the Secret Key for your Instant Cloud licensewhen launching a new instance. You can retrieve this string from youraccount on theGurobi Instant Cloud Managerwebsite. You must set this parameter through either a gurobi.lic file(using CLOUDSECRETKEY=key) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CloudSecretKey { get; set; }
Property Value
Type | Description |
---|---|
System.String |
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 |
ComputeServer
Set this parameter to the name of a node in the Remote Servicescluster where you'd like your Compute Server job to run. You canrefer to the server using its name or its IP address. If you areusing a non-default port, the server name should be followed by theport number (e.g., server1:61000). You will also need to set theServerPasswordparameter to supply the client password for the specified cluster. You can provide a comma-separate list of nodes to increase robustness.If the first node in the list doesn't respond, the second will betried, etc. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file(using COMPUTESERVER=server) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Name of a node in the Remote Services cluster.", ShortName = "ComputeServer", Description = "Set this parameter to the name of a node in the Remote Servicescluster where you'd like your Compute Server job to run. You canrefer to the server using its name or its IP address. If you areusing a non-default port, the server name should be followed by theport number (e.g., server1:61000). You will also need to set theServerPasswordparameter to supply the client password for the specified cluster. You can provide a comma-separate list of nodes to increase robustness.If the first node in the list doesn't respond, the second will betried, etc. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file(using COMPUTESERVER=server) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string ComputeServer { get; set; }
Property Value
Type | Description |
---|---|
System.String |
ConcurrentJobs
Enables distributed concurrent optimization, which can be usedto solve LP or MIP models on multiple machines.A value of n causes thesolver to create n independent models, using differentparameter settings for each. Each of these models is sent to adistributed worker for processing. Optimization terminates when the firstsolve completes. Use theWorkerPool parameter toprovide a distributed worker cluster. By default, Gurobi chooses the parameter settings used for eachindependent solve automatically. You can create concurrentenvironments to choose your own parameter settings (refer tothe concurrent optimizationsection for details). The intent of concurrent MIP solving is tointroduce additional diversity into the MIP search. By bringing theresources of multiple machines to bear on a single model, thisapproach can sometimes solve models much faster than a single machine. The distributed concurrent solver produces a slightly differentlog from the standard solver, and provides different callbacks aswell. Please refer to theDistributed Algorithms section of theGurobi Remote Services Reference Manualfor additional details. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Enables distributed concurrent solver", ShortName = "ConcurrentJobs", Description = "Enables distributed concurrent optimization, which can be usedto solve LP or MIP models on multiple machines.A value of n causes thesolver to create n independent models, using differentparameter settings for each. Each of these models is sent to adistributed worker for processing. Optimization terminates when the firstsolve completes. Use theWorkerPool parameter toprovide a distributed worker cluster. By default, Gurobi chooses the parameter settings used for eachindependent solve automatically. You can create concurrentenvironments to choose your own parameter settings (refer tothe concurrent optimizationsection for details). The intent of concurrent MIP solving is tointroduce additional diversity into the MIP search. By bringing theresources of multiple machines to bear on a single model, thisapproach can sometimes solve models much faster than a single machine. The distributed concurrent solver produces a slightly differentlog from the standard solver, and provides different callbacks aswell. Please refer to theDistributed Algorithms section of theGurobi Remote Services Reference Manualfor additional details. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? ConcurrentJobs { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ConcurrentMIP
This parameter enables the concurrent MIP solver. When the parameteris set to value n, the MIP solver performs nindependent MIP solves in parallel, with different parameter settingsfor each. Optimization terminates when the first solve completes. By default, Gurobi chooses the parameter settings used for eachindependent solve automatically. You can create concurrentenvironments to choose your own parameter settings (refer tothe concurrent optimizationsection for details). The intent of concurrent MIP solving is tointroduce additional diversity into the MIP search. This approach cansometimes solve models much faster than applying all available threadsto a single MIP solve, especially on very large parallel machines. The concurrent MIP solver divides available threads evenly among theindependent solves. For example, if you have 6 threads available andyou set ConcurrentMIP to 2, the concurrent MIP solver willallocate 3 threads to each independent solve. Note that the number ofindependent solves launched will not exceed the number of availablethreads. The concurrent MIP solver produces a slightly different log from thestandard MIP solver, and provides different callbacks as well. Pleaserefer to theconcurrent optimizerdiscussion for additional details. Concurrent MIP is not deterministic. If runtimes for differentindependent solves are very similar, and if the model has multipleoptimal solutions, you may get slightly different results frommultiple runs on the same model. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Enables concurrent MIP solver", ShortName = "ConcurrentMIP", Description = "This parameter enables the concurrent MIP solver. When the parameteris set to value n, the MIP solver performs nindependent MIP solves in parallel, with different parameter settingsfor each. Optimization terminates when the first solve completes. By default, Gurobi chooses the parameter settings used for eachindependent solve automatically. You can create concurrentenvironments to choose your own parameter settings (refer tothe concurrent optimizationsection for details). The intent of concurrent MIP solving is tointroduce additional diversity into the MIP search. This approach cansometimes solve models much faster than applying all available threadsto a single MIP solve, especially on very large parallel machines. The concurrent MIP solver divides available threads evenly among theindependent solves. For example, if you have 6 threads available andyou set ConcurrentMIP to 2, the concurrent MIP solver willallocate 3 threads to each independent solve. Note that the number ofindependent solves launched will not exceed the number of availablethreads. The concurrent MIP solver produces a slightly different log from thestandard MIP solver, and provides different callbacks as well. Pleaserefer to theconcurrent optimizerdiscussion for additional details. Concurrent MIP is not deterministic. If runtimes for differentindependent solves are very similar, and if the model has multipleoptimal solutions, you may get slightly different results frommultiple runs on the same model. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? ConcurrentMIP { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 pushCleanup0DisabledDisabledDisabled1DualPrimalPrimal2DualPrimalDual3PrimalDualPrimal4PrimalDualDual 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 pushCleanup0DisabledDisabledDisabled1DualPrimalPrimal2DualPrimalDual3PrimalDualPrimal4PrimalDualDual 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? CrossoverBasis { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
CSIdleTimeout
This parameter allows you to set a limit on how long a Compute Serverjob can sit idle before the server kills the job. The default value will allow a job to sit idle indefinitely in all buta few circumstances. The first exception is the Gurobi Instant Cloud,where the default setting will automatically impose a 30 minute idletime limit. The second exception is any program that uses the GurobiPython interface (including the Gurobi Interactive Shell). Suchprograms will also get a 30 minute idle time limit by default. You must set this parameter through either a gurobi.lic file(using IDLETIMEOUT=n) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Idle time before Compute Server kills a job", ShortName = "CSIdleTimeout", Description = "This parameter allows you to set a limit on how long a Compute Serverjob can sit idle before the server kills the job. The default value will allow a job to sit idle indefinitely in all buta few circumstances. The first exception is the Gurobi Instant Cloud,where the default setting will automatically impose a 30 minute idletime limit. The second exception is any program that uses the GurobiPython interface (including the Gurobi Interactive Shell). Suchprograms will also get a 30 minute idle time limit by default. You must set this parameter through either a gurobi.lic file(using IDLETIMEOUT=n) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? CSIdleTimeout { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
CSPriority
The priority of the Compute Server job. Priorities must be between-100 and 100, with a default value of 0 (by convention). Higherpriority jobs are chosen from the server job queue before lowerpriority jobs. A job with priority 100 runs immediately, bypassingthe job queue and ignoring the job limit on the server. You shouldexercise caution with priority 100 jobs, since they can severelyoverload a server, which can cause jobs to fail, and in extreme casescan cause the server to crash. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file(using PRIORITY=n) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Job priority for Remote Services job", ShortName = "CSPriority", Description = "The priority of the Compute Server job. Priorities must be between-100 and 100, with a default value of 0 (by convention). Higherpriority jobs are chosen from the server job queue before lowerpriority jobs. A job with priority 100 runs immediately, bypassingthe job queue and ignoring the job limit on the server. You shouldexercise caution with priority 100 jobs, since they can severelyoverload a server, which can cause jobs to fail, and in extreme casescan cause the server to crash. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file(using PRIORITY=n) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? CSPriority { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
CSRouter
The router node for a Remote Services cluster. A router can be usedto improve the robustness of a Compute Server deployment. You canrefer to the router using either its name or its IP address. Atypical Remote Services deployment won't use a router, so youtypically won't need to set this parameter. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file(using ROUTER=name) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Router node for Remote Services cluster", ShortName = "CSRouter", Description = "The router node for a Remote Services cluster. A router can be usedto improve the robustness of a Compute Server deployment. You canrefer to the router using either its name or its IP address. Atypical Remote Services deployment won't use a router, so youtypically won't need to set this parameter. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file(using ROUTER=name) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CSRouter { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSTLSInsecure
Indicates whether the Remote Services cluster is using insecure modein the TLS (Transport Layer Security). Set this to 0 unlessyour server administrator tells you otherwise. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Use insecure mode in Transport Layer Security (TLS)", ShortName = "CSTLSInsecure", Description = "Indicates whether the Remote Services cluster is using insecure modein the TLS (Transport Layer Security). Set this to 0 unlessyour server administrator tells you otherwise. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? CSTLSInsecure { 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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). For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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). For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? Cuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
DegenMoves
Limits degenerate simplex moves. These moves are performed to improvethe integrality of the current relaxation solution. By default, thealgorithm chooses the number of moves to perform automatically. Changing the value of this parameter can help performance in caseswhere an excessive amount of time is spent after the initial rootrelaxation has been solved but before the cut generation process orthe root heuristics have started. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Degenerate simplex moves", ShortName = "DegenMoves", Description = "Limits degenerate simplex moves. These moves are performed to improvethe integrality of the current relaxation solution. By default, thealgorithm chooses the number of moves to perform automatically. Changing the value of this parameter can help performance in caseswhere an excessive amount of time is spent after the initial rootrelaxation has been solved but before the cut generation process orthe root heuristics have started. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? DegenMoves { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Disconnected
A MIP model can sometimes be made up of multiple, completelyindependent sub-models. This parameter controls how aggressively wetry to exploit this structure. A value of 0 ignores this structureentirely, while larger values try more aggressive approaches. Thedefault value of -1 chooses automatically. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Disconnected component strategy", ShortName = "Disconnected", Description = "A MIP model can sometimes be made up of multiple, completelyindependent sub-models. This parameter controls how aggressively wetry to exploit this structure. A value of 0 ignores this structureentirely, while larger values try more aggressive approaches. Thedefault value of -1 chooses automatically. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? Disconnected { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
DisplayInterval
Determines the frequency at which log lines are printed (in seconds). For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Frequency at which log lines are printed", ShortName = "DisplayInterval", Description = "Determines the frequency at which log lines are printed (in seconds). For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? DisplayInterval { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
DistributedMIPJobs
Enables distributed MIP. A value of n causes theMIP solver to divide the work of solving a MIP model amongn machines. Use theWorkerPool parameter toprovide a distributed worker cluster. The distributed MIP solver produces a slightly differentlog from the standard MIP solver, and provides different callbacks aswell. Please refer to theDistributed Algorithms section of theGurobi Remote Services Reference Manualfor additional details. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Enables the distributed MIP solver", ShortName = "DistributedMIPJobs", Description = "Enables distributed MIP. A value of n causes theMIP solver to divide the work of solving a MIP model amongn machines. Use theWorkerPool parameter toprovide a distributed worker cluster. The distributed MIP solver produces a slightly differentlog from the standard MIP solver, and provides different callbacks aswell. Please refer to theDistributed Algorithms section of theGurobi Remote Services Reference Manualfor additional details. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? DistributedMIPJobs { 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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? Heuristics { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
IgnoreNames
This parameter affects how Gurobi deals with names. If set to 1,subsequent calls to add variables or constraints to the model willignore the associated names. Names for objectives and the model willalso be ignored. In addition, subsequent calls to modify name atributes willhave no effect. Note that variables or constraints that had namesat the point this parameter was changed to 1 will retain theirnames. If you wish to discard all name information, you should set thisparameter to 1 before adding variables or constraints to the model. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Indicates whether to ignore names provided by users", ShortName = "IgnoreNames", Description = "This parameter affects how Gurobi deals with names. If set to 1,subsequent calls to add variables or constraints to the model willignore the associated names. Names for objectives and the model willalso be ignored. In addition, subsequent calls to modify name atributes willhave no effect. Note that variables or constraints that had namesat the point this parameter was changed to 1 will retain theirnames. If you wish to discard all name information, you should set thisparameter to 1 before adding variables or constraints to the model. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? IgnoreNames { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
IISMethod
Chooses the IIS method to use. Method 0 is often faster, while method1 can produce a smaller IIS. Method 2 ignores the bound constraints.Method 3 will return the IIS for the LP relaxation of a MIP model ifthe relaxation is infeasible, even though the result may not beminimal when integrality constraints are included. Thedefault value of -1 chooses automatically. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. Method 2 ignores the bound constraints.Method 3 will return the IIS for the LP relaxation of a MIP model ifthe relaxation is infeasible, even though the result may not beminimal when integrality constraints are included. Thedefault value of -1 chooses automatically. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? ImproveStartGap { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
ImproveStartNodes
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 thenode count at which the MIP solver switches to a solutionimprovement strategy. For example, setting this parameter to 10 willcause the MIP solver to switch strategies once the node countis larger than 10. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Trigger solution improvement", ShortName = "ImproveStartNodes", 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 thenode count at which the MIP solver switches to a solutionimprovement strategy. For example, setting this parameter to 10 willcause the MIP solver to switch strategies once the node countis larger than 10. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? ImproveStartNodes { 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? ImproveStartTime { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
InfProofCuts
Controls infeasibility proof cut generation. Use 0 to disable these cuts, 1for moderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overrides theCuts parameter. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Infeasibility proof cut generation", ShortName = "InfProofCuts", Description = "Controls infeasibility proof cut generation. Use 0 to disable these cuts, 1for moderate cut generation, or 2 for aggressive cut generation. Thedefault -1 value chooses automatically. Overrides theCuts parameter. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? InfProofCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
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 that if a model is found to be either infeasible or unbounded,and you simply want to know which one it is, you should usethe DualReductions parameterinstead. It performs much less additional computation. Note: LP only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 that if a model is found to be either infeasible or unbounded,and you simply want to know which one it is, you should usethe DualReductions parameterinstead. It performs much less additional computation. Note: LP only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? IntFeasTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
IsvCode
In case you are using a Gurobi application license, use this property to set your Independent Software Vendor Code provided by Gurobi
Declaration
public string IsvCode { get; set; }
Property Value
Type | Description |
---|---|
System.String |
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). For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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). For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? IterationLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
LazyConstraints
Programs that add lazy constraints through a callback must set thisparameter to value 1. The parameter tells the Gurobi algorithms toavoid certain reductions and transformations that are incompatiblewith lazy constraints. Note that if you use lazy constraints by setting theLazy attribute (and not through acallback), there's no need to set this parameter. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Programs that add lazy constraints must set this parameter", ShortName = "LazyConstraints", Description = "Programs that add lazy constraints through a callback must set thisparameter to value 1. The parameter tells the Gurobi algorithms toavoid certain reductions and transformations that are incompatiblewith lazy constraints. Note that if you use lazy constraints by setting theLazy attribute (and not through acallback), there's no need to set this parameter. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? LazyConstraints { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
LimitedLicenseUsage
Controls the usage of the size-limited gurobi license. Default: Fallback
Declaration
[Obsolete("Gurobi 8.x no longer is supported by Gurobi. Thus, the limited license no longer valid.", false)]
public LimitedLicenseUsage LimitedLicenseUsage { get; set; }
Property Value
Type | Description |
---|---|
LimitedLicenseUsage |
LogToConsole
Enables or disables console logging. UseOutputFlagto shut off all logging. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Console logging", ShortName = "LogToConsole", Description = "Enables or disables console logging. UseOutputFlagto shut off all logging. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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, 5=deterministicconcurrent simplex. 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. Method=3 andMethod=4 will run dual simplex, barrier, and sometimes primal simplex(depending on the number of available threads). Method=5 will runboth primal and dual simplex. The deterministic options (Method=4 andMethod=5) give the exact same result each time, while Method=3 isoften faster but can produce different optimal bases when run multipletimes. 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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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, 5=deterministicconcurrent simplex. 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. Method=3 andMethod=4 will run dual simplex, barrier, and sometimes primal simplex(depending on the number of available threads). Method=5 will runboth primal and dual simplex. The deterministic options (Method=4 andMethod=5) give the exact same result each time, while Method=3 isoften faster but can produce different optimal bases when run multipletimes. 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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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: Only affects MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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: Only affects MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? ModKCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MultiObjMethod
When solving a continuous multi-objective model using a hierarchicalapproach, the model is solved once for each objective. The algorithmused to solve for the highest priority objective is controlled bythe Method parameter. This parameterdetermines the algorithm used to solve for subsequent objectives. Aswith the Method parameters, values of 0 and 1 use primal anddual simplex, respectively. A value of 2 indicates that warm-startinformation from previous solves should be discarded, and the modelshould be solved from scratch (using the algorithm indicated bythe Method parameter). The default setting of -1 usuallychooses primal simplex. Note: Only affects continuous multi-objective models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Warm-start method to solve for subsequent objectives", ShortName = "MultiObjMethod", Description = "When solving a continuous multi-objective model using a hierarchicalapproach, the model is solved once for each objective. The algorithmused to solve for the highest priority objective is controlled bythe Method parameter. This parameterdetermines the algorithm used to solve for subsequent objectives. Aswith the Method parameters, values of 0 and 1 use primal anddual simplex, respectively. A value of 2 indicates that warm-startinformation from previous solves should be discarded, and the modelshould be solved from scratch (using the algorithm indicated bythe Method parameter). The default setting of -1 usuallychooses primal simplex. Note: Only affects continuous multi-objective models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? MultiObjMethod { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MultiObjPre
Controls the initial presolve level used for multi-objective models.Value 0 disables the initial presolve, value 1 applies presolveconservatively, and value 2 applies presolve aggressively. The default-1 value usually applies presolve conservatively. Aggressive presolvemay increase the chance of the objective values being slightlydifferent than those for other options. Note: Only affects multi-objective models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Initial presolve on multi-objective models", ShortName = "MultiObjPre", Description = "Controls the initial presolve level used for multi-objective models.Value 0 disables the initial presolve, value 1 applies presolveconservatively, and value 2 applies presolve aggressively. The default-1 value usually applies presolve conservatively. Aggressive presolvemay increase the chance of the objective values being slightlydifferent than those for other options. Note: Only affects multi-objective models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? MultiObjPre { 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 compressed and written to disk.We recommend a setting of 0.5, but you may wish to choose adifferent value, depending on the memory available in your machine.By default, nodes are 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 compressed and written to disk.We recommend a setting of 0.5, but you may wish to choose adifferent value, depending on the memory available in your machine.By default, nodes are 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? NodeLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
NodeMethod
Algorithm used for MIP node relaxations (except for the root node, seeMethod). Options are: -1=automatic, 0=primal simplex,1=dual simplex, and 2=barrier. Note that barrier is not an option forMIQP node relaxations. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Method used to solve MIP node relaxations", ShortName = "NodeMethod", Description = "Algorithm used for MIP node relaxations (except for the root node, seeMethod). Options are: -1=automatic, 0=primal simplex,1=dual simplex, and 2=barrier. Note that barrier is not an option forMIQP node relaxations. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? NormAdjust { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NumericFocus
The NumericFocus parameter controls the degree to which thecode attempts to detect and manage numerical issues. The defaultsetting (0) makes an automatic choice, with a slight preference forspeed. Settings 1-3 increasingly shift the focus towards being morecareful in numerical computations. With higher values, the code willspend more time checking the numerical accuracy of intermediateresults, and it will employ more expensive techniques inorder to avoid potential numerical issues. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Set the numerical focus", ShortName = "NumericFocus", Description = "The NumericFocus parameter controls the degree to which thecode attempts to detect and manage numerical issues. The defaultsetting (0) makes an automatic choice, with a slight preference forspeed. Settings 1-3 increasingly shift the focus towards being morecareful in numerical computations. With higher values, the code willspend more time checking the numerical accuracy of intermediateresults, and it will employ more expensive techniques inorder to avoid potential numerical issues. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? NumericFocus { 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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? OutputFlag { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
ParameterFilePath
Gets or sets the path to a gurobi parameter file to load parameters from.
.prm
.
Declaration
public FileInfo ParameterFilePath { get; set; }
Property Value
Type | Description |
---|---|
System.IO.FileInfo |
PartitionPlace
Seting the Partition attribute onat least one variable in a model enables the partitioning heuristic,which uses large-neighborhood search to try to improve the currentincumbent solution. This parameter determines where that heuristic runs. Options are: The default value of 15 indicates that we enable every option exceptthe first one listed above. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Controls when the partition heuristic runs", ShortName = "PartitionPlace", Description = "Seting the Partition attribute onat least one variable in a model enables the partitioning heuristic,which uses large-neighborhood search to try to improve the currentincumbent solution. This parameter determines where that heuristic runs. Options are: The default value of 15 indicates that we enable every option exceptthe first one listed above. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public PartitionPlace? PartitionPlace { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<PartitionPlace> |
PerturbValue
Magnitude of the simplex perturbation. Note that perturbation is onlyapplied when progress has stalled, so the parameter will often have noeffect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? PerturbValue { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
PoolGap
Determines how large a gap to tolerate in stored solutions. When thisparameter is set to a non-default value, solutions whose objectivevalues exceed that of the best known solution by more than thespecified (relative) gap are discarded. For example, if the MIPsolver has found a solution at objective 100, then a settingof PoolGap=0.2 would discard solutions with objective worsethan 120 (assuming a minimization objective). Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Gap for solutions in pool", ShortName = "PoolGap", Description = "Determines how large a gap to tolerate in stored solutions. When thisparameter is set to a non-default value, solutions whose objectivevalues exceed that of the best known solution by more than thespecified (relative) gap are discarded. For example, if the MIPsolver has found a solution at objective 100, then a settingof PoolGap=0.2 would discard solutions with objective worsethan 120 (assuming a minimization objective). Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? PoolGap { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
PoolSearchMode
Selects different modes for exploring the MIP search tree. With thedefault setting (PoolSearchMode=0), the MIP solver tries to find anoptimal solution to the model. It keeps other solutions found alongthe way, but those are incidental. By setting this parameter to anon-default value, the MIP search will continue after the optimalsolution has been found in order to find additional, high-qualitysolutions. With a setting of 2, it will find the n bestsolutions, where n is determined by the value of thePoolSolutions parameter.With a setting of 1, it will try to find additional solutions, butwith no guarantees about the quality of those solutions. Thecost of the solve will increase with increasing values of thisparameter. Once optimization is complete, thePoolObjBound attribute can be used toevaluate the quality of the solutions that were found. For example, avalue of PoolObjBound=100 indicates that there are no othersolutions with objective better 100, and thus that any known solutionswith objective better than 100 are better than any as-yet undiscoveredsolutions. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Choose the approach used to find additional solutions", ShortName = "PoolSearchMode", Description = "Selects different modes for exploring the MIP search tree. With thedefault setting (PoolSearchMode=0), the MIP solver tries to find anoptimal solution to the model. It keeps other solutions found alongthe way, but those are incidental. By setting this parameter to anon-default value, the MIP search will continue after the optimalsolution has been found in order to find additional, high-qualitysolutions. With a setting of 2, it will find the n bestsolutions, where n is determined by the value of thePoolSolutions parameter.With a setting of 1, it will try to find additional solutions, butwith no guarantees about the quality of those solutions. Thecost of the solve will increase with increasing values of thisparameter. Once optimization is complete, thePoolObjBound attribute can be used toevaluate the quality of the solutions that were found. For example, avalue of PoolObjBound=100 indicates that there are no othersolutions with objective better 100, and thus that any known solutionswith objective better than 100 are better than any as-yet undiscoveredsolutions. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? PoolSearchMode { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PoolSolutions
Determines how many MIP solutions are stored. For the default valueof PoolSearchMode, these are just thesolutions that are found along the way in the process of exploring theMIP search tree. For other values of PoolSearchMode, thisparameter sets a target for how many solutions to find, so largervalues will impact performance. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Number of solutions to keep in pool", ShortName = "PoolSolutions", Description = "Determines how many MIP solutions are stored. For the default valueof PoolSearchMode, these are just thesolutions that are found along the way in the process of exploring theMIP search tree. For other values of PoolSearchMode, thisparameter sets a target for how many solutions to find, so largervalues will impact performance. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? PoolSolutions { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? PreDual { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreMIQCPForm
Determines the format of the presolved version of an MIQCP model.Option 0 leaves the model in MIQCP form, so the branch-and-cutalgorithm will operate on a model with arbitrary quadraticconstraints. Option 1 always transforms the model into MISOCP form;quadratic constraints are transformed into second-order coneconstraints. Option 2 always transforms the model into disaggregatedMISOCP form; quadratic constraints are transformed into rotated coneconstraints, where each rotated cone contains two terms and involvesonly three variables. The default setting (-1) choose automatically. The automatic settingworks well, but there are cases where forcing a different form can bebeneficial. Note: Only affects MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Format of presolved MIQCP model", ShortName = "PreMIQCPForm", Description = "Determines the format of the presolved version of an MIQCP model.Option 0 leaves the model in MIQCP form, so the branch-and-cutalgorithm will operate on a model with arbitrary quadraticconstraints. Option 1 always transforms the model into MISOCP form;quadratic constraints are transformed into second-order coneconstraints. Option 2 always transforms the model into disaggregatedMISOCP form; quadratic constraints are transformed into rotated coneconstraints, where each rotated cone contains two terms and involvesonly three variables. The default setting (-1) choose automatically. The automatic settingworks well, but there are cases where forcing a different form can bebeneficial. Note: Only affects MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? PreMIQCPForm { 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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. Note: Only affects MIQP and MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. Note: Only affects MIQP and MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? Presolve { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreSOS1BigM
Controls the automatic reformulation of SOS1 constraints into binaryform. SOS1 constraints are often handled more efficiently using abinary representation. The reformulation often requiresbig-M values to be introduced as coefficients. Thisparameter specifies the largest big-M that can be introduced bypresolve when performing this reformulation. Larger values increasethe chances that an SOS1 constraint will be reformulated, but verylarge values (e.g., 1e8) can lead to numerical issues. The default value of -1 chooses a threshold automatically. You shouldset the parameter to 0 to shut off SOS1 reformulation entirely, ora large value to force reformulation. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. Please refer tothis sectionfor more information on SOS constraints.
Declaration
[Display(Name = "Controls SOS1 converstion to binary form", ShortName = "PreSOS1BigM", Description = "Controls the automatic reformulation of SOS1 constraints into binaryform. SOS1 constraints are often handled more efficiently using abinary representation. The reformulation often requiresbig-M values to be introduced as coefficients. Thisparameter specifies the largest big-M that can be introduced bypresolve when performing this reformulation. Larger values increasethe chances that an SOS1 constraint will be reformulated, but verylarge values (e.g., 1e8) can lead to numerical issues. The default value of -1 chooses a threshold automatically. You shouldset the parameter to 0 to shut off SOS1 reformulation entirely, ora large value to force reformulation. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. Please refer tothis sectionfor more information on SOS constraints. ")]
public double? PreSOS1BigM { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
PreSOS2BigM
Controls the automatic reformulation of SOS2 constraints into binaryform. SOS2 constraints are often handled more efficiently using abinary representation. The reformulation often requiresbig-M values to be introduced as coefficients. Thisparameter specifies the largest big-M that can be introduced bypresolve when performing this reformulation. Larger values increasethe chances that an SOS2 constraint will be reformulated, but verylarge values (e.g., 1e8) can lead to numerical issues. The default value of 0 disables the reformulation. You canset the parameter to -1 to choose an automatic approach, ora large value to force reformulation. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. Please refer tothis sectionfor more information on SOS constraints.
Declaration
[Display(Name = "Controls SOS2 converstion to binary form", ShortName = "PreSOS2BigM", Description = "Controls the automatic reformulation of SOS2 constraints into binaryform. SOS2 constraints are often handled more efficiently using abinary representation. The reformulation often requiresbig-M values to be introduced as coefficients. Thisparameter specifies the largest big-M that can be introduced bypresolve when performing this reformulation. Larger values increasethe chances that an SOS2 constraint will be reformulated, but verylarge values (e.g., 1e8) can lead to numerical issues. The default value of 0 disables the reformulation. You canset the parameter to -1 to choose an automatic approach, ora large value to force reformulation. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. Please refer tothis sectionfor more information on SOS constraints. ")]
public double? PreSOS2BigM { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? PreSparsify { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ProjImpliedCuts
Controls projected 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Projected implied bound cut generation", ShortName = "ProjImpliedCuts", Description = "Controls projected 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? ProjImpliedCuts { 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: Only affects QP/QCP/MIQP/MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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: Only affects QP/QCP/MIQP/MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? Quad { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Record
Enables API call recording. When enabled, Gurobi will write one ormore files (named gurobi000.grbr or similar) that capture thesequence of Gurobi commands that your program issued. This file cansubsequently be replayed using theGurobi command-line tool. Replayingthe file will repeat the exact same sequence of commands, and whencompleted will show the time spent in Gurobi API routines, the timespent in Gurobi algorithms, and will indicate whether any Gurobienvironments or models were leaked by your program. Replay files areparticularly useful in tech support situations. They provide an easyway to relay to Gurobi tech support the exact sequence of Gurobicommands that led to a question or issue. This parameter must be set as soon as you create your Gurobienvironment (or in a gurobi.env file). All Gurobi commandswill be recorded until the environment is freed or the program ends.Changing the parameter value back to 0 has no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Enable API call recording", ShortName = "Record", Description = "Enables API call recording. When enabled, Gurobi will write one ormore files (named gurobi000.grbr or similar) that capture thesequence of Gurobi commands that your program issued. This file cansubsequently be replayed using theGurobi command-line tool. Replayingthe file will repeat the exact same sequence of commands, and whencompleted will show the time spent in Gurobi API routines, the timespent in Gurobi algorithms, and will indicate whether any Gurobienvironments or models were leaked by your program. Replay files areparticularly useful in tech support situations. They provide an easyway to relay to Gurobi tech support the exact sequence of Gurobicommands that led to a question or issue. This parameter must be set as soon as you create your Gurobienvironment (or in a gurobi.env file). All Gurobi commandswill be recorded until the environment is freed or the program ends.Changing the parameter value back to 0 has no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? Record { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
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. The most commonly used suffixes are.sol (to capture the solution vector),.bas (to capture the simplex basis),and .mst (to capture the solution vector on the integervariables). You can also write a.ilp file (to capture the IIS for an infeasible model),or a .mps, .rew, .lp, or.rlp file (to capture the original model).The file suffix may optionally be followed by .gz,.bz2, or .7z, which produces a compressed result. More information on the file formats can be found inthe File Format section. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. The most commonly used suffixes are.sol (to capture the solution vector),.bas (to capture the simplex basis),and .mst (to capture the solution vector on the integervariables). You can also write a.ilp file (to capture the IIS for an infeasible model),or a .mps, .rew, .lp, or.rlp file (to capture the original model).The file suffix may optionally be followed by .gz,.bz2, or .7z, which produces a compressed result. More information on the file formats can be found inthe File Format section. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? RINS { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ScaleFlag
Controls model scaling. By default, the rows and columns of the modelare scaled in order to improve the numerical properties of theconstraint matrix. The scaling is removed before the final solutionis returned. Scaling typically reduces solution times, but it maylead to larger constraint violations in the original, unscaled model.Turning off scaling (ScaleFlag=0) can sometimes produce smallerconstraint violations. Choosing a different scaling optioncan sometimes improve performance forparticularly numerically difficult models. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Model scaling", ShortName = "ScaleFlag", Description = "Controls model scaling. By default, the rows and columns of the modelare scaled in order to improve the numerical properties of theconstraint matrix. The scaling is removed before the final solutionis returned. Scaling typically reduces solution times, but it maylead to larger constraint violations in the original, unscaled model.Turning off scaling (ScaleFlag=0) can sometimes produce smallerconstraint violations. Choosing a different scaling optioncan sometimes improve performance forparticularly numerically difficult models. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? ScaleFlag { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Seed
Modifies the random number seed. This acts as a small perturbation tothe solver, and typically leads to different solution paths. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Modify the random number seed", ShortName = "Seed", Description = "Modifies the random number seed. This acts as a small perturbation tothe solver, and typically leads to different solution paths. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? Seed { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ServerPassword
The password for connecting to the server (either a Compute Serveror a token server). For connecting to the Remote Services cluster referred to by theComputeServer parameter,you'll need to supply the client password. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. Supply the token server password (if needed) when connectingto the server referred to by theTokenServer parameter, You must set this parameter through either a gurobi.lic file(using PASSWORD=pwd) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Client password for Remote Services cluster (or token server).", ShortName = "ServerPassword", Description = "The password for connecting to the server (either a Compute Serveror a token server). For connecting to the Remote Services cluster referred to by theComputeServer parameter,you'll need to supply the client password. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. Supply the token server password (if needed) when connectingto the server referred to by theTokenServer parameter, You must set this parameter through either a gurobi.lic file(using PASSWORD=pwd) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string ServerPassword { get; set; }
Property Value
Type | Description |
---|---|
System.String |
ServerTimeout
Network time-out for Compute Server and token server (in seconds). Ifthe client program is unable to contact the server for morethan the specified amount of time, the client will quit with a networkerror. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file(using QUEUETIMEOUT=n) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Network timeout interval", ShortName = "ServerTimeout", Description = "Network time-out for Compute Server and token server (in seconds). Ifthe client program is unable to contact the server for morethan the specified amount of time, the client will quit with a networkerror. Refer to theGurobi Remote Services Reference Manualfor more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file(using QUEUETIMEOUT=n) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? ServerTimeout { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? SolutionLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SolutionNumber
When querying attributeXn, ObjNVal, orPoolObjVal 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Sub-optimal MIP solution retrieval", ShortName = "SolutionNumber", Description = "When querying attributeXn, ObjNVal, orPoolObjVal 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? SolutionNumber { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
StartNodeLimit
This parameter limits the number of branch-and-bound nodes exploredwhen completing a partial MIP start. The default value of -1 uses thevalue of the SubMIPNodes parameter. A value of -2 shuts offMIP start processing entirely. Non-negative values are node limits. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Node limit for MIP start sub-MIP", ShortName = "StartNodeLimit", Description = "This parameter limits the number of branch-and-bound nodes exploredwhen completing a partial MIP start. The default value of -1 uses thevalue of the SubMIPNodes parameter. A value of -2 shuts offMIP start processing entirely. Non-negative values are node limits. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? StartNodeLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
StartNumber
This parameter selects the index of the MIP start you want to workwith. When you modify a MIP start value (using theStart attribute) theStartNumber parameter will determine which MIP start isactually affected. The value of this parameter should be less thanthe value of the NumStart attribute(which captures the number of MIP starts in the model). For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Set index of MIP start", ShortName = "StartNumber", Description = "This parameter selects the index of the MIP start you want to workwith. When you modify a MIP start value (using theStart attribute) theStartNumber parameter will determine which MIP start isactually affected. The value of this parameter should be less thanthe value of the NumStart attribute(which captures the number of MIP starts in the model). For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? StartNumber { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
StrongCGCuts
Controls Strong Chvátal-Gomory (Strong-CG) cut generation.Use 0 to disable these cuts, 1 for moderate cut generation, or 2 for aggressive cut generation.The default -1 value chooses automatically.Overrides the Cuts parameter. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Strong-CG cut generation", ShortName = "StrongCGCuts", Description = "Controls Strong Chvátal-Gomory (Strong-CG) cut generation.Use 0 to disable these cuts, 1 for moderate cut generation, or 2 for aggressive cut generation.The default -1 value chooses automatically.Overrides the Cuts parameter. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? StrongCGCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SubMIPCuts
Controls sub-MIP 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Sub-MIP cut generation", ShortName = "SubMIPCuts", Description = "Controls sub-MIP 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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? SubMIPCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SubMIPNodes
Limits the number of nodes explored by MIP-based heuristics (such as RINS).Exploring more nodes can produce better solutions, but it generally takeslonger. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Nodes explored by sub-MIP heuristics", ShortName = "SubMIPNodes", Description = "Limits the number of nodes explored by MIP-based heuristics (such as RINS).Exploring more nodes can produce better solutions, but it generally takeslonger. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? Symmetry { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Threads
Controls the number of threads to apply to parallel algorithms(concurrent LP, parallel barrier, parallel MIP, etc.). The defaultvalue of 0 is an automatic setting. It will generally use all of thecores in the machine, but it 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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Number of parallel threads to use", ShortName = "Threads", Description = "Controls the number of threads to apply to parallel algorithms(concurrent LP, parallel barrier, parallel MIP, etc.). The defaultvalue of 0 is an automatic setting. It will generally use all of thecores in the machine, but it 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. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? Threads { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TokenServer
When using a token license, set this parameter to the name of thetoken server. You can refer to the server using its name or its IPaddress. You can provide a comma-separate list of token servers to increaserobustness. If the first server in the list doesn't respond, thesecond will be tried, etc. You must set this parameter through either a gurobi.lic file(using TOKENSERVER=server) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Name of your token server.", ShortName = "TokenServer", Description = "When using a token license, set this parameter to the name of thetoken server. You can refer to the server using its name or its IPaddress. You can provide a comma-separate list of token servers to increaserobustness. If the first server in the list doesn't respond, thesecond will be tried, etc. You must set this parameter through either a gurobi.lic file(using TOKENSERVER=server) or an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string TokenServer { get; set; }
Property Value
Type | Description |
---|---|
System.String |
TSPort
Port to use when connecting to the Gurobi token server. You shouldonly change this if your network administrator tells you to. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Token server port number.", ShortName = "TSPort", Description = "Port to use when connecting to the Gurobi token server. You shouldonly change this if your network administrator tells you to. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? TSPort { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneCriterion
Modifies the tuning criterion for the tuning tool. The primary tuningcriterion is always to minimize the runtime required to find a provenoptimal solution. However, for MIP models that don't solve tooptimality within the specified time limit, a secondary criterion isneeded. Set this parameter to 1 to use the optimality gap as thesecondary criterion. Choose a value of 2 to use the objective of thebest feasible solution found. Choose a value of 3 to usethe best objective bound. Choose 0 to ignore the secondarycriterion and focus entirely on minimizing the time to find a provenoptimal solution. The default value of -1 chooses automatically. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Specify tuning criterion", ShortName = "TuneCriterion", Description = "Modifies the tuning criterion for the tuning tool. The primary tuningcriterion is always to minimize the runtime required to find a provenoptimal solution. However, for MIP models that don't solve tooptimality within the specified time limit, a secondary criterion isneeded. Set this parameter to 1 to use the optimality gap as thesecondary criterion. Choose a value of 2 to use the objective of thebest feasible solution found. Choose a value of 3 to usethe best objective bound. Choose 0 to ignore the secondarycriterion and focus entirely on minimizing the time to find a provenoptimal solution. The default value of -1 chooses automatically. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? TuneCriterion { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneJobs
Enables distributed parallel tuning, which can significantly increasethe performance of the tuning tool. A value of n causes thetuning tool to distribute tuning work among n parallel jobs.These jobs are distributed among a set of machines. Use theWorkerPool parameter toprovide a distributed worker cluster. Note that distributed tuning is most effective when the worker machines havesimilar performance. Distributed tuning doesn't attempt to normalizeperformance by server, so it can incorrectly attribute a boost inperformance to a parameter change when the associated setting is triedon a worker that is significantly faster than the others. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Enables distributed tuning", ShortName = "TuneJobs", Description = "Enables distributed parallel tuning, which can significantly increasethe performance of the tuning tool. A value of n causes thetuning tool to distribute tuning work among n parallel jobs.These jobs are distributed among a set of machines. Use theWorkerPool parameter toprovide a distributed worker cluster. Note that distributed tuning is most effective when the worker machines havesimilar performance. Distributed tuning doesn't attempt to normalizeperformance by server, so it can incorrectly attribute a boost inperformance to a parameter change when the associated setting is triedon a worker that is significantly faster than the others. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? TuneJobs { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneOutput
Controls the amount of output produced by the tuning tool. Level 0produces no output; level 1 produces tuning summary output only when anew best parameter set is found; level 2 produces tuning summaryoutput for each parameter set that is tried; level 3 produces tuningsummary output, plus detailed solver output, for each parameter set tried. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Tuning output level", ShortName = "TuneOutput", Description = "Controls the amount of output produced by the tuning tool. Level 0produces no output; level 1 produces tuning summary output only when anew best parameter set is found; level 2 produces tuning summaryoutput for each parameter set that is tried; level 3 produces tuningsummary output, plus detailed solver output, for each parameter set tried. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? TuneOutput { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneResults
The tuning tool often finds multiple parameter sets that producebetter results than the baseline settings. This parameter controlshow many of these sets should be retained when tuning is complete.The default value retains the best results that were found for eachcount of changed parameters. In other words, it retains the bestresult for one changed parameter, for two changed parameter, etc.Results that aren't on the efficient frontier are discard. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Number of improved parameter sets returned", ShortName = "TuneResults", Description = "The tuning tool often finds multiple parameter sets that producebetter results than the baseline settings. This parameter controlshow many of these sets should be retained when tuning is complete.The default value retains the best results that were found for eachcount of changed parameters. In other words, it retains the bestresult for one changed parameter, for two changed parameter, etc.Results that aren't on the efficient frontier are discard. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? TuneResults { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneTimeLimit
Limits total tuning runtime (in seconds). The default setting (-1)chooses a time limit automatically. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Time limit for tuning", ShortName = "TuneTimeLimit", Description = "Limits total tuning runtime (in seconds). The default setting (-1)chooses a time limit automatically. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? TuneTimeLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
TuneTrials
Performance on a MIP model can sometimes experience significantvariations due to random effects. As a result, the tuning tool mayreturn parameter sets that improve on the baseline only dueto randomness. This parameter allows you to perform multiple solvesfor each parameter set, using differentSeed values for each, in order to reducethe influence of randomness on the results. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Perform multiple runs on each parameter set to limit the effect of random noise", ShortName = "TuneTrials", Description = "Performance on a MIP model can sometimes experience significantvariations due to random effects. As a result, the tuning tool mayreturn parameter sets that improve on the baseline only dueto randomness. This parameter allows you to perform multiple solvesfor each parameter set, using differentSeed values for each, in order to reducethe influence of randomness on the results. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? TuneTrials { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
UpdateMode
Determines how newly added variables and linear constraints arehandled. The default setting (1) allows you to use new variables andconstraints immediately for building or modifying the model. Asetting of 0 requires you to call update before these can beused. Since the vast majority of programs never query Gurobi for detailsabout the optimization models they build, the default settingtypically removes the need to call update, or even be aware ofthe details of our lazy update approach for handling modelmodifications. However, these details will show through when you tryto query modified model information. In the Gurobi interface, model modifications (bound changes,right-hand side changes, objective changes, etc.) are placed in aqueue. These queued modifications are applied to the model at threetimes: when you call update, when you call optimize, orwhen you call write to write the model to disk. When youquery information about the model, the result will depend on bothwhether that information was modified and whenit was modified. In particular, if the modification is sitting in thequeue, you'll get the result from before the modification. Note thatthis lazy update behavior is independent of the value ofthe UpdateMode parameter. The only potential benefit to changing the parameter to 0 is that inunusual cases this setting may allow simplex make more aggressive useof warm-start information after a model modification. If you want to change this parameter, you need to set it as soon asyou create your Gurobi environment. Note that you still need to call update to modify an attributeon an SOS constraint, quadratic constraint, or general constraint. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Change the behavior of lazy updates", ShortName = "UpdateMode", Description = "Determines how newly added variables and linear constraints arehandled. The default setting (1) allows you to use new variables andconstraints immediately for building or modifying the model. Asetting of 0 requires you to call update before these can beused. Since the vast majority of programs never query Gurobi for detailsabout the optimization models they build, the default settingtypically removes the need to call update, or even be aware ofthe details of our lazy update approach for handling modelmodifications. However, these details will show through when you tryto query modified model information. In the Gurobi interface, model modifications (bound changes,right-hand side changes, objective changes, etc.) are placed in aqueue. These queued modifications are applied to the model at threetimes: when you call update, when you call optimize, orwhen you call write to write the model to disk. When youquery information about the model, the result will depend on bothwhether that information was modified and whenit was modified. In particular, if the modification is sitting in thequeue, you'll get the result from before the modification. Note thatthis lazy update behavior is independent of the value ofthe UpdateMode parameter. The only potential benefit to changing the parameter to 0 is that inunusual cases this setting may allow simplex make more aggressive useof warm-start information after a model modification. If you want to change this parameter, you need to set it as soon asyou create your Gurobi environment. Note that you still need to call update to modify an attributeon an SOS constraint, quadratic constraint, or general constraint. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? UpdateMode { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? VarBranch { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
WorkerPassword
When using a distributed algorithm (distributed MIP, distributedconcurrent, or distributed tuning), this parameter allows you tospecify the password for the distributed worker cluster provided intheWorkerPool parameter. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Password for distributed worker cluster", ShortName = "WorkerPassword", Description = "When using a distributed algorithm (distributed MIP, distributedconcurrent, or distributed tuning), this parameter allows you tospecify the password for the distributed worker cluster provided intheWorkerPool parameter. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string WorkerPassword { get; set; }
Property Value
Type | Description |
---|---|
System.String |
WorkerPool
When using a distributed algorithm (distributed MIP, distributedconcurrent, or distributed tuning), this parameter allows you tospecify a Remote Services cluster that will provide distributedworkers. You should also specify the access password for thatcluster, if there is one, in theWorkerPassword parameter.Note that you don't need to set either of these parameters if your jobis running on a Compute Server node and you want to use the samecluster for the distributed workers. You can provide a comma-separated list of machines for addedrobustness. If the first node in the list is unavailable, the clientwill attempt to contact the second node, etc. To give an example, if you have a Remote Services cluster that usesport 61000 on a pair of machines namedserver1 and server2,you could setWorkerPool to "server1:61000" or"server1:61000,server2:61000". For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Distributed worker cluster", ShortName = "WorkerPool", Description = "When using a distributed algorithm (distributed MIP, distributedconcurrent, or distributed tuning), this parameter allows you tospecify a Remote Services cluster that will provide distributedworkers. You should also specify the access password for thatcluster, if there is one, in theWorkerPassword parameter.Note that you don't need to set either of these parameters if your jobis running on a Compute Server node and you want to use the samecluster for the distributed workers. You can provide a comma-separated list of machines for addedrobustness. If the first node in the list is unavailable, the clientwill attempt to contact the second node, etc. To give an example, if you have a Remote Services cluster that usesport 61000 on a pair of machines namedserver1 and server2,you could setWorkerPool to \"server1:61000\" or\"server1:61000,server2:61000\". For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string WorkerPool { get; set; }
Property Value
Type | Description |
---|---|
System.String |
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
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 For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? ZeroObjNodes { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Methods
IsCloudLicenseSpecified()
Checks if all required fields for the CloudServer License are specified in the current configuration
.
I.e.
CloudAccessID and CloudSecretKey. Does not check CloudPool. According to Gurobi, cloud pool only needs to be set, if it defers from default.)
Declaration
public bool IsCloudLicenseSpecified()
Returns
Type | Description |
---|---|
System.Boolean | True, if all required fields are specified. Does |
IsComputeServerLicenseSpecified()
Checks if all required fields for the ComputeServer License are specified in the current configuration
.
I.e.
Declaration
public bool IsComputeServerLicenseSpecified()
Returns
Type | Description |
---|---|
System.Boolean | True, if all required fields are specified. Does |
IsVendorLicenseSpecified()
Checks if all required fields for the ISV License are specified in the current configuration
.
I.e. IsvName, ApplicationName and IsvCode.
Declaration
public bool IsVendorLicenseSpecified()
Returns
Type | Description |
---|---|
System.Boolean | True, if all required fields are specified. Does |