Class GurobiSolverConfiguration
Allows to configure parameters for the Gurobi solver.
Inherited Members
Namespace: OPTANO.Modeling.Optimization.Solver.Gurobi1000
Assembly: Optimization.Solver.Gurobi1000.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 and columns, 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 maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 and columns, 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 maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? AggFill { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Aggregate
Controls the aggregation level in presolve. The options are off (0), moderate (1), or aggressive (2). In rare instances, aggregation can lead to an accumulation of numerical errors. Turning it off can sometimes improve solution accuracy. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Presolve aggregation control", ShortName = "Aggregate", Description = "Controls the aggregation level in presolve. The options are off (0), moderate (1), or aggressive (2). In rare instances, aggregation can lead to an accumulation of numerical errors. Turning it off can sometimes improve solution accuracy. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? Aggregate { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
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 the primal and dual objective values is less than the specified tolerance (with a GRB_OPTIMAL status). Tightening this tolerance often produces a more accurate solution, which can sometimes reduce the time spent in crossover. Loosening it causes the barrier algorithm to terminate with a less accurate solution, which can be useful when barrier is making very slow progress in later iterations. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Barrier convergence tolerance", ShortName = "BarConvTol", Description = "The barrier solver terminates when the relative difference between the primal and dual objective values is less than the specified tolerance (with a GRB_OPTIMAL status). Tightening this tolerance often produces a more accurate solution, which can sometimes reduce the time spent in crossover. Loosening it causes the barrier algorithm to terminate with a less accurate solution, which can be useful when barrier is making very slow progress in later iterations. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? BarConvTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
BarCorrectors
Limits the number of central corrections performed in each barrier iteration. The default value chooses automatically, depending on problem characteristics. The automatic strategy generally works well, although it is often possible to obtain higher performance on a specific model by selecting a value manually. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Central correction limit", ShortName = "BarCorrectors", Description = "Limits the number of central corrections performed in each barrier iteration. The default value chooses automatically, depending on problem characteristics. The automatic strategy generally works well, although it is often possible to obtain higher performance on a specific model by selecting a value manually. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? BarCorrectors { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
BarHomogeneous
Determines whether to use the homogeneous barrier algorithm. At the default setting (-1), it is only used when barrier solves a node relaxation for a MIP model. Setting the parameter to 0 turns it off, and setting it to 1 forces it on. The homogeneous algorithm is useful for recognizing infeasibility or unboundedness. It is a bit slower than the default algorithm. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Barrier homogeneous algorithm", ShortName = "BarHomogeneous", Description = "Determines whether to use the homogeneous barrier algorithm. At the default setting (-1), it is only used when barrier solves a node relaxation for a MIP model. Setting the parameter to 0 turns it off, and setting it to 1 forces it on. The homogeneous algorithm is useful for recognizing infeasibility or unboundedness. It is a bit slower than the default algorithm. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? BarHomogeneous { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
BarIterLimit
Limits the number of barrier iterations performed. This parameter is rarely used. If you would like barrier to terminate early, it is almost always better to use the BarConvTol parameter instead. Optimization returns with an ITERATION_LIMIT status if the limit is exceeded (see the Status Code section for further details). Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Barrier iteration limit", ShortName = "BarIterLimit", Description = "Limits the number of barrier iterations performed. This parameter is rarely used. If you would like barrier to terminate early, it is almost always better to use the BarConvTol parameter instead. Optimization returns with an ITERATION_LIMIT status if the limit is exceeded (see the Status Code section for further details). Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 of 0 chooses Approximate Minimum Degree ordering, while a value of 1 chooses Nested Dissection ordering. The default value of -1 chooses automatically. You should only modify this parameter if you notice that the barrier ordering phase is consuming a significant fraction of the overall barrier runtime. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Barrier ordering algorithm", ShortName = "BarOrder", Description = "Chooses the barrier sparse matrix fill-reducing algorithm. A value of 0 chooses Approximate Minimum Degree ordering, while a value of 1 chooses Nested Dissection ordering. The default value of -1 chooses automatically. You should only modify this parameter if you notice that the barrier ordering phase is consuming a significant fraction of the overall barrier runtime. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 the relative difference between the primal and dual objective values is less than the specified tolerance (with a GRB_OPTIMAL status). Tightening this tolerance may lead to a more accurate solution, but it may also lead to a failure to converge. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Barrier QCP convergence tolerance", ShortName = "BarQCPConvTol", Description = "When solving a QCP model, the barrier solver terminates when the relative difference between the primal and dual objective values is less than the specified tolerance (with a GRB_OPTIMAL status). Tightening this tolerance may lead to a more accurate solution, but it may also lead to a failure to converge. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 the objective 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 termination criterion may not actually lead to termination due to numerical round-off in the bound. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Best objective bound to stop", ShortName = "BestBdStop", Description = "Terminates as soon as the engine determines that the best bound on the objective 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 termination criterion may not actually lead to termination due to numerical round-off in the bound. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 whose objective 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 termination criterion may not actually lead to termination due to numerical round-off in the objective. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Best objective value to stop", ShortName = "BestObjStop", Description = "Terminate as soon as the engine finds a feasible solution whose objective 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 termination criterion may not actually lead to termination due to numerical round-off in the objective. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "BQP cut generation", ShortName = "BQPCuts", Description = "Controls Boolean Quadric Polytope (BQP) 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 from our different APIs, refer to our Parameter 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-cut search. The default value chooses automatically. A value of -1 will always explore the down branch first, while a value of 1 will always explore the up branch first. Changing the value of this parameter rarely produces a significant benefit. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Branch direction preference", ShortName = "BranchDir", Description = "Determines which child node is explored first in the branch-and-cut search. The default value chooses automatically. A value of -1 will always explore the down branch first, while a value of 1 will always explore the up branch first. Changing the value of this parameter rarely produces a significant benefit. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 for moderate cut generation, or 2 for aggressive cut generation. The default -1 value choose automatically. Overrides the Cuts parameter. We have observed that setting this parameter to its aggressive setting can produce a significant benefit for some large set partitioning models. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Clique cut generation", ShortName = "CliqueCuts", Description = "Controls clique cut generation. Use 0 to disable these cuts, 1 for moderate cut generation, or 2 for aggressive cut generation. The default -1 value choose automatically. Overrides the Cuts parameter. We have observed that setting this parameter to its aggressive setting can produce a significant benefit for some large set partitioning models. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 license when launching a new instance. You can retrieve this string from your account on the Gurobi Instant Cloud Manager website. You must set this parameter through either a gurobi.lic file (using CLOUDACCESSID=id) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Access ID for Gurobi Instant Cloud", ShortName = "CloudAccessID", Description = " Set this parameter to the Access ID for your Instant Cloud license when launching a new instance. You can retrieve this string from your account on the Gurobi Instant Cloud Manager website. You must set this parameter through either a gurobi.lic file (using CLOUDACCESSID=id) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 empty environment. Changing the parameter after your environment has been started will result in an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 empty environment. Changing the parameter after your environment has been started will result in an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 use for your new Instant Cloud instance. You can browse your existing cloud pools or create new ones from your account on the Gurobi Instant Cloud Manager website. You must set this parameter through either a gurobi.lic file (using CLOUDPOOL=pool) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 use for your new Instant Cloud instance. You can browse your existing cloud pools or create new ones from your account on the Gurobi Instant Cloud Manager website. You must set this parameter through either a gurobi.lic file (using CLOUDPOOL=pool) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string CloudPool { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CloudSecretKey
Set this parameter to the Secret Key for your Instant Cloud license when launching a new instance. You can retrieve this string from your account on the Gurobi Instant Cloud Manager website. You must set this parameter through either a gurobi.lic file (using CLOUDSECRETKEY=key) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Secret Key for Gurobi Instant Cloud", ShortName = "CloudSecretKey", Description = " Set this parameter to the Secret Key for your Instant Cloud license when launching a new instance. You can retrieve this string from your account on the Gurobi Instant Cloud Manager website. You must set this parameter through either a gurobi.lic file (using CLOUDSECRETKEY=key) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 Services cluster where you'd like your Compute Server job to run. You can refer to the server using its name or its IP address. If you are using a non-default port, the server name should be followed by the port number (e.g., server1:61000). You will also need to set the ServerPassword parameter 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 be tried, etc. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file (using COMPUTESERVER=server) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 Services cluster where you'd like your Compute Server job to run. You can refer to the server using its name or its IP address. If you are using a non-default port, the server name should be followed by the port number (e.g., server1:61000). You will also need to set the ServerPassword parameter 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 be tried, etc. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file (using COMPUTESERVER=server) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string ComputeServer { get; set; }
Property Value
Type | Description |
---|---|
System.String |
ConcurrentJobs
Enables distributed concurrent optimization, which can be used to solve LP or MIP models on multiple machines. A value of n causes the solver to create n independent models, using different parameter settings for each. Each of these models is sent to a distributed worker for processing. Optimization terminates when the first solve completes. Use the ComputeServer parameter to indicate the name of the cluster where you would like your distributed concurrent job to run (or use WorkerPool if your client machine will act as manager and you just need a pool of workers). By default, Gurobi chooses the parameter settings used for each independent solve automatically. You can create concurrent environments to choose your own parameter settings (refer to the concurrent optimization section for details). The intent of concurrent MIP solving is to introduce additional diversity into the MIP search. By bringing the resources of multiple machines to bear on a single model, this approach can sometimes solve models much faster than a single machine. The distributed concurrent solver produces a slightly different log from the standard solver, and provides different callbacks as well. Please refer to the Distributed Algorithms section of the Gurobi Remote Services Reference Manual for additional details. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Enables distributed concurrent solver", ShortName = "ConcurrentJobs", Description = "Enables distributed concurrent optimization, which can be used to solve LP or MIP models on multiple machines. A value of n causes the solver to create n independent models, using different parameter settings for each. Each of these models is sent to a distributed worker for processing. Optimization terminates when the first solve completes. Use the ComputeServer parameter to indicate the name of the cluster where you would like your distributed concurrent job to run (or use WorkerPool if your client machine will act as manager and you just need a pool of workers). By default, Gurobi chooses the parameter settings used for each independent solve automatically. You can create concurrent environments to choose your own parameter settings (refer to the concurrent optimization section for details). The intent of concurrent MIP solving is to introduce additional diversity into the MIP search. By bringing the resources of multiple machines to bear on a single model, this approach can sometimes solve models much faster than a single machine. The distributed concurrent solver produces a slightly different log from the standard solver, and provides different callbacks as well. Please refer to the Distributed Algorithms section of the Gurobi Remote Services Reference Manual for additional details. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? ConcurrentJobs { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ConcurrentMIP
This parameter enables the concurrent MIP solver. When the parameter is set to value n, the MIP solver performs n independent MIP solves in parallel, with different parameter settings for each. Optimization terminates when the first solve completes. By default, Gurobi chooses the parameter settings used for each independent solve automatically. You can create concurrent environments to choose your own parameter settings (refer to the concurrent optimization section for details). The intent of concurrent MIP solving is to introduce additional diversity into the MIP search. This approach can sometimes solve models much faster than applying all available threads to a single MIP solve, especially on very large parallel machines. The concurrent MIP solver divides available threads evenly among the independent solves. For example, if you have 6 threads available and you set ConcurrentMIP to 2, the concurrent MIP solver will allocate 3 threads to each independent solve. Note that the number of independent solves launched will not exceed the number of available threads. The concurrent MIP solver produces a slightly different log from the standard MIP solver, and provides different callbacks as well. Please refer to the concurrent optimizer discussion for additional details. Concurrent MIP is not deterministic. If runtimes for different independent solves are very similar, and if the model has multiple optimal solutions, you may get slightly different results from multiple runs on the same model. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Enables concurrent MIP solver", ShortName = "ConcurrentMIP", Description = "This parameter enables the concurrent MIP solver. When the parameter is set to value n, the MIP solver performs n independent MIP solves in parallel, with different parameter settings for each. Optimization terminates when the first solve completes. By default, Gurobi chooses the parameter settings used for each independent solve automatically. You can create concurrent environments to choose your own parameter settings (refer to the concurrent optimization section for details). The intent of concurrent MIP solving is to introduce additional diversity into the MIP search. This approach can sometimes solve models much faster than applying all available threads to a single MIP solve, especially on very large parallel machines. The concurrent MIP solver divides available threads evenly among the independent solves. For example, if you have 6 threads available and you set ConcurrentMIP to 2, the concurrent MIP solver will allocate 3 threads to each independent solve. Note that the number of independent solves launched will not exceed the number of available threads. The concurrent MIP solver produces a slightly different log from the standard MIP solver, and provides different callbacks as well. Please refer to the concurrent optimizer discussion for additional details. Concurrent MIP is not deterministic. If runtimes for different independent solves are very similar, and if the model has multiple optimal solutions, you may get slightly different results from multiple runs on the same model. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Cover cut generation", ShortName = "CoverCuts", Description = "Controls cover 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 from our different APIs, refer to our Parameter Examples. ")]
public int? CoverCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Crossover
Determines the crossover strategy used to transform the interior solution produced by barrier into a basic solution (note that crossover is not available for QP or QCP models). Crossover consists of three phases: (i) a primal push phase, where primal variables are pushed to bounds, (ii) a dual push phase, where dual variables are pushed to bounds, and (iii) a cleanup phase, where simplex is used to remove any primal or dual infeasibilities that remain after the push phases are complete. The order of the first two phases and the algorithm used for the third phase are both controlled by the Crossover parameter: The default value of -1 chooses the strategy automatically. Use value 0 to disable crossover; this setting returns the interior solution computed by barrier. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Barrier crossover strategy", ShortName = "Crossover", Description = "Determines the crossover strategy used to transform the interior solution produced by barrier into a basic solution (note that crossover is not available for QP or QCP models). Crossover consists of three phases: (i) a primal push phase, where primal variables are pushed to bounds, (ii) a dual push phase, where dual variables are pushed to bounds, and (iii) a cleanup phase, where simplex is used to remove any primal or dual infeasibilities that remain after the push phases are complete. The order of the first two phases and the algorithm used for the third phase are both controlled by the Crossover parameter: The default value of -1 chooses the strategy automatically. Use value 0 to disable crossover; this setting returns the interior solution computed by barrier. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? Crossover { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
CrossoverBasis
Determines the initial basis construction strategy for crossover. A value of 0 chooses an initial basis quickly. A value of 1 can take much longer, but often produces a more numerically stable start basis. The default value of -1 makes an automatic choice. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Crossover initial basis construction strategy", ShortName = "CrossoverBasis", Description = "Determines the initial basis construction strategy for crossover. A value of 0 chooses an initial basis quickly. A value of 1 can take much longer, but often produces a more numerically stable start basis. The default value of -1 makes an automatic choice. Note: Barrier only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? CrossoverBasis { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
CSAPIAccessID
A unique identifier used to authenticate an application on a Gurobi Cluster Manager. You can provide either an access ID and a secret key, or a username and password, to authenticate your connection to a Cluster Manager. You must set this parameter through either a gurobi.lic file (using CSAPIACCESSID=YOUR_API_ID) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Access ID forGurobi Cluster Manager", ShortName = "CSAPIAccessID", Description = " A unique identifier used to authenticate an application on a Gurobi Cluster Manager. You can provide either an access ID and a secret key, or a username and password, to authenticate your connection to a Cluster Manager. You must set this parameter through either a gurobi.lic file (using CSAPIACCESSID=YOUR_API_ID) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 an access ID and a secret key, or a username and password, to authenticate your connection to a Cluster Manager. You must set this parameter through either a gurobi.lic file (using CSAPISECRET=YOUR_API_SECRET_KEY) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 an access ID and a secret key, or a username and password, to authenticate your connection to a Cluster Manager. You must set this parameter through either a gurobi.lic file (using CSAPISECRET=YOUR_API_SECRET_KEY) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 which application is submitting the batches or jobs. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 which application is submitting the batches or jobs. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string CSAppName { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSAuthToken
When a client authenticates with a Cluster Manager using a username and password, a signed token is returned by the server to be used in further calls or command-line operations. It is used internally. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Token used internally for authentication", ShortName = "CSAuthToken", Description = " When a client authenticates with a Cluster Manager using a username and password, a signed token is returned by the server to be used in further calls or command-line operations. It is used internally. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string CSAuthToken { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSBatchMode
When set to 1, enable the local creation of models, and later submit batch-optimization jobs to the Cluster Manager. See the Batch Optimization section for more details. Note that if CSBatchMode is enabled, only batch-optimization calls are allowed. You must set this parameter through either a gurobi.lic file (using CSBATCHMODE=1) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "ControlsBatch-Mode optimization", ShortName = "CSBatchMode", Description = "When set to 1, enable the local creation of models, and later submit batch-optimization jobs to the Cluster Manager. See the Batch Optimization section for more details. Note that if CSBatchMode is enabled, only batch-optimization calls are allowed. You must set this parameter through either a gurobi.lic file (using CSBATCHMODE=1) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 error messages (1), information and error messages (2), or (3) verbose, information, and error messages. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Turns loggingon or off", ShortName = "CSClientLog", Description = "Turns logging on or off for Compute Server. Options are off (0), only error messages (1), information and error messages (2), or (3) verbose, information, and error messages. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 placement of the job. The list is a comma-separated string of group names, with optionally a priority for a group. For example, specifying group1:10,group2:50 means that the job will run on machines of group1 or group2, and if the job is queued, it will have priority 10 on group1 and 50 on group2. Note that if the group is not specified, the job may run on any node. If there are no nodes in the cluster having the specified groups, the job will be rejected. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs and in particular to Gurobi Remote Services cluster Grouping for more information on grouping cluster nodes. You must set this parameter through either a license file (using GROUP=name) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Group placement request for cluster", ShortName = "CSGroup", Description = " Specifies one or more groups of cluster nodes to control the placement of the job. The list is a comma-separated string of group names, with optionally a priority for a group. For example, specifying group1:10,group2:50 means that the job will run on machines of group1 or group2, and if the job is queued, it will have priority 10 on group1 and 50 on group2. Note that if the group is not specified, the job may run on any node. If there are no nodes in the cluster having the specified groups, the job will be rejected. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs and in particular to Gurobi Remote Services cluster Grouping for more information on grouping cluster nodes. You must set this parameter through either a license file (using GROUP=name) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 Server job can sit idle before the server kills the job (in seconds). A job is considered idle if the server is not currently performing an optimization and the client has not issued any additional commands. The default value will allow a job to sit idle indefinitely in all but one circumstance. Currently the only exception is the Gurobi Instant Cloud, where the default setting will automatically impose a 30 minute idle time limit (1800 seconds). If you are using an Instant Cloud pool, the actual value will be the maximum between this parameter value and the idle timeout defined by the pool. You must set this parameter through either a gurobi.lic file (using IDLETIMEOUT=n) or an empty environment. Changing the parameter after your environment has been created will have no effect. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 Server job can sit idle before the server kills the job (in seconds). A job is considered idle if the server is not currently performing an optimization and the client has not issued any additional commands. The default value will allow a job to sit idle indefinitely in all but one circumstance. Currently the only exception is the Gurobi Instant Cloud, where the default setting will automatically impose a 30 minute idle time limit (1800 seconds). If you are using an Instant Cloud pool, the actual value will be the maximum between this parameter value and the idle timeout defined by the pool. You must set this parameter through either a gurobi.lic file (using IDLETIMEOUT=n) or an empty environment. Changing the parameter after your environment has been created will have no effect. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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.lic file (using CSMANAGER=YOUR_MANAGER_URL) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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.lic file (using CSMANAGER=YOUR_MANAGER_URL) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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). Higher priority jobs are chosen from the server job queue before lower priority jobs. A job with priority 100 runs immediately, bypassing the job queue and ignoring the job limit on the server. You should exercise caution with priority 100 jobs, since they can severely overload a server, which can cause jobs to fail, and in extreme cases can cause the server to crash. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file (using PRIORITY=n) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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). Higher priority jobs are chosen from the server job queue before lower priority jobs. A job with priority 100 runs immediately, bypassing the job queue and ignoring the job limit on the server. You should exercise caution with priority 100 jobs, since they can severely overload a server, which can cause jobs to fail, and in extreme cases can cause the server to crash. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file (using PRIORITY=n) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 a new Compute Server job will wait in queue before it gives up (and reports a JOB_REJECTED error). Note that there might be a delay of up to 20 seconds for the actual signaling of the time out. Any negative value will allow a job to sit in the Compute Server queue indefinitely. You must set this parameter through a gurobi.lic file (using QUEUETIMEOUT=n) or an empty environment. Changing the parameter after your environment has been created will have no effect. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 a new Compute Server job will wait in queue before it gives up (and reports a JOB_REJECTED error). Note that there might be a delay of up to 20 seconds for the actual signaling of the time out. Any negative value will allow a job to sit in the Compute Server queue indefinitely. You must set this parameter through a gurobi.lic file (using QUEUETIMEOUT=n) or an empty environment. Changing the parameter after your environment has been created will have no effect. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 used to improve the robustness of a Compute Server deployment. You can refer to the router using either its name or its IP address. A typical Remote Services deployment won't use a router, so you typically won't need to set this parameter. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file (using ROUTER=name) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 used to improve the robustness of a Compute Server deployment. You can refer to the router using either its name or its IP address. A typical Remote Services deployment won't use a router, so you typically won't need to set this parameter. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file (using ROUTER=name) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string CSRouter { get; set; }
Property Value
Type | Description |
---|---|
System.String |
CSTLSInsecure
Indicates whether the Remote Services cluster is using insecure mode in the TLS (Transport Layer Security). Set this to 0 unless your server administrator tells you otherwise. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file (using CSTLSINSECURE) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Use insecure mode in Transport Layer Security (TLS)", ShortName = "CSTLSInsecure", Description = "Indicates whether the Remote Services cluster is using insecure mode in the TLS (Transport Layer Security). Set this to 0 unless your server administrator tells you otherwise. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter through either a gurobi.lic file (using CSTLSINSECURE) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public bool? CSTLSInsecure { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
CutAggPasses
A non-negative value indicates the maximum number of constraint aggregation passes performed during cut generation. Overrides the Cuts parameter. Changing the value of this parameter rarely produces a significant benefit. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Constraint aggregation passes performed during cut generation", ShortName = "CutAggPasses", Description = "A non-negative value indicates the maximum number of constraint aggregation passes performed during cut generation. Overrides the Cuts parameter. Changing the value of this parameter rarely produces a significant benefit. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 values are worse than the specified value. If the objective value for the optimal solution is equal to or better than the specified cutoff, the solver will return the optimal solution. Otherwise, it will terminate with a CUTOFF status (see the Status Code section for further details). For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Objective cutoff", ShortName = "Cutoff", Description = "Indicates that you aren't interested in solutions whose objective values are worse than the specified value. If the objective value for the optimal solution is equal to or better than the specified cutoff, the solver will return the optimal solution. Otherwise, it will terminate with a CUTOFF status (see the Status Code section for further details). For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 plane passes performed during root cut generation. The default value chooses the number of cut passes automatically. In addition to cutting plane separation, each cut pass also applies heuristicsand node probing and also may launch parallel root helper threads. So even when the Cuts parameter is set to 0, the cut loop will apply probing, heuristics and parallel root helpers in a single cut loop iteration. You should experiment with different values of this parameter if you notice the MIP solver spending significant time on root cut passes that have little impact on the objective bound. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Root cutting plane pass limit", ShortName = "CutPasses", Description = "A non-negative value indicates the maximum number of cutting plane passes performed during root cut generation. The default value chooses the number of cut passes automatically. In addition to cutting plane separation, each cut pass also applies heuristicsand node probing and also may launch parallel root helper threads. So even when the Cuts parameter is set to 0, the cut loop will apply probing, heuristics and parallel root helpers in a single cut loop iteration. You should experiment with different values of this parameter if you notice the MIP solver spending significant time on root cut passes that have little impact on the objective bound. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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, 1 for moderate cut generation, 2 for aggressive cut generation, and 3 for very aggressive cut generation. The default -1 value chooses automatically. This parameter is overridden 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Global cut generation control", ShortName = "Cuts", Description = "Global cut aggressiveness setting. Use value 0 to shut off cuts, 1 for moderate cut generation, 2 for aggressive cut generation, and 3 for very aggressive cut generation. The default -1 value chooses automatically. This parameter is overridden 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 from our different APIs, refer to our Parameter 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 improve the integrality of the current relaxation solution. By default, the algorithm chooses the number of degenerate move passes to perform automatically. The default setting generally works well, but there can be cases where an excessive amount of time is spent after the initial root relaxation has been solved but before the cut generation process or the root heuristics have started. If you see multiple 'Total elapsed time' messages in the log immediately after the root relaxation log, you may want 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Degenerate simplex moves", ShortName = "DegenMoves", Description = "Limits degenerate simplex moves. These moves are performed to improve the integrality of the current relaxation solution. By default, the algorithm chooses the number of degenerate move passes to perform automatically. The default setting generally works well, but there can be cases where an excessive amount of time is spent after the initial root relaxation has been solved but before the cut generation process or the root heuristics have started. If you see multiple 'Total elapsed time' messages in the log immediately after the root relaxation log, you may want 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 from our different APIs, refer to our Parameter 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, completely independent sub-models. This parameter controls how aggressively we try to exploit this structure. A value of 0 ignores this structure entirely, while larger values try more aggressive approaches. 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Disconnected component strategy", ShortName = "Disconnected", Description = "A MIP model can sometimes be made up of multiple, completely independent sub-models. This parameter controls how aggressively we try to exploit this structure. A value of 0 ignores this structure entirely, while larger values try more aggressive approaches. 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 from our different APIs, refer to our Parameter 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 maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? DisplayInterval { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
DistributedMIPJobs
Enables distributed MIP. A value of n causes the MIP solver to divide the work of solving a MIP model among n machines. Use the ComputeServer parameter to indicate the name of the cluster where you would like your distributed MIP job to run (or use WorkerPool if your client machine will act as manager and you just need a pool of workers). The distributed MIP solver produces a slightly different log from the standard MIP solver, and provides different callbacks as well. Please refer to the Distributed Algorithms section of the Gurobi Remote Services Reference Manual for additional details. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Enables the distributed MIP solver", ShortName = "DistributedMIPJobs", Description = "Enables distributed MIP. A value of n causes the MIP solver to divide the work of solving a MIP model among n machines. Use the ComputeServer parameter to indicate the name of the cluster where you would like your distributed MIP job to run (or use WorkerPool if your client machine will act as manager and you just need a pool of workers). The distributed MIP solver produces a slightly different log from the standard MIP solver, and provides different callbacks as well. Please refer to the Distributed Algorithms section of the Gurobi Remote Services Reference Manual for additional details. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples. ")]
public int? DistributedMIPJobs { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
DualReductions
Determines whether dual reductions are performed during the optimization process. You should disable these reductions if you received an optimization status of INF_OR_UNBD and would like a more definitive conclusion. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Disables dual reductions in presolve", ShortName = "DualReductions", Description = "Determines whether dual reductions are performed during the optimization process. You should disable these reductions if you received an optimization status of INF_OR_UNBD and would like a more definitive conclusion. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public bool? DualReductions { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
FeasibilityTol
All constraints must be satisfied to a tolerance of FeasibilityTol. Tightening this tolerance can produce smaller constraint violations, but for numerically challenging models it can sometimes lead to much larger iteration counts. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Primal feasibility tolerance", ShortName = "FeasibilityTol", Description = "All constraints must be satisfied to a tolerance of FeasibilityTol. Tightening this tolerance can produce smaller constraint violations, but for numerically challenging models it can sometimes lead to much larger iteration counts. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? FeasibilityTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FeasRelaxBigM
When relaxing a constraint in a feasibility relaxation, it is sometimes necessary to introduce a big-M value. This parameter determines the default magnitude of that value. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Big-M value for feasibility relaxations", ShortName = "FeasRelaxBigM", Description = "When relaxing a constraint in a feasibility relaxation, it is sometimes necessary to introduce a big-M value. This parameter determines the default magnitude of that value. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter Examples. ")]
public int? FlowPathCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
FuncMaxVal
Very large values in piecewise-linear approximations can cause numerical issues. This parameter limits the bounds on the variables that participate in function constraints. Specifically, if or participate in a function constraint, any bound larger than FuncMaxVal (in absolute value) will be truncated. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 cause numerical issues. This parameter limits the bounds on the variables that participate in function constraints. Specifically, if or participate in a function constraint, any bound larger than FuncMaxVal (in absolute value) will be truncated. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? FuncMaxVal { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FuncPieceError
If the FuncPieces parameter is set to value or , this attribute provides the maximum allowed error (absolute for , relative for ) in the piecewise-linear approximation. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Error allowed for PWL translation of function constraint", ShortName = "FuncPieceError", Description = "If the FuncPieces parameter is set to value or , this attribute provides the maximum allowed error (absolute for , relative for ) in the piecewise-linear approximation. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? FuncPieceError { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FuncPieceLength
If the FuncPieces parameter is set to value , this parameter gives the length of each piece of the piecewise-linear approximation. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Piece length for PWL translation of function constraint", ShortName = "FuncPieceLength", Description = "If the FuncPieces parameter is set to value , this parameter gives the length of each piece of the piecewise-linear approximation. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? FuncPieceLength { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FuncPieceRatio
This parameter controls whether the piecewise-linear approximation of a function constraint is an underestimate of the function, an overestimate, or somewhere in between. A value of will always underestimate, while a value of will always overestimate. A value in between will interpolate between the underestimate and the overestimate. A special value of -1 chooses points that are on the original function. See the discussion of function constraints for more information. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 of a function constraint is an underestimate of the function, an overestimate, or somewhere in between. A value of will always underestimate, while a value of will always overestimate. A value in between will interpolate between the underestimate and the overestimate. A special value of -1 chooses points that are on the original function. See the discussion of function constraints for more information. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? FuncPieceRatio { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
FuncPieces
This parameter sets the strategy used for performing a piecewise-linear approximation of a function constraint. There are a few options: This parameter only applies to function constraints whose FuncPieces attribute has been set to . See the discussion of function constraints for more information. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Sets strategy for PWL function approximation", ShortName = "FuncPieces", Description = "This parameter sets the strategy used for performing a piecewise-linear approximation of a function constraint. There are a few options: This parameter only applies to function constraints whose FuncPieces attribute has been set to . See the discussion of function constraints for more information. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 passes performed. Overrides the Cuts parameter. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Root Gomory cut pass limit", ShortName = "GomoryPasses", Description = "A non-negative value indicates the maximum number of Gomory cut passes performed. Overrides the Cuts parameter. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "GUB cover cut generation", ShortName = "GUBCoverCuts", Description = "Controls GUB cover 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 from our different APIs, refer to our Parameter 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 think of the value as the desired fraction of total MIP runtime devoted to heuristics (so by default, we aim to spend 5% of runtime on heuristics). Larger values produce more and better feasible solutions, 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Turn MIP heuristics up or down", ShortName = "Heuristics", Description = "Determines the amount of time spent in MIP heuristics. You can think of the value as the desired fraction of total MIP runtime devoted to heuristics (so by default, we aim to spend 5% of runtime on heuristics). Larger values produce more and better feasible solutions, 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 from our different APIs, refer to our Parameter 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 will ignore the associated names. Names for objectives and the model will also be ignored. In addition, subsequent calls to modify name attributes will have no effect. Note that variables or constraints that had names at the point this parameter was changed to 1 will retain their names. If you wish to discard all name information, you should set this parameter to 1 before adding variables or constraints to the model. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 will ignore the associated names. Names for objectives and the model will also be ignored. In addition, subsequent calls to modify name attributes will have no effect. Note that variables or constraints that had names at the point this parameter was changed to 1 will retain their names. If you wish to discard all name information, you should set this parameter to 1 before adding variables or constraints to the model. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 method 1 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 if the relaxation is infeasible, even though the result may not be minimal when integrality constraints are included. The default value of -1 chooses automatically. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "IIS method", ShortName = "IISMethod", Description = "Chooses the IIS method to use. Method 0 is often faster, while method 1 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 if the relaxation is infeasible, even though the result may not be minimal when integrality constraints are included. The default value of -1 chooses automatically. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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, 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Implied bound cut generation", ShortName = "ImpliedCuts", Description = "Controls implied bound 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 from our different APIs, refer to our Parameter 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 the search in order to adopt a strategy that gives up on moving the best bound and instead devotes all of its effort towards finding better feasible solutions. This parameter allows you to specify an optimality gap at which the MIP solver switches to a solution improvement strategy. For example, setting this parameter to 0.1 will cause the MIP solver to switch strategies once the relative optimality gap is smaller than 0.1. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Trigger solution improvement", ShortName = "ImproveStartGap", Description = "The MIP solver can change parameter settings in the middle of the search in order to adopt a strategy that gives up on moving the best bound and instead devotes all of its effort towards finding better feasible solutions. This parameter allows you to specify an optimality gap at which the MIP solver switches to a solution improvement strategy. For example, setting this parameter to 0.1 will cause the MIP solver to switch strategies once the relative optimality gap is smaller than 0.1. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 the search in order to adopt a strategy that gives up on moving the best bound and instead devotes all of its effort towards finding better feasible solutions. This parameter allows you to specify the node count at which the MIP solver switches to a solution improvement strategy. For example, setting this parameter to 10 will cause the MIP solver to switch strategies once the node count is larger than 10. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Trigger solution improvement", ShortName = "ImproveStartNodes", Description = "The MIP solver can change parameter settings in the middle of the search in order to adopt a strategy that gives up on moving the best bound and instead devotes all of its effort towards finding better feasible solutions. This parameter allows you to specify the node count at which the MIP solver switches to a solution improvement strategy. For example, setting this parameter to 10 will cause the MIP solver to switch strategies once the node count is larger than 10. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 the search in order to adopt a strategy that gives up on moving the best bound and instead devotes all of its effort towards finding better feasible solutions. This parameter allows you to specify the time when the MIP solver switches to a solution improvement strategy. For example, setting this parameter to 10 will cause the MIP solver to switch 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Trigger solution improvement", ShortName = "ImproveStartTime", Description = "The MIP solver can change parameter settings in the middle of the search in order to adopt a strategy that gives up on moving the best bound and instead devotes all of its effort towards finding better feasible solutions. This parameter allows you to specify the time when the MIP solver switches to a solution improvement strategy. For example, setting this parameter to 10 will cause the MIP solver to switch 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 from our different APIs, refer to our Parameter 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, 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Infeasibility proof cut generation", ShortName = "InfProofCuts", Description = "Controls infeasibility proof 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 from our different APIs, refer to our Parameter Examples. ")]
public int? InfProofCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
InfUnbdInfo
Determines whether simplex (and crossover) will compute additional information when a model is determined to be infeasible or unbounded. Set this parameter if you want to query the unbounded ray for unbounded models (through the UnbdRay attribute), or the infeasibility proof for infeasible models (through the FarkasDual and FarkasProof attributes). 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 use the DualReductions parameter instead. It performs much less additional computation. Note: Only affects linear programming (LP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Generate additional info for infeasible/unbounded models", ShortName = "InfUnbdInfo", Description = "Determines whether simplex (and crossover) will compute additional information when a model is determined to be infeasible or unbounded. Set this parameter if you want to query the unbounded ray for unbounded models (through the UnbdRay attribute), or the infeasibility proof for infeasible models (through the FarkasDual and FarkasProof attributes). 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 use the DualReductions parameter instead. It performs much less additional computation. Note: Only affects linear programming (LP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 always take exact integral values. While this typically doesn't create significant problems, in some situations the side-effects can be quite undesirable. The best-known example is probably a trickle flow, where a continuous variable that is meant to be zero when an associated binary variable is zero instead takes a non-trivial value. More precisely, given a constraint , where is a non-negative continuous variable, is a binary variable, and is a constant that captures the largest possible value of , the constraint is intended to enforce the relationship that must be zero if is zero. With the default integer feasibility tolerance, the binary variable is allowed to take a value as large as while still being considered as taking value zero. If the value is large, then the upper bound on the variable can be substantial. Reducing the value of the IntFeasTol parameter can mitigate the effects of such trickle flows, but often at a significant cost, and often with limited success. The IntegralityFocus parameter provides a better alternative. Setting this parameter to 1 requests that the solver work harder to try to avoid solutions that exploit integrality tolerances. More precisely, the solver tries to find solutions that are still (nearly) feasible if all integer variables are rounded to exact integral values. We should say that the solver won't always succeed in finding such solutions, and that this setting introduces a modest performance penalty, but the setting will significantly reduce the frequency and magnitude of such violations. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Set the integrality focus", ShortName = "IntegralityFocus", Description = "One unfortunate reality in MIP is that integer variables don't always take exact integral values. While this typically doesn't create significant problems, in some situations the side-effects can be quite undesirable. The best-known example is probably a trickle flow, where a continuous variable that is meant to be zero when an associated binary variable is zero instead takes a non-trivial value. More precisely, given a constraint , where is a non-negative continuous variable, is a binary variable, and is a constant that captures the largest possible value of , the constraint is intended to enforce the relationship that must be zero if is zero. With the default integer feasibility tolerance, the binary variable is allowed to take a value as large as while still being considered as taking value zero. If the value is large, then the upper bound on the variable can be substantial. Reducing the value of the IntFeasTol parameter can mitigate the effects of such trickle flows, but often at a significant cost, and often with limited success. The IntegralityFocus parameter provides a better alternative. Setting this parameter to 1 requests that the solver work harder to try to avoid solutions that exploit integrality tolerances. More precisely, the solver tries to find solutions that are still (nearly) feasible if all integer variables are rounded to exact integral values. We should say that the solver won't always succeed in finding such solutions, and that this setting introduces a modest performance penalty, but the setting will significantly reduce the frequency and magnitude of such violations. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public bool? IntegralityFocus { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
IntFeasTol
An integrality restriction on a variable is considered satisfied when the variable's value is less than IntFeasTol from the nearest integer value. Tightening this tolerance can produce smaller integrality violations, but very tight tolerances may significantly increase 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Integer feasibility tolerance", ShortName = "IntFeasTol", Description = "An integrality restriction on a variable is considered satisfied when the variable's value is less than IntFeasTol from the nearest integer value. Tightening this tolerance can produce smaller integrality violations, but very tight tolerances may significantly increase 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 from our different APIs, refer to our Parameter 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 applies to MIP, barrier crossover, and simplex. Optimization returns with an ITERATION_LIMIT status if the limit is exceeded (see the Status Code section for further details). For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Simplex iteration limit", ShortName = "IterationLimit", Description = "Limits the number of simplex iterations performed. The limit applies to MIP, barrier crossover, and simplex. Optimization returns with an ITERATION_LIMIT status if the limit is exceeded (see the Status Code section for further details). For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 the Compute Server Job ID for the current job. Note that this is a read-only parameter. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Job ID of current job", ShortName = "JobID", Description = " If you are running on a Compute Server, this parameter provides the Compute Server Job ID for the current job. Note that this is a read-only parameter. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string JobID { get; set; }
Property Value
Type | Description |
---|---|
System.String |
JSONSolDetail
This parameter controls the amount of detail included in a JSON solution. For example, when this parameter is set to 1, the JSON string will contain data for all of the variables, even those with solution value 0. For a precise description of the contents of the resulting JSON string, please refer to the JSON solution format section. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 JSON solution. For example, when this parameter is set to 1, the JSON string will contain data for all of the variables, even those with solution value 0. For a precise description of the contents of the resulting JSON string, please refer to the JSON solution format section. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 this parameter to value 1. The parameter tells the Gurobi algorithms to avoid certain reductions and transformations that are incompatible with lazy constraints. Note that if you use lazy constraints by setting the Lazy attribute (and not through a callback), 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 from our different APIs, refer to our Parameter 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 this parameter to value 1. The parameter tells the Gurobi algorithms to avoid certain reductions and transformations that are incompatible with lazy constraints. Note that if you use lazy constraints by setting the Lazy attribute (and not through a callback), 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 from our different APIs, refer to our Parameter Examples. ")]
public bool? LazyConstraints { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
LicenseID
When using a WLS license, set this parameter to the license ID. You can retrieve this value from your account on the Gurobi Web License Manager site. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "License ID.", ShortName = "LicenseID", Description = "When using a WLS license, set this parameter to the license ID. You can retrieve this value from your account on the Gurobi Web License Manager site. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? LicenseID { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
LiftProjectCuts
Controls lift-and-project 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Lift-and-project cut generation", ShortName = "LiftProjectCuts", Description = "Controls lift-and-project 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 from our different APIs, refer to our Parameter Examples. ")]
public int? LiftProjectCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
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. Use OutputFlag to shut off all logging. Note that this refers to all the output of Gurobi to the console including the various display and print functions provided by the API in interactive environments. It also disables logging on the remote side of Instant Cloud or Compute Server environments. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Console logging", ShortName = "LogToConsole", Description = "Enables or disables console logging. Use OutputFlag to shut off all logging. Note that this refers to all the output of Gurobi to the console including the various display and print functions provided by the API in interactive environments. It also disables logging on the remote side of Instant Cloud or Compute Server environments. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public bool? LogToConsole { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
LPWarmStart
Controls whether and how Gurobi uses warm start information for an LP optimization. The non default setting of 2 is particularly useful for communicating advanced start information while retaining the performance benefits of presolve. A warm start can consist of any combination of basis statuses, a primal start vector, or a dual start vector. It is specified using the attributes VBasis and CBasis or PStart and DStart on the original model. As a general rule, setting this parameter to 0 ignores any start information and solves the model from scratch. Setting it to 1 (the default) uses the provided warm start information to solve the original, unpresolved problem, regardless of whether presolve is enabled. Setting it to 2 uses the start information to solve the presolved problem, assuming that presolve is enabled. This involves mapping the solution of the original problem into an equivalent (or sometimes nearly equivalent) crushed solution of the presolved problem. If presolve is disabled, then setting 2 still prioritizes start vectors, while setting 1 prioritizes basis statuses. Taken together, the LPWarmStart parameter setting, the LP algorithm specified by Gurobi's Method parameter, and the available advanced start information determine whether Gurobi will use basis statuses only, basis statuses augmented with information from start vectors, or a basis obtained by applying the crossover method to the provided primal and dual start vectors to jump start the optimization. When Gurobi's Method parameter requests the barrier solver, primal and dual start vectors are prioritized over basis statuses (but only if you provide both). These start vectors are fed to the crossover procedure. This is the same crossover that is used to compute a basic solution from the interior solution produced by the core barrier algorithm, but in this case crossover is started from arbitrary start vectors. If you set the LPWarmStart parameter to 1, crossover will be invoked on the original model using the provided vectors. Any provided basis information will not be used in this case. If you set LPWarmStart to 2, crossover will be invoked on the presolved model using crushed start vectors. If you set the parameter to 2 and provide a basis but no start vectors, the basis will be used to compute the corresponding primal and dual solutions on the original model. Those solutions will then be crushed and used as primal and dual start vectors for the crossover, which will then construct a basis for the presolved model. Note that for all of these settings and start combinations, no barrier algorithm iterations are performed. The simplex algorithms provide more warm-starting options, With a parameter value of 1, simplex will start from a provided basis, if available. Otherwise, it uses a provided start vector to refine the crash basis it computes. Primal simplex will use PStart and dual simplex will use DStart in this refinement process. With a value of 2, simplex will use the crushed start vector on the presolved model (PStart for primal simplex, DStart for dual) to refine the crash basis. This is true regardless of whether the start is derived from start vectors or a starting basis from the original model. The difference is that if you provide an advanced basis, the basis will be used to compute the corresponding primal and dual solutions on the original model from which the primal or dual start on the presolved model will be derived. Note: Only affects linear programming (LP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Warm start usage in simplex", ShortName = "LPWarmStart", Description = "Controls whether and how Gurobi uses warm start information for an LP optimization. The non default setting of 2 is particularly useful for communicating advanced start information while retaining the performance benefits of presolve. A warm start can consist of any combination of basis statuses, a primal start vector, or a dual start vector. It is specified using the attributes VBasis and CBasis or PStart and DStart on the original model. As a general rule, setting this parameter to 0 ignores any start information and solves the model from scratch. Setting it to 1 (the default) uses the provided warm start information to solve the original, unpresolved problem, regardless of whether presolve is enabled. Setting it to 2 uses the start information to solve the presolved problem, assuming that presolve is enabled. This involves mapping the solution of the original problem into an equivalent (or sometimes nearly equivalent) crushed solution of the presolved problem. If presolve is disabled, then setting 2 still prioritizes start vectors, while setting 1 prioritizes basis statuses. Taken together, the LPWarmStart parameter setting, the LP algorithm specified by Gurobi's Method parameter, and the available advanced start information determine whether Gurobi will use basis statuses only, basis statuses augmented with information from start vectors, or a basis obtained by applying the crossover method to the provided primal and dual start vectors to jump start the optimization. When Gurobi's Method parameter requests the barrier solver, primal and dual start vectors are prioritized over basis statuses (but only if you provide both). These start vectors are fed to the crossover procedure. This is the same crossover that is used to compute a basic solution from the interior solution produced by the core barrier algorithm, but in this case crossover is started from arbitrary start vectors. If you set the LPWarmStart parameter to 1, crossover will be invoked on the original model using the provided vectors. Any provided basis information will not be used in this case. If you set LPWarmStart to 2, crossover will be invoked on the presolved model using crushed start vectors. If you set the parameter to 2 and provide a basis but no start vectors, the basis will be used to compute the corresponding primal and dual solutions on the original model. Those solutions will then be crushed and used as primal and dual start vectors for the crossover, which will then construct a basis for the presolved model. Note that for all of these settings and start combinations, no barrier algorithm iterations are performed. The simplex algorithms provide more warm-starting options, With a parameter value of 1, simplex will start from a provided basis, if available. Otherwise, it uses a provided start vector to refine the crash basis it computes. Primal simplex will use PStart and dual simplex will use DStart in this refinement process. With a value of 2, simplex will use the crushed start vector on the presolved model (PStart for primal simplex, DStart for dual) to refine the crash basis. This is true regardless of whether the start is derived from start vectors or a starting basis from the original model. The difference is that if you provide an advanced basis, the basis will be used to compute the corresponding primal and dual solutions on the original model from which the primal or dual start on the presolved model will be derived. Note: Only affects linear programming (LP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? LPWarmStart { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MarkowitzTol
The Markowitz tolerance is used to limit numerical error in the simplex algorithm. Specifically, larger values reduce the error introduced in the simplex basis factorization. A larger value may avoid numerical problems in rare situations, but it will also harm performance. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Threshold pivoting tolerance", ShortName = "MarkowitzTol", Description = "The Markowitz tolerance is used to limit numerical error in the simplex algorithm. Specifically, larger values reduce the error introduced in the simplex basis factorization. A larger value may avoid numerical problems in rare situations, but it will also harm performance. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? MarkowitzTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
MemLimit
Limits the total amount of memory (in GB, i.e., bytes) available to Gurobi. If more is needed, Gurobi will fail with an OUT_OF_MEMORY error (see the Error Code section for further details). Note that it is not possible to retrieve solution information after an error termination. Thus, the behavior of this parameter is different from that of other termination criteria like SoftMemLimit, TimeLimit, or NodeLimit, where the solver will terminate with a Status Code and solution information will still be available. One advantage of using this parameter rather than the similar SoftMemLimit is that MemLimit is checked after every memory allocation, so Gurobi will terminate at precisely the point where the limit is exceeded. Note that allocated memory is tracked across all models within a Gurobi environment. If you create multiple models in one environment, these additional models will count towards overall memory consumption. Memory usage is also tracked across all threads. One consequence of this is that termination may be non-deterministic for multi-threaded runs. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Memory limit", ShortName = "MemLimit", Description = "Limits the total amount of memory (in GB, i.e., bytes) available to Gurobi. If more is needed, Gurobi will fail with an OUT_OF_MEMORY error (see the Error Code section for further details). Note that it is not possible to retrieve solution information after an error termination. Thus, the behavior of this parameter is different from that of other termination criteria like SoftMemLimit, TimeLimit, or NodeLimit, where the solver will terminate with a Status Code and solution information will still be available. One advantage of using this parameter rather than the similar SoftMemLimit is that MemLimit is checked after every memory allocation, so Gurobi will terminate at precisely the point where the limit is exceeded. Note that allocated memory is tracked across all models within a Gurobi environment. If you create multiple models in one environment, these additional models will count towards overall memory consumption. Memory usage is also tracked across all threads. One consequence of this is that termination may be non-deterministic for multi-threaded runs. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? MemLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
Method
Algorithm used to solve continuous models or the initial root relaxation of a MIP model. Options are: Available settings and default behaviour depend on the model type or the type of the initial root relaxation. In the current release, the default Automatic (-1) setting will typically choose non-deterministic concurrent (Method=3) for an LP, barrier (Method=2) for a QP or QCP, and dual (Method=1) for the MIP root relaxation. If the size of the MIP root relaxation is large, then it will often select deterministic concurrent (Method=4) or deterministic concurrent simplex (Method=5). Concurrent methods aren't available for QP and QCP. Only the simplex and barrier algorithms are available for continuous QP models. If you select barrier (Method=2) to solve the root of an MIQP model, then you need to also select barrier for the node relaxations (i.e. set NodeMethod=2). Only barrier is available for continuous QCP models. However if you choose LP relaxations for solving MIQCP, you can also select the simplex algorithms (Method=0 or 1). Concurrent optimizers run multiple solvers on multiple threads simultaneously, and choose the one that finishes first. Method=3 and Method=4 will run dual simplex, barrier, and sometimes primal simplex (depending on the number of available threads). Method=5 will run both primal and dual simplex. The deterministic options (Method=4 and Method=5) give the exact same result each time, while Method=3 is often faster but can produce different optimal bases when run multiple times. The default setting is rarely significantly slower than the best possible setting, so you generally won't see a big gain from changing this parameter. There are classes of models where one particular algorithm is consistently fastest, though, so you may want to experiment with different options when confronted with a particularly difficult model. Note that if memory is tight on an LP model, you should consider using the dual simplex method (Method=1). The concurrent optimizer, which is typically chosen when using the default setting, consumes a lot more memory than dual simplex alone. In multiobjective LP optimization: For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Algorithm used to solve continuous models", ShortName = "Method", Description = "Algorithm used to solve continuous models or the initial root relaxation of a MIP model. Options are: Available settings and default behaviour depend on the model type or the type of the initial root relaxation. In the current release, the default Automatic (-1) setting will typically choose non-deterministic concurrent (Method=3) for an LP, barrier (Method=2) for a QP or QCP, and dual (Method=1) for the MIP root relaxation. If the size of the MIP root relaxation is large, then it will often select deterministic concurrent (Method=4) or deterministic concurrent simplex (Method=5). Concurrent methods aren't available for QP and QCP. Only the simplex and barrier algorithms are available for continuous QP models. If you select barrier (Method=2) to solve the root of an MIQP model, then you need to also select barrier for the node relaxations (i.e. set NodeMethod=2). Only barrier is available for continuous QCP models. However if you choose LP relaxations for solving MIQCP, you can also select the simplex algorithms (Method=0 or 1). Concurrent optimizers run multiple solvers on multiple threads simultaneously, and choose the one that finishes first. Method=3 and Method=4 will run dual simplex, barrier, and sometimes primal simplex (depending on the number of available threads). Method=5 will run both primal and dual simplex. The deterministic options (Method=4 and Method=5) give the exact same result each time, while Method=3 is often faster but can produce different optimal bases when run multiple times. The default setting is rarely significantly slower than the best possible setting, so you generally won't see a big gain from changing this parameter. There are classes of models where one particular algorithm is consistently fastest, though, so you may want to experiment with different options when confronted with a particularly difficult model. Note that if memory is tight on an LP model, you should consider using the dual simplex method (Method=1). The concurrent optimizer, which is typically chosen when using the default setting, consumes a lot more memory than dual simplex alone. In multiobjective LP optimization: For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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. Note that this heuristic is only applied at the end of the MIP root, and only when no other root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor quality solutions. You should generally only use it if other means, including exploration of the tree with default settings, fail to produce a feasible solution. The default value automatically chooses whether to apply the heuristic. It will only rarely choose to do so. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Minimum relaxation heuristic control", ShortName = "MinRelNodes", Description = "Number of nodes to explore in the minimum relaxation heuristic. Note that this heuristic is only applied at the end of the MIP root, and only when no other root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor quality solutions. You should generally only use it if other means, including exploration of the tree with default settings, fail to produce a feasible solution. The default value automatically chooses whether to apply the heuristic. It will only rarely choose to do so. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples. ")]
public int? MinRelNodes { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MIPFocus
The MIPFocus parameter allows you to modify your high-level solution strategy, depending on your goals. By default, the Gurobi MIP solver strikes a balance between finding new feasible solutions and proving that the current solution is optimal. If you are more interested in finding feasible solutions quickly, you can select MIPFocus=1. If you believe the solver is having no trouble finding good quality solutions, and wish to focus more attention on proving optimality, select MIPFocus=2. If the best objective bound is moving very slowly (or not at all), you may want to try MIPFocus=3 to focus on the bound. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Set the focus of the MIP solver", ShortName = "MIPFocus", Description = "The MIPFocus parameter allows you to modify your high-level solution strategy, depending on your goals. By default, the Gurobi MIP solver strikes a balance between finding new feasible solutions and proving that the current solution is optimal. If you are more interested in finding feasible solutions quickly, you can select MIPFocus=1. If you believe the solver is having no trouble finding good quality solutions, and wish to focus more attention on proving optimality, select MIPFocus=2. If the best objective bound is moving very slowly (or not at all), you may want to try MIPFocus=3 to focus on the bound. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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, 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "MIP separation cut generation", ShortName = "MIPSepCuts", Description = "Controls MIP separation 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 from our different APIs, refer to our Parameter 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 a linearized, outer-approximation approach, while value 0 solves continuous 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Method used to solve MIQCP models", ShortName = "MIQCPMethod", Description = "Controls the method used to solve MIQCP models. Value 1 uses a linearized, outer-approximation approach, while value 0 solves continuous 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 from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "MIR cut generation", ShortName = "MIRCuts", Description = "Controls Mixed Integer Rounding (MIR) 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 from our different APIs, refer to our Parameter Examples. ")]
public int? MIRCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ModKCuts
Controls mod-k 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Mod-k cut generation", ShortName = "ModKCuts", Description = "Controls mod-k 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 from our different APIs, refer to our Parameter Examples. ")]
public int? ModKCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
MultiObjMethod
When solving a continuous multi-objective model using a hierarchical approach, the model is solved once for each objective. The algorithm used to solve for the highest priority objective is controlled by the Method parameter. This parameter determines the algorithm used to solve for subsequent objectives. As with the Method parameters, values of 0 and 1 use primal and dual simplex, respectively. A value of 2 indicates that warm-start information from previous solves should be discarded, and the model should be solved from scratch (using the algorithm indicated by the Method parameter). The default setting of -1 usually chooses primal simplex. Note: Only affects continuous multi-objective models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Warm-start method to solve for subsequent objectives", ShortName = "MultiObjMethod", Description = "When solving a continuous multi-objective model using a hierarchical approach, the model is solved once for each objective. The algorithm used to solve for the highest priority objective is controlled by the Method parameter. This parameter determines the algorithm used to solve for subsequent objectives. As with the Method parameters, values of 0 and 1 use primal and dual simplex, respectively. A value of 2 indicates that warm-start information from previous solves should be discarded, and the model should be solved from scratch (using the algorithm indicated by the Method parameter). The default setting of -1 usually chooses primal simplex. Note: Only affects continuous multi-objective models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 presolve conservatively, and value 2 applies presolve aggressively. The default -1 value usually applies presolve conservatively. Aggressive presolve may increase the chance of the objective values being slightly different than those for other options. Note: Only affects multi-objective models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 presolve conservatively, and value 2 applies presolve aggressively. The default -1 value usually applies presolve conservatively. Aggressive presolve may increase the chance of the objective values being slightly different than those for other options. Note: Only affects multi-objective models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? MultiObjPre { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NetworkAlg
Controls whether to use network simplex. Value 0 doesn't use network simplex. Value 1 indicates to use network simplex, if an LP is a network problem. The default -1 value chooses automatically. Note: Only affects linear programming (LP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Network simplex algorithm", ShortName = "NetworkAlg", Description = "Controls whether to use network simplex. Value 0 doesn't use network simplex. Value 1 indicates to use network simplex, if an LP is a network problem. The default -1 value chooses automatically. Note: Only affects linear programming (LP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? NetworkAlg { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NetworkCuts
Controls network 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Network cut generation", ShortName = "NetworkCuts", Description = "Controls network 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 from our different APIs, refer to our Parameter Examples. ")]
public int? NetworkCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NLPHeur
The NLP heuristic uses a non-linear barrier solver to find feasible solutions to non-convex quadratic models. It can often find solutions much more quickly than the alternative, but in some cases it can consume significant runtime without producing a solution. By default, the heuristic is enabled (1). Use 0 to disable the heuristic. Note: Only affects models with nonconvex quadratic expressions in the objective or constraints For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Controls the NLP heuristic for non-convex quadratic models", ShortName = "NLPHeur", Description = "The NLP heuristic uses a non-linear barrier solver to find feasible solutions to non-convex quadratic models. It can often find solutions much more quickly than the alternative, but in some cases it can consume significant runtime without producing a solution. By default, the heuristic is enabled (1). Use 0 to disable the heuristic. Note: Only affects models with nonconvex quadratic expressions in the objective or constraints For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public bool? NLPHeur { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
NodefileDir
Determines the directory into which nodes are written when node memory usage exceeds the specified NodefileStart value. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Directory for MIP node files", ShortName = "NodefileDir", Description = " Determines the directory into which nodes are written when node memory usage exceeds the specified NodefileStart value. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string NodefileDir { get; set; }
Property Value
Type | Description |
---|---|
System.String |
NodefileStart
If you find that the Gurobi optimizer exhausts memory when solving a MIP, you should modify the NodefileStart parameter. When the amount of memory used to store nodes (measured in GB, i.e., bytes) exceeds the specified parameter value, nodes are compressed and written to disk. We recommend a setting of 0.5, but you may wish to choose a different value, depending on the memory available in your machine. By default, nodes are written to the current working directory. The NodefileDir parameter can be used to choose a different location. If you still exhaust memory after setting the NodefileStart parameter to a small value, you should try limiting the thread count. Each thread in parallel MIP requires a copy of the model, as well as several other large data structures. Reducing the Threads parameter can sometimes significantly reduce memory usage. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 a MIP, you should modify the NodefileStart parameter. When the amount of memory used to store nodes (measured in GB, i.e., bytes) exceeds the specified parameter value, nodes are compressed and written to disk. We recommend a setting of 0.5, but you may wish to choose a different value, depending on the memory available in your machine. By default, nodes are written to the current working directory. The NodefileDir parameter can be used to choose a different location. If you still exhaust memory after setting the NodefileStart parameter to a small value, you should try limiting the thread count. Each thread in parallel MIP requires a copy of the model, as well as several other large data structures. Reducing the Threads parameter can sometimes significantly reduce memory usage. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 an NODE_LIMIT status if the limit is exceeded (see the Status Code section for further details). Note that if multiple threads are used for the optimization, the actual number of explored nodes may be slightly larger than the set limit. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "MIP node limit", ShortName = "NodeLimit", Description = "Limits the number of MIP nodes explored. Optimization returns with an NODE_LIMIT status if the limit is exceeded (see the Status Code section for further details). Note that if multiple threads are used for the optimization, the actual number of explored nodes may be slightly larger than the set limit. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? NodeLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
NodeMethod
Algorithm used for MIP node relaxations (except for the initial root node relaxation, see Method). Options are: -1=automatic, 0=primal simplex, 1=dual simplex, and 2=barrier. Note that barrier is not an option for MIQP node relaxations. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Method used to solve MIP node relaxations", ShortName = "NodeMethod", Description = "Algorithm used for MIP node relaxations (except for the initial root node relaxation, see Method). Options are: -1=automatic, 0=primal simplex, 1=dual simplex, and 2=barrier. Note that barrier is not an option for MIQP node relaxations. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? NodeMethod { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NonConvex
Sets the strategy for handling non-convex quadratic objectives or non-convex quadratic constraints. With setting 0, an error is reported if the original user model contains non-convex quadratic constructs, except for Q matrix linearization controlled by the PreQLinearize parameter. With setting 1, an error is reported if non-convex quadratic constructs could not be discarded or linearized during presolve. With setting 2, non-convex quadratic problems are solved by means of translating them into bilinear form and applying spatial branching. The default -1 setting is currently equivalent to 1, and may 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 from our different APIs, refer to our Parameter 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 or non-convex quadratic constraints. With setting 0, an error is reported if the original user model contains non-convex quadratic constructs, except for Q matrix linearization controlled by the PreQLinearize parameter. With setting 1, an error is reported if non-convex quadratic constructs could not be discarded or linearized during presolve. With setting 2, non-convex quadratic problems are solved by means of translating them into bilinear form and applying spatial branching. The default -1 setting is currently equivalent to 1, and may 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 from our different APIs, refer to our Parameter 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 before solving the root relaxation. It can be quite useful on models where the root relaxation is particularly expensive. Note that this parameter will introduce non-determinism - different runs may take different paths. Use the NoRelHeurWork parameter for deterministic results. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 before solving the root relaxation. It can be quite useful on models where the root relaxation is particularly expensive. Note that this parameter will introduce non-determinism - different runs may take different paths. Use the NoRelHeurWork parameter for deterministic results. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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. This heuristic searches for high-quality feasible solutions before solving the root relaxation. It can be quite useful on models where the root relaxation 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 on the machine, the core count, and in some cases the model. You may need to experiment to find a good setting for your model. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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. This heuristic searches for high-quality feasible solutions before solving the root relaxation. It can be quite useful on models where the root relaxation 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 on the machine, the core count, and in some cases the model. You may need to experiment to find a good setting for your model. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 how this parameter affects the simplex pricing algorithm are subtle and difficult to describe, so we've simply labeled the options 0 through 3. The default value of -1 chooses automatically. Changing the value of this parameter rarely produces a significant benefit. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Simplex pricing norm", ShortName = "NormAdjust", Description = "Chooses from among multiple pricing norm variants. The details of how this parameter affects the simplex pricing algorithm are subtle and difficult to describe, so we've simply labeled the options 0 through 3. The default value of -1 chooses automatically. Changing the value of this parameter rarely produces a significant benefit. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? NormAdjust { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
NumericFocus
The NumericFocus parameter controls the degree to which the code attempts to detect and manage numerical issues. The default setting (0) makes an automatic choice, with a slight preference for speed. Settings 1-3 increasingly shift the focus towards being more careful in numerical computations. With higher values, the code will spend more time checking the numerical accuracy of intermediate results, and it will employ more expensive techniques in order to avoid potential numerical issues. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Set the numerical focus", ShortName = "NumericFocus", Description = "The NumericFocus parameter controls the degree to which the code attempts to detect and manage numerical issues. The default setting (0) makes an automatic choice, with a slight preference for speed. Settings 1-3 increasingly shift the focus towards being more careful in numerical computations. With higher values, the code will spend more time checking the numerical accuracy of intermediate results, and it will employ more expensive techniques in order to avoid potential numerical issues. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? NumericFocus { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
OBBT
Value 0 disables Optimality-Based Bound Tightening (OBBT). Levels 1-3 describe the amount of work allowed for OBBT ranging from moderate to aggressive. The default -1 value is an automatic setting which chooses a rather moderate setting. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Controls aggressiveness of Optimality-Based Bound Tightening", ShortName = "OBBT", Description = "Value 0 disables Optimality-Based Bound Tightening (OBBT). Levels 1-3 describe the amount of work allowed for OBBT ranging from moderate to aggressive. The default -1 value is an automatic setting which chooses a rather moderate setting. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? OBBT { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ObjScale
When positive, divides the model objective by the specified value to avoid numerical issues that may result from very large or very small objective coefficients. The default value of 0 decides on the scaling automatically. A value less than zero uses the maximum coefficient to the specified power as the scaling (so ObjScale=-0.5 would scale by the square root of the largest objective coefficient). Note that objective scaling can lead to large dual violations on the original, unscaled objective when the optimality tolerance with the scaled objective is barely satisfied, so it should be used sparingly. Note also that scaling will be more effective when all objective coefficients are of similar orders of magnitude, as opposed to objectives with a wide range of coefficients. In the latter case, consider using the Multiple Objectives feature instead. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Objective scaling", ShortName = "ObjScale", Description = "When positive, divides the model objective by the specified value to avoid numerical issues that may result from very large or very small objective coefficients. The default value of 0 decides on the scaling automatically. A value less than zero uses the maximum coefficient to the specified power as the scaling (so ObjScale=-0.5 would scale by the square root of the largest objective coefficient). Note that objective scaling can lead to large dual violations on the original, unscaled objective when the optimality tolerance with the scaled objective is barely satisfied, so it should be used sparingly. Note also that scaling will be more effective when all objective coefficients are of similar orders of magnitude, as opposed to objectives with a wide range of coefficients. In the latter case, consider using the Multiple Objectives feature instead. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? ObjScale { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
OptimalityTol
Reduced costs must all be smaller than OptimalityTol in the improving direction in order for a model to be declared optimal. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Dual feasibility tolerance", ShortName = "OptimalityTol", Description = "Reduced costs must all be smaller than OptimalityTol in the improving direction in order for a model to be declared optimal. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? OptimalityTol { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
OutputFlag
Enables or disables solver output. Use LogFile and LogToConsole for finer-grain control. Setting OutputFlag to 0 is equivalent to setting LogFile to "" and LogToConsole to 0. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Solver output control", ShortName = "OutputFlag", Description = "Enables or disables solver output. Use LogFile and LogToConsole for finer-grain control. Setting OutputFlag to 0 is equivalent to setting LogFile to \"\" and LogToConsole to 0. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 on at least one variable in a model enables the partitioning heuristic, which uses large-neighborhood search to try to improve the current incumbent solution. This parameter determines where that heuristic runs. Options are: The default value of 15 indicates that we enable every option except the first one listed above. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Controls when the partition heuristic runs", ShortName = "PartitionPlace", Description = "Setting the Partition attribute on at least one variable in a model enables the partitioning heuristic, which uses large-neighborhood search to try to improve the current incumbent solution. This parameter determines where that heuristic runs. Options are: The default value of 15 indicates that we enable every option except the first one listed above. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? PartitionPlace { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PerturbValue
Magnitude of the simplex perturbation. Note that perturbation is only applied when progress has stalled, so the parameter will often have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Simplex perturbation magnitude", ShortName = "PerturbValue", Description = "Magnitude of the simplex perturbation. Note that perturbation is only applied when progress has stalled, so the parameter will often have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 whose objective values exceed that of the best known solution by more than the specified (relative) gap are discarded. For example, if the MIP solver has found a solution at objective 100, then a setting of PoolGap=0.2 would discard solutions with objective worse than 120 (assuming a minimization objective). Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 whose objective values exceed that of the best known solution by more than the specified (relative) gap are discarded. For example, if the MIP solver has found a solution at objective 100, then a setting of PoolGap=0.2 would discard solutions with objective worse than 120 (assuming a minimization objective). Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 whose objective values exceed that of the best known solution by more than the specified (absolute) gap are discarded. For example, if the MIP solver has found a solution at objective 100, then a setting of PoolGapAbs=20 would discard solutions with objective worse than 120 (assuming a minimization objective). Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 whose objective values exceed that of the best known solution by more than the specified (absolute) gap are discarded. For example, if the MIP solver has found a solution at objective 100, then a setting of PoolGapAbs=20 would discard solutions with objective worse than 120 (assuming a minimization objective). Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 the default setting (PoolSearchMode=0), the MIP solver tries to find an optimal solution to the model. It keeps other solutions found along the way, but those are incidental. By setting this parameter to a non-default value, the MIP search will continue after the optimal solution has been found in order to find additional, high-quality solutions. With a non-default value (PoolSearchMode=1 or PoolSearchMode=2), the MIP solver will try to find n solutions, where n is determined by the value of the PoolSolutions parameter. With a setting of 1, there are no guarantees about the quality of the extra solutions, while with a setting of 2, the solver will find the n best solutions. The cost of the solve will increase with increasing values of this parameter. Once optimization is complete, the PoolObjBound attribute can be used to evaluate the quality of the solutions that were found. For example, a value of PoolObjBound=100 indicates that there are no other solutions with objective better 100, and thus that any known solutions with objective better than 100 are better than any as-yet undiscovered solutions. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 the default setting (PoolSearchMode=0), the MIP solver tries to find an optimal solution to the model. It keeps other solutions found along the way, but those are incidental. By setting this parameter to a non-default value, the MIP search will continue after the optimal solution has been found in order to find additional, high-quality solutions. With a non-default value (PoolSearchMode=1 or PoolSearchMode=2), the MIP solver will try to find n solutions, where n is determined by the value of the PoolSolutions parameter. With a setting of 1, there are no guarantees about the quality of the extra solutions, while with a setting of 2, the solver will find the n best solutions. The cost of the solve will increase with increasing values of this parameter. Once optimization is complete, the PoolObjBound attribute can be used to evaluate the quality of the solutions that were found. For example, a value of PoolObjBound=100 indicates that there are no other solutions with objective better 100, and thus that any known solutions with objective better than 100 are better than any as-yet undiscovered solutions. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 value of PoolSearchMode, these are just the solutions that are found along the way in the process of exploring the MIP search tree. For other values of PoolSearchMode, this parameter sets a target for how many solutions to find, so larger values will impact performance. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Number of solutions to keep in pool", ShortName = "PoolSolutions", Description = "Determines how many MIP solutions are stored. For the default value of PoolSearchMode, these are just the solutions that are found along the way in the process of exploring the MIP search tree. For other values of PoolSearchMode, this parameter sets a target for how many solutions to find, so larger values will impact performance. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 any constraint on the original model into an equivalent constraint on the presolved model. You should consider setting this parameter to 1 if you are using callbacks to add your own cuts. A cut that cannot be applied to the presolved model will be silently ignored. The impact on the size of the presolved problem is usually small. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 any constraint on the original model into an equivalent constraint on the presolved model. You should consider setting this parameter to 1 if you are using callbacks to add your own cuts. A cut that cannot be applied to the presolved model will be silently ignored. The impact on the size of the presolved problem is usually small. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public bool? PreCrush { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
PreDepRow
Controls the presolve dependent row reduction, which eliminates linearly dependent constraints from the constraint matrix. The default setting (-1) applies the reduction to continuous models but not 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Presolve dependent row reduction", ShortName = "PreDepRow", Description = "Controls the presolve dependent row reduction, which eliminates linearly dependent constraints from the constraint matrix. The default setting (-1) applies the reduction to continuous models but not 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 from our different APIs, refer to our Parameter Examples. ")]
public int? PreDepRow { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreDual
Controls whether presolve forms the dual of a continuous model. Depending on the structure of the model, solving the dual can reduce overall solution time. The default setting uses a heuristic to decide. Setting 0 forbids presolve from forming the dual, while setting 1 forces it to take the dual. Setting 2 employs a more expensive heuristic that forms both the presolved primal and dual models (on two threads), and heuristically chooses one of them. Note: Only affects LP, QP, and QCP models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Presolve dualization", ShortName = "PreDual", Description = "Controls whether presolve forms the dual of a continuous model. Depending on the structure of the model, solving the dual can reduce overall solution time. The default setting uses a heuristic to decide. Setting 0 forbids presolve from forming the dual, while setting 1 forces it to take the dual. Setting 2 employs a more expensive heuristic that forms both the presolved primal and dual models (on two threads), and heuristically chooses one of them. Note: Only affects LP, QP, and QCP models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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-cut algorithm will operate on a model with arbitrary quadratic constraints. Option 1 always transforms the model into MISOCP form; quadratic constraints are transformed into second-order cone constraints. Option 2 always transforms the model into disaggregated MISOCP form; quadratic constraints are transformed into rotated cone constraints, where each rotated cone contains two terms and involves only three variables. The default setting (-1) choose automatically. The automatic setting works well, but there are cases where forcing a different form can be beneficial. Note: Only affects MIQCP models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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-cut algorithm will operate on a model with arbitrary quadratic constraints. Option 1 always transforms the model into MISOCP form; quadratic constraints are transformed into second-order cone constraints. Option 2 always transforms the model into disaggregated MISOCP form; quadratic constraints are transformed into rotated cone constraints, where each rotated cone contains two terms and involves only three variables. The default setting (-1) choose automatically. The automatic setting works well, but there are cases where forcing a different form can be beneficial. Note: Only affects MIQCP models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? PreMIQCPForm { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PrePasses
Limits the number of passes performed by presolve. The default setting (-1) chooses the number of passes automatically. You should experiment with this parameter when you find that presolve is consuming a large fraction of total solve time. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Presolve pass limit", ShortName = "PrePasses", Description = "Limits the number of passes performed by presolve. The default setting (-1) chooses the number of passes automatically. You should experiment with this parameter when you find that presolve is consuming a large fraction of total solve time. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? PrePasses { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreQLinearize
Controls presolve Q matrix linearization. Binary variables in quadratic expressions provide some freedom to state the same expression in multiple different ways. Options 1 and 2 of this parameter attempt to linearize quadratic constraints or a quadratic objective, replacing quadratic terms with linear terms, using additional variables and linear constraints. This can potentially transform an MIQP or MIQCP model into an MILP. Option 1 focuses on producing an MILP reformulation with a strong LP relaxation, with a goal of limiting the size of the MIP search tree. Option 2 aims for a compact reformulation, with a goal of reducing the cost of each node. Option 0 attempts to leave Q matrices unmodified; it won't add variables or constraints, but it may still perform adjustments on quadratic 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Presolve Q matrix linearization", ShortName = "PreQLinearize", Description = "Controls presolve Q matrix linearization. Binary variables in quadratic expressions provide some freedom to state the same expression in multiple different ways. Options 1 and 2 of this parameter attempt to linearize quadratic constraints or a quadratic objective, replacing quadratic terms with linear terms, using additional variables and linear constraints. This can potentially transform an MIQP or MIQCP model into an MILP. Option 1 focuses on producing an MILP reformulation with a strong LP relaxation, with a goal of limiting the size of the MIP search tree. Option 2 aims for a compact reformulation, with a goal of reducing the cost of each node. Option 0 attempts to leave Q matrices unmodified; it won't add variables or constraints, but it may still perform adjustments on quadratic 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 from our different APIs, refer to our Parameter 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 automatic setting. 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Presolve level", ShortName = "Presolve", Description = "Controls the presolve level. A value of -1 corresponds to an automatic setting. 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 from our different APIs, refer to our Parameter Examples. ")]
public int? Presolve { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreSOS1BigM
Controls the automatic reformulation of SOS1 constraints into binary form. SOS1 constraints are often handled more efficiently using a binary representation. The reformulation often requires big-M values to be introduced as coefficients. This parameter specifies the largest big-M that can be introduced by presolve when performing this reformulation. Larger values increase the chances that an SOS1 constraint will be reformulated, but very large values (e.g., 1e8) can lead to numerical issues. The default value of -1 chooses a threshold automatically. You should set the parameter to 0 to shut off SOS1 reformulation entirely, or a large value to force reformulation. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. Please refer to this section for more information on SOS constraints.
Declaration
[Display(Name = "Controls largest coefficient in SOS1 reformulation", ShortName = "PreSOS1BigM", Description = "Controls the automatic reformulation of SOS1 constraints into binary form. SOS1 constraints are often handled more efficiently using a binary representation. The reformulation often requires big-M values to be introduced as coefficients. This parameter specifies the largest big-M that can be introduced by presolve when performing this reformulation. Larger values increase the chances that an SOS1 constraint will be reformulated, but very large values (e.g., 1e8) can lead to numerical issues. The default value of -1 chooses a threshold automatically. You should set the parameter to 0 to shut off SOS1 reformulation entirely, or a large value to force reformulation. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. Please refer to this section for more information on SOS constraints. ")]
public double? PreSOS1BigM { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
PreSOS1Encoding
Controls the automatic reformulation of SOS1 constraints. Such constraints can be handled directly by the MIP branch-and-cut algorithm, but they are often handled more efficiently by reformulating them using binary or integer variables. There are several diffent ways to perform this reformulation; they differ in their size and strength. Smaller reformulations add fewer variables and constraints to the model. Stronger reformulations reduce the number of branch-and-cut nodes required to solve the resulting model. Options 0 and 1 of this parameter encode an SOS1 constraint using a formulation whose size is linear in the number of SOS members. Option 0 uses a so-called multiple choice model. It usually produces an LP relaxation that is easier to solve. Option 1 uses an incremental model. It often gives a stronger representation, reducing the amount of branching required to solve harder problems. Options 2 and 3 of this parameter encode the SOS1 using a formulation of logarithmic size. They both only apply when all the variables in the SOS1 are non-negative. Option 3 additionally requires that the sum of the variables in the SOS1 is equal to 1. Logarithmic formulations are often advantageous when the SOS1 constraint has a large number of members. Option 2 focuses on a formulation whose LP relaxation is easier to solve, while option 3 has better branching behaviour. The default value of -1 chooses a reformulation for each SOS1 constraint automatically. Note that the reformulation of SOS1 constraints is also influenced by the PreSOS1BigM parameter. To shut off the reformulation entirely you should set that parameter to 0. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. Please refer to this section for more information on SOS constraints.
Declaration
[Display(Name = "Controls SOS1 reformulation", ShortName = "PreSOS1Encoding", Description = "Controls the automatic reformulation of SOS1 constraints. Such constraints can be handled directly by the MIP branch-and-cut algorithm, but they are often handled more efficiently by reformulating them using binary or integer variables. There are several diffent ways to perform this reformulation; they differ in their size and strength. Smaller reformulations add fewer variables and constraints to the model. Stronger reformulations reduce the number of branch-and-cut nodes required to solve the resulting model. Options 0 and 1 of this parameter encode an SOS1 constraint using a formulation whose size is linear in the number of SOS members. Option 0 uses a so-called multiple choice model. It usually produces an LP relaxation that is easier to solve. Option 1 uses an incremental model. It often gives a stronger representation, reducing the amount of branching required to solve harder problems. Options 2 and 3 of this parameter encode the SOS1 using a formulation of logarithmic size. They both only apply when all the variables in the SOS1 are non-negative. Option 3 additionally requires that the sum of the variables in the SOS1 is equal to 1. Logarithmic formulations are often advantageous when the SOS1 constraint has a large number of members. Option 2 focuses on a formulation whose LP relaxation is easier to solve, while option 3 has better branching behaviour. The default value of -1 chooses a reformulation for each SOS1 constraint automatically. Note that the reformulation of SOS1 constraints is also influenced by the PreSOS1BigM parameter. To shut off the reformulation entirely you should set that parameter to 0. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. Please refer to this section for more information on SOS constraints. ")]
public int? PreSOS1Encoding { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreSOS2BigM
Controls the automatic reformulation of SOS2 constraints into binary form. SOS2 constraints are often handled more efficiently using a binary representation. The reformulation often requires big-M values to be introduced as coefficients. This parameter specifies the largest big-M that can be introduced by presolve when performing this reformulation. Larger values increase the chances that an SOS2 constraint will be reformulated, but very large values (e.g., 1e8) can lead to numerical issues. The default value of -1 chooses a threshold automatically. You should set the parameter to 0 to shut off SOS2 reformulation entirely, or a large value to force reformulation. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. Please refer to this section for more information on SOS constraints.
Declaration
[Display(Name = "Controls largest coefficient in SOS2 reformulation", ShortName = "PreSOS2BigM", Description = "Controls the automatic reformulation of SOS2 constraints into binary form. SOS2 constraints are often handled more efficiently using a binary representation. The reformulation often requires big-M values to be introduced as coefficients. This parameter specifies the largest big-M that can be introduced by presolve when performing this reformulation. Larger values increase the chances that an SOS2 constraint will be reformulated, but very large values (e.g., 1e8) can lead to numerical issues. The default value of -1 chooses a threshold automatically. You should set the parameter to 0 to shut off SOS2 reformulation entirely, or a large value to force reformulation. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. Please refer to this section for more information on SOS constraints. ")]
public double? PreSOS2BigM { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
PreSOS2Encoding
Controls the automatic reformulation of SOS2 constraints. Such constraints can be handled directly by the MIP branch-and-cut algorithm, but they are often handled more efficiently by reformulating them using binary or integer variables. There are several diffent ways to perform this reformulation; they differ in their size and strength. Smaller reformulations add fewer variables and constraints to the model. Stronger reformulations reduce the number of branch-and-cut nodes required to solve the resulting model. Options 0 and 1 of this parameter encode an SOS2 constraint using a formulation whose size is linear in the the number of SOS members. Option 0 uses a so-called multiple choice model. It usually produces an LP relaxation that is easier to solve. Option 1 uses an incremental model. It often gives a stronger representation, reducing the amount of branching required to solve harder problems. Options 2 and 3 of this parameter encode the SOS2 using a formulation of logarithmic size. They both only apply when all the variables in the SOS2 are non-negative. Option 3 additionally requires that the sum of the variables in the SOS2 is equal to 1. Logarithmic formulations are often advantageous when the SOS2 constraint has a large number of members. Option 2 focuses on a formulation whose LP relaxation is easier to solve, while option 3 has better branching behaviour. The default value of -1 chooses a reformulation for each SOS2 constraint automatically. Note that the reformulation of SOS2 constraints is also influenced by the PreSOS2BigM parameter. To shut off the reformulation entirely you should set that parameter to 0. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. Please refer to this section for more information on SOS constraints.
Declaration
[Display(Name = "Controls SOS2 reformulation", ShortName = "PreSOS2Encoding", Description = "Controls the automatic reformulation of SOS2 constraints. Such constraints can be handled directly by the MIP branch-and-cut algorithm, but they are often handled more efficiently by reformulating them using binary or integer variables. There are several diffent ways to perform this reformulation; they differ in their size and strength. Smaller reformulations add fewer variables and constraints to the model. Stronger reformulations reduce the number of branch-and-cut nodes required to solve the resulting model. Options 0 and 1 of this parameter encode an SOS2 constraint using a formulation whose size is linear in the the number of SOS members. Option 0 uses a so-called multiple choice model. It usually produces an LP relaxation that is easier to solve. Option 1 uses an incremental model. It often gives a stronger representation, reducing the amount of branching required to solve harder problems. Options 2 and 3 of this parameter encode the SOS2 using a formulation of logarithmic size. They both only apply when all the variables in the SOS2 are non-negative. Option 3 additionally requires that the sum of the variables in the SOS2 is equal to 1. Logarithmic formulations are often advantageous when the SOS2 constraint has a large number of members. Option 2 focuses on a formulation whose LP relaxation is easier to solve, while option 3 has better branching behaviour. The default value of -1 chooses a reformulation for each SOS2 constraint automatically. Note that the reformulation of SOS2 constraints is also influenced by the PreSOS2BigM parameter. To shut off the reformulation entirely you should set that parameter to 0. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. Please refer to this section for more information on SOS constraints. ")]
public int? PreSOS2Encoding { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PreSparsify
Controls the presolve sparsify reduction. This reduction can sometimes significantly reduce the number of non-zero values in the presolved model. Value 0 shuts off the reduction, while value 1 forces it on for mixed integer programming (MIP) models and value 2 forces it on for all types of models, including linear programming (LP) models, and MIP relaxations. The default value of -1 chooses automatically. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Presolve sparsify reduction", ShortName = "PreSparsify", Description = "Controls the presolve sparsify reduction. This reduction can sometimes significantly reduce the number of non-zero values in the presolved model. Value 0 shuts off the reduction, while value 1 forces it on for mixed integer programming (MIP) models and value 2 forces it on for all types of models, including linear programming (LP) models, and MIP relaxations. The default value of -1 chooses automatically. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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, 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Projected implied bound cut generation", ShortName = "ProjImpliedCuts", Description = "Controls projected implied bound 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 from our different APIs, refer to our Parameter Examples. ")]
public int? ProjImpliedCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
PSDCuts
Controls PSD 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 models with nonconvex quadratic expressions in the objective or constraints For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "PSD cut generation", ShortName = "PSDCuts", Description = "Controls PSD 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 models with nonconvex quadratic expressions in the objective or constraints For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 optimizer is allowed to perform on a Q matrix in order to correct minor PSD violations. If a larger perturbation is required, the optimizer will terminate with a GRB_ERROR_Q_NOT_PSD error. Note: Only affects QP, QCP, MIQP, and MIQCP models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Positive semi-definite tolerance", ShortName = "PSDTol", Description = "Sets a limit on the amount of diagonal perturbation that the optimizer is allowed to perform on a Q matrix in order to correct minor PSD violations. If a larger perturbation is required, the optimizer will terminate with a GRB_ERROR_Q_NOT_PSD error. Note: Only affects QP, QCP, MIQP, and MIQCP models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 this heuristic is only applied at the end of the MIP root. This heuristic is quite expensive, and generally produces poor quality solutions. You should generally only use it if other means, including exploration of the tree with default settings, fail to produce a feasible solution. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Feasibility pump heuristic control", ShortName = "PumpPasses", Description = "Number of passes of the feasibility pump heuristic. Note that this heuristic is only applied at the end of the MIP root. This heuristic is quite expensive, and generally produces poor quality solutions. You should generally only use it if other means, including exploration of the tree with default settings, fail to produce a feasible solution. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 you should only set this parameter to 1 if you need them. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 you should only set this parameter to 1 if you need them. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public bool? QCPDual { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
Quad
Enables or disables quad precision computation in simplex. The -1 default setting allows the algorithm to decide. Quad precision can sometimes help solve numerically challenging models, but it can also significantly increase runtime. Quad precision is only available on processors that support quadruple precision, e.g., common Intel processors. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Quad precision computation in simplex", ShortName = "Quad", Description = "Enables or disables quad precision computation in simplex. The -1 default setting allows the algorithm to decide. Quad precision can sometimes help solve numerically challenging models, but it can also significantly increase runtime. Quad precision is only available on processors that support quadruple precision, e.g., common Intel processors. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 or more files (named gurobi000.grbr or similar) that capture the sequence of Gurobi commands that your program issued. This file can subsequently be replayed using the Gurobi command-line tool. Replaying the file will repeat the exact same sequence of commands, and when completed will show the time spent in Gurobi API routines, the time spent in Gurobi algorithms, and will indicate whether any Gurobi environments or models were leaked by your program. Replay files are particularly useful in tech support situations. They provide an easy way to relay to Gurobi tech support the exact sequence of Gurobi commands that led to a question or issue. This parameter must be set before starting an empty environment (or in a gurobi.env file). All Gurobi commands will be recorded until the environment is freed or the program ends. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Enable API call recording", ShortName = "Record", Description = "Enables API call recording. When enabled, Gurobi will write one or more files (named gurobi000.grbr or similar) that capture the sequence of Gurobi commands that your program issued. This file can subsequently be replayed using the Gurobi command-line tool. Replaying the file will repeat the exact same sequence of commands, and when completed will show the time spent in Gurobi API routines, the time spent in Gurobi algorithms, and will indicate whether any Gurobi environments or models were leaked by your program. Replay files are particularly useful in tech support situations. They provide an easy way to relay to Gurobi tech support the exact sequence of Gurobi commands that led to a question or issue. This parameter must be set before starting an empty environment (or in a gurobi.env file). All Gurobi commands will be recorded until the environment is freed or the program ends. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public bool? Record { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Boolean> |
RelaxLiftCuts
Controls relax-and-lift 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Relax-and-lift cut generation", ShortName = "RelaxLiftCuts", Description = "Controls relax-and-lift 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 from our different APIs, refer to our Parameter 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 of optimization. The type of the result file is determined by the file suffix. 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 integer variables). 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), or a .dua or .dlp file (to capture the dual of a pure LP 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 in the File Format section. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 of optimization. The type of the result file is determined by the file suffix. 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 integer variables). 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), or a .dua or .dlp file (to capture the dual of a pure LP 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 in the File Format section. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string ResultFile { get; set; }
Property Value
Type | Description |
---|---|
System.String |
RINS
Frequency of the RINS heuristic. Default value (-1) chooses automatically. A value of 0 shuts off RINS. A positive value n applies RINS at every n-th node of the MIP search tree. Increasing the frequency of the RINS heuristic shifts the focus of the MIP search away from proving optimality, and towards finding good feasible solutions. We recommend that you try MIPFocus, ImproveStartGap, or ImproveStartTime before experimenting with this parameter. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "RINS heuristic", ShortName = "RINS", Description = "Frequency of the RINS heuristic. Default value (-1) chooses automatically. A value of 0 shuts off RINS. A positive value n applies RINS at every n-th node of the MIP search tree. Increasing the frequency of the RINS heuristic shifts the focus of the MIP search away from proving optimality, and towards finding good feasible solutions. We recommend that you try MIPFocus, ImproveStartGap, or ImproveStartTime before experimenting with this parameter. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "RLT cut generation", ShortName = "RLTCuts", Description = "Controls Relaxation Linearization Technique (RLT) 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 from our different APIs, refer to our Parameter 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 model are scaled in order to improve the numerical properties of the constraint matrix. The scaling is removed before the final solution is returned. Scaling typically reduces solution times, but it may lead to larger constraint violations in the original, unscaled model. Turning off scaling (ScaleFlag=0) can sometimes produce smaller constraint violations. Choosing a different scaling option can sometimes improve performance for particularly numerically difficult models. Using geometric mean scaling (ScaleFlag=2) is especially well suited for models with a wide range of coefficients in the constraint matrix rows or columns. Settings 1 and 3 are not as directly connected to any specific model characteristics, so experimentation with both settings may be needed to assess performance impact. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Model scaling", ShortName = "ScaleFlag", Description = "Controls model scaling. By default, the rows and columns of the model are scaled in order to improve the numerical properties of the constraint matrix. The scaling is removed before the final solution is returned. Scaling typically reduces solution times, but it may lead to larger constraint violations in the original, unscaled model. Turning off scaling (ScaleFlag=0) can sometimes produce smaller constraint violations. Choosing a different scaling option can sometimes improve performance for particularly numerically difficult models. Using geometric mean scaling (ScaleFlag=2) is especially well suited for models with a wide range of coefficients in the constraint matrix rows or columns. Settings 1 and 3 are not as directly connected to any specific model characteristics, so experimentation with both settings may be needed to assess performance impact. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? ScaleFlag { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
ScenarioNumber
When working with multiple scenarios, this parameter selects the index of the scenario you want to work with. When you query or modify an attribute associated with multiple scenarios (ScenNLB, ScenNUB, ScenNObj, ScenNRHS, etc.), the ScenarioNumber parameter will determine which scenario is actually affected. The value of this parameter should be less than the value of the NumScenarios attribute (which captures the number of scenarios in the model). Please refer to the discussion of Multiple Scenarios for more information on the use of alternative scenarios. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Set index of scenario in multi-scenario models", ShortName = "ScenarioNumber", Description = "When working with multiple scenarios, this parameter selects the index of the scenario you want to work with. When you query or modify an attribute associated with multiple scenarios (ScenNLB, ScenNUB, ScenNObj, ScenNRHS, etc.), the ScenarioNumber parameter will determine which scenario is actually affected. The value of this parameter should be less than the value of the NumScenarios attribute (which captures the number of scenarios in the model). Please refer to the discussion of Multiple Scenarios for more information on the use of alternative scenarios. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 to the solver, and typically leads to different solution paths. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Modify the random number seed", ShortName = "Seed", Description = "Modifies the random number seed. This acts as a small perturbation to the solver, and typically leads to different solution paths. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 Server or a token server). For connecting to the Remote Services cluster referred to by the ComputeServer parameter, you'll need to supply the client password. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. Supply the token server password (if needed) when connecting to the server referred to by the TokenServer parameter, You must set this parameter through either a gurobi.lic file (using PASSWORD=pwd) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 Server or a token server). For connecting to the Remote Services cluster referred to by the ComputeServer parameter, you'll need to supply the client password. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. Supply the token server password (if needed) when connecting to the server referred to by the TokenServer parameter, You must set this parameter through either a gurobi.lic file (using PASSWORD=pwd) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string ServerPassword { get; set; }
Property Value
Type | Description |
---|---|
System.String |
ServerTimeout
Network time-out for Compute Server and token server (in seconds). If the client program is unable to contact the server for more than the specified amount of time, the client will quit with a network error. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter using an empty environment. Changing the parameter after your environment has been created will have no effect. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Network timeout interval", ShortName = "ServerTimeout", Description = "Network time-out for Compute Server and token server (in seconds). If the client program is unable to contact the server for more than the specified amount of time, the client will quit with a network error. Refer to the Gurobi Remote Services Reference Manual for more information on starting Compute Server jobs. You must set this parameter using an empty environment. Changing the parameter after your environment has been created will have no effect. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? ServerTimeout { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Sifting
Enables or disables sifting within dual simplex. Sifting can be useful for LP models where the number of variables is many times larger than the number of constraints (we typically only see significant benefits when the ratio is 100 or more). Options are Automatic (-1), Off (0), Moderate (1), and Aggressive (2). With a Moderate setting, sifting will be applied to LP models and to the initial root relaxation for MIP models. With an Aggressive setting, sifting will be applied any time dual simplex is used, including at the nodes of a MIP. Note that this parameter has no effect if you aren't using dual simplex. Note also that Gurobi will ignore this parameter in cases where sifting is obviously a worse choice than dual simplex. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Sifting within dual simplex", ShortName = "Sifting", Description = "Enables or disables sifting within dual simplex. Sifting can be useful for LP models where the number of variables is many times larger than the number of constraints (we typically only see significant benefits when the ratio is 100 or more). Options are Automatic (-1), Off (0), Moderate (1), and Aggressive (2). With a Moderate setting, sifting will be applied to LP models and to the initial root relaxation for MIP models. With an Aggressive setting, sifting will be applied any time dual simplex is used, including at the nodes of a MIP. Note that this parameter has no effect if you aren't using dual simplex. Note also that Gurobi will ignore this parameter in cases where sifting is obviously a worse choice than dual simplex. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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). Note that this parameter only has an effect when you are using dual simplex and sifting has been selected (either automatically by dual simplex, or through the Sifting parameter). Changing the value of this parameter rarely produces a significant benefit. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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). Note that this parameter only has an effect when you are using dual simplex and sifting has been selected (either automatically by dual simplex, or through the Sifting parameter). Changing the value of this parameter rarely produces a significant benefit. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? SiftMethod { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SimplexPricing
Determines the simplex variable pricing strategy. Available options are 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 significant benefit. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Simplex variable pricing strategy", ShortName = "SimplexPricing", Description = "Determines the simplex variable pricing strategy. Available options are 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 significant benefit. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? SimplexPricing { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SoftMemLimit
Limits the total amount of memory (in GB, i.e., bytes) available to Gurobi. If more is needed, Gurobi will terminate with a MEM_LIMIT status code (see the Status Code section for further details). In contrast to the MemLimit parameter, the SoftMemLimit parameter leads to a graceful exit of the optimization, such that it is possible to retrieve solution information afterwards or (in the case of a MIP solve) resume the optimization. A disadvantage compared to MemLimit is that the SoftMemLimit is only checked at places where optimization can be terminated gracefully, so memory use may exceed the limit between these checks. Note that allocated memory is tracked across all models within a Gurobi environment. If you create multiple models in one environment, these additional models will count towards overall memory consumption. Memory usage is also tracked across all threads. One consequence of this is that termination may be non-deterministic for multi-threaded runs. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Soft memory limit", ShortName = "SoftMemLimit", Description = "Limits the total amount of memory (in GB, i.e., bytes) available to Gurobi. If more is needed, Gurobi will terminate with a MEM_LIMIT status code (see the Status Code section for further details). In contrast to the MemLimit parameter, the SoftMemLimit parameter leads to a graceful exit of the optimization, such that it is possible to retrieve solution information afterwards or (in the case of a MIP solve) resume the optimization. A disadvantage compared to MemLimit is that the SoftMemLimit is only checked at places where optimization can be terminated gracefully, so memory use may exceed the limit between these checks. Note that allocated memory is tracked across all models within a Gurobi environment. If you create multiple models in one environment, these additional models will count towards overall memory consumption. Memory usage is also tracked across all threads. One consequence of this is that termination may be non-deterministic for multi-threaded runs. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? SoftMemLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
SolFiles
During the MIP solution process, multiple incumbent solutions are typically found on the path to finding a proven optimal solution. Setting this parameter to a non-empty string causes these solutions to be written to files (in .sol format) as they are found. The MIP solver will append _n.sol to the value of the parameter to form the name of the file that contains solution number . For example, setting the parameter to value solutions/mymodel will create files mymodel_0.sol, mymodel_1.sol, etc., in directory solutions. Note that intermediate solutions can be retrieved as they are generated through a callback (by requesting the MIPSOL_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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Location to store intermediate solution files", ShortName = "SolFiles", Description = " During the MIP solution process, multiple incumbent solutions are typically found on the path to finding a proven optimal solution. Setting this parameter to a non-empty string causes these solutions to be written to files (in .sol format) as they are found. The MIP solver will append _n.sol to the value of the parameter to form the name of the file that contains solution number . For example, setting the parameter to value solutions/mymodel will create files mymodel_0.sol, mymodel_1.sol, etc., in directory solutions. Note that intermediate solutions can be retrieved as they are generated through a callback (by requesting the MIPSOL_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 from our different APIs, refer to our Parameter Examples. ")]
public string SolFiles { get; set; }
Property Value
Type | Description |
---|---|
System.String |
SolutionLimit
Limits the number of feasible MIP solutions found. Optimization returns with a SOLUTION_LIMIT status once the limit has been reached (see the Status Code section for further details). To find a feasible solution quickly, Gurobi executes additional feasible point heuristics when the solution limit is set to exactly 1. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "MIP feasible solution limit", ShortName = "SolutionLimit", Description = "Limits the number of feasible MIP solutions found. Optimization returns with a SOLUTION_LIMIT status once the limit has been reached (see the Status Code section for further details). To find a feasible solution quickly, Gurobi executes additional feasible point heuristics when the solution limit is set to exactly 1. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples. ")]
public int? SolutionLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
SolutionNumber
When querying attribute Xn, ObjNVal, or PoolObjVal to retrieve an alternate MIP solution, this parameter determines which alternate solution is retrieved. The value of this parameter should be less than the value of the SolCount attribute. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Sub-optimal MIP solution retrieval", ShortName = "SolutionNumber", Description = "When querying attribute Xn, ObjNVal, or PoolObjVal to retrieve an alternate MIP solution, this parameter determines which alternate solution is retrieved. The value of this parameter should be less than the value of the SolCount attribute. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 explored when completing a partial MIP start. The default value of -1 uses the value of the SubMIPNodes parameter. A value of -2 means to only check full MIP starts for feasibility and to ignore partial MIP starts. A value of -3 shuts off MIP start processing entirely. Non-negative values are node limits. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Node limit for MIP start sub-MIP", ShortName = "StartNodeLimit", Description = "This parameter limits the number of branch-and-bound nodes explored when completing a partial MIP start. The default value of -1 uses the value of the SubMIPNodes parameter. A value of -2 means to only check full MIP starts for feasibility and to ignore partial MIP starts. A value of -3 shuts off MIP start processing entirely. Non-negative values are node limits. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 work with. When you modify a MIP start value (using the Start attribute) the StartNumber parameter will determine which MIP start is actually affected. The value of this parameter should be less than the 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 an error. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Set index of MIP start", ShortName = "StartNumber", Description = "This parameter selects the index of the MIP start you want to work with. When you modify a MIP start value (using the Start attribute) the StartNumber parameter will determine which MIP start is actually affected. The value of this parameter should be less than the 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 an error. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 from our different APIs, refer to our Parameter 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 from our different APIs, refer to our Parameter 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 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Sub-MIP cut generation", ShortName = "SubMIPCuts", Description = "Controls sub-MIP 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 from our different APIs, refer to our Parameter 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 takes longer. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 takes longer. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples. ")]
public int? SubMIPNodes { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
Symmetry
Controls symmetry detection. A value of -1 corresponds to an automatic setting. Other options are off (0), conservative (1), or aggressive (2). Symmetry can impact a number of different parts of the algorithm, including presolve, the MIP tree search, and the LP solution process. Default settings are quite effective, so changing the value of this parameter rarely produces a significant benefit. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Symmetry detection", ShortName = "Symmetry", Description = "Controls symmetry detection. A value of -1 corresponds to an automatic setting. Other options are off (0), conservative (1), or aggressive (2). Symmetry can impact a number of different parts of the algorithm, including presolve, the MIP tree search, and the LP solution process. Default settings are quite effective, so changing the value of this parameter rarely produces a significant benefit. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 default value of 0 is an automatic setting. It will generally use as many threads as there are virtual processors. The number of virtual processors may exceed the number of cores due to hyperthreading or other similar hardware features. While you will generally get the best performance by using all available cores in your machine, there are a few exceptions. One is of course when you are sharing a machine with other jobs. In this case, you should select a thread count that doesn't oversubscribe the machine. We have also found that certain classes of MIP models benefit from reducing 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 solver is 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 tree uncontested. Another situation where reducing the thread count can be helpful is when memory is tight. Each thread can consume a significant amount of memory. We've made the pragmatic choice to impose a soft limit of 32 threads for the automatic setting (0). If your machine has more, and you find that using more increases performance, you should feel free to set the parameter to a larger value. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 default value of 0 is an automatic setting. It will generally use as many threads as there are virtual processors. The number of virtual processors may exceed the number of cores due to hyperthreading or other similar hardware features. While you will generally get the best performance by using all available cores in your machine, there are a few exceptions. One is of course when you are sharing a machine with other jobs. In this case, you should select a thread count that doesn't oversubscribe the machine. We have also found that certain classes of MIP models benefit from reducing 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 solver is 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 tree uncontested. Another situation where reducing the thread count can be helpful is when memory is tight. Each thread can consume a significant amount of memory. We've made the pragmatic choice to impose a soft limit of 32 threads for the automatic setting (0). If your machine has more, and you find that using more increases performance, you should feel free to set the parameter to a larger value. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 the token server. You can refer to the server using its name or its IP address. You can provide a comma-separated list of token servers to increase robustness. If the first server in the list doesn't respond, the second will be tried, etc. You must set this parameter through either a gurobi.lic file (using TOKENSERVER=server) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Name of your token server.", ShortName = "TokenServer", Description = " When using a token license, set this parameter to the name of the token server. You can refer to the server using its name or its IP address. You can provide a comma-separated list of token servers to increase robustness. If the first server in the list doesn't respond, the second will be tried, etc. You must set this parameter through either a gurobi.lic file (using TOKENSERVER=server) or an empty environment. Changing the parameter after your environment has been created will have no effect. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string TokenServer { get; set; }
Property Value
Type | Description |
---|---|
System.String |
TSPort
Port to use when connecting to the Gurobi token server. You should only change this if your network administrator tells you to. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Token server port number.", ShortName = "TSPort", Description = "Port to use when connecting to the Gurobi token server. You should only change this if your network administrator tells you to. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 indicates the percentage of total tuning time to devote to this phase, with a goal of reducing the number of parameter changes required to achieve the best tuning result. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Enables a tuning cleanup phase", ShortName = "TuneCleanup", Description = "Enables a cleanup phase at the end of tuning. The parameter indicates the percentage of total tuning time to devote to this phase, with a goal of reducing the number of parameter changes required to achieve the best tuning result. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 tuning criterion is always to minimize the runtime required to find a proven optimal solution. However, for MIP models that don't solve to optimality within the specified time limit, a secondary criterion is needed. Set this parameter to 1 to use the optimality gap as the secondary criterion. Choose a value of 2 to use the objective of the best feasible solution found. Choose a value of 3 to use the best objective bound. Choose 0 to ignore the secondary criterion and focus entirely on minimizing the time to find a proven optimal solution. The default value of -1 chooses automatically. Note that for multi-objective problems value 1 and 3 are unsupported. See the Multiple Objectives section for more details on this. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Specify tuning criterion", ShortName = "TuneCriterion", Description = "Modifies the tuning criterion for the tuning tool. The primary tuning criterion is always to minimize the runtime required to find a proven optimal solution. However, for MIP models that don't solve to optimality within the specified time limit, a secondary criterion is needed. Set this parameter to 1 to use the optimality gap as the secondary criterion. Choose a value of 2 to use the objective of the best feasible solution found. Choose a value of 3 to use the best objective bound. Choose 0 to ignore the secondary criterion and focus entirely on minimizing the time to find a proven optimal solution. The default value of -1 chooses automatically. Note that for multi-objective problems value 1 and 3 are unsupported. See the Multiple Objectives section for more details on this. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? TuneCriterion { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneJobs
Enables distributed parallel tuning, which can significantly increase the performance of the tuning tool. A value of n causes the tuning tool to distribute tuning work among n parallel jobs. These jobs are distributed among a set of machines. Use the WorkerPool parameter to provide a distributed worker cluster. Note that distributed tuning is most effective when the worker machines have similar performance. Distributed tuning doesn't attempt to normalize performance by server, so it can incorrectly attribute a boost in performance to a parameter change when the associated setting is tried on a worker that is significantly faster than the others. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Enables distributed tuning", ShortName = "TuneJobs", Description = "Enables distributed parallel tuning, which can significantly increase the performance of the tuning tool. A value of n causes the tuning tool to distribute tuning work among n parallel jobs. These jobs are distributed among a set of machines. Use the WorkerPool parameter to provide a distributed worker cluster. Note that distributed tuning is most effective when the worker machines have similar performance. Distributed tuning doesn't attempt to normalize performance by server, so it can incorrectly attribute a boost in performance to a parameter change when the associated setting is tried on a worker that is significantly faster than the others. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? TuneJobs { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneMetric
A single tuning run typically produces multiple timing results for each candidate parameter set, either as a result of performing multiple trials, or tuning multiple models, or both. This parameter controls how these results are aggregated into a single measure. The default setting (-1) chooses the aggregation automatically; setting 0 computes the average of all individual results; setting 1 takes the maximum. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Metric to aggregate results into a single measure", ShortName = "TuneMetric", Description = "A single tuning run typically produces multiple timing results for each candidate parameter set, either as a result of performing multiple trials, or tuning multiple models, or both. This parameter controls how these results are aggregated into a single measure. The default setting (-1) chooses the aggregation automatically; setting 0 computes the average of all individual results; setting 1 takes the maximum. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? TuneMetric { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneOutput
Controls the amount of output produced by the tuning tool. Level 0 produces no output; level 1 produces tuning summary output only when a new best parameter set is found; level 2 produces tuning summary output for each parameter set that is tried; level 3 produces tuning summary output, plus detailed solver output, for each parameter set tried. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Tuning output level", ShortName = "TuneOutput", Description = "Controls the amount of output produced by the tuning tool. Level 0 produces no output; level 1 produces tuning summary output only when a new best parameter set is found; level 2 produces tuning summary output for each parameter set that is tried; level 3 produces tuning summary output, plus detailed solver output, for each parameter set tried. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? TuneOutput { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneResults
The tuning tool often finds multiple parameter sets that produce better results than the baseline settings. This parameter controls how many of these sets should be retained when tuning is complete. The default value retains the best results that were found for each count of changed parameters. In other words, it retains the best result 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 maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Number of improved parameter sets returned", ShortName = "TuneResults", Description = "The tuning tool often finds multiple parameter sets that produce better results than the baseline settings. This parameter controls how many of these sets should be retained when tuning is complete. The default value retains the best results that were found for each count of changed parameters. In other words, it retains the best result 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 maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? TuneResults { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
TuneTargetMIPGap
A target gap to be reached. As soon as the tuner has found parameter settings that allow Gurobi to reach the target gap for the given model(s), it stops trying to improve parameter settings further. Instead, the tuner switches into the cleanup phase (see TuneCleanup parameter). For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "A target gap to be reached", ShortName = "TuneTargetMIPGap", Description = "A target gap to be reached. As soon as the tuner has found parameter settings that allow Gurobi to reach the target gap for the given model(s), it stops trying to improve parameter settings further. Instead, the tuner switches into the cleanup phase (see TuneCleanup parameter). For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? TuneTargetMIPGap { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
TuneTargetTime
A target runtime in seconds to be reached. As soon as the tuner has found parameter settings that allow Gurobi to solve the model(s) within the target runtime, it stops trying to improve parameter settings further. Instead, the tuner switches into the cleanup phase (see TuneCleanup parameter). For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "A target runtime in seconds to be reached", ShortName = "TuneTargetTime", Description = "A target runtime in seconds to be reached. As soon as the tuner has found parameter settings that allow Gurobi to solve the model(s) within the target runtime, it stops trying to improve parameter settings further. Instead, the tuner switches into the cleanup phase (see TuneCleanup parameter). For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? TuneTargetTime { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
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 from our different APIs, refer to our Parameter 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 from our different APIs, refer to our Parameter Examples. ")]
public double? TuneTimeLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
TuneTrials
Performance on a MIP model can sometimes experience significant variations due to random effects. As a result, the tuning tool may return parameter sets that improve on the baseline only due to randomness. This parameter allows you to perform multiple solves for each parameter set, using different Seed values for each, in order to reduce the influence of randomness on the results. The default value of 0 indicates an automatic choice that depends on model characteristics. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 significant variations due to random effects. As a result, the tuning tool may return parameter sets that improve on the baseline only due to randomness. This parameter allows you to perform multiple solves for each parameter set, using different Seed values for each, in order to reduce the influence of randomness on the results. The default value of 0 indicates an automatic choice that depends on model characteristics. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter to a value larger than this maximum will produce an error. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? TuneTrials { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
UpdateMode
Determines how newly added variables and linear constraints are handled. The default setting (1) allows you to use new variables and constraints immediately for building or modifying the model. A setting of 0 requires you to call update before these can be used. Since the vast majority of programs never query Gurobi for details about the optimization models they build, the default setting typically removes the need to call update, or even be aware of the details of our lazy update approach for handling model modifications. However, these details will show through when you try to query modified model information. In the Gurobi interface, model modifications (bound changes, right-hand side changes, objective changes, etc.) are placed in a queue. These queued modifications are applied to the model at three times: when you call update, when you call optimize, or when you call write to write the model to disk. When you query information about the model, the result will depend on both whether that information was modified and when it was modified. In particular, no matter what setting of UpdateMode you use, if the modification is sitting in the queue, you'll get the result from before the modification. To expand on this a bit, all attribute modifications are actually placed in a queue. This includes attributes that may not traditionally be viewed as being part of the model, including things like variable branching priorities, constraint basis statuses, etc. Querying the values of these attributes will return their previous values if subsequent modifications are still in the queue. The only potential benefit to changing the parameter to 0 is that in unusual cases this setting may allow simplex to make more aggressive use of warm-start information after a model modification. If you want to change this parameter, you need to set it as soon as you create your Gurobi environment. Note that you still need to call update to modify an attribute on an SOS constraint, quadratic constraint, or general constraint. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Change the behavior of lazy updates", ShortName = "UpdateMode", Description = "Determines how newly added variables and linear constraints are handled. The default setting (1) allows you to use new variables and constraints immediately for building or modifying the model. A setting of 0 requires you to call update before these can be used. Since the vast majority of programs never query Gurobi for details about the optimization models they build, the default setting typically removes the need to call update, or even be aware of the details of our lazy update approach for handling model modifications. However, these details will show through when you try to query modified model information. In the Gurobi interface, model modifications (bound changes, right-hand side changes, objective changes, etc.) are placed in a queue. These queued modifications are applied to the model at three times: when you call update, when you call optimize, or when you call write to write the model to disk. When you query information about the model, the result will depend on both whether that information was modified and when it was modified. In particular, no matter what setting of UpdateMode you use, if the modification is sitting in the queue, you'll get the result from before the modification. To expand on this a bit, all attribute modifications are actually placed in a queue. This includes attributes that may not traditionally be viewed as being part of the model, including things like variable branching priorities, constraint basis statuses, etc. Querying the values of these attributes will return their previous values if subsequent modifications are still in the queue. The only potential benefit to changing the parameter to 0 is that in unusual cases this setting may allow simplex to make more aggressive use of warm-start information after a model modification. If you want to change this parameter, you need to set it as soon as you create your Gurobi environment. Note that you still need to call update to modify an attribute on an SOS constraint, quadratic constraint, or general constraint. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 and password, or an access ID and a secret key, to authenticate your connection to a Cluster Manager. You can set this parameter through either a gurobi.lic file (using USERNAME=YOUR_USERNAME) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter 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 and password, or an access ID and a secret key, to authenticate your connection to a Cluster Manager. You can set this parameter through either a gurobi.lic file (using USERNAME=YOUR_USERNAME) or an empty environment. Changing the parameter after your environment has been started will result in an error. Note: Cluster Manager only For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string UserName { get; set; }
Property Value
Type | Description |
---|---|
System.String |
VarBranch
Controls the branch variable selection strategy. The default -1 setting makes an automatic choice, depending on problem characteristics. Available alternatives are Pseudo Reduced Cost Branching (0), Pseudo Shadow Price Branching (1), Maximum Infeasibility Branching (2), and Strong Branching (3). Changing the value of this parameter rarely produces a significant benefit. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Branch variable selection strategy", ShortName = "VarBranch", Description = "Controls the branch variable selection strategy. The default -1 setting makes an automatic choice, depending on problem characteristics. Available alternatives are Pseudo Reduced Cost Branching (0), Pseudo Shadow Price Branching (1), Maximum Infeasibility Branching (2), and Strong Branching (3). Changing the value of this parameter rarely produces a significant benefit. Note: Only affects mixed integer programming (MIP) models For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? VarBranch { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
WLSAccessID
When using a WLS license, set this parameter to the access ID for your license. You can retrieve this string from your account on the Gurobi Web License Manager site. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "WLS access ID.", ShortName = "WLSAccessID", Description = " When using a WLS license, set this parameter to the access ID for your license. You can retrieve this string from your account on the Gurobi Web License Manager site. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string WLSAccessID { get; set; }
Property Value
Type | Description |
---|---|
System.String |
WLSSecret
When using a WLS license, set this parameter to the secret key for your license. You can retrieve this string from your account on the Gurobi Web License Manager site. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "WLS secret.", ShortName = "WLSSecret", Description = " When using a WLS license, set this parameter to the secret key for your license. You can retrieve this string from your account on the Gurobi Web License Manager site. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string WLSSecret { get; set; }
Property Value
Type | Description |
---|---|
System.String |
WLSToken
If you are using a WLS license and have retrieved your own token through the WLS REST API, use this parameter to pass that token to the library. If you do this, you don't need to set any other WLS-related parameters. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "WLS token.", ShortName = "WLSToken", Description = " If you are using a WLS license and have retrieved your own token through the WLS REST API, use this parameter to pass that token to the library. If you do this, you don't need to set any other WLS-related parameters. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string WLSToken { get; set; }
Property Value
Type | Description |
---|---|
System.String |
WLSTokenDuration
When using a WLS license, this parameter can be used to adjust the lifespan (in minutes) of a token. A token enables Gurobi to run on that client for the life of the token. Gurobi will automatically request a new token if the current one expires, but it won't notify the WLS server if it completes its work before the current token expires. A shorter lifespan is better for short-lived usage. A longer lifespan is better for environments where the network connection to the WLS server is unreliable. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "WLS token duration.", ShortName = "WLSTokenDuration", Description = "When using a WLS license, this parameter can be used to adjust the lifespan (in minutes) of a token. A token enables Gurobi to run on that client for the life of the token. Gurobi will automatically request a new token if the current one expires, but it won't notify the WLS server if it completes its work before the current token expires. A shorter lifespan is better for short-lived usage. A longer lifespan is better for environments where the network connection to the WLS server is unreliable. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public int? WLSTokenDuration { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Int32> |
WLSTokenRefresh
The value specifies the fraction of the token duration after which a token refresh is triggered. So, for example, if the token duration is 30 minutes and WLSTokenRefresh is set to 0.6, the token will be refreshed every 18 minutes. The minimum refresh interval is 4 minutes. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Relative WLS token refresh interval.", ShortName = "WLSTokenRefresh", Description = "The value specifies the fraction of the token duration after which a token refresh is triggered. So, for example, if the token duration is 30 minutes and WLSTokenRefresh is set to 0.6, the token will be refreshed every 18 minutes. The minimum refresh interval is 4 minutes. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? WLSTokenRefresh { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
WorkerPassword
When using a distributed algorithm (distributed MIP, distributed concurrent, or distributed tuning), this parameter allows you to specify the password for the distributed worker cluster provided in the WorkerPool parameter. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Password for distributed worker cluster", ShortName = "WorkerPassword", Description = " When using a distributed algorithm (distributed MIP, distributed concurrent, or distributed tuning), this parameter allows you to specify the password for the distributed worker cluster provided in the WorkerPool parameter. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string WorkerPassword { get; set; }
Property Value
Type | Description |
---|---|
System.String |
WorkerPool
When using a distributed algorithm (distributed MIP, distributed concurrent, or distributed tuning), this parameter allows you to specify a Remote Services cluster that will provide distributed workers. You should also specify the access password for that cluster, if there is one, in the WorkerPassword parameter. Note that you don't need to set either of these parameters if your job is running on a Compute Server node and you want to use the same cluster for the distributed workers. You can provide a comma-separated list of machines for added robustness. If the first node in the list is unavailable, the client will attempt to contact the second node, etc. To give an example, if you have a Remote Services cluster that uses port 61000 on a pair of machines named server1 and server2, you could set WorkerPool to "server1:61000" or "server1:61000,server2:61000". For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Distributed worker cluster", ShortName = "WorkerPool", Description = " When using a distributed algorithm (distributed MIP, distributed concurrent, or distributed tuning), this parameter allows you to specify a Remote Services cluster that will provide distributed workers. You should also specify the access password for that cluster, if there is one, in the WorkerPassword parameter. Note that you don't need to set either of these parameters if your job is running on a Compute Server node and you want to use the same cluster for the distributed workers. You can provide a comma-separated list of machines for added robustness. If the first node in the list is unavailable, the client will attempt to contact the second node, etc. To give an example, if you have a Remote Services cluster that uses port 61000 on a pair of machines named server1 and server2, you could set WorkerPool to \"server1:61000\" or \"server1:61000,server2:61000\". For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public string WorkerPool { get; set; }
Property Value
Type | Description |
---|---|
System.String |
WorkLimit
Limits the total work expended (in work units). Optimization returns with a WORK_LIMIT status if the limit is exceeded (see the Status Code section for further details). In contrast to the TimeLimit, work limits are deterministic. This means that on the same hardware and with the same parameter and attribute settings, a work limit will stop the optimization of a given model at the exact same point every time. One work unit corresponds very roughly to one second on a single thread, but this greatly depends on the hardware on which Gurobi is running and the model that is being solved. Note that optimization may not stop immediately upon hitting the work limit. It will stop when the optimization is next in a deterministic state, and it will then perform the required additional computations of the attributes associated with the terminated optimization. As a result, the Work attribute may be larger than the specified WorkLimit upon completion, and repeating the optimization with a WorkLimit set to the Work attribute of the stopped optimization may result in additional computations and a larger attribute value. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Work limit", ShortName = "WorkLimit", Description = "Limits the total work expended (in work units). Optimization returns with a WORK_LIMIT status if the limit is exceeded (see the Status Code section for further details). In contrast to the TimeLimit, work limits are deterministic. This means that on the same hardware and with the same parameter and attribute settings, a work limit will stop the optimization of a given model at the exact same point every time. One work unit corresponds very roughly to one second on a single thread, but this greatly depends on the hardware on which Gurobi is running and the model that is being solved. Note that optimization may not stop immediately upon hitting the work limit. It will stop when the optimization is next in a deterministic state, and it will then perform the required additional computations of the attributes associated with the terminated optimization. As a result, the Work attribute may be larger than the specified WorkLimit upon completion, and repeating the optimization with a WorkLimit set to the Work attribute of the stopped optimization may result in additional computations and a larger attribute value. For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples. ")]
public double? WorkLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Nullable<System.Double> |
ZeroHalfCuts
Controls zero-half 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Zero-half cut generation", ShortName = "ZeroHalfCuts", Description = "Controls zero-half 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 from our different APIs, refer to our Parameter 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 that this heuristic is only applied at the end of the MIP root, and only when no other root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor quality solutions. You should generally only use it if other means, including exploration of the tree with default settings, fail to produce a feasible solution. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter Examples.
Declaration
[Display(Name = "Zero objective heuristic control", ShortName = "ZeroObjNodes", Description = "Number of nodes to explore in the zero objective heuristic. Note that this heuristic is only applied at the end of the MIP root, and only when no other root heuristic finds a feasible solution. This heuristic is quite expensive, and generally produces poor quality solutions. You should generally only use it if other means, including exploration of the tree with default settings, fail to produce a feasible solution. One important note about integer-valued parameters: while the maximum value that can be stored in a signed integer is , we use a MAXINT value of 2,000,000,000. Attempting to set an integer parameter 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 from our different APIs, refer to our Parameter 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 |
IsWebLicenseServerSpecified()
Checks if all required fields for the Web License Service (WLS) are specified in the current GurobiSolverConfiguration. I.e.
WLSSecret and
WLSAccessID
OR
WLSToken.
Declaration
public bool IsWebLicenseServerSpecified()
Returns
Type | Description |
---|---|
System.Boolean | True, if all required fields are specified. Does |