Class ConvexSolver.Configuration

  • Enclosing class:
    ConvexSolver

    public static final class ConvexSolver.Configuration
    extends java.lang.Object
    • Constructor Detail

      • Configuration

        public Configuration()
    • Method Detail

      • extendedPrecision

        public ConvexSolver.Configuration extendedPrecision​(boolean extendedPrecision)
        With extended precision the usual solver is wrapped by a master algorithm, implemented in Quadruple precision, that iteratively refines (zoom and shift) the problem to be solved by the delegate solver. This enables to handle constraints with very high accuracy.

        The iterative refinement solver cannot handle general inequality constraints, only simple variable bounds (modelled as inequality constraints).

        This is an experimental feature!

      • isExtendedPrecision

        public boolean isExtendedPrecision()
      • smallDiagonal

        public double smallDiagonal()
      • smallDiagonal

        public ConvexSolver.Configuration smallDiagonal​(double factor)
        The [Q] matrix (of quadratic terms) is "inverted" using a matrix decomposition returned by newSolverSPD(Structure2D). If, after decomposition, MatrixDecomposition.Solver.isSolvable() returns false a small constant is added to the diagonal.

        The small constant will be the largest absolute element times this small diagonal factor.

        This is only meant to handle minor, unexpected, deficiencies.

      • solverGeneral

        public ConvexSolver.Configuration solverGeneral​(java.util.function.Function<Structure2D,​MatrixDecomposition.Solver<java.lang.Double>> factory)
        This matrix decomposition should be able to "invert" the full KKT systsem body matrix (which is symmetric) and/or its Schur complement with regards to the [Q] matrix (of quadratic terms).
      • solverSPD

        public ConvexSolver.Configuration solverSPD​(java.util.function.Function<Structure2D,​MatrixDecomposition.Solver<java.lang.Double>> factory)
        The [Q] matrix (of quadratic terms) is supposed to be symmetric positive definite (or at least semidefinite), but in reality there are usually many deficiencies. This matrix decomposition should handle "inverting" the [Q] matrix.