11 #ifndef MLPACK_CORE_OPTIMIZERS_SDP_PRIMAL_DUAL_HPP 12 #define MLPACK_CORE_OPTIMIZERS_SDP_PRIMAL_DUAL_HPP 18 namespace optimization {
25 template <
typename SDPType>
50 const arma::vec& initialYSparse,
51 const arma::vec& initialYDense,
75 arma::vec ysparse, ydense;
77 return Optimize(X, ysparse, ydense, Z);
81 const SDPType&
SDP()
const {
return sdp; }
136 #include "primal_dual_impl.hpp" arma::vec initialYdense
Starting lagrange multiplier for the sparse constraints.
double & Tau()
Modify tau. Typical values are 0.99.
const SDPType & SDP() const
Return the underlying SDP instance.
size_t maxIterations
Maximum number of iterations to run. Set to 0 for no limit.
double Optimize(arma::mat &X)
Invoke the optimization procedure, and only return the primal variable.
double Optimize(arma::mat &X, arma::vec &ySparse, arma::vec &yDense, arma::mat &Z)
Invoke the optimization procedure, returning the converged values for the primal and dual variables...
size_t & MaxIterations()
Modify the maximum number of iterations to run before converging.
Linear algebra utility functions, generally performed on matrices or vectors.
double primalInfeasTol
The tolerance required on the primal constraints required before terminating.
The core includes that mlpack expects; standard C++ includes and Armadillo.
double & PrimalInfeasTol()
Modify the primal infeasibility tolerance.
double & NormXzTol()
Modify the XZ tolerance.
SDPType sdp
The SDP problem instance to optimize.
double tau
The step size modulating factor. Needs to be a scalar in (0, 1).
Interface to a primal dual interior point solver.
arma::mat initialZ
Starting point for Z, the complementary slack variable. Needs to be.
double & DualInfeasTol()
Modify the dual infeasibility tolerance.
double dualInfeasTol
The tolerance required on the dual constraint required before terminating.
double normXzTol
The tolerance on the norm of XZ required before terminating.
arma::vec initialYsparse
Starting lagrange multiplier for the sparse constraints.
arma::mat initialX
Starting point for X. Needs to be positive definite.
PrimalDualSolver(const SDPType &sdp)
Construct a new solver instance from a given SDP instance.