Class GurobiSolverConfiguration
Allows to configure parameters for the Gurobi solver.
Inherited Members
Namespace: OPTANO.Modeling.Optimization.Solver.Gurobi912
Assembly: Optimization.Solver.Gurobi912.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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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> |
BQPCuts
Controls Boolean Quadric Polytope (BQP) 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 = "BQP cut generation", ShortName = "BQPCuts", Description = "Controls Boolean Quadric Polytope (BQP) 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? BQPCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
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 |
CloudHost
Set this parameter to the host name of the Gurobi Cloud entry point.Currently cloud.gurobi.com. You must set this parameter through either a gurobi.lic file(using CLOUDHOST=host) or an emptyenvironment. Changing the parameter afteryour environment has been started will result in an error. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Host for the Gurobi Cloud entry point", ShortName = "CloudHost", Description = " Set this parameter to the host name of the Gurobi Cloud entry point.Currently cloud.gurobi.com. You must set this parameter through either a gurobi.lic file(using CLOUDHOST=host) or an emptyenvironment. Changing the parameter afteryour environment has been started will result in an error. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CloudHost { 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-separated 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-separated 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 theComputeServer parameter toindicate the name of the cluster where you would like your distributedconcurrent job to run (or useWorkerPool ifyour client machine will act as manager and you justneed a pool of workers). 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 theComputeServer parameter toindicate the name of the cluster where you would like your distributedconcurrent job to run (or useWorkerPool ifyour client machine will act as manager and you justneed a pool of workers). 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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> |
ConstraintBatchSize
Gets or sets the batch size for adding constraints to the IDLE_TIMEOUT
errors during the transformation of the "modeling model" to the "gurobi model", while using a gurobi cloud solver instance.
Declaration
public int ConstraintBatchSize { get; set; }
Property Value
Type | Description |
---|---|
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: 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: 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> |
CSAPIAccessID
A unique identifier used to authenticate an application on a GurobiCluster Manager. You can provide either an access ID and asecret key,or ausername andpassword,to authenticate your connection to a Cluster Manager. You must set this parameter through either a gurobi.licfile (using CSAPIACCESSID=YOUR_API_ID) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Access ID forGurobi Cluster Manager", ShortName = "CSAPIAccessID", Description = " A unique identifier used to authenticate an application on a GurobiCluster Manager. You can provide either an access ID and asecret key,or ausername andpassword,to authenticate your connection to a Cluster Manager. You must set this parameter through either a gurobi.licfile (using CSAPIACCESSID=YOUR_API_ID) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CSAPIAccessID { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSAPISecret
The secret password associated with an API access ID. You can provide either anaccess IDand a secret key,or ausername andpassword,to authenticate your connection to a Cluster Manager. You must set this parameter through either a gurobi.licfile (using CSAPISECRET=YOUR_API_SECRET_KEY) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Secret key forGurobi Cluster Manager", ShortName = "CSAPISecret", Description = " The secret password associated with an API access ID. You can provide either anaccess IDand a secret key,or ausername andpassword,to authenticate your connection to a Cluster Manager. You must set this parameter through either a gurobi.licfile (using CSAPISECRET=YOUR_API_SECRET_KEY) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CSAPISecret { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSAppName
The application name which will be sent to the server to track whichapplication is submitting the batches or jobs. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Application name ofthe batches or jobs", ShortName = "CSAppName", Description = " The application name which will be sent to the server to track whichapplication is submitting the batches or jobs. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CSAppName { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSAuthToken
When a client authenticates with a Cluster Manager using a usernameand password, a signed token is returned by the server to be used infurther calls or command-line operations. It is used internally. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Token used internally for authentication", ShortName = "CSAuthToken", Description = " When a client authenticates with a Cluster Manager using a usernameand password, a signed token is returned by the server to be used infurther calls or command-line operations. It is used internally. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CSAuthToken { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSBatchMode
When set to 1, enable the local creation of models, and latersubmit batch-optimization jobs to the Cluster Manager.See the Batch Optimizationsection for more details.Note that if CSBatchMode is enabled, only batch-optimizationcalls are allowed. You must set this parameter through either a gurobi.licfile (using CSBATCHMODE=1) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "ControlsBatch-Mode optimization", ShortName = "CSBatchMode", Description = "When set to 1, enable the local creation of models, and latersubmit batch-optimization jobs to the Cluster Manager.See the Batch Optimizationsection for more details.Note that if CSBatchMode is enabled, only batch-optimizationcalls are allowed. You must set this parameter through either a gurobi.licfile (using CSBATCHMODE=1) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? CSBatchMode { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
CSClientLog
Turns logging on or off for Compute Server. Options are off (0), only errormessages (1), information and error messages (2), or (3) verbose,information, and error messages. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Turns loggingon or off", ShortName = "CSClientLog", Description = "Turns logging on or off for Compute Server. Options are off (0), only errormessages (1), information and error messages (2), or (3) verbose,information, and error messages. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? CSClientLog { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
CSGroup
Specifies one or more groups of cluster nodes to control the placementof the job. The list is a comma-separated string of group names, withoptionally a priority for a group. For example, specifyinggroup1:10,group2:50 means that the job will run on machines ofgroup1 or group2, and if the job is queued, it will havepriority 10 on group1 and 50 on group2. Note that if the group is notspecified, the job may run on any node. If there are no nodes in thecluster having the specified groups, the job will be rejected. Refer to the Gurobi Remote Services ReferenceManualfor more information onstarting Compute Server jobs and in particular toGurobi Remote Services clusterGroupingfor more information ongrouping cluster nodes. You must set this parameter through either a license file (usingGROUP=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 = "Group placement request for cluster", ShortName = "CSGroup", Description = " Specifies one or more groups of cluster nodes to control the placementof the job. The list is a comma-separated string of group names, withoptionally a priority for a group. For example, specifyinggroup1:10,group2:50 means that the job will run on machines ofgroup1 or group2, and if the job is queued, it will havepriority 10 on group1 and 50 on group2. Note that if the group is notspecified, the job may run on any node. If there are no nodes in thecluster having the specified groups, the job will be rejected. Refer to the Gurobi Remote Services ReferenceManualfor more information onstarting Compute Server jobs and in particular toGurobi Remote Services clusterGroupingfor more information ongrouping cluster nodes. You must set this parameter through either a license file (usingGROUP=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 CSGroup { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSIdleTimeout
This parameter allows you to set a limit on how long a Compute Serverjob can sit idle before the server kills the job (in seconds). A job is consideredidle if the server is not currently performing an optimization and theclient has not issued any additional commands. 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 (1800 seconds). If you are using an Instant Cloud pool,the actual value will be the maximum between this parameter value and theidle timeout defined by the pool. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 (in seconds). A job is consideredidle if the server is not currently performing an optimization and theclient has not issued any additional commands. 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 (1800 seconds). If you are using an Instant Cloud pool,the actual value will be the maximum between this parameter value and theidle timeout defined by the pool. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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> |
CSManager
URL of the Cluster Manager for the Remote Services cluster. You must set this parameter through either a gurobi.licfile (using CSMANAGER=YOUR_MANAGER_URL) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "URL for the Cluster Manager", ShortName = "CSManager", Description = " URL of the Cluster Manager for the Remote Services cluster. You must set this parameter through either a gurobi.licfile (using CSMANAGER=YOUR_MANAGER_URL) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string CSManager { get; set; }
Property Value
Type | Description |
---|---|
System.String |
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> |
CSQueueTimeout
This parameter allows you to set a limit (in seconds) on how long anew Compute Server job will wait in queue before it gives up (andreports a JOB_REJECTED error).Note that there might be a delay of up to 20 seconds for the actualsignaling of the time out. Any negative value will allow a job to sit in the Compute Server queueindefinitely. You must set this parameter through a gurobi.lic file (usingQUEUETIMEOUT=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 = "Queue timeout for new jobs", ShortName = "CSQueueTimeout", Description = "This parameter allows you to set a limit (in seconds) on how long anew Compute Server job will wait in queue before it gives up (andreports a JOB_REJECTED error).Note that there might be a delay of up to 20 seconds for the actualsignaling of the time out. Any negative value will allow a job to sit in the Compute Server queueindefinitely. You must set this parameter through a gurobi.lic file (usingQUEUETIMEOUT=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 double? CSQueueTimeout { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
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 either a gurobi.lic file(using CSTLSINSECURE) 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 = "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 either a gurobi.lic file(using CSTLSINSECURE) 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 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 objective valuesare worse than the specified value. If the objective value for the optimalsolution is equal to or better than the specified cutoff, the solver willreturn the optimal solution. Otherwise, it will terminate with aCUTOFF status (see the Status Codesection 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 objective valuesare worse than the specified value. If the objective value for the optimalsolution is equal to or better than the specified cutoff, the solver willreturn the optimal solution. Otherwise, it will terminate with aCUTOFF status (see the Status Codesection 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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> |
DateCode
Gets or sets the ISV expiration date. Set as YYYYMMDD
.
Declaration
public int DateCode { get; set; }
Property Value
Type | Description |
---|---|
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 degenerate move passes to performautomatically. The default setting generally works well, but there can be cases wherean excessive amount of time is spent after the initial root relaxationhas been solved but before the cut generation process or the rootheuristics have started. If you see multiple 'Total elapsed time'messages in the log immediately after the root relaxation log, you maywant to try setting this parameter to 0. 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 degenerate move passes to performautomatically. The default setting generally works well, but there can be cases wherean excessive amount of time is spent after the initial root relaxationhas been solved but before the cut generation process or the rootheuristics have started. If you see multiple 'Total elapsed time'messages in the log immediately after the root relaxation log, you maywant to try setting this parameter to 0. 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). One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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). One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 theComputeServer parameter toindicate the name of the cluster where you would like your distributedMIP job to run (or useWorkerPool ifyour client machine will act as manager and you justneed a pool of workers). 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 theComputeServer parameter toindicate the name of the cluster where you would like your distributedMIP job to run (or useWorkerPool ifyour client machine will act as manager and you justneed a pool of workers). 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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> |
FuncMaxVal
Very large values in piecewise-linear approximations can causenumerical issues. This parameter limits the bounds on the variablesthat participate in function constraints. Specifically, if or participate in a function constraint, any bound largerthan FuncMaxVal (in absolute value) will be truncated. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Maximum value for x and y variables in function constraints", ShortName = "FuncMaxVal", Description = "Very large values in piecewise-linear approximations can causenumerical issues. This parameter limits the bounds on the variablesthat participate in function constraints. Specifically, if or participate in a function constraint, any bound largerthan FuncMaxVal (in absolute value) will be truncated. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? FuncMaxVal { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FuncPieceError
If the FuncPieces parameteris set to value or , this attribute provides the maximumallowed error (absolute for , relative for )in the piecewise-linear approximation. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Error allowed for PWL translation of function constraint", ShortName = "FuncPieceError", Description = "If the FuncPieces parameteris set to value or , this attribute provides the maximumallowed error (absolute for , relative for )in the piecewise-linear approximation. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? FuncPieceError { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FuncPieceLength
If the FuncPieces parameter is set tovalue , this parameter gives the length of each piece of thepiecewise-linear approximation. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Piece length for PWL translation of function constraint", ShortName = "FuncPieceLength", Description = "If the FuncPieces parameter is set tovalue , this parameter gives the length of each piece of thepiecewise-linear approximation. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? FuncPieceLength { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FuncPieceRatio
This parameter controls whether the piecewise-linear approximation ofa function constraint is an underestimate of the function, anoverestimate, or somewhere in between. A value of will alwaysunderestimate, while a value of will alwaysoverestimate. A value in between will interpolate between theunderestimate and the overestimate. A special value of -1 choosespoints that are on the original function. See the discussion offunction constraintsfor more information. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Controls whether to under- or over-estimate function values in PWL approximation", ShortName = "FuncPieceRatio", Description = "This parameter controls whether the piecewise-linear approximation ofa function constraint is an underestimate of the function, anoverestimate, or somewhere in between. A value of will alwaysunderestimate, while a value of will alwaysoverestimate. A value in between will interpolate between theunderestimate and the overestimate. A special value of -1 choosespoints that are on the original function. See the discussion offunction constraintsfor more information. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? FuncPieceRatio { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FuncPieces
This parameter sets the strategy used for performing apiecewise-linear approximation of a function constraint. There are afew options: This parameter only applies to function constraintswhose FuncPieces attribute has beenset to . See the discussion offunction constraintsfor more information. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Sets strategy for PWL function approximation", ShortName = "FuncPieces", Description = "This parameter sets the strategy used for performing apiecewise-linear approximation of a function constraint. There are afew options: This parameter only applies to function constraintswhose FuncPieces attribute has beenset to . See the discussion offunction constraintsfor more information. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? FuncPieces { 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 attributes 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 attributes 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> |
IntegralityFocus
One unfortunate reality in MIP is that integer variables don't alwaystake exact integral values. While this typically doesn't createsignificant problems, in some situations the side-effects can be quiteundesirable. The best-known example is probably a trickleflow, where a continuous variable that is meant to be zero when anassociated binary variable is zero instead takes a non-trivial value.More precisely, given a constraint , where is anon-negative continuous variable, is a binary variable, and isa constant that captures the largest possible value of , theconstraint is intended to enforce the relationship that must bezero if is zero. With the defaultinteger feasibility tolerance,the binary variable is allowed to take a value as large as while still being considered as taking value zero. If the valueis large, then the upper bound on the variable can besubstantial. Reducing the value of the IntFeasTolparameter can mitigate the effects of such trickle flows, but often ata significant cost, and often with limited success. TheIntegralityFocus parameter provides a better alternative.Setting this parameter to 1 requests that the solver work harder totry to avoid solutions that exploit integrality tolerances. Moreprecisely, the solver tries to find solutions that are still (nearly)feasible if all integer variables are rounded to exact integralvalues. We should say that the solver won't always succeed in findingsuch solutions, and that this setting introduces a modest performancepenalty, but the setting will significantly reduce the frequency andmagnitude of such violations. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Set the integrality focus", ShortName = "IntegralityFocus", Description = "One unfortunate reality in MIP is that integer variables don't alwaystake exact integral values. While this typically doesn't createsignificant problems, in some situations the side-effects can be quiteundesirable. The best-known example is probably a trickleflow, where a continuous variable that is meant to be zero when anassociated binary variable is zero instead takes a non-trivial value.More precisely, given a constraint , where is anon-negative continuous variable, is a binary variable, and isa constant that captures the largest possible value of , theconstraint is intended to enforce the relationship that must bezero if is zero. With the defaultinteger feasibility tolerance,the binary variable is allowed to take a value as large as while still being considered as taking value zero. If the valueis large, then the upper bound on the variable can besubstantial. Reducing the value of the IntFeasTolparameter can mitigate the effects of such trickle flows, but often ata significant cost, and often with limited success. TheIntegralityFocus parameter provides a better alternative.Setting this parameter to 1 requests that the solver work harder totry to avoid solutions that exploit integrality tolerances. Moreprecisely, the solver tries to find solutions that are still (nearly)feasible if all integer variables are rounded to exact integralvalues. We should say that the solver won't always succeed in findingsuch solutions, and that this setting introduces a modest performancepenalty, but the setting will significantly reduce the frequency andmagnitude of such violations. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? IntegralityFocus { 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> |
JobID
If you are running on a Compute Server, this parameter provides theCompute Server Job ID for the current job. Note that this isa read-only parameter. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Job ID of current job", ShortName = "JobID", Description = " If you are running on a Compute Server, this parameter provides theCompute Server Job ID for the current job. Note that this isa read-only parameter. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string JobID { get; set; }
Property Value
Type | Description |
---|---|
System.String |
JSONSolDetail
This parameter controls the amount of detail included in a JSONsolution. For example, when this parameter is set to 1, the JSON string willcontain data for all of the variables, even those with solution value 0. For a precise description of the contents of the resultingJSON string, please refer to theJSON solution format section. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Controls the level of detail stored in generated JSON solution", ShortName = "JSONSolDetail", Description = "This parameter controls the amount of detail included in a JSONsolution. For example, when this parameter is set to 1, the JSON string willcontain data for all of the variables, even those with solution value 0. For a precise description of the contents of the resultingJSON string, please refer to theJSON solution format section. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public bool? JSONSolDetail { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
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
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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 that if multiple threads are used for the optimization,the actual number of explored nodes may be slightly larger than the setlimit. 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 that if multiple threads are used for the optimization,the actual number of explored nodes may be slightly larger than the setlimit. 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> |
NonConvex
Sets the strategy for handling non-convex quadratic objectives ornon-convex quadratic constraints. With setting 0, an error isreported if the original user model contains non-convex quadraticconstructs. With setting 1, an error is reported if non-convexquadratic constructs could not be discarded or linearized duringpresolve. With setting 2, non-convex quadratic problems are solved bymeans of translating them into bilinear form and applying spatialbranching. The default -1 setting is currently equivalent to 1, andmay change in future releases to be equivalent to 2. Note: Only affects QP, QCP, MIQP, and MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Control how to deal with non-convex quadratic programs", ShortName = "NonConvex", Description = "Sets the strategy for handling non-convex quadratic objectives ornon-convex quadratic constraints. With setting 0, an error isreported if the original user model contains non-convex quadraticconstructs. With setting 1, an error is reported if non-convexquadratic constructs could not be discarded or linearized duringpresolve. With setting 2, non-convex quadratic problems are solved bymeans of translating them into bilinear form and applying spatialbranching. The default -1 setting is currently equivalent to 1, andmay change in future releases to be equivalent to 2. Note: Only affects QP, QCP, MIQP, and MIQCP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? NonConvex { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NoRelHeurTime
Limits the amount of time (in seconds) spent in the NoRel heuristic.This heuristic searches for high-quality feasible solutions beforesolving the root relaxation. It can be quite useful on modelswhere the root relaxation is particularly expensive. Note that this parameter will introduce non-determinism - differentruns may take different paths. Use theNoRelHeurWorkparameter for deterministic results. Note: Only affects MIP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Limits the amount of time (in seconds) spent in the NoRel heuristic", ShortName = "NoRelHeurTime", Description = "Limits the amount of time (in seconds) spent in the NoRel heuristic.This heuristic searches for high-quality feasible solutions beforesolving the root relaxation. It can be quite useful on modelswhere the root relaxation is particularly expensive. Note that this parameter will introduce non-determinism - differentruns may take different paths. Use theNoRelHeurWorkparameter for deterministic results. Note: Only affects MIP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? NoRelHeurTime { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
NoRelHeurWork
Limits the amount of work spent in the NoRel heuristic. Thisheuristic searches for high-quality feasible solutions before solvingthe root relaxation. It can be quite useful on models where the rootrelaxation is particularly expensive. The work metric used in this parameter is tough to define precisely.A single unit corresponds to roughly a second, but this will depend onthe machine, the core count, and in some cases the model. You mayneed to experiment to find a good setting for your model. Note: Only affects MIP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Limits the amount of work performed by the NoRel heuristic", ShortName = "NoRelHeurWork", Description = "Limits the amount of work spent in the NoRel heuristic. Thisheuristic searches for high-quality feasible solutions before solvingthe root relaxation. It can be quite useful on models where the rootrelaxation is particularly expensive. The work metric used in this parameter is tough to define precisely.A single unit corresponds to roughly a second, but this will depend onthe machine, the core count, and in some cases the model. You mayneed to experiment to find a good setting for your model. Note: Only affects MIP models For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? NoRelHeurWork { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
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
When positive, divides the model objective by the specified value toavoid numerical issues that may result from very large or very smallobjective coefficients. The default value of 0 decides on the scalingautomatically. A value less than zero uses the maximum coefficient tothe specified power as the scaling (so ObjScale=-0.5 wouldscale by the square root of the largest objective coefficient). Note that objective scaling can lead to large dual violations on theoriginal, unscaled objective when the optimality tolerance with thescaled objective is barely satisfied, so it should be used sparingly.Note also that scaling will be more effective when all objectivecoefficients are of similar orders of magnitude, as opposed toobjectives with a wide range of coefficients. In the latter case,consider using theMultiple Objectivesfeature instead. 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 = "When positive, divides the model objective by the specified value toavoid numerical issues that may result from very large or very smallobjective coefficients. The default value of 0 decides on the scalingautomatically. A value less than zero uses the maximum coefficient tothe specified power as the scaling (so ObjScale=-0.5 wouldscale by the square root of the largest objective coefficient). Note that objective scaling can lead to large dual violations on theoriginal, unscaled objective when the optimality tolerance with thescaled objective is barely satisfied, so it should be used sparingly.Note also that scaling will be more effective when all objectivecoefficients are of similar orders of magnitude, as opposed toobjectives with a wide range of coefficients. In the latter case,consider using theMultiple Objectivesfeature instead. 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
Setting 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 = "Setting 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 int? PartitionPlace { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
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 (relative) gap to tolerate in stored solutions.When this parameter is set to a non-default value, solutions whoseobjective values exceed that of the best known solution by more thanthe specified (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 = "Relative gap for solutions in pool", ShortName = "PoolGap", Description = "Determines how large a (relative) gap to tolerate in stored solutions.When this parameter is set to a non-default value, solutions whoseobjective values exceed that of the best known solution by more thanthe specified (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> |
PoolGapAbs
Determines how large a (absolute) gap to tolerate in stored solutions.When this parameter is set to a non-default value, solutions whoseobjective values exceed that of the best known solution by more thanthe specified (absolute) gap are discarded. For example, if the MIPsolver has found a solution at objective 100, then a settingof PoolGapAbs=20 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 = "Absolute gap for solutions in pool", ShortName = "PoolGapAbs", Description = "Determines how large a (absolute) gap to tolerate in stored solutions.When this parameter is set to a non-default value, solutions whoseobjective values exceed that of the best known solution by more thanthe specified (absolute) gap are discarded. For example, if the MIPsolver has found a solution at objective 100, then a settingof PoolGapAbs=20 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? PoolGapAbs { 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 non-default value (PoolSearchMode=1 orPoolSearchMode=2), the MIP solver will try to find nsolutions, where n is determined by the value of thePoolSolutions parameter.With a setting of 1, there are no guarantees about the quality ofthe extra solutions, while with a setting of 2, the solver willfind the n best 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 non-default value (PoolSearchMode=1 orPoolSearchMode=2), the MIP solver will try to find nsolutions, where n is determined by the value of thePoolSolutions parameter.With a setting of 1, there are no guarantees about the quality ofthe extra solutions, while with a setting of 2, the solver willfind the n best 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
Shuts off a few reductions in order to allow presolve to transform anyconstraint on the original model into an equivalent constraint on thepresolved model. You should consider setting this parameter to 1 ifyou are using callbacks to add your own cuts. A cut that cannot beapplied to the presolved model will be silently ignored. The impacton the size of the presolved problem is usually small. 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 = "Shuts off a few reductions in order to allow presolve to transform anyconstraint on the original model into an equivalent constraint on thepresolved model. You should consider setting this parameter to 1 ifyou are using callbacks to add your own cuts. A cut that cannot beapplied to the presolved model will be silently ignored. The impacton the size of the presolved problem is usually small. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. Binary variables inquadratic expressions provide some freedom to state the sameexpression in multiple different ways. Options 1 and 2 of thisparameter attempt to linearize quadratic constraints or a quadraticobjective, replacing quadratic terms with linear terms, usingadditional variables and linear constraints. This can potentiallytransform an MIQP or MIQCP model into an MILP. Option 1 focuses onproducing an MILP reformulation with a strong LP relaxation, with agoal of limiting the size of the MIP search tree. Option 2 aims for acompact reformulation, with a goal of reducing the cost of each node.Option 0 attempts to leave Q matrices unmodified; it won't addvariables or constraints, but it may still perform adjustments onquadratic objective functions to make them positive semi-definite(PSD). The default setting (-1) chooses automatically. 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. Binary variables inquadratic expressions provide some freedom to state the sameexpression in multiple different ways. Options 1 and 2 of thisparameter attempt to linearize quadratic constraints or a quadraticobjective, replacing quadratic terms with linear terms, usingadditional variables and linear constraints. This can potentiallytransform an MIQP or MIQCP model into an MILP. Option 1 focuses onproducing an MILP reformulation with a strong LP relaxation, with agoal of limiting the size of the MIP search tree. Option 2 aims for acompact reformulation, with a goal of reducing the cost of each node.Option 0 attempts to leave Q matrices unmodified; it won't addvariables or constraints, but it may still perform adjustments onquadratic objective functions to make them positive semi-definite(PSD). The default setting (-1) chooses automatically. 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 conversion 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 conversion 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 non-zero 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 non-zero 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> |
PSDCuts
Controls PSD 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 = "PSD cut generation", ShortName = "PSDCuts", Description = "Controls PSD 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? PSDCuts { 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. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 before starting anempty environment(or in a gurobi.env file). All Gurobi commandswill be recorded until the environment is freed or the program ends. 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 before starting anempty environment(or in a gurobi.env file). All Gurobi commandswill be recorded until the environment is freed or the program ends. 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> |
RelaxLiftCuts
Controls relax-and-lift 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 = "Relax-and-lift cut generation", ShortName = "RelaxLiftCuts", Description = "Controls relax-and-lift 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? RelaxLiftCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ResultFile
Specifies the name of the result file to be written upon completion ofoptimization. The type of the result file is determined by the filesuffix. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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> |
RLTCuts
Controls Relaxation Linearization Technique (RLT) 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 = "RLT cut generation", ShortName = "RLTCuts", Description = "Controls Relaxation Linearization Technique (RLT) 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? RLTCuts { 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> |
ScenarioNumber
When working with multiple scenarios, this parameter selects theindex of the scenario you want to work with. When you query or modify anattribute associated with multiple scenarios(ScenNLB, ScenNUB,ScenNObj, ScenNRHS,etc.), the ScenarioNumber parameter will determine which scenariois actually affected. The value of this parameter should be less thanthe value of the NumScenarios attribute (whichcaptures the number of scenarios in the model). Please refer to the discussion ofMultiple Scenarios formore information on the use of alternative scenarios. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Set index of scenario in multi-scenario models", ShortName = "ScenarioNumber", Description = "When working with multiple scenarios, this parameter selects theindex of the scenario you want to work with. When you query or modify anattribute associated with multiple scenarios(ScenNLB, ScenNUB,ScenNObj, ScenNRHS,etc.), the ScenarioNumber parameter will determine which scenariois actually affected. The value of this parameter should be less thanthe value of the NumScenarios attribute (whichcaptures the number of scenarios in the model). Please refer to the discussion ofMultiple Scenarios formore information on the use of alternative scenarios. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public int? ScenarioNumber { 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 using an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 using an emptyenvironment. Changing the parameter afteryour environment has been created will have no effect. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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> |
SolFiles
During the MIP solution process, multiple incumbent solutions aretypically found on the path to finding a proven optimal solution.Setting this parameter to a non-empty string causes these solutions tobe written to files (in .sol format) asthey are found. The MIP solver will append _n.sol to the valueof the parameter to form the name of the file that contains solutionnumber . For example, setting the parameter tovalue solutions/mymodel will createfiles mymodel_0.sol, mymodel_1.sol, etc., indirectory solutions. Note that intermediate solutions can be retrieved as they aregenerated through acallback (by requesting theMIPSOL_SOL in a MIPSOL callback).This parameter makes the process simpler. 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 = "Location to store intermediate solution files", ShortName = "SolFiles", Description = " During the MIP solution process, multiple incumbent solutions aretypically found on the path to finding a proven optimal solution.Setting this parameter to a non-empty string causes these solutions tobe written to files (in .sol format) asthey are found. The MIP solver will append _n.sol to the valueof the parameter to form the name of the file that contains solutionnumber . For example, setting the parameter tovalue solutions/mymodel will createfiles mymodel_0.sol, mymodel_1.sol, etc., indirectory solutions. Note that intermediate solutions can be retrieved as they aregenerated through acallback (by requesting theMIPSOL_SOL in a MIPSOL callback).This parameter makes the process simpler. 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 SolFiles { get; set; }
Property Value
Type | Description |
---|---|
System.String |
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). One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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). One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 means to onlycheck full MIP starts for feasibility and to ignore partial MIP starts.A value of -3 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 means to onlycheck full MIP starts for feasibility and to ignore partial MIP starts.A value of -3 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). The special value -1 is meant to append new MIP start to a model,but querying a MIP start when StartNumber is -1 will result in anerror. 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). The special value -1 is meant to append new MIP start to a model,but querying a MIP start when StartNumber is -1 will result in anerror. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. We've made the pragmatic choice to impose a soft limit of 32 threadsfor the automatic setting (0). If your machine has more, and you findthat using more increases performance, you should feel free to set theparameter to a larger value. 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. We've made the pragmatic choice to impose a soft limit of 32 threadsfor the automatic setting (0). If your machine has more, and you findthat using more increases performance, you should feel free to set theparameter to a larger value. 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-separated 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-separated 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> |
TuneCleanup
Enables a cleanup phase at the end of tuning. The parameter indicatesthe percentage of total tuning time to devote to this phase, with agoal of reducing the number of parameter changes required to achievethe best tuning result. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "Enables a tuning cleanup phase", ShortName = "TuneCleanup", Description = "Enables a cleanup phase at the end of tuning. The parameter indicatesthe percentage of total tuning time to devote to this phase, with agoal of reducing the number of parameter changes required to achievethe best tuning result. For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public double? TuneCleanup { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
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. Note that for multi-objective problems value 1 and 3 are unsupported.See the Multiple Objectivessection for more details on this. 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. Note that for multi-objective problems value 1 and 3 are unsupported.See the Multiple Objectivessection for more details on this. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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, no matter what settingof UpdateMode you use, if the modification is sitting in thequeue, you'll get the result from before the modification. To expand on this a bit, all attribute modifications are actuallyplaced in a queue. This includes attributes that may nottraditionally be viewed as being part of the model, including thingslike variable branching priorities, constraint basis statuses, etc.Querying the values of these attributes will return their previousvalues if subsequent modifications are still in the queue. The only potential benefit to changing the parameter to 0 is that inunusual cases this setting may allow simplex to make more aggressiveuse of 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, no matter what settingof UpdateMode you use, if the modification is sitting in thequeue, you'll get the result from before the modification. To expand on this a bit, all attribute modifications are actuallyplaced in a queue. This includes attributes that may nottraditionally be viewed as being part of the model, including thingslike variable branching priorities, constraint basis statuses, etc.Querying the values of these attributes will return their previousvalues if subsequent modifications are still in the queue. The only potential benefit to changing the parameter to 0 is that inunusual cases this setting may allow simplex to make more aggressiveuse of 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> |
UserName
Identify the user connecting to the Remote Services Manager. You can provide either a username andpassword,or anaccess ID and asecret key,to authenticate your connection to a Cluster Manager. You can set this parameter through either a gurobi.licfile (using USERNAME=YOUR_USERNAME) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples.
Declaration
[Display(Name = "User name to usewhen connecting to the Cluster Manager", ShortName = "UserName", Description = " Identify the user connecting to the Remote Services Manager. You can provide either a username andpassword,or anaccess ID and asecret key,to authenticate your connection to a Cluster Manager. You can set this parameter through either a gurobi.licfile (using USERNAME=YOUR_USERNAME) or an emptyenvironment. Changing the parameterafter your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values fromour different APIs, refer to ourParameter Examples. ")]
public string UserName { get; set; }
Property Value
Type | Description |
---|---|
System.String |
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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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. One important note about integer-valued parameters: while the maximumvalue that can be stored in a signed integer is , we use aMAXINT value of 2,000,000,000. Attempting to set an integerparameter to a value larger than this maximum will produce an error. 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 |