Reference · 2.0 development

Solver settings

All settings of SHOT, including those of the MIP and NLP solvers and of GAMS. These only have an effect if SHOT is built with them, as noted in the descriptions; a build without them warns when they are changed. Some settings have another default for nonconvex problems, applied unless Strategy.UseRecommendedSettings is false, and the default MIP solver depends on the build.

Dual strategy

These settings control the various functionality of the dual strategy in SHOT, i.e., the polyhedral outer approximation utilizing the ESH or ECP algorithms.

Name and description

Valid values

Default value

Dual.CutStrategy
Dual cut strategy
0: ESH 1: ECP 2: Only external (through callback)

{0,…,2}

0

Dual.TreeStrategy
The main strategy to use
0: Multi-tree 1: Single-tree

{0,1}

1

Convex Bounding

These settings control the convex bounding strategy that solves a MIP problem with all hyperplane cuts generated for convex constraints so far and ignoring those generated for nonconvex constraints. This will give a dual bound for the nonconvex problem.

Name and description

Valid values

Default value

Dual.ConvexBounding.IdleIterations
How many iterations with new hyperplanes the convex bounding strategy is skipped before it is performed again: 0 = Every iteration with new hyperplanes, 1 = Every second such iteration, etc.

{0,…,∞}

10

Dual.ConvexBounding.Use
Enable the convex bounding strategy for nonconvex problems

true/false

true

Extended supporting hyperplane method

These settings control various aspects of the ESH implementation, including the strategy to obtain the interior point.

Name and description

Valid values

Default value

Dual.ESH.InteriorPoint.CuttingPlane.ConstraintSelectionFactor
Max number of violated nonlinear constraints, the most violated first, to generate cutting planes for in the interior point search, as a fraction of the number of nonlinear constraints

[0,1]

0.25

Dual.ESH.InteriorPoint.CuttingPlane.IterationLimit
Iteration limit for minimax cutting plane solver
Nonconvex default: 50

{1,…,∞}

100

Dual.ESH.InteriorPoint.CuttingPlane.IterationLimitSubsolver
Iteration limit for minimization subsolver

{0,…,∞}

100

Dual.ESH.InteriorPoint.CuttingPlane.Reuse
Reuse valid cutting planes in main dual model

true/false

false

Dual.ESH.InteriorPoint.CuttingPlane.TerminationToleranceAbs
Absolute termination tolerance between LP and linesearch objective

[0,∞]

1

Dual.ESH.InteriorPoint.CuttingPlane.TerminationToleranceRel
Relative termination tolerance between LP and linesearch objective

[0,∞]

1

Dual.ESH.InteriorPoint.CuttingPlane.TimeLimit
Time limit for minimax solver

[0,∞]

10

Dual.ESH.InteriorPoint.MinimaxObjectiveLowerBound
Lower bound for minimax objective variable

[-∞,0]

-1000000000000

Dual.ESH.InteriorPoint.MinimaxObjectiveUpperBound
Upper bound for minimax objective variable

[-∞,∞]

0.1

Dual.ESH.InteriorPoint.Strategy
Strategy for finding ESH interior points
0: Use internal strategy 1: Only external (through callback)

{0,1}

0

Dual.ESH.InteriorPoint.UsePrimalSolution
Utilize primal solution as interior point
0: Only if there is no interior point 1: Add as new 2: Replace old 3: Use average

{0,…,3}

1

Dual.ESH.Rootsearch.ConstraintTolerance
Constraint tolerance for when not to add individual hyperplanes

[0,∞]

1e-08

Dual.ESH.Rootsearch.UseMaxFunction
Perform rootsearch on max function, otherwise on individual constraints

true/false

false

Generated hyperplane cuts

These settings control how the cutting planes or supporting hyperplanes are generated.

Name and description

Valid values

Default value

Dual.HyperplaneCuts.ConstraintSelectionFactor
Max number of violated nonlinear constraints, the most violated first, to generate hyperplanes for in each solution point, as a fraction of the number of nonlinear constraints
Nonconvex default: 1

[0,1]

0.5

Dual.HyperplaneCuts.Delay
Add hyperplane cuts to model only after optimal MIP solution

true/false

true

Dual.HyperplaneCuts.MaxConstraintFactor
Rootsearch performed on constraints with values larger than this factor times the maximum value

[1e-06,1]

0.1

Dual.HyperplaneCuts.MaxPerIteration
Maximal number of hyperplanes to add per iteration

{0,…,∞}

200

Dual.HyperplaneCuts.NonfinitePointRetreatFactor
The smallest fraction of the distance to a point where the constraint is finite that the point a hyperplane is generated in is moved, when the constraint is not finite in it

[1e-12,0.5]

0.001

Dual.HyperplaneCuts.ObjectiveRootSearch
When to use the objective root search
0: Always 1: IfConvex 2: Never

{0,…,2}

1

Dual.HyperplaneCuts.UniqueConstraints
Allow only one hyperplane per constraint per iteration

true/false

false

Dual.HyperplaneCuts.UseIntegerCuts
Add integer cuts for infeasible integer-combinations for binary problems
Nonconvex default: true

true/false

false

MIP solver

These settings control the general functionality of the MIP solver in the dual strategy. Note that solver-specific settings for Cplex, Gurobi and Cbc are available under the “Subsolver” category.

Name and description

Valid values

Default value

Dual.MIP.CutOff.InitialValue
Initial cutoff value to use

[-∞,∞]

1.7976931348623157e+308

Dual.MIP.CutOff.Tolerance
An extra tolerance for the objective cutoff value (to prevent infeasible subproblems)

[0,∞]

1e-05

Dual.MIP.CutOff.UseInitialValue
Use the initial cutoff value

true/false

false

Dual.MIP.InfeasibilityRepair.CutResetLimit
Max number of times the cuts of nonconvex constraints are removed without primal objective value improvement when the infeasibility repair loops

{0,…,∞}

3

Dual.MIP.InfeasibilityRepair.IntegerCuts
Allow feasibility repair of integer cuts

true/false

false

Dual.MIP.InfeasibilityRepair.IterationLimit
Max number of infeasible problems repaired without primal objective value improvement

{0,…,∞}

100

Dual.MIP.InfeasibilityRepair.RelaxCutsViolatedByPrimal
Relax the cuts of nonconvex constraints that cut off a known primal solution

true/false

true

Dual.MIP.InfeasibilityRepair.TimeLimit
Time limit when repairing infeasible problem

[0,∞]

10

Dual.MIP.InfeasibilityRepair.Use
Enable the infeasibility repair strategy for nonconvex problems

true/false

true

Dual.MIP.NodeLimit
Node limit for each solve of the MIP solver: 0: No limit

{0,…,∞}

0

Dual.MIP.NumberOfThreads
Number of threads to use in MIP solver: 0: Automatic

{0,…,999}

0

Dual.MIP.OptimalityTolerance
The reduced-cost tolerance for optimality in the MIP solver

[1e-09,0.01]

1e-06

Dual.MIP.RandomSeed
Random seed for the pseudorandom choices in the MIP solver: 0: The default of the solver used

{0,…,∞}

0

Dual.MIP.SolutionLimit.ForceOptimal.Iteration
Iterations without dual bound updates for forcing optimal MIP solution (multi-tree)

{0,…,∞}

10000

Dual.MIP.SolutionLimit.ForceOptimal.Time
Time (s) without dual bound updates for forcing optimal MIP solution (multi-tree)

[0,∞]

1000

Dual.MIP.SolutionLimit.IncreaseFactor
Factor the MIP solution limit is multiplied by when increased: 1: Increase by one

[1,∞]

2

Dual.MIP.SolutionLimit.IncreaseIterations
Max number of iterations between MIP solution limit increases

{0,…,∞}

50

Dual.MIP.SolutionLimit.Initial
Initial MIP solution limit
Nonconvex default: ∞

{1,…,∞}

1

Dual.MIP.SolutionLimit.UpdateTolerance
The constraint tolerance for when to update MIP solution limit

[0,∞]

0.001

Dual.MIP.SolutionPool.Capacity
The maximum number of solutions in the solution pool of the MIP solver

{1,…,∞}

100

Dual.MIP.Solver
Which MIP solver to use. Default: the first available of Gurobi, Cplex, Highs and Cbc
0: Cplex 1: Gurobi 2: Cbc 3: Highs

{0,…,3}

3

Dual.MIP.UpdateObjectiveBounds
Update nonlinear objective variable bounds to primal/dual bounds

true/false

false

Dual.MIP.UseDualSolutionStart
Give the discrete values of the previous MIP solution as a partial MIP start in the multi-tree strategy; Cplex and Gurobi get it in addition to the primal solution, HiGHS and Cbc instead of it
Nonconvex default: false

true/false

true

Dual reduction cut

These settings control the added dual reduction cuts from the primal solution that will try to force a better primal solution. This functionality is only used if SHOT cannot deduce that the problem is convex.

Name and description

Valid values

Default value

Dual.ReductionCut.MaxIterations
Maximum number of reduction cuts without primal improvement before terminating

{0,…,∞}

20

Dual.ReductionCut.ReductionFactor
Reduction of the cutoff per reduction cut, relative to max(1,

cutoff

), in the Fraction strategy when the relative gap is at most 0.1 or above 1

Dual.ReductionCut.Strategy
The reduction cut strategy to use
0: Fraction 1: GoldenRatio

{0,1}

0

Dual.ReductionCut.Use
Enable the dual reduction cut strategy for nonconvex problems

true/false

true

Relaxation strategies

These settings control various aspects regarding integer-relaxation of the dual problem.

Name and description

Valid values

Default value

Dual.Relaxation.Frequency
The frequency to solve an LP problem, if Dual.Relaxation.Use is true (by default not for nonconvex problems): 0: Disable

{0,…,∞}

0

Dual.Relaxation.IterationLimit
The max number of relaxed LP problems to solve initially

{0,…,∞}

200

Dual.Relaxation.MaxLazyConstraints
Max number of lazy constraints to add in relaxed solutions in single-tree strategy

{0,…,∞}

0

Dual.Relaxation.TerminationTolerance
Stop solving relaxed problems when the maximum constraint deviation is at most this value

[0,∞]

0.5

Dual.Relaxation.TimeLimit
Time limit (s) when solving LP problems initially

[0,∞]

30

Dual.Relaxation.Use
Initially solve continuous dual relaxations
Nonconvex default: false

true/false

true

Optimization model

These settings control various aspects of SHOT’s representation for and handling of the provided optimization model.

Bound tightening

SHOT performs bound tightening to strengthen the internal representation of the problem. These settings control how and when bound tightening is performed.

Name and description

Valid values

Default value

Model.BoundTightening.FeasibilityBased.MaxIterations
Maximal number of bound tightening iterations

{0,…,∞}

5

Model.BoundTightening.FeasibilityBased.TimeLimit
Time limit for bound tightening

[0,∞]

2

Model.BoundTightening.FeasibilityBased.Use
Perform feasibility-based bound tightening

true/false

true

Model.BoundTightening.FeasibilityBased.UseAfterCallback
Perform feasibility-based bound tightening again after a BoundTightening callback has tightened bounds

true/false

false

Model.BoundTightening.FeasibilityBased.UseNonlinear
Perform feasibility-based bound tightening on nonlinear expressions

true/false

true

Model.BoundTightening.InitialPOA.ConstraintTolerance
Constraint termination tolerance

[0,∞]

0.1

Model.BoundTightening.InitialPOA.CutStrategy
Dual cut strategy
0: ESH 1: ECP

{0,1}

1

Model.BoundTightening.InitialPOA.DirectionalSolves
Maximum number of additional solves minimizing or maximizing a variable in a convex constraint without cuts

{0,…,∞}

10

Model.BoundTightening.InitialPOA.IterationLimit
Iteration limit for POA

{1,…,∞}

50

Model.BoundTightening.InitialPOA.ObjectiveConstraintTolerance
Objective constraint termination tolerance

[0,∞]

0.001

Model.BoundTightening.InitialPOA.ObjectiveGapAbsolute
Absolute objective gap termination level

[0,∞]

0.1

Model.BoundTightening.InitialPOA.ObjectiveGapRelative
Relative objective gap termination level

[0,∞]

0.1

Model.BoundTightening.InitialPOA.StagnationConstraintTolerance
Tolerance factor for when no progress is made

[0,∞]

0.01

Model.BoundTightening.InitialPOA.StagnationIterationLimit
Limit for iterations without significant progress

{0,…,∞}

5

Model.BoundTightening.InitialPOA.TimeLimit
Time limit for all the problems solved for the initial POA

[0,∞]

5

Model.BoundTightening.InitialPOA.Use
Create an initial polyhedral outer approximation

true/false

false

Convexity

These settings control the convexity detection functionality

Name and description

Valid values

Default value

Model.Convexity.AssumeConvex
Assume that the problem is convex

true/false

false

Model.Convexity.Quadratics.EigenValueTolerance
Convexity tolerance for the eigenvalues of the Hessian matrix for quadratic terms

[0,∞]

1e-05

Automatic reformulations

These settings control the automatic reformulations performed in SHOT.

Name and description

Valid values

Default value

Model.Reformulation.AbsoluteValue.MaximumBigM
The largest big-M used to bound an absolute value from above with a binary variable; above it, the absolute value is only bounded from below

[0,∞]

100000000

Model.Reformulation.Bilinear.AddConvexEnvelope
Add convex envelopes (subject to original bounds) to bilinear terms

true/false

false

Model.Reformulation.Bilinear.IntegerFormulation
Reformulate integer bilinear terms
0: No 1: No if nonconvex quadratic terms allowed by MIP solver 2: Yes

{0,…,2}

1

Model.Reformulation.Bilinear.IntegerFormulation.MaxDomain
Do not reformulate integer variables in bilinear terms which can assume more than this number of discrete values

{2,…,∞}

250

Model.Reformulation.Bilinear.InverseFormulation
Reformulate constraints ax1x2 >= c with positive variables as c/(ax1) - x2 <= 0 (and c/(ax2) - x1 <= 0)
0: None 1: One constraint 2: Both constraints

{0,…,2}

2

Model.Reformulation.Constraint.PartitionNonlinearTerms
When to partition nonlinear sums in constraints
0: Always 1: If result is convex 2: Never

{0,…,2}

1

Model.Reformulation.Constraint.PartitionQuadraticTerms
When to partition quadratic sums in constraints, also in nonlinear constraints
0: Always 1: If result is convex 2: Never

{0,…,2}

1

Model.Reformulation.Monomials.Extract
Extract monomial terms from nonlinear expressions

true/false

true

Model.Reformulation.Monomials.Formulation
How to reformulate binary monomials
0: None 1: Simple 2: Costa and Liberti

{0,…,2}

1

Model.Reformulation.ObjectiveFunction.EpigraphStrategy
How to choose between objective-function and epigraph-constraint form for the objective. ‘Unchanged’ performs no epigraph or anti-epigraph reformulation, keeping the objective function exactly as given; ‘Objective function’ always keeps (or folds back to) a direct objective function; ‘Epigraph constraint’ always introduces an epigraph auxiliary-variable constraint for nonlinear or quadratic objectives
0: Unchanged 1: Objective function 2: Epigraph constraint

{0,…,2}

0

Model.Reformulation.ObjectiveFunction.PartitionNonlinearTerms
When to partition nonlinear sums in objective function
0: Always 1: If result is convex 2: Never

{0,…,2}

1

Model.Reformulation.ObjectiveFunction.PartitionQuadraticTerms
When to partition quadratic sums in the objective function, also in a nonlinear objective function
0: Always 1: If result is convex 2: Never

{0,…,2}

1

Model.Reformulation.Quadratics.Decomposition.Formulation
Placement of the original term coefficient when decomposing a quadratic term
0: Coefficient is included in reformulation 1: Coefficient remains

{0,1}

0

Model.Reformulation.Quadratics.Decomposition.LDLMaximumFill
Skip the LDL decomposition if L would have more than this times the nonzeros of the quadratic matrix, and over a million (0 = no limit)

[0,∞]

100

Model.Reformulation.Quadratics.Decomposition.Method
How to decompose convex quadratic functions
0: No decomposition 1: Eigenvalue decomposition 2: LDL decomposition

{0,…,2}

2

Model.Reformulation.Quadratics.Decomposition.Tolerance
Terms with corresponding eigenvalues or diagonal elements in D-matrix smaller than this value will be ignored

[0,∞]

1e-07

Model.Reformulation.Quadratics.ExtractStrategy
How to extract quadratic terms from nonlinear expressions
0: Do not extract 1: Extract to same objective or constraint 2: Extract to quadratic equality constraint if nonconvex 3: Extract to quadratic equality constraint even if convex

{0,…,3}

1

Model.Reformulation.Quadratics.Strategy
How to treat quadratic functions
0: All nonlinear 1: Use quadratic objective 2: Use convex quadratic objective and constraints 3: Use nonconvex quadratic objective and constraints
Nonconvex default with Gurobi: 3 (Use nonconvex quadratic objective and constraints)

{0,…,3}

2

Model.Reformulation.Signomials.Extract
Extract signomial terms from nonlinear expressions

true/false

true

Variables

These settings control the maximum variable bounds allowed in SHOT. Projection will be performed onto these intervals. Note that the MIP solvers may have stricter requirements, in which case those may be used.

Name and description

Valid values

Default value

Model.Variables.Continuous.MaximumUpperBound
Maximum upper bound for continuous variables

[0,∞]

1e+50

Model.Variables.Continuous.MinimumLowerBound
Minimum lower bound for continuous variables

[-∞,0]

-1e+50

Model.Variables.Integer.MaximumUpperBound
Maximum upper bound for integer variables

[0,∞]

2000000000

Model.Variables.Integer.MinimumLowerBound
Minimum lower bound for integer variables

[-∞,0]

-2000000000

Model.Variables.NonlinearObjectiveVariable.Bound
Absolute bound for the auxiliary nonlinear objective variable, used when the bounds of the objective function cannot be calculated with interval arithmetic

[0,∞]

1000000000000

Modeling system

These settings control functionality used in the interfaces to different modeling environments.

GAMS interface

These settings control functionality used in the GAMS interface. Requires SHOT compiled with GAMS (API 21 or newer).

Name and description

Valid values

Default value

ModelingSystem.GAMS.QExtractAlg
Extraction algorithm for quadratic equations in GAMS interface
0: automatic 1: threepass 2: doubleforward 3: concurrent (GAMS API 25 or newer)

{0,…,3}

0

ModelingSystem.GAMS.QExtractDenseSwitchFactor
Sparse/dense factor for quadratic extraction algorithm in GAMS interface (GAMS API 28 or newer).

[0,∞]

0.008

ModelingSystem.GAMS.QExtractDenseSwitchLog
Whether to print additional information about sparse/dense factor choice in quadratic extraction algorithm in GAMS interface (GAMS API 28 or newer).

true/false

false

Solver output

These settings control how much and what output is shown to the user from the solver.

Name and description

Valid values

Default value

Output.OutputDirectory
Where to save the output files
0: Problem directory 1: Program directory

{0,1}

1

Output.SaveNumberOfSolutions
Max number of primal solutions to keep and to save to OSrL or GDX files

{1,…,∞}

1

Output.Console.DualSolver.Show
Show output from dual solver on console

true/false

false

Output.Console.Iteration.Detail
Which iterations are shown on the console: all, or only those that update the objective gap (and those with a primal NLP call). Some iterations are shown regardless after 100 hidden ones or 2 s
0: Full 1: On objective gap update 2: On objective gap update and all primal NLP calls

{0,…,2}

1

Output.Console.LogLevel
Log level for console output
0: Trace 1: Debug 2: Info 3: Warning 4: Error 5: Critical 6: Off

{0,…,6}

2

Output.Console.PrimalSolver.Show
Show output from primal solver on console

true/false

false

Output.Debug.Enable
Use debug functionality

true/false

false

Output.Debug.Path
The folder where to save the debug information

string

Output.File.LogLevel
Log level for file output
0: Trace 1: Debug 2: Info 3: Warning 4: Error 5: Critical 6: Off

{0,…,6}

2

Output.GAMS.AlternateSolutionsFile
Name of GAMS GDX file to write alternative solutions to

string

Primal heuristics

These settings control the primal heuristics used in SHOT.

Fixed-integer (NLP) strategy

The main primal strategy in SHOT is to solve integer-fixed NLP problems. These settings control, e.g., how often NLP problems are solved.

Name and description

Valid values

Default value

Primal.FixedInteger.CallStrategy
When should the fixed strategy be used
0: Use each iteration 1: Based on iteration or time 2: Based on iteration or time, and whenever a MIP solution fulfils the nonlinear constraints
Nonconvex default: 0 (Use each iteration)

{0,…,2}

2

Primal.FixedInteger.CreateInfeasibilityCut
Create cutting planes in the solution point of the fixed-integer NLP problem for the nonlinear constraints it violates

true/false

false

Primal.FixedInteger.CreateSupportingHyperplanes
Create supporting hyperplanes in a feasible solution of the fixed-integer NLP problem for the convex nonlinear objective function and the nonlinear constraints active in it.

true/false

true

Primal.FixedInteger.DualPointGap.Relative
If the objective gap between the MIP point and dual solution is less than this the fixed strategy is activated

[0,∞]

0.001

Primal.FixedInteger.Enumeration.MaxCombinations
Max number of combinations of the discrete variables for the exhaustive search to be performed

{1,…,∞}

50

Primal.FixedInteger.Enumeration.TimeLimit
Time limit (s) for all NLP problems in the exhaustive search

[0,∞]

20

Primal.FixedInteger.Enumeration.UseAsFallback
Solve NLP problems for all combinations of the discrete variables if the objective gap could not be closed

true/false

true

Primal.FixedInteger.Enumeration.UseInitially
Solve NLP problems for all combinations of the discrete variables before the dual strategy
Nonconvex default: true

true/false

false

Primal.FixedInteger.Frequency.Dynamic
Dynamically update the call frequency based on success

true/false

true

Primal.FixedInteger.Frequency.Iteration
Max number of iterations between calls

{0,…,∞}

10

Primal.FixedInteger.Frequency.Time
Max duration (s) between calls

[0,∞]

5

Primal.FixedInteger.IterationLimit
Max number of iterations per call of the NLP solver: 0: The default of the NLP solver

{0,…,∞}

0

Primal.FixedInteger.NumberOfThreads
Number of threads for each NLP problem, in the NLP solver and its BLAS and OpenMP libraries: 0: Automatic

{0,…,∞}

1

Primal.FixedInteger.OnlyUniqueIntegerCombinations
Solve the NLP problem only once for each combination of the discrete variables. If false, it is solved again from different continuous values, e.g. for nonconvex problems
Nonconvex default: false

true/false

true

Primal.FixedInteger.Solver
NLP solver to use. Default: Ipopt. If it is not available, the first available of CONOPT, the GAMS NLP solvers (only for GAMS models), Uno and SHOT is used
0: Ipopt 1: GAMS 2: SHOT 3: Uno 4: Conopt

{0,…,4}

0

Primal.FixedInteger.Source
Which solutions of the dual problem the fixed-integer NLP problem is solved from. In single-tree, the callbacks use each new incumbent, and this applies to the solution pool after the search
0: All 1: First 2: All feasible 3: First and the one with the smallest constraint deviation 4: With smallest constraint deviation
Nonconvex default: 0 (All)

{0,…,4}

3

Primal.FixedInteger.SourceProblem
Which problem formulation to use for NLP problem
0: Original problem 1: Reformulated problem 2: Both
Nonconvex default: 2 (Both)

{0,…,2}

1

Primal.FixedInteger.SupportingHyperplanes.ActiveTolerance
A constraint with a value within this tolerance of its bound is active in the fixed-integer NLP solution

[0,∞]

1e-05

Primal.FixedInteger.SupportingHyperplanes.MaxPerSolution
Max number of supporting hyperplanes in each fixed-integer NLP solution

{0,…,∞}

50

Primal.FixedInteger.SupportingHyperplanes.Nonconvex
Also create the supporting hyperplanes for nonconvex constraints and objective functions. As the hyperplanes of the dual strategy for these, they are not global and can be relaxed if they cut away a primal solution

true/false

false

Primal.FixedInteger.SupportingHyperplanes.OnlyViolated
Only create the supporting hyperplanes that cut away the dual solution the integer assignment comes from

true/false

false

Primal.FixedInteger.TimeLimit
Time limit (s) per NLP problem

[0,∞]

10

Primal.FixedInteger.Use
Use the fixed integer primal strategy

true/false

true

Primal.FixedInteger.UseStartingPoint
Solve an NLP problem from a given starting point that is not feasible, e.g. the levels of the variables in GAMS or the initial values in AMPL, before the first dual problem, and from such points given by the PrimalCandidateSearch callback at the next NLP call

true/false

true

Primal.FixedInteger.Warmstart
Warm start the NLP solver

true/false

true

Primal.PolishSolution.NumberOfPoints
After the search, polish the solution with NLP problems started from the best primal solution and from the dual solutions of this many last iterations, not for LP, MILP or convex continuous problems: 0: Off

{0,…,∞}

1

Primal solution tolerances

These settings sets various tolerances for accepting primal solutions.

Name and description

Valid values

Default value

Primal.Tolerance.Integer
Integer tolerance for accepting primal solutions

[0,0.5]

1e-05

Primal.Tolerance.LinearConstraint
Linear constraint tolerance for accepting primal solutions

[0,∞]

1e-06

Primal.Tolerance.NonlinearConstraint
Nonlinear constraint tolerance for accepting primal solutions

[0,∞]

1e-05

Primal.Tolerance.TrustLinearConstraintValues
Trust that fixed-integer NLP and LP solvers respect linear constraints; MIP candidates are always checked

true/false

true

Strategy

Overall strategy parameters used in SHOT.

Name and description

Valid values

Default value

Strategy.UseRecommendedSettings
Use the recommended defaults for nonconvex problems and MIP solvers, shown in the setting descriptions, and the solver-specific adjustments

true/false

true

Subsolver functionality

These settings allow for more direct control of the different subsolvers utilized in SHOT.

Cbc

Requires SHOT compiled with Cbc.

Name and description

Valid values

Default value

Subsolver.Cbc.AutoScale
Whether to scale objective, rhs and bounds of problem if they look odd (experimental)

true/false

false

Subsolver.Cbc.Cuts
Use the cut generators of Cbc, which can give a wrong optimal value for a MILP problem

true/false

false

Subsolver.Cbc.DeterministicParallelMode
Run Cbc with multiple threads in deterministic mode

true/false

false

Subsolver.Cbc.NodeStrategy
Node strategy
0: depth 1: downdepth 2: downfewest 3: fewest 4: hybrid 5: updepth 6: upfewest

{0,…,6}

4

Subsolver.Cbc.Scaling
Whether to scale problem
0: automatic 1: dynamic 2: equilibrium 3: geometric 4: off 5: rowsonly

{0,…,5}

0

Subsolver.Cbc.Strategy
This turns on newer features
0: easy problems 1: default 2: aggressive

{0,…,2}

1

CONOPT settings

Options for the CONOPT NLP solver. Requires SHOT compiled with CONOPT.

Name and description

Valid values

Default value

Subsolver.Conopt.DerivativeCheck
CONOPT compares the first and second derivatives with numerical ones (Lkdebg, Lkdeb2): 0 = never, -1 = at the initial point, n = every n-th iteration

{-1,…,∞}

0

Subsolver.Conopt.FeasibilityTolerance
CONOPT feasibility tolerance (Rtnwma)

[1e-12,0.01]

1e-09

Subsolver.Conopt.OptimalityTolerance
CONOPT reduced-gradient tolerance (Rtredg)

[1e-12,0.01]

1e-09

Cplex

Requires SHOT compiled with CPLEX.

Name and description

Valid values

Default value

Subsolver.Cplex.AddRelaxedLazyConstraintsAsLocal
Whether to add lazy constraints generated in relaxed points as local or global

true/false

false

Subsolver.Cplex.FeasOptMode
Strategy to use for the feasibility repair
0: Minimize the sum of all required relaxations in first phase only 1: Minimize the sum of all required relaxations in first phase and execute second phase to find optimum among minimal relaxations 2: Minimize the number of constraints and bounds requiring relaxation in first phase only 3: Minimize the number of constraints and bounds requiring relaxation in first phase and execute second phase to find optimum among minimal relaxations 4: Minimize the sum of squares of required relaxations in first phase only 5: Minimize the sum of squares of required relaxations in first phase and execute second phase to find optimum among minimal relaxations

{0,…,5}

0

Subsolver.Cplex.MIPEmphasis
Sets the MIP emphasis
0: Balanced 1: Feasibility 2: Optimality 3: Best bound 4: Hidden feasible

{0,…,4}

0

Subsolver.Cplex.MemoryEmphasis
Try to conserve memory when possible

{0,1}

0

Subsolver.Cplex.NodeFile
Where to store the node file
0: No file 1: Compressed in memory 2: On disk 3: Compressed on disk

{0,…,3}

1

Subsolver.Cplex.NumericalEmphasis
Emphasis on numerical stability

{0,1}

0

Subsolver.Cplex.OptimalityTarget
Specifies how CPLEX treats nonconvex quadratics
0: Automatic 1: Searches for a globally optimal solution to a convex model 2: Searches for a solution that satisfies first-order optimality conditions, but is not necessarily globally optimal 3: Searches for a globally optimal solution to a nonconvex model

{0,…,3}

0

Subsolver.Cplex.ParallelMode
Parallel mode in CPLEX, i.e., whether it runs deterministically when using several threads
-1: Opportunistic 0: Automatic 1: Deterministic

{-1,…,1}

0

Subsolver.Cplex.Probe
Sets the MIP probing level
-1: No probing 0: Automatic 1: Moderate 2: Aggressive 3: Very aggressive

{-1,…,3}

0

Subsolver.Cplex.SolutionPoolGap
Sets the relative gap filter on objective values in the solution pool

[0,∞]

1e+75

Subsolver.Cplex.SolutionPoolIntensity
Controls how much time and memory should be used when filling the solution pool
0: Automatic 1: Mild 2: Moderate 3: Aggressive 4: Very aggressive

{0,…,4}

0

Subsolver.Cplex.SolutionPoolReplace
How to replace solutions in the solution pool when full
0: Replace oldest 1: Replace worst 2: Find diverse

{0,…,2}

0

Subsolver.Cplex.WorkDirectory
Directory for swap file

string

Subsolver.Cplex.WorkMemory
Memory limit for when to start swapping to disk

[0,∞]

0

GAMS

Settings for the GAMS NLP solvers. Requires SHOT compiled with GAMS.

Name and description

Valid values

Default value

Subsolver.GAMS.NLP.OptionsFilename
Options file for the NLP solver in GAMS

string

Subsolver.GAMS.NLP.Solver
NLP solver to use in GAMS (auto: SHOT chooses)

string

auto

Gurobi

Requires SHOT compiled with Gurobi.

Name and description

Valid values

Default value

Subsolver.Gurobi.Heuristics
The relative amount of time spent in MIP heuristics.

[0,1]

0.05

Subsolver.Gurobi.MIPFocus
MIP focus
0: Automatic 1: Feasibility 2: Optimality 3: Best bound

{0,…,3}

0

Subsolver.Gurobi.NumericFocus
How much effort Gurobi spends on detecting and managing numerical issues
0: Automatic 1: Mild 2: Moderate 3: Aggressive

{0,…,3}

0

Subsolver.Gurobi.PoolSearchMode
Finds extra solutions
0: No extra effort 1: Try to find solutions 2: Find n best solutions

{0,…,2}

0

Subsolver.Gurobi.ScaleFlag
Controls model scaling
-1: Automatic 0: Off 1: Mild 2: Moderate 3: Aggressive

{-1,…,3}

-1

Highs

Requires SHOT compiled with HiGHS.

Name and description

Valid values

Default value

Subsolver.Highs.DebugLevel
Debug level for HiGHS internal assertions
0: off 1: low 2: medium 3: high

{0,…,3}

0

Subsolver.Highs.MIPAllowRestart
Whether MIP restart is permitted

true/false

true

Subsolver.Highs.MIPDetectSymmetry
Whether MIP symmetry should be detected

true/false

true

Subsolver.Highs.MIPHeuristicEffort
Effort spent for MIP heuristics

[0,1]

0.05

Subsolver.Highs.MIPHeuristicRunShifting
Run Shifting heuristic

true/false

false

Subsolver.Highs.MIPHeuristicRunZiRound
Run Zi Round heuristic

true/false

false

Subsolver.Highs.MIPIPMSolver
Interior point solver that HiGHS uses in the MIP solver, e.g., for the analytic center
0: choose 1: ipx 2: hipo (only if HiGHS has been built with HiPO)

{0,…,2}

0

Subsolver.Highs.Parallel
Use parallelization
0: off 1: choose 2: on

{0,…,2}

1

Subsolver.Highs.Presolve
Use presolve
0: off 1: choose 2: on

{0,…,2}

1

Subsolver.Highs.RunCrossover
Run crossover
0: off 1: choose 2: on

{0,…,2}

0

Ipopt

Requires SHOT compiled with Ipopt.

Name and description

Valid values

Default value

Subsolver.Ipopt.ConstraintViolationTolerance
Constraint violation tolerance in Ipopt

[0,∞]

1e-08

Subsolver.Ipopt.HessianApproximation
The Hessian of the Lagrangian used by Ipopt. Automatic uses a limited-memory approximation if the exact Hessian of a nonlinear expression with at least 64 variables is nearly dense, since it is then expensive
0: Exact 1: Limited memory 2: Automatic

{0,…,2}

2

Subsolver.Ipopt.LinearSolver
Ipopt linear subsolver
0: Default 1: MA27 2: MA57 3: MA86 4: MA97 5: MUMPS

{0,…,5}

0

Subsolver.Ipopt.OptionsFile
An Ipopt options file with any Ipopt options, read instead of ipopt.opt in the working directory. Its options override those set by SHOT, e.g. the linear solver, except the time limit (max_wall_time) of each solve

string

Subsolver.Ipopt.RelativeConvergenceTolerance
Relative convergence tolerance in Ipopt (tol)

[0,∞]

1e-08

Root search solver

Settings for the Boost rootsearch functionality.

Name and description

Valid values

Default value

Subsolver.Rootsearch.MaxIterations
Maximal root search iterations

{0,…,∞}

100

Subsolver.Rootsearch.Method
Root search method to use
0: TOMS748 1: Bisection

{0,1}

0

Subsolver.Rootsearch.TerminationTolerance
Termination tolerance for the length of the root search interval for lambda in [0, 1], which also stops when the interval cannot be divided further

[0,∞]

1e-16

SHOT primal NLP solver

Name and description

Valid values

Default value

Subsolver.SHOT.ReuseHyperplanes.Fraction
The fraction of generated hyperplanes to reuse.

[0,1]

0.1

Subsolver.SHOT.ReuseHyperplanes.Use
Reuse valid generated hyperplanes in main dual model.

true/false

true

Subsolver.SHOT.UseFBBT
Do FBBT on NLP problem.

true/false

true

Uno

Requires SHOT compiled with Uno.

Name and description

Valid values

Default value

Subsolver.Uno.ConstraintViolationTolerance
Constraint violation tolerance in Uno

[0,∞]

1e-06

Subsolver.Uno.HessianModel
How Uno models the Hessian
0: Exact 1: L-BFGS 2: L-SR1

{0,…,2}

0

Subsolver.Uno.OptionsFile
Uno option file to read additional options from

string

Subsolver.Uno.Preset
The Uno algorithm to use
0: Automatic 1: Ipopt 2: filterSQP

{0,…,2}

0

Subsolver.Uno.RelativeConvergenceTolerance
Dual (stationarity) tolerance in Uno (dual_tolerance)

[0,∞]

1e-06

Termination

These settings control when SHOT will terminate the solution process.

Name and description

Valid values

Default value

Termination.ConstraintTolerance
Termination tolerance for nonlinear constraints (not used for termination in the multi-tree strategy)

[0,∞]

1e-08

Termination.IterationLimit
Iteration limit for main strategy

{1,…,∞}

200000

Termination.ObjectiveConstraintTolerance
Termination tolerance for the nonlinear objective constraint

[0,∞]

1e-08

Termination.TimeLimit
Time limit (s) for solver

[0,∞]

1.7976931348623157e+308

Termination.DualStagnation.ConstraintTolerance
Min absolute difference between max nonlinear constraint errors in subsequent iterations for termination

[0,∞]

1e-06

Termination.DualStagnation.IterationLimit
Max number of iterations without significant dual objective value improvement

{0,…,∞}

1000

Termination.ObjectiveGap.Absolute
Absolute gap termination tolerance for objective function

[0,∞]

0.001

Termination.ObjectiveGap.Relative
Relative gap termination tolerance for objective function

[0,∞]

0.001

Termination.PrimalStagnation.IterationLimit
Number of iterations without significant primal improvement after which an objective cut is added (nonconvex problems with reduction cuts only)

{0,…,∞}

50