SHOT SHOT
Home Get started Documentation News Publications Team GitHub
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
SHOT 2.0 development
SHOT documentation 2.0 development

Get started

  • Your first model
    • Build and solve a model
  • Installation
    • Getting the source
    • Installing dependencies
      • Linux
      • Windows (MSVC)
      • macOS (Homebrew)
      • Proprietary solvers (GAMS, CPLEX, Gurobi)
    • Configuring with CMake
    • Building
    • Installing SHOT
    • Running the tests
    • Next steps
  • Command line
    • Basic usage
    • Supported problem file formats
    • Shorthand flags
    • Setting any option directly
    • Output/result files
    • Exit codes
    • Full/current options reference
    • Quick reference

Guides

  • SHOTpy tutorial
    • Getting started
    • Variables
    • Linear models
    • Integer variables
    • Quadratic models
      • Quadratic Constraints
    • Nonlinear models
      • Example: Geometric Programming
      • Example: Mixed Terms
      • Advanced Nonlinear Expressions
      • Writing Terms as Expressions
    • Problem files
    • Solver settings
      • Accessing and Modifying Settings
      • Common Settings
    • Advanced features
      • Monomial and Signomial Terms
      • Examining Solution Details
      • Checking Problem Properties
      • Evaluating Functions
    • Callbacks
      • PrimalCandidateCheck callback
      • Hyperplane Selection Callback: Solving shot_ex_jogo
      • Dual Bound and Primal Solution Callbacks
      • ESH Interior Point Callback: Injecting Custom Interior Points
      • ESH Interior Point via Auxiliary Problem
    • Large models
      • The other ways of building a container
      • Summary
      • Additional Resources
      • Tips for Best Results
  • C++ integration
    • Solve a problem file
  • Callbacks
    • Registering a callback
    • Locations
    • Information available everywhere
    • Actions
    • Termination
    • Callback failures
    • Context lifetime
    • Threads
    • Adding a location
  • Solver concepts
    • Feasible solutions and bounds
    • Outer approximation
    • Solver backends
  • Debugging
    • Enabling debug mode
    • Make the console output verbose while debugging
    • Solution strategies
    • Why the output looks the way it does
    • Debug file reference
      • Whole-problem dumps (written once per run)
      • Dual (MIP / outer-approximation) iterations — one set per iteration N
      • Interior-point search (runs once, before the main loop, to seed ESH)
      • Primal (feasible-solution) search
      • Conditional / backend-specific files (not always present)
    • A practical debugging workflow
    • Automated tests as a debugging aid
    • Lessons from real debugging sessions
      • Build hygiene
      • Settings pitfalls
      • Reproducing a bug found via the C++ test suite
      • CppAD / numerical domain errors
      • Exception-handling pitfalls specific to this codebase
      • Task-graph state (SolutionStrategyMultiTree and friends)
      • Nested/recursive solves (NLPSolverSHOT, TaskPerformBoundTightening)
      • False convergence (0 gap, wrong answer) vs. stalling
      • “The dual problem is infeasible” on a feasible problem
      • Unbounded initial relaxations and square bounds
      • Large dense quadratics (thousands of variables, millions of terms)
      • --convex on instances that are not convex
      • Equality constraints and ranges
      • Verification discipline
      • Fast, targeted crash diagnosis
      • Debug vs. Release builds change which crashes you can even see
    • If this doc is stale

Reference

  • Solver settings
    • Dual strategy
      • Convex Bounding
      • Extended supporting hyperplane method
      • Generated hyperplane cuts
      • MIP solver
      • Dual reduction cut
      • Relaxation strategies
    • Optimization model
      • Bound tightening
      • Convexity
      • Automatic reformulations
      • Variables
    • Solver output
    • Primal heuristics
      • Fixed-integer (NLP) strategy
      • Primal root search
      • Primal solution tolerances
    • Strategy
    • Subsolver functionality
      • Highs
      • Ipopt
      • Root search solver
      • SHOT primal NLP solver
    • Termination
  • SHOTpy API
    • CallbackContext
      • CallbackContext.terminate()
      • CallbackContext.absoluteGap
      • CallbackContext.dualBound
      • CallbackContext.elapsedTime
      • CallbackContext.globalDualBound
      • CallbackContext.hasPrimalSolution
      • CallbackContext.isFinalizing
      • CallbackContext.isMinimization
      • CallbackContext.isTerminationPending
      • CallbackContext.isTerminationRequested
      • CallbackContext.isValid
      • CallbackContext.iterationNumber
      • CallbackContext.location
      • CallbackContext.originalProblem
      • CallbackContext.primalBound
      • CallbackContext.primalSolution
      • CallbackContext.reformulatedProblem
      • CallbackContext.relativeGap
      • CallbackContext.solutionStatistics
    • CallbackContextExpired
    • CallbackLocation
      • CallbackLocation.DualBoundUpdate
      • CallbackLocation.HyperplaneSelection
      • CallbackLocation.InteriorPointSearch
      • CallbackLocation.NewPrimalSolution
      • CallbackLocation.PrimalCandidateCheck
      • CallbackLocation.PrimalCandidateSearch
      • CallbackLocation.TerminationCheck
      • CallbackLocation.name
      • CallbackLocation.value
    • ConstraintExpression
      • ConstraintExpression.expression
      • ConstraintExpression.lowerBound
      • ConstraintExpression.upperBound
    • ConstraintProperties
      • ConstraintProperties.convexity
      • ConstraintProperties.functionConvexity
      • ConstraintProperties.hasLinearTerms
      • ConstraintProperties.hasMonomialTerms
      • ConstraintProperties.hasNonlinearExpression
      • ConstraintProperties.hasQuadraticTerms
      • ConstraintProperties.hasSignomialTerms
    • Convexity
      • Convexity.Concave
      • Convexity.Convex
      • Convexity.Linear
      • Convexity.Nonconvex
      • Convexity.NotSet
      • Convexity.Unknown
      • Convexity.name
      • Convexity.value
    • DualBoundUpdateContext
      • DualBoundUpdateContext.setDualBound()
      • DualBoundUpdateContext.proposedDualBound
    • Environment
      • Environment.problem
      • Environment.reformulatedProblem
    • Expression
      • Expression.calculate()
      • Expression.calculateIntervalDerivatives()
      • Expression.getBounds()
      • Expression.getConvexity()
      • Expression.getType()
    • ExpressionType
      • ExpressionType.Abs
      • ExpressionType.ArcCos
      • ExpressionType.ArcSin
      • ExpressionType.ArcTan
      • ExpressionType.Constant
      • ExpressionType.Cos
      • ExpressionType.Cosh
      • ExpressionType.Divide
      • ExpressionType.ErrorFunction
      • ExpressionType.Exp
      • ExpressionType.Invert
      • ExpressionType.Log
      • ExpressionType.Negate
      • ExpressionType.Power
      • ExpressionType.Product
      • ExpressionType.SignPower
      • ExpressionType.Sin
      • ExpressionType.Sinh
      • ExpressionType.Square
      • ExpressionType.SquareRoot
      • ExpressionType.Sum
      • ExpressionType.Tan
      • ExpressionType.Tanh
      • ExpressionType.Var
      • ExpressionType.name
      • ExpressionType.value
    • ExternalHyperplane
      • ExternalHyperplane.description
      • ExternalHyperplane.rhsValue
      • ExternalHyperplane.variableCoefficients
      • ExternalHyperplane.variableIndexes
    • Hyperplane
      • Hyperplane.isGlobal
      • Hyperplane.source
    • HyperplaneCutStrategy
      • HyperplaneCutStrategy.ECP
      • HyperplaneCutStrategy.ESH
      • HyperplaneCutStrategy.name
      • HyperplaneCutStrategy.value
    • HyperplaneSelectionContext
      • HyperplaneSelectionContext.addHyperplane()
      • HyperplaneSelectionContext.addedHyperplanes
      • HyperplaneSelectionContext.solutionPoints
    • HyperplaneSource
      • HyperplaneSource.External
      • HyperplaneSource.InteriorPointSearch
      • HyperplaneSource.LPFixedIntegers
      • HyperplaneSource.LPRelaxedRootsearch
      • HyperplaneSource.LPRelaxedSolutionPoint
      • HyperplaneSource.MIPCallbackRelaxed
      • HyperplaneSource.MIPOptimalRootsearch
      • HyperplaneSource.MIPOptimalSolutionPoint
      • HyperplaneSource.MIPSolutionPoolRootsearch
      • HyperplaneSource.MIPSolutionPoolSolutionPoint
      • HyperplaneSource.ObjectiveCuttingPlane
      • HyperplaneSource.ObjectiveRootsearch
      • HyperplaneSource.PrimalSolutionSearch
      • HyperplaneSource.PrimalSolutionSearchInteriorObjective
      • HyperplaneSource.Unknown
      • HyperplaneSource.name
      • HyperplaneSource.value
    • InteriorPointSearchContext
      • InteriorPointSearchContext.setInteriorPoints()
      • InteriorPointSearchContext.interiorPoints
      • InteriorPointSearchContext.replacementInteriorPoints
    • Interval
      • Interval.contains()
      • Interval.lower
      • Interval.midpoint
      • Interval.upper
      • Interval.width
    • IntervalDerivatives
      • IntervalDerivatives.differentiableOrder
      • IntervalDerivatives.gradient
      • IntervalDerivatives.hessian
      • IntervalDerivatives.isBounded
      • IntervalDerivatives.isDefinedOnBox
      • IntervalDerivatives.value
    • IntervalError
    • IterationOutputDetail
      • IterationOutputDetail.Full
      • IterationOutputDetail.ObjectiveGapUpdates
      • IterationOutputDetail.ObjectiveGapUpdatesAndNLPCalls
      • IterationOutputDetail.name
      • IterationOutputDetail.value
    • LinearConstraint
      • LinearConstraint.add()
      • LinearConstraint.linearTerms
    • LinearObjectiveFunction
      • LinearObjectiveFunction.add()
      • LinearObjectiveFunction.linearTerms
    • LinearTerm
      • LinearTerm.coefficient
      • LinearTerm.variable
    • LinearTerms
      • LinearTerms.add()
      • LinearTerms.append()
      • LinearTerms.extend()
      • LinearTerms.reserve()
      • LinearTerms.size()
    • MIPSolver
      • MIPSolver.Cbc
      • MIPSolver.Cplex
      • MIPSolver.Gurobi
      • MIPSolver.Highs
      • MIPSolver.NotUsed
      • MIPSolver.name
      • MIPSolver.value
    • ModelReturnStatus
      • ModelReturnStatus.ErrorNoSolution
      • ModelReturnStatus.ErrorUnknown
      • ModelReturnStatus.FeasibleSolution
      • ModelReturnStatus.InfeasibleGlobal
      • ModelReturnStatus.InfeasibleLocal
      • ModelReturnStatus.NoSolutionReturned
      • ModelReturnStatus.NotSet
      • ModelReturnStatus.OptimalGlobal
      • ModelReturnStatus.Unbounded
      • ModelReturnStatus.UnboundedNoSolution
      • ModelReturnStatus.name
      • ModelReturnStatus.value
    • ModelingSystem
      • ModelingSystem.AMPL
      • ModelingSystem.API
      • ModelingSystem.GAMS
      • ModelingSystem.OSiL
      • ModelingSystem.name
      • ModelingSystem.value
    • MonomialTerm
      • MonomialTerm.coefficient
      • MonomialTerm.isBilinear
      • MonomialTerm.isBinary
      • MonomialTerm.isSquare
      • MonomialTerm.variables
    • MonomialTerms
      • MonomialTerms.add()
      • MonomialTerms.append()
      • MonomialTerms.extend()
      • MonomialTerms.reserve()
      • MonomialTerms.size()
    • NewPrimalSolutionContext
      • NewPrimalSolutionContext.isIncumbent
      • NewPrimalSolutionContext.objectiveValue
      • NewPrimalSolutionContext.point
      • NewPrimalSolutionContext.source
    • NonlinearConstraint
      • NonlinearConstraint.add()
      • NonlinearConstraint.monomialTerms
      • NonlinearConstraint.nonlinearExpression
      • NonlinearConstraint.signomialTerms
    • NonlinearObjectiveFunction
      • NonlinearObjectiveFunction.add()
      • NonlinearObjectiveFunction.monomialTerms
      • NonlinearObjectiveFunction.nonlinearExpression
      • NonlinearObjectiveFunction.nonlinearExpressionIndex
      • NonlinearObjectiveFunction.signomialTerms
      • NonlinearObjectiveFunction.variablesInNonlinearExpression
    • NumericConstraint
      • NumericConstraint.calculateFunctionValue()
      • NumericConstraint.calculateGradient()
      • NumericConstraint.calculateHessian()
      • NumericConstraint.calculateIntervalDerivatives()
      • NumericConstraint.calculateNumericValue()
      • NumericConstraint.getConstraintFunctionBounds()
      • NumericConstraint.getGradientSparsityPattern()
      • NumericConstraint.getHessianSparsityPattern()
      • NumericConstraint.isFulfilled()
      • NumericConstraint.constant
      • NumericConstraint.index
      • NumericConstraint.name
      • NumericConstraint.properties
      • NumericConstraint.valueLHS
      • NumericConstraint.valueRHS
    • NumericConstraintValue
      • NumericConstraintValue.constraint
      • NumericConstraintValue.error
      • NumericConstraintValue.functionValue
      • NumericConstraintValue.isFulfilled
      • NumericConstraintValue.isFulfilledLHS
      • NumericConstraintValue.isFulfilledRHS
      • NumericConstraintValue.normalizedLHSValue
      • NumericConstraintValue.normalizedRHSValue
      • NumericConstraintValue.normalizedValue
    • ObjectiveDirection
      • ObjectiveDirection.Maximize
      • ObjectiveDirection.Minimize
      • ObjectiveDirection.name
      • ObjectiveDirection.value
    • ObjectiveFunction
      • ObjectiveFunction.calculateGradient()
      • ObjectiveFunction.calculateHessian()
      • ObjectiveFunction.calculateIntervalDerivatives()
      • ObjectiveFunction.calculateValue()
      • ObjectiveFunction.getBounds()
      • ObjectiveFunction.getGradientSparsityPattern()
      • ObjectiveFunction.getHessianSparsityPattern()
      • ObjectiveFunction.constant
      • ObjectiveFunction.direction
      • ObjectiveFunction.properties
    • ObjectiveFunctionProperties
      • ObjectiveFunctionProperties.convexity
      • ObjectiveFunctionProperties.hasLinearTerms
      • ObjectiveFunctionProperties.hasMonomialTerms
      • ObjectiveFunctionProperties.hasNonlinearExpression
      • ObjectiveFunctionProperties.hasQuadraticTerms
      • ObjectiveFunctionProperties.hasSignomialTerms
      • ObjectiveFunctionProperties.isMaximize
      • ObjectiveFunctionProperties.isMinimize
    • PairIndexValue
      • PairIndexValue.index
      • PairIndexValue.value
    • PrimalCandidateCheckContext
      • PrimalCandidateCheckContext.rejectCandidate()
      • PrimalCandidateCheckContext.isCandidateRejected
      • PrimalCandidateCheckContext.objectiveValue
      • PrimalCandidateCheckContext.point
      • PrimalCandidateCheckContext.source
    • PrimalCandidateSearchContext
      • PrimalCandidateSearchContext.addPrimalSolution()
      • PrimalCandidateSearchContext.addedPrimalSolutions
    • PrimalNLPFixedPoint
      • PrimalNLPFixedPoint.AllFeasibleSolutions
      • PrimalNLPFixedPoint.AllSolutions
      • PrimalNLPFixedPoint.FirstAndFeasibleSolutions
      • PrimalNLPFixedPoint.FirstSolution
      • PrimalNLPFixedPoint.SmallestDeviationSolution
      • PrimalNLPFixedPoint.name
      • PrimalNLPFixedPoint.value
    • PrimalNLPProblemSource
      • PrimalNLPProblemSource.Both
      • PrimalNLPProblemSource.OriginalProblem
      • PrimalNLPProblemSource.ReformulatedProblem
      • PrimalNLPProblemSource.name
      • PrimalNLPProblemSource.value
    • PrimalNLPSolver
      • PrimalNLPSolver.GAMS
      • PrimalNLPSolver.Ipopt
      • PrimalNLPSolver.NotUsed
      • PrimalNLPSolver.SHOT
      • PrimalNLPSolver.Uno
      • PrimalNLPSolver.name
      • PrimalNLPSolver.value
    • PrimalNLPStrategy
      • PrimalNLPStrategy.AlwaysUse
      • PrimalNLPStrategy.IterationOrTime
      • PrimalNLPStrategy.IterationOrTimeAndAllFeasibleSolutions
      • PrimalNLPStrategy.name
      • PrimalNLPStrategy.value
    • PrimalSolution
      • PrimalSolution.boundProjectionPerformed
      • PrimalSolution.displayed
      • PrimalSolution.integerRoundingPerformed
      • PrimalSolution.iterFound
      • PrimalSolution.maxDevatingConstraintLinear
      • PrimalSolution.maxDevatingConstraintNonlinear
      • PrimalSolution.maxDevatingConstraintQuadratic
      • PrimalSolution.maxDeviatingConstraintLinear
      • PrimalSolution.maxDeviatingConstraintNonlinear
      • PrimalSolution.maxDeviatingConstraintQuadratic
      • PrimalSolution.maxIntegerToleranceError
      • PrimalSolution.objValue
      • PrimalSolution.point
      • PrimalSolution.sourceDescription
      • PrimalSolution.sourceType
    • PrimalSolutionSource
      • PrimalSolutionSource.ConvexBounding
      • PrimalSolutionSource.ExternalPrimalSolution
      • PrimalSolutionSource.InteriorPointSearch
      • PrimalSolutionSource.LPFixedIntegers
      • PrimalSolutionSource.MIPCallback
      • PrimalSolutionSource.MIPSolutionPool
      • PrimalSolutionSource.NLPFixedIntegers
      • PrimalSolutionSource.NLPRelaxed
      • PrimalSolutionSource.Rootsearch
      • PrimalSolutionSource.RootsearchFixedIntegers
      • PrimalSolutionSource.name
      • PrimalSolutionSource.value
    • Problem
      • Problem.addConstraint()
      • Problem.addConstraints()
      • Problem.addSpecialOrderedSet()
      • Problem.addVariable()
      • Problem.addVariables()
      • Problem.finalize()
      • Problem.getConstraint()
      • Problem.getConstraintsHessianSparsityPattern()
      • Problem.getConstraintsJacobianSparsityPattern()
      • Problem.getLagrangianHessianSparsityPattern()
      • Problem.getMostDeviatingNumericConstraint()
      • Problem.getVariable()
      • Problem.getVariableBounds()
      • Problem.getVariableLowerBound()
      • Problem.getVariableLowerBounds()
      • Problem.getVariableUpperBound()
      • Problem.getVariableUpperBounds()
      • Problem.setObjective()
      • Problem.toString()
      • Problem.updateProperties()
      • Problem.allVariables
      • Problem.binaryVariables
      • Problem.integerVariables
      • Problem.isFinalized
      • Problem.linearConstraints
      • Problem.name
      • Problem.nonlinearConstraints
      • Problem.nonlinearExpressionVariables
      • Problem.numericConstraints
      • Problem.objectiveFunction
      • Problem.properties
      • Problem.quadraticConstraints
      • Problem.realVariables
    • ProblemConvexity
      • ProblemConvexity.Convex
      • ProblemConvexity.Nonconvex
      • ProblemConvexity.NotSet
      • ProblemConvexity.name
      • ProblemConvexity.value
    • ProblemProperties
      • ProblemProperties.convexity
      • ProblemProperties.description
      • ProblemProperties.isDiscrete
      • ProblemProperties.isLPProblem
      • ProblemProperties.isMILPProblem
      • ProblemProperties.isMINLPProblem
      • ProblemProperties.isMIQCQPProblem
      • ProblemProperties.isMIQPProblem
      • ProblemProperties.isNLPProblem
      • ProblemProperties.isNonlinear
      • ProblemProperties.isQCQPProblem
      • ProblemProperties.isQPProblem
      • ProblemProperties.isReformulated
      • ProblemProperties.isValid
      • ProblemProperties.name
      • ProblemProperties.numberOfBinaryVariables
      • ProblemProperties.numberOfConvexNonlinearConstraints
      • ProblemProperties.numberOfConvexQuadraticConstraints
      • ProblemProperties.numberOfDiscreteVariables
      • ProblemProperties.numberOfIntegerVariables
      • ProblemProperties.numberOfLinearConstraints
      • ProblemProperties.numberOfNonconvexNonlinearConstraints
      • ProblemProperties.numberOfNonconvexQuadraticConstraints
      • ProblemProperties.numberOfNonlinearConstraints
      • ProblemProperties.numberOfNonlinearExpressions
      • ProblemProperties.numberOfNumericConstraints
      • ProblemProperties.numberOfQuadraticConstraints
      • ProblemProperties.numberOfRealVariables
      • ProblemProperties.numberOfSemicontinuousVariables
      • ProblemProperties.numberOfSpecialOrderedSets
      • ProblemProperties.numberOfVariables
      • ProblemProperties.numberOfVariablesInNonlinearExpressions
    • QuadraticConstraint
      • QuadraticConstraint.add()
      • QuadraticConstraint.quadraticTerms
    • QuadraticObjectiveFunction
      • QuadraticObjectiveFunction.add()
      • QuadraticObjectiveFunction.quadraticTerms
    • QuadraticProblemStrategy
      • QuadraticProblemStrategy.ConvexQuadraticallyConstrained
      • QuadraticProblemStrategy.NonconvexQuadraticallyConstrained
      • QuadraticProblemStrategy.Nonlinear
      • QuadraticProblemStrategy.QuadraticObjective
      • QuadraticProblemStrategy.name
      • QuadraticProblemStrategy.value
    • QuadraticTerm
      • QuadraticTerm.coefficient
      • QuadraticTerm.firstVariable
      • QuadraticTerm.isBilinear
      • QuadraticTerm.isSquare
      • QuadraticTerm.secondVariable
    • QuadraticTerms
      • QuadraticTerms.add()
      • QuadraticTerms.append()
      • QuadraticTerms.extend()
      • QuadraticTerms.reserve()
      • QuadraticTerms.size()
    • SOSType
      • SOSType.One
      • SOSType.Two
      • SOSType.name
      • SOSType.value
    • SignomialElement
      • SignomialElement.power
      • SignomialElement.variable
    • SignomialTerm
      • SignomialTerm.coefficient
      • SignomialTerm.elements
    • SignomialTerms
      • SignomialTerms.add()
      • SignomialTerms.append()
      • SignomialTerms.extend()
      • SignomialTerms.reserve()
      • SignomialTerms.size()
    • SolutionPoint
      • SolutionPoint.hashValue
      • SolutionPoint.isRelaxedPoint
      • SolutionPoint.iterFound
      • SolutionPoint.maxDeviation
      • SolutionPoint.objectiveValue
      • SolutionPoint.point
    • SolutionStatistics
      • SolutionStatistics.getNumberOfTotalDualProblems()
      • SolutionStatistics.hasFixedIntegerEnumerationBeenRun
      • SolutionStatistics.hasFixedIntegerEnumerationFallbackBeenRun
      • SolutionStatistics.hasInfeasibilityRepairBeenPerformedSincePrimalImprovement
      • SolutionStatistics.hasReductionCutBeenAddedSincePrimalImprovement
      • SolutionStatistics.iterationLastDualBoundUpdate
      • SolutionStatistics.iterationLastDualCutAdded
      • SolutionStatistics.iterationLastLazyAdded
      • SolutionStatistics.iterationLastPrimalBoundUpdate
      • SolutionStatistics.lastIterationWithSignificantDualUpdate
      • SolutionStatistics.lastIterationWithSignificantPrimalUpdate
      • SolutionStatistics.numberOfDualRepairsSinceLastPrimalUpdate
      • SolutionStatistics.numberOfExploredNodes
      • SolutionStatistics.numberOfFixedIntegerEnumerationCombinations
      • SolutionStatistics.numberOfFixedIntegerEnumerationCombinationsFeasible
      • SolutionStatistics.numberOfFixedIntegerEnumerationCombinationsInfeasible
      • SolutionStatistics.numberOfFixedIntegerEnumerationCombinationsSkipped
      • SolutionStatistics.numberOfFixedIntegerEnumerationCombinationsUnresolved
      • SolutionStatistics.numberOfFoundPrimalSolutions
      • SolutionStatistics.numberOfFunctionEvaluations
      • SolutionStatistics.numberOfFunctionEvalutions
      • SolutionStatistics.numberOfGradientEvaluations
      • SolutionStatistics.numberOfHyperplanesWithConvexSource
      • SolutionStatistics.numberOfHyperplanesWithNonconvexSource
      • SolutionStatistics.numberOfIntegerCuts
      • SolutionStatistics.numberOfIterations
      • SolutionStatistics.numberOfIterationsWithDualStagnation
      • SolutionStatistics.numberOfIterationsWithPrimalStagnation
      • SolutionStatistics.numberOfIterationsWithoutNLPCallMIP
      • SolutionStatistics.numberOfOpenNodes
      • SolutionStatistics.numberOfOriginalInteriorPoints
      • SolutionStatistics.numberOfPrimalImprovementsAfterInfeasibilityRepair
      • SolutionStatistics.numberOfPrimalImprovementsAfterReductionCut
      • SolutionStatistics.numberOfPrimalReductionCutsUpdatesWithoutEffect
      • SolutionStatistics.numberOfPrimalReductionsPerformed
      • SolutionStatistics.numberOfProblemsFeasibleMILP
      • SolutionStatistics.numberOfProblemsFeasibleMIQCQP
      • SolutionStatistics.numberOfProblemsFeasibleMIQP
      • SolutionStatistics.numberOfProblemsFixedNLP
      • SolutionStatistics.numberOfProblemsLP
      • SolutionStatistics.numberOfProblemsMinimaxLP
      • SolutionStatistics.numberOfProblemsOptimalMILP
      • SolutionStatistics.numberOfProblemsOptimalMIQCQP
      • SolutionStatistics.numberOfProblemsOptimalMIQP
      • SolutionStatistics.numberOfProblemsQCQP
      • SolutionStatistics.numberOfProblemsQP
      • SolutionStatistics.numberOfSuccessfulDualRepairsPerformed
      • SolutionStatistics.numberOfUnsuccessfulDualRepairsPerformed
      • SolutionStatistics.timeLastDualBoundUpdate
      • SolutionStatistics.timeLastFixedNLPCall
    • Solver
      • Solver.getAbsoluteObjectiveGap()
      • Solver.getBoolSetting()
      • Solver.getCurrentDualBound()
      • Solver.getDoubleSetting()
      • Solver.getEnvironment()
      • Solver.getGlobalDualBound()
      • Solver.getIntSetting()
      • Solver.getModelReturnStatus()
      • Solver.getOptions()
      • Solver.getOptionsOSoL()
      • Solver.getOriginalProblem()
      • Solver.getPrimalBound()
      • Solver.getPrimalSolution()
      • Solver.getPrimalSolutions()
      • Solver.getReformulatedProblem()
      • Solver.getRelativeObjectiveGap()
      • Solver.getResultsOSrL()
      • Solver.getResultsSol()
      • Solver.getResultsTrace()
      • Solver.getSettingsAsMarkup()
      • Solver.getSolutionStatistics()
      • Solver.getStringSetting()
      • Solver.getTerminationReason()
      • Solver.hasPrimalSolution()
      • Solver.outputOptionsReport()
      • Solver.outputProblemInstanceReport()
      • Solver.outputSolutionReport()
      • Solver.outputSolverHeader()
      • Solver.registerCallback()
      • Solver.removeCallback()
      • Solver.setLogFile()
      • Solver.setOptionsFromFile()
      • Solver.setOptionsFromOSoL()
      • Solver.setOptionsFromString()
      • Solver.setProblem()
      • Solver.solveProblem()
      • Solver.updateLogLevels()
      • Solver.updateSetting()
    • SpecialOrderedSet
      • SpecialOrderedSet.type
      • SpecialOrderedSet.variables
      • SpecialOrderedSet.weights
    • TerminationCheckContext
    • TerminationReason
      • TerminationReason.AbsoluteGap
      • TerminationReason.ConstraintTolerance
      • TerminationReason.Error
      • TerminationReason.InfeasibleProblem
      • TerminationReason.IterationLimit
      • TerminationReason.NoDualCutsAdded
      • TerminationReason.NotTerminated
      • TerminationReason.NumericIssues
      • TerminationReason.ObjectiveStagnation
      • TerminationReason.RelativeGap
      • TerminationReason.TimeLimit
      • TerminationReason.UnboundedProblem
      • TerminationReason.UserAbort
      • TerminationReason.name
      • TerminationReason.value
    • TreeStrategy
      • TreeStrategy.MultiTree
      • TreeStrategy.SingleTree
      • TreeStrategy.name
      • TreeStrategy.value
    • Variable
      • Variable.getBound()
      • Variable.index
      • Variable.lowerBound
      • Variable.name
      • Variable.properties
      • Variable.semiBound
      • Variable.upperBound
    • VariableProperties
      • VariableProperties.inLinearConstraints
      • VariableProperties.inNonlinearConstraints
      • VariableProperties.inObjectiveFunction
      • VariableProperties.inQuadraticConstraints
      • VariableProperties.isAuxiliary
      • VariableProperties.isNonlinear
      • VariableProperties.type
    • VariableType
      • VariableType.Binary
      • VariableType.Integer
      • VariableType.Real
      • VariableType.Semicontinuous
      • VariableType.Semiinteger
      • VariableType.name
      • VariableType.value
    • Variables
      • Variables.append()
      • Variables.extend()
      • Variables.reserve()
      • Variables.size()
    • abs()
    • acos()
    • asin()
    • atan()
    • cos()
    • cosh()
    • errorf()
    • exp()
    • getSupportedMIPSolvers()
    • getSupportedModelingSystems()
    • getSupportedNLPSolvers()
    • inequality()
    • log()
    • max()
    • min()
    • signpower()
    • sin()
    • sinh()
    • sqrt()
    • square()
    • tan()
    • tanh()
  • C++ API
    • Solver
      • SHOT::Solver
    • Settings
      • SHOT::Settings
    • Results
      • SHOT::Results
    • Callbacks
      • SHOT
Back to top
Copyright ©
Made with Sphinx and @pradyunsg's Furo
SHOT SHOT

The Supporting Hyperplane Optimization Toolkit: an open-source MINLP solver written in C++.

A COIN-OR project, released under the Eclipse Public License 2.0.

Use SHOT

  • Get started
  • Options
  • SHOTpy tutorial
  • SHOTpy on PyPI

Project

  • News and releases
  • Publications
  • Team and contributors
  • RSS

Contact

  • coin-or/SHOT
  • Report an issue
  • Email

© 2026 The SHOT developers