Solver options
Here are all the options that can be used in SHOT compiled. Note that the default value is normally a good starting point, so do not change options unless you have a good reason.
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.
Dual.CutStrategy Dual cut strategy 0: ESH 1: ECP
{0,1}
0
Extended supporting hyperplane method
These settings control various aspects of the ESH implementation, including the strategy to obtain the interior point.
Dual.ESH.InteriorPoint.CuttingPlane.ConstraintSelectionFactor The fraction of violated constraints to generate cutting planes for
[0,1]
0.25
Dual.ESH.InteriorPoint.CuttingPlane.IterationLimit Iteration limit for minimax cutting plane solver
{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.UsePrimalSolution Utilize primal solution as interior point 0: No 1: Add as new 2: Replace old 3: Use avarage
{0,...,3}
1
Dual.ESH.Rootsearch.ConstraintTolerance Constraint tolerance for when not to add individual hyperplanes
[0,∞]
1e-08
Dual.ESH.Rootsearch.UniqueConstraints Allow only one hyperplane per constraint per iteration
true/false
false
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.
Dual.HyperplaneCuts.ConstraintSelectionFactor The fraction of violated constraints to generate supporting hyperplanes / cutting planes for
[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.ObjectiveRootSearch When to use the objective root search 0: Always 1: IfConvex 2: Never
{0,...,2}
1
Dual.HyperplaneCuts.SaveHyperplanePoints Whether to save the points in the generated hyperplanes list
true/false
false
Dual.HyperplaneCuts.UseIntegerCuts Add integer cuts for infeasible integer-combinations for binary problems
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.
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)
[-∞,∞]
1e-05
Dual.MIP.CutOff.UseInitialValue Use the initial cutoff value
true/false
false
Dual.MIP.InfeasibilityRepair.IntegerCuts Allow feasibility repair of integer cuts
true/false
true
Dual.MIP.InfeasibilityRepair.IterationLimit Max number of infeasible problems repaired without primal objective value improvement
{0,...,∞}
100
Dual.MIP.InfeasibilityRepair.TimeLimit Time limit when reparing infeasible problem
[0,∞]
10
Dual.MIP.InfeasibilityRepair.Use Enable the infeasibility repair strategy for nonconvex problems
true/false
true
Dual.MIP.NodeLimit Node limit to use for MIP solver in single-tree strategy
[0,∞]
1.7976931348623157e+308
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.Presolve.Frequency When to call the MIP presolve 0: Never 1: Once 2: Always
{0,...,2}
1
Dual.MIP.Presolve.RemoveRedundantConstraints Remove redundant constraints (as determined by presolve)
true/false
false
Dual.MIP.Presolve.UpdateObtainedBounds Update bounds (from presolve) to the MIP model
true/false
true
Dual.MIP.SolutionLimit.ForceOptimal.Iteration Iterations without dual bound updates for forcing optimal MIP solution
{0,...,∞}
10000
Dual.MIP.SolutionLimit.ForceOptimal.Time Time (s) without dual bound updates for forcing optimal MIP solution
[0,∞]
1000
Dual.MIP.SolutionLimit.IncreaseIterations Max number of iterations between MIP solution limit increases
{0,...,∞}
50
Dual.MIP.SolutionLimit.Initial Initial MIP solution limit
{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
{0,...,∞}
100
Dual.MIP.Solver Which MIP solver to use 0: Cplex 1: Gurobi 2: Cbc
{0,...,2}
1
Dual.MIP.UpdateObjectiveBounds Update nonlinear objective variable bounds to primal/dual bounds
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 nonconvex .
Dual.ReductionCut.MaxIterations Max number of primal cut reduction without primal improvement
{0,...,∞}
5
Dual.ReductionCut.ReductionFactor The factor used to reduce the cutoff value
[0,1]
0.001
Dual.ReductionCut.Use Enable the dual reduction cut strategy for nonconvex problems
true/false
true
Relaxation strategies
These settings contorl various aspects regarding integer-relaxation of the dual problem.
Dual.Relaxation.Frequency The frequency to solve an LP problem: 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 Time limit (s) when solving LP problems initially
[-∞,∞]
0.5
Dual.Relaxation.TimeLimit Time limit (s) when solving LP problems initially
[0,∞]
30
Dual.Relaxation.Use Initially solve continuous dual relaxations
true/false
true
Tree strategy
The single-tree strategy is normally more efficient than the multi-tree one. However, not all MIP solvers support the required lazy constraint callbacks. These settings selects this strategy and controls its behaviour.
Dual.TreeStrategy The main strategy to use 0: Multi-tree 1: Single-tree
{0,1}
1
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.
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 Peform feasibility-based bound tightening
true/false
true
Model.BoundTightening.FeasibilityBased.UseNonlinear Peform feasibility-based bound tightening on nonlinear expressions
true/false
true
Model.BoundTightening.InitialPOA.ConstraintTolerance Constraint termination tolerance
[-∞,∞]
0.1
Model.BoundTightening.InitialPOA.CutStrategy Dual cut strategy 0: ESH 1: ECP
{0,1}
1
Model.BoundTightening.InitialPOA.IterationLimit Iteration limit for POA
{0,...,∞}
50
Model.BoundTightening.InitialPOA.ObjectiveConstraintTolerance Objective constraint termination tolerance
[-∞,∞]
0.001
Model.BoundTightening.InitialPOA.ObjectiveGapAbsolute Absolute objective gap termination level
[-∞,∞]
0.1
Model.BoundTightening.InitialPOA.ObjectiveGapRelative Relative objective gap termination level
[-∞,∞]
0.1
Model.BoundTightening.InitialPOA.StagnationConstraintTolerance Tolerance factor for when no progress is made
[-∞,∞]
0.01
Model.BoundTightening.InitialPOA.StagnationIterationLimit Limit for iterations without significant progress
{0,...,∞}
5
Model.BoundTightening.InitialPOA.TimeLimit Time limit for initial POA
[-∞,∞]
5
Model.BoundTightening.InitialPOA.Use Create an initial polyhedral outer approximation
true/false
false
Convexity
These settings control the convexity detection functionality
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.
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,...,∞}
100
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 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.Epigraph.Use Reformulates a nonlinear objective as an auxiliary constraint
true/false
false
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 objective function 0: Always 1: If result is convex 2: Never
{0,...,2}
1
Model.Reformulation.Quadratics.EigenValueDecomposition.Formulation Which formulation to use in eigenvalue decomposition 0: Term coefficient is included in reformulation 1: Term coefficient remains
{0,1}
0
Model.Reformulation.Quadratics.EigenValueDecomposition.Method Whether to use the eigen value decomposition of convex quadratic functions
true/false
false
Model.Reformulation.Quadratics.EigenValueDecomposition.Use Whether to use the eigenvalue decomposition of convex quadratic functions
true/false
false
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
{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.
Model.Variables.Continuous.MaximumUpperBound Maximum upper bound for continuous variables
[-∞,∞]
1e+50
Model.Variables.Continuous.MinimumLowerBound Minimum lower bound for continuous variables
[-∞,∞]
-1e+50
Model.Variables.Integer.MaximumUpperBound Maximum upper bound for integer variables
[-∞,∞]
2000000000
Model.Variables.Integer.MinimumLowerBound Minimum lower bound for integer variables
[-∞,∞]
-2000000000
Model.Variables.NonlinearObjectiveVariable.Bound Max absolute bound for the auxiliary nonlinear objective variable
[-∞,∞]
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.
ModelingSystem.GAMS.QExtractAlg Extraction algorithm for quadratic equations in GAMS interface 0: automatic 1: threepass 2: doubleforward
{0,...,2}
0
Solver output
These settings control how much and what output is shown to the user from the solver.
Output.Console.DualSolver.Show Show output from dual solver on console
true/false
false
Output.Console.Iteration.Detail When should the fixed strategy be used 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
Output.OutputDirectory Where to save the output files 0: Problem directory 1: Program directory
{0,1}
1
Output.SaveNumberOfSolutions Save max this number of primal solutions to OSrL or GDX file
{0,...,∞}
1
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.
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 for all feasible MIP solutions
{0,...,2}
2
Primal.FixedInteger.CreateInfeasibilityCut Create a cut from an infeasible solution point
true/false
false
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.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
{0,...,∞}
10000000
Primal.FixedInteger.OnlyUniqueIntegerCombinations Whether to resolve with the same integer combination, e.g. for nonconvex problems with different continuous variable starting points
true/false
true
Primal.FixedInteger.Solver NLP solver to use 0: Ipopt 1: GAMS 2: SHOT
{0,...,2}
0
Primal.FixedInteger.Source Source of fixed MIP solution point 0: All 1: First 2: All feasible 3: First and all feasible 4: With smallest constraint deviation
{0,...,4}
3
Primal.FixedInteger.SourceProblem Which problem formulation to use for NLP problem 0: Original problem 1: Reformulated problem 2: Both
{0,...,2}
0
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.Warmstart Warm start the NLP solver
true/false
true
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.
Primal.Rootsearch.Use Use a rootsearch to find primal solutions
true/false
true
Primal.Tolerance.Integer Integer tolerance for accepting primal solutions
[-∞,∞]
1e-05
Primal.Tolerance.LinearConstraint Linear constraint tolerance for accepting primal solutions
[-∞,∞]
1e-06
Primal.Tolerance.NonlinearConstraint Nonlinear constraint tolerance for accepting primal solutions
[-∞,∞]
1e-05
Primal.Tolerance.TrustLinearConstraintValues Trust that subsolvers (NLP, MIP) give primal solutions that respect linear constraints
true/false
true
Strategy
Overall strategy parameters used in SHOT.
Strategy.UseRecommendedSettings Modifies some settings to their recommended values based on the strategy
true/false
true
Subsolver functionality
These settings allow for more direct control of the different subsolvers utilized in SHOT.
Cbc
Subsolver.Cbc.AutoScale Whether to scale objective, rhs and bounds of problem if they look odd (experimental)
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}
4
Subsolver.Cbc.Strategy This turns on newer features 0: easy problems 1: default 2: aggressive
{0,...,2}
1
Cplex
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 sum of squares of required relaxations in first phase only 4: Minimize the sum of squares of required relaxations in first phase and execute second phase to find optimum among minimal relaxations
{0,...,4}
0
Subsolver.Cplex.MIPEmphasis Sets the MIP emphasis 0: Balanced 1: Feasibility 2: Optimality 3: Best bound 4: Hidden feasible
{0,...,4}
1
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}
1
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 Controls how much time and memory should be used when filling the solution pool -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.UseGenericCallback Use the new generic callback in the single-tree strategy
true/false
false
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.
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
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 MIP focus 0: Automatic 1: Mild 2: Moderate 3: Aggressive
{0,...,3}
1
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.PoolSolutions Determines how many MIP solutions are stored
{1,...,2000000000}
10
Subsolver.Gurobi.ScaleFlag Controls model scaling -1: Automatic 0: Off 1: Mild 2: Moderate 3: Aggressive
{-1,...,3}
-1
Ipopt
Subsolver.Ipopt.ConstraintViolationTolerance Constraint violation tolerance in Ipopt
[-∞,∞]
1e-08
Subsolver.Ipopt.LinearSolver Ipopt linear subsolver 0: Default 1: MA27 2: MA57 3: MA86 4: MA97 5: MUMPS
{0,...,5}
0
Subsolver.Ipopt.MaxIterations Maximum number of iterations
{0,...,∞}
1000
Subsolver.Ipopt.RelativeConvergenceTolerance Relative convergence tolerance
[-∞,∞]
1e-08
Root search solver
Settings for the Boost rootsearch functionality.
Subsolver.Rootsearch.ActiveConstraintTolerance Epsilon constraint tolerance for root search
[0,∞]
0
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 Epsilon lambda tolerance for root search
[0,∞]
1e-16
SHOT primal NLP solver
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
Termination
These settings control when SHOT will terminate the solution process.
Termination.ConstraintTolerance Termination tolerance for nonlinear constraints
[0,∞]
1e-08
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,...,∞}
2147483647
Termination.IterationLimit Iteration limit for main strategy
{1,...,∞}
200000
Termination.ObjectiveConstraintTolerance Termination tolerance for the nonlinear objective constraint
[0,∞]
1e-08
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 Max number of iterations without significant primal objective value improvement
{0,...,∞}
50
Termination.TimeLimit Time limit (s) for solver
[0,∞]
1.7976931348623157e+308
These settings control the various functionality of the dual strategy in SHOT, i.e., the polyhedral outer approximation utilizing the ESH or ECP algorithms.
Dual.CutStrategy Dual cut strategy 0: ESH 1: ECP
{0,1}
0
Extended supporting hyperplane method
These settings control various aspects of the ESH implementation, including the strategy to obtain the interior point.
Dual.ESH.InteriorPoint.CuttingPlane.ConstraintSelectionFactor The fraction of violated constraints to generate cutting planes for
[0,1]
0.25
Dual.ESH.InteriorPoint.CuttingPlane.IterationLimit Iteration limit for minimax cutting plane solver
{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.UsePrimalSolution Utilize primal solution as interior point 0: No 1: Add as new 2: Replace old 3: Use avarage
{0,...,3}
1
Dual.ESH.Rootsearch.ConstraintTolerance Constraint tolerance for when not to add individual hyperplanes
[0,∞]
1e-08
Dual.ESH.Rootsearch.UniqueConstraints Allow only one hyperplane per constraint per iteration
true/false
false
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.
Dual.HyperplaneCuts.ConstraintSelectionFactor The fraction of violated constraints to generate supporting hyperplanes / cutting planes for
[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.ObjectiveRootSearch When to use the objective root search 0: Always 1: IfConvex 2: Never
{0,...,2}
1
Dual.HyperplaneCuts.SaveHyperplanePoints Whether to save the points in the generated hyperplanes list
true/false
false
Dual.HyperplaneCuts.UseIntegerCuts Add integer cuts for infeasible integer-combinations for binary problems
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.
Dual.MIP.CutOff.InitialValue Initial cutoff value to use
[-∞,∞]
1.799e+308
Dual.MIP.CutOff.Tolerance An extra tolerance for the objective cutoff value (to prevent infeasible subproblems)
[-∞,∞]
1e-05
Dual.MIP.CutOff.UseInitialValue Use the initial cutoff value
true/false
false
Dual.MIP.InfeasibilityRepair.IntegerCuts Allow feasibility repair of integer cuts
true/false
true
Dual.MIP.InfeasibilityRepair.IterationLimit Max number of infeasible problems repaired without primal objective value improvement
{0,...,∞}
100
Dual.MIP.InfeasibilityRepair.TimeLimit Time limit when reparing infeasible problem
[0,∞]
10
Dual.MIP.InfeasibilityRepair.Use Enable the infeasibility repair strategy for nonconvex problems
true/false
true
Dual.MIP.NodeLimit Node limit to use for MIP solver in single-tree strategy
[0,∞]
1.799e+308
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.Presolve.Frequency When to call the MIP presolve 0: Never 1: Once 2: Always
{0,...,2}
1
Dual.MIP.Presolve.RemoveRedundantConstraints Remove redundant constraints (as determined by presolve)
true/false
false
Dual.MIP.Presolve.UpdateObtainedBounds Update bounds (from presolve) to the MIP model
true/false
true
Dual.MIP.SolutionLimit.ForceOptimal.Iteration Iterations without dual bound updates for forcing optimal MIP solution
{0,...,∞}
10000
Dual.MIP.SolutionLimit.ForceOptimal.Time Time (s) without dual bound updates for forcing optimal MIP solution
[0,∞]
1000
Dual.MIP.SolutionLimit.IncreaseIterations Max number of iterations between MIP solution limit increases
{0,...,∞}
50
Dual.MIP.SolutionLimit.Initial Initial MIP solution limit
{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
{0,...,∞}
100
Dual.MIP.Solver Which MIP solver to use 0: Cplex 1: Gurobi 2: Cbc
{0,...,2}
1
Dual.MIP.UpdateObjectiveBounds Update nonlinear objective variable bounds to primal/dual bounds
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 nonconvex .
Dual.ReductionCut.MaxIterations Max number of primal cut reduction without primal improvement
{0,...,∞}
5
Dual.ReductionCut.ReductionFactor The factor used to reduce the cutoff value
[0,1]
0.001
Dual.ReductionCut.Use Enable the dual reduction cut strategy for nonconvex problems
true/false
true
Relaxation strategies
These settings contorl various aspects regarding integer-relaxation of the dual problem.
Dual.Relaxation.Frequency The frequency to solve an LP problem: 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 Time limit (s) when solving LP problems initially
[-∞,∞]
0.5
Dual.Relaxation.TimeLimit Time limit (s) when solving LP problems initially
[0,∞]
30
Dual.Relaxation.Use Initially solve continuous dual relaxations
true/false
true
Tree strategy
The single-tree strategy is normally more efficient than the multi-tree one. However, not all MIP solvers support the required lazy constraint callbacks. These settings selects this strategy and controls its behaviour.
Dual.TreeStrategy The main strategy to use 0: Multi-tree 1: Single-tree
{0,1}
1
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.
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 Peform feasibility-based bound tightening
true/false
true
Model.BoundTightening.FeasibilityBased.UseNonlinear Peform feasibility-based bound tightening on nonlinear expressions
true/false
true
Model.BoundTightening.InitialPOA.ConstraintTolerance Constraint termination tolerance
[-∞,∞]
0.1
Model.BoundTightening.InitialPOA.CutStrategy Dual cut strategy 0: ESH 1: ECP
{0,1}
1
Model.BoundTightening.InitialPOA.IterationLimit Iteration limit for POA
{0,...,∞}
50
Model.BoundTightening.InitialPOA.ObjectiveConstraintTolerance Objective constraint termination tolerance
[-∞,∞]
0.001
Model.BoundTightening.InitialPOA.ObjectiveGapAbsolute Absolute objective gap termination level
[-∞,∞]
0.1
Model.BoundTightening.InitialPOA.ObjectiveGapRelative Relative objective gap termination level
[-∞,∞]
0.1
Model.BoundTightening.InitialPOA.StagnationConstraintTolerance Tolerance factor for when no progress is made
[-∞,∞]
0.01
Model.BoundTightening.InitialPOA.StagnationIterationLimit Limit for iterations without significant progress
{0,...,∞}
5
Model.BoundTightening.InitialPOA.TimeLimit Time limit for initial POA
[-∞,∞]
5
Model.BoundTightening.InitialPOA.Use Create an initial polyhedral outer approximation
true/false
false
Convexity
These settings control the convexity detection functionality
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.
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,...,∞}
100
Model.Reformulation.Constraint.PartitionNonlinearTerms When to partition nonlinear sums in objective function 0: Always 1: If result is convex 2: Never
{0,...,2}
1
Model.Reformulation.Constraint.PartitionQuadraticTerms When to partition quadratic sums in objective function 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.Epigraph.Use Reformulates a nonlinear objective as an auxiliary constraint
true/false
false
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 objective function 0: Always 1: If result is convex 2: Never
{0,...,2}
1
Model.Reformulation.Quadratics.EigenValueDecomposition.Formulation Which formulation to use in eigenvalue decomposition 0: Term coefficient is included in reformulation 1: Term coefficient remains
{0,1}
0
Model.Reformulation.Quadratics.EigenValueDecomposition.Method Whether to use the eigen value decomposition of convex quadratic functions
true/false
false
Model.Reformulation.Quadratics.EigenValueDecomposition.Use Whether to use the eigenvalue decomposition of convex quadratic functions
true/false
false
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
{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.
Model.Variables.Continuous.MaximumUpperBound Maximum upper bound for continuous variables
[-∞,∞]
1e+50
Model.Variables.Continuous.MinimumLowerBound Minimum lower bound for continuous variables
[-∞,∞]
-1e+50
Model.Variables.Integer.MaximumUpperBound Maximum upper bound for integer variables
[-∞,∞]
2000000000
Model.Variables.Integer.MinimumLowerBound Minimum lower bound for integer variables
[-∞,∞]
-2000000000
Model.Variables.NonlinearObjectiveVariable.Bound Max absolute bound for the auxiliary nonlinear objective variable
[-∞,∞]
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.
ModelingSystem.GAMS.QExtractAlg Extraction algorithm for quadratic equations in GAMS interface 0: automatic 1: threepass 2: doubleforward
{0,...,2}
0
Solver output
These settings control how much and what output is shown to the user from the solver.
Output.Console.DualSolver.Show Show output from dual solver on console
true/false
false
Output.Console.Iteration.Detail When should the fixed strategy be used 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
Output.OutputDirectory Where to save the output files 0: Problem directory 1: Program directory
{0,1}
1
Output.SaveNumberOfSolutions Save max this number of primal solutions to OSrL or GDX file
{0,...,∞}
1
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.
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 for all feasible MIP solutions
{0,...,2}
2
Primal.FixedInteger.CreateInfeasibilityCut Create a cut from an infeasible solution point
true/false
false
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.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
{0,...,∞}
10000000
Primal.FixedInteger.OnlyUniqueIntegerCombinations Whether to resolve with the same integer combination, e.g. for nonconvex problems with different continuous variable starting points
true/false
true
Primal.FixedInteger.Solver NLP solver to use 0: Ipopt 1: GAMS 2: SHOT
{0,...,2}
0
Primal.FixedInteger.Source Source of fixed MIP solution point 0: All 1: First 2: All feasible 3: First and all feasible 4: With smallest constraint deviation
{0,...,4}
3
Primal.FixedInteger.SourceProblem Which problem formulation to use for NLP problem 0: Original problem 1: Reformulated problem 2: Both
{0,...,2}
0
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.Warmstart Warm start the NLP solver
true/false
true
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.
Primal.Rootsearch.Use Use a rootsearch to find primal solutions
true/false
true
Primal.Tolerance.Integer Integer tolerance for accepting primal solutions
[-∞,∞]
1e-05
Primal.Tolerance.LinearConstraint Linear constraint tolerance for accepting primal solutions
[-∞,∞]
1e-06
Primal.Tolerance.NonlinearConstraint Nonlinear constraint tolerance for accepting primal solutions
[-∞,∞]
1e-05
Primal.Tolerance.TrustLinearConstraintValues Trust that subsolvers (NLP, MIP) give primal solutions that respect linear constraints
true/false
true
Strategy
Overall strategy parameters used in SHOT.
Strategy.UseRecommendedSettings Modifies some settings to their recommended values based on the strategy
true/false
true
Subsolver functionality
These settings allow for more direct control of the different subsolvers utilized in SHOT.
Cbc
Subsolver.Cbc.AutoScale Whether to scale objective, rhs and bounds of problem if they look odd (experimental)
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}
4
Subsolver.Cbc.Strategy This turns on newer features 0: easy problems 1: default 2: aggressive
{0,...,2}
1
Cplex
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 sum of squares of required relaxations in first phase only 4: Minimize the sum of squares of required relaxations in first phase and execute second phase to find optimum among minimal relaxations
{0,...,4}
0
Subsolver.Cplex.MIPEmphasis Sets the MIP emphasis 0: Balanced 1: Feasibility 2: Optimality 3: Best bound 4: Hidden feasible
{0,...,4}
1
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}
1
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 Controls how much time and memory should be used when filling the solution pool -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.UseGenericCallback Use the new generic callback in the single-tree strategy
true/false
false
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.
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
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 MIP focus 0: Automatic 1: Mild 2: Moderate 3: Aggressive
{0,...,3}
1
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.PoolSolutions Determines how many MIP solutions are stored
{1,...,2000000000}
10
Subsolver.Gurobi.ScaleFlag Controls model scaling -1: Automatic 0: Off 1: Mild 2: Moderate 3: Aggressive
{-1,...,3}
-1
Ipopt
Subsolver.Ipopt.ConstraintViolationTolerance Constraint violation tolerance in Ipopt
[-∞,∞]
1e-08
Subsolver.Ipopt.LinearSolver Ipopt linear subsolver 0: Default 1: MA27 2: MA57 3: MA86 4: MA97 5: MUMPS
{0,...,5}
0
Subsolver.Ipopt.MaxIterations Maximum number of iterations
{0,...,∞}
1000
Subsolver.Ipopt.RelativeConvergenceTolerance Relative convergence tolerance
[-∞,∞]
1e-08
Root search solver
Settings for the Boost rootsearch functionality.
Subsolver.Rootsearch.ActiveConstraintTolerance Epsilon constraint tolerance for root search
[0,∞]
0
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 Epsilon lambda tolerance for root search
[0,∞]
1e-16
SHOT primal NLP solver
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
Termination
These settings control when SHOT will terminate the solution process.
Termination.ConstraintTolerance Termination tolerance for nonlinear constraints
[0,∞]
1e-08
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,...,∞}
2147483647
Termination.IterationLimit Iteration limit for main strategy
{1,...,∞}
200000
Termination.ObjectiveConstraintTolerance Termination tolerance for the nonlinear objective constraint
[0,∞]
1e-08
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 Max number of iterations without significant primal objective value improvement
{0,...,∞}
50
Termination.TimeLimit Time limit (s) for solver
[0,∞]
1.799e+308
Last updated