# SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.optimization.multivariate.constrained.convex.sdp.pathfollowing

## Class PrimalDualPathFollowingMinimizer

• java.lang.Object
• com.numericalmethod.suanshu.optimization.multivariate.constrained.convex.sdp.pathfollowing.PrimalDualPathFollowingMinimizer
• All Implemented Interfaces:
Minimizer<SDPDualProblem,IterativeSolution<CentralPath>>, ConstrainedMinimizer<SDPDualProblem,IterativeSolution<CentralPath>>, Optimizer<SDPDualProblem,IterativeSolution<CentralPath>>

public class PrimalDualPathFollowingMinimizer
extends Object
implements ConstrainedMinimizer<SDPDualProblem,IterativeSolution<CentralPath>>
The Primal-Dual Path-Following algorithm is an interior point method that solves Semi-Definite Programming problems. In theory, the algorithm assumes feasible starting points. In practice when there is no feasible starting point, the program utilizes an infeasible interior point method. Specifically, this implementation relaxes the feasible constraints and require only the initials X0 and S0 be positive definite. For example, let X0 and S0 be identity matrices, y0 be a zero vector. This implementation adds one more condition to the terminal condition of iterations. That is,
phi = delta(duality gap) + norm(rd) + norm(rp)
where norm(rd) + norm(rp) measures the feasibility of solution.
"Andreas Antoniou, Wu-Sheng Lu, "Algorithm 14.1, Primal-dual path-following algorithm," Practical Optimization: Algorithms and Engineering Applications."
• ### Constructor Detail

• #### PrimalDualPathFollowingMinimizer

public PrimalDualPathFollowingMinimizer(double gamma0,
double sigma0,
double epsilon)
Constructs a Primal-Dual Path-Following minimizer to solve semi-definite programming problems.
Parameters:
gamma0 - $$0 < \gamma < 1$$; it ensures the next iterates are inside the feasible set; suggested values are between 0.9 and 0.99
sigma0 - $$0 \leq \sigma < 1$$, the centering parameter
epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0
• #### PrimalDualPathFollowingMinimizer

public PrimalDualPathFollowingMinimizer(double gamma0,
double epsilon)
Constructs a Primal-Dual Path-Following minimizer to solve semi-definite programming problems.
Parameters:
gamma0 - $$0 < \gamma < 1$$; it ensures the next iterates are inside the feasible set; suggested values are between 0.9 and 0.99
epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0
• #### PrimalDualPathFollowingMinimizer

public PrimalDualPathFollowingMinimizer(double epsilon)
Constructs a Primal-Dual Path-Following minimizer to solve semi-definite programming problems.
Parameters:
epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0
• ### Method Detail

• #### getMinEigenValue

protected static double getMinEigenValue(Matrix A,
double epsilon)
Gets the minimum of all the eigen values of a matrix.
Parameters:
A - a matrix
epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0
Returns:
the minimum of all the eigen values of a matrix