Reference · 2.0 development
Solver settings¶
Generated from the SHOTpy build used for this documentation. Backend availability and defaults can depend on build configuration.
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 |
{0,…,2} |
0 |
Dual.TreeStrategy |
{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 |
{0,…,∞} |
10 |
Dual.ConvexBounding.Use |
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 |
[0,1] |
0.25 |
Dual.ESH.InteriorPoint.CuttingPlane.IterationLimit |
{1,…,∞} |
100 |
Dual.ESH.InteriorPoint.CuttingPlane.IterationLimitSubsolver |
{0,…,∞} |
100 |
Dual.ESH.InteriorPoint.CuttingPlane.Reuse |
true/false |
false |
Dual.ESH.InteriorPoint.CuttingPlane.TerminationToleranceAbs |
[0,∞] |
1 |
Dual.ESH.InteriorPoint.CuttingPlane.TerminationToleranceRel |
[0,∞] |
1 |
Dual.ESH.InteriorPoint.CuttingPlane.TimeLimit |
[0,∞] |
10 |
Dual.ESH.InteriorPoint.MinimaxObjectiveLowerBound |
[-∞,0] |
-1000000000000 |
Dual.ESH.InteriorPoint.MinimaxObjectiveUpperBound |
[-∞,∞] |
0.1 |
Dual.ESH.InteriorPoint.Strategy |
{0,1} |
0 |
Dual.ESH.InteriorPoint.UsePrimalSolution |
{0,…,3} |
1 |
Dual.ESH.Rootsearch.ConstraintTolerance |
[0,∞] |
1e-08 |
Dual.ESH.Rootsearch.UniqueConstraints |
true/false |
false |
Dual.ESH.Rootsearch.UseMaxFunction |
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 |
[0,1] |
0.5 |
Dual.HyperplaneCuts.Delay |
true/false |
true |
Dual.HyperplaneCuts.MaxConstraintFactor |
[1e-06,1] |
0.1 |
Dual.HyperplaneCuts.MaxPerIteration |
{0,…,∞} |
200 |
Dual.HyperplaneCuts.NonfinitePointRetreatFactor |
[1e-12,0.5] |
0.001 |
Dual.HyperplaneCuts.ObjectiveRootSearch |
{0,…,2} |
1 |
Dual.HyperplaneCuts.UseIntegerCuts |
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 |
[-∞,∞] |
1.7976931348623157e+308 |
Dual.MIP.CutOff.Tolerance |
[-∞,∞] |
1e-05 |
Dual.MIP.CutOff.UseInitialValue |
true/false |
false |
Dual.MIP.InfeasibilityRepair.CutResetLimit |
{0,…,∞} |
3 |
Dual.MIP.InfeasibilityRepair.IntegerCuts |
true/false |
false |
Dual.MIP.InfeasibilityRepair.IterationLimit |
{0,…,∞} |
100 |
Dual.MIP.InfeasibilityRepair.RelaxCutsViolatedByPrimal |
true/false |
true |
Dual.MIP.InfeasibilityRepair.TimeLimit |
[0,∞] |
10 |
Dual.MIP.InfeasibilityRepair.Use |
true/false |
true |
Dual.MIP.NodeLimit |
[0,∞] |
1.7976931348623157e+308 |
Dual.MIP.NumberOfThreads |
{0,…,999} |
0 |
Dual.MIP.OptimalityTolerance |
[1e-09,0.01] |
1e-06 |
Dual.MIP.RandomSeed |
{0,…,∞} |
0 |
Dual.MIP.SolutionLimit.ForceOptimal.Iteration |
{0,…,∞} |
10000 |
Dual.MIP.SolutionLimit.ForceOptimal.Time |
[0,∞] |
1000 |
Dual.MIP.SolutionLimit.IncreaseIterations |
{0,…,∞} |
50 |
Dual.MIP.SolutionLimit.Initial |
{1,…,∞} |
1 |
Dual.MIP.SolutionLimit.UpdateTolerance |
[0,∞] |
0.001 |
Dual.MIP.SolutionPool.Capacity |
{0,…,∞} |
100 |
Dual.MIP.Solver |
{0,…,3} |
3 |
Dual.MIP.UpdateObjectiveBounds |
true/false |
false |
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 |
{0,…,∞} |
20 |
Dual.ReductionCut.ReductionFactor |
[0,1] |
0.001 |
Dual.ReductionCut.Strategy |
{0,1} |
0 |
Dual.ReductionCut.Use |
true/false |
true |
Relaxation strategies¶
These settings contorl various aspects regarding integer-relaxation of the dual problem.
Name and description |
Valid values |
Default value |
|---|---|---|
Dual.Relaxation.Frequency |
{0,…,∞} |
0 |
Dual.Relaxation.IterationLimit |
{0,…,∞} |
200 |
Dual.Relaxation.MaxLazyConstraints |
{0,…,∞} |
0 |
Dual.Relaxation.TerminationTolerance |
[-∞,∞] |
0.5 |
Dual.Relaxation.TimeLimit |
[0,∞] |
30 |
Dual.Relaxation.Use |
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 |
{0,…,∞} |
5 |
Model.BoundTightening.FeasibilityBased.TimeLimit |
[0,∞] |
2 |
Model.BoundTightening.FeasibilityBased.Use |
true/false |
true |
Model.BoundTightening.FeasibilityBased.UseNonlinear |
true/false |
true |
Model.BoundTightening.InitialPOA.ConstraintTolerance |
[-∞,∞] |
0.1 |
Model.BoundTightening.InitialPOA.CutStrategy |
{0,1} |
1 |
Model.BoundTightening.InitialPOA.DirectionalSolves |
{0,…,∞} |
10 |
Model.BoundTightening.InitialPOA.IterationLimit |
{0,…,∞} |
50 |
Model.BoundTightening.InitialPOA.ObjectiveConstraintTolerance |
[-∞,∞] |
0.001 |
Model.BoundTightening.InitialPOA.ObjectiveGapAbsolute |
[-∞,∞] |
0.1 |
Model.BoundTightening.InitialPOA.ObjectiveGapRelative |
[-∞,∞] |
0.1 |
Model.BoundTightening.InitialPOA.StagnationConstraintTolerance |
[-∞,∞] |
0.01 |
Model.BoundTightening.InitialPOA.StagnationIterationLimit |
{0,…,∞} |
5 |
Model.BoundTightening.InitialPOA.TimeLimit |
[-∞,∞] |
5 |
Model.BoundTightening.InitialPOA.Use |
true/false |
false |
Convexity¶
These settings control the convexity detection functionality
Name and description |
Valid values |
Default value |
|---|---|---|
Model.Convexity.AssumeConvex |
true/false |
false |
Model.Convexity.Quadratics.EigenValueTolerance |
[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 |
[0,∞] |
100000000 |
Model.Reformulation.Bilinear.AddConvexEnvelope |
true/false |
false |
Model.Reformulation.Bilinear.IntegerFormulation |
{0,…,2} |
1 |
Model.Reformulation.Bilinear.IntegerFormulation.MaxDomain |
{2,…,∞} |
100 |
Model.Reformulation.Constraint.PartitionNonlinearTerms |
{0,…,2} |
1 |
Model.Reformulation.Constraint.PartitionQuadraticTerms |
{0,…,2} |
1 |
Model.Reformulation.Monomials.Extract |
true/false |
true |
Model.Reformulation.Monomials.Formulation |
{0,…,2} |
1 |
Model.Reformulation.ObjectiveFunction.EpigraphStrategy |
{0,…,2} |
0 |
Model.Reformulation.ObjectiveFunction.PartitionNonlinearTerms |
{0,…,2} |
1 |
Model.Reformulation.ObjectiveFunction.PartitionQuadraticTerms |
{0,…,2} |
1 |
Model.Reformulation.Quadratics.Decomposition.Formulation |
{0,1} |
0 |
Model.Reformulation.Quadratics.Decomposition.LDLMaximumFill |
[0,∞] |
100 |
Model.Reformulation.Quadratics.Decomposition.Method |
{0,…,2} |
2 |
Model.Reformulation.Quadratics.Decomposition.Tolerance |
[0,∞] |
1e-07 |
Model.Reformulation.Quadratics.ExtractStrategy |
{0,…,3} |
1 |
Model.Reformulation.Quadratics.Strategy |
{0,…,3} |
2 |
Model.Reformulation.Signomials.Extract |
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 |
[-∞,∞] |
1e+50 |
Model.Variables.Continuous.MinimumLowerBound |
[-∞,∞] |
-1e+50 |
Model.Variables.Integer.MaximumUpperBound |
[-∞,∞] |
2000000000 |
Model.Variables.Integer.MinimumLowerBound |
[-∞,∞] |
-2000000000 |
Model.Variables.NonlinearObjectiveVariable.Bound |
[-∞,∞] |
1000000000000 |
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 |
{0,1} |
1 |
Output.SaveNumberOfSolutions |
{0,…,∞} |
1 |
Output.Console.DualSolver.Show |
true/false |
false |
Output.Console.Iteration.Detail |
{0,…,2} |
1 |
Output.Console.LogLevel |
{0,…,6} |
2 |
Output.Console.PrimalSolver.Show |
true/false |
false |
Output.Debug.Enable |
true/false |
false |
Output.Debug.Path |
string |
|
Output.File.LogLevel |
{0,…,6} |
2 |
Output.GAMS.AlternateSolutionsFile |
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 |
{0,…,2} |
2 |
Primal.FixedInteger.CreateInfeasibilityCut |
true/false |
false |
Primal.FixedInteger.DualPointGap.Relative |
[0,∞] |
0.001 |
Primal.FixedInteger.Enumeration.MaxCombinations |
{1,…,∞} |
50 |
Primal.FixedInteger.Enumeration.TimeLimit |
[0,∞] |
20 |
Primal.FixedInteger.Enumeration.UseAsFallback |
true/false |
true |
Primal.FixedInteger.Enumeration.UseInitially |
true/false |
false |
Primal.FixedInteger.Frequency.Dynamic |
true/false |
true |
Primal.FixedInteger.Frequency.Iteration |
{0,…,∞} |
10 |
Primal.FixedInteger.Frequency.Time |
[0,∞] |
5 |
Primal.FixedInteger.IterationLimit |
{0,…,∞} |
10000000 |
Primal.FixedInteger.OnlyUniqueIntegerCombinations |
true/false |
true |
Primal.FixedInteger.Solver |
{0,…,3} |
0 |
Primal.FixedInteger.Source |
{0,…,4} |
3 |
Primal.FixedInteger.SourceProblem |
{0,…,2} |
1 |
Primal.FixedInteger.TimeLimit |
[0,∞] |
10 |
Primal.FixedInteger.Use |
true/false |
true |
Primal.FixedInteger.UseOnContinuousProblems |
true/false |
true |
Primal.FixedInteger.UseStartingPoint |
true/false |
false |
Primal.FixedInteger.Warmstart |
true/false |
true |
Primal.PolishSolution.NumberOfPoints |
{0,…,∞} |
1 |
Primal root search¶
SHOT can utilize root searches between the dual solution point and an integer-fixed interior point. This setting controls whether this strategy is used.
Name and description |
Valid values |
Default value |
|---|---|---|
Primal.Rootsearch.Use |
true/false |
true |
Primal solution tolerances¶
These settings sets various tolerances for accepting primal solutions.
Name and description |
Valid values |
Default value |
|---|---|---|
Primal.Tolerance.Integer |
[-∞,∞] |
1e-05 |
Primal.Tolerance.LinearConstraint |
[-∞,∞] |
1e-06 |
Primal.Tolerance.NonlinearConstraint |
[-∞,∞] |
1e-05 |
Primal.Tolerance.TrustLinearConstraintValues |
true/false |
true |
Strategy¶
Overall strategy parameters used in SHOT.
Name and description |
Valid values |
Default value |
|---|---|---|
Strategy.UseRecommendedSettings |
true/false |
true |
Subsolver functionality¶
These settings allow for more direct control of the different subsolvers utilized in SHOT.
Highs¶
Name and description |
Valid values |
Default value |
|---|---|---|
Subsolver.Highs.DebugLevel |
{0,…,3} |
0 |
Subsolver.Highs.MIPAllowRestart |
true/false |
true |
Subsolver.Highs.MIPDetectSymmetry |
true/false |
true |
Subsolver.Highs.MIPHeuristicEffort |
[0,1] |
0.05 |
Subsolver.Highs.MIPHeuristicRunShifting |
true/false |
false |
Subsolver.Highs.MIPHeuristicRunZiRound |
true/false |
false |
Subsolver.Highs.Parallel |
{0,…,2} |
1 |
Subsolver.Highs.Presolve |
{0,…,2} |
1 |
Subsolver.Highs.RunCrossover |
{0,…,2} |
0 |
Ipopt¶
Name and description |
Valid values |
Default value |
|---|---|---|
Subsolver.Ipopt.ConstraintViolationTolerance |
[-∞,∞] |
1e-08 |
Subsolver.Ipopt.HessianApproximation |
{0,…,2} |
2 |
Subsolver.Ipopt.LinearSolver |
{0,…,5} |
0 |
Subsolver.Ipopt.MaxIterations |
{0,…,∞} |
1000 |
Subsolver.Ipopt.OptionsFile |
string |
|
Subsolver.Ipopt.RelativeConvergenceTolerance |
[-∞,∞] |
1e-08 |
Root search solver¶
Settings for the Boost rootsearch functionality.
Name and description |
Valid values |
Default value |
|---|---|---|
Subsolver.Rootsearch.ActiveConstraintTolerance |
[0,∞] |
0 |
Subsolver.Rootsearch.MaxIterations |
{0,…,∞} |
100 |
Subsolver.Rootsearch.Method |
{0,1} |
0 |
Subsolver.Rootsearch.TerminationTolerance |
[0,∞] |
1e-16 |
SHOT primal NLP solver¶
Name and description |
Valid values |
Default value |
|---|---|---|
Subsolver.SHOT.ReuseHyperplanes.Fraction |
[0,1] |
0.1 |
Subsolver.SHOT.ReuseHyperplanes.Use |
true/false |
true |
Subsolver.SHOT.UseFBBT |
true/false |
true |
Termination¶
These settings control when SHOT will terminate the solution process.
Name and description |
Valid values |
Default value |
|---|---|---|
Termination.ConstraintTolerance |
[0,∞] |
1e-08 |
Termination.IterationLimit |
{1,…,∞} |
200000 |
Termination.ObjectiveConstraintTolerance |
[0,∞] |
1e-08 |
Termination.TimeLimit |
[0,∞] |
1.7976931348623157e+308 |
Termination.DualStagnation.ConstraintTolerance |
[0,∞] |
1e-06 |
Termination.DualStagnation.IterationLimit |
{0,…,∞} |
1000 |
Termination.ObjectiveGap.Absolute |
[0,∞] |
0.001 |
Termination.ObjectiveGap.Relative |
[0,∞] |
0.001 |
Termination.PrimalStagnation.IterationLimit |
{0,…,∞} |
50 |