![]() |
SOPT
Sparse OPTimisation
|
#include <tv_primal_dual.h>
Classes | |
| struct | Diagnostic |
| Values indicating how the algorithm ran. More... | |
| struct | DiagnosticAndResult |
| Holds result vector as well. More... | |
Public Types | |
| using | value_type = typename PD::value_type |
| using | Scalar = typename PD::Scalar |
| using | Real = typename PD::Real |
| using | t_Vector = typename PD::t_Vector |
| using | t_LinearTransform = typename PD::t_LinearTransform |
| template<typename T > | |
| using | t_Proximal = std::function< void(t_Vector &, const T &, const t_Vector &)> |
| using | t_IsConverged = typename PD::t_IsConverged |
| using | t_Constraint = typename PD::t_Constraint |
| using | t_Random_Updater = typename PD::t_Random_Updater |
Public Member Functions | |
| template<typename DERIVED > | |
| TVPrimalDual (Eigen::MatrixBase< DERIVED > const &target) | |
| virtual | ~TVPrimalDual () |
| SOPT_MACRO (tv_proximal, t_Proximal< Real >) | |
| The tv prox functioning as f. More... | |
| SOPT_MACRO (tv_proximal_weighted, t_Proximal< Vector< Real >>) | |
| The tv prox with weights functioning as f. More... | |
| SOPT_MACRO (tv_proximal_weights, Vector< Real >) | |
| The tv prox weights functioning. More... | |
| SOPT_MACRO (l2ball_proximal, proximal::WeightedL2Ball< Scalar >) | |
| The weighted L2 proximal functioning as g. More... | |
| SOPT_MACRO (residual_tolerance, Real) | |
| Convergence of the relative variation of the objective functions. More... | |
| SOPT_MACRO (relative_variation, Real) | |
| Convergence of the relative variation of the objective functions. More... | |
| SOPT_MACRO (residual_convergence, t_IsConverged) | |
| Convergence of the residuals. More... | |
| SOPT_MACRO (objective_convergence, t_IsConverged) | |
| Convergence of the residuals. More... | |
| SOPT_MACRO (itermax, t_uint) | |
| Maximum number of iterations. More... | |
| SOPT_MACRO (regulariser_strength, Real) | |
| regulariser_strength parameter More... | |
| SOPT_MACRO (update_scale, Real) | |
| update parameter More... | |
| SOPT_MACRO (positivity_constraint, bool) | |
| Apply positivity constraint. More... | |
| SOPT_MACRO (real_constraint, bool) | |
| Apply real constraint. More... | |
| SOPT_MACRO (sigma, Real) | |
| sigma parameter More... | |
| SOPT_MACRO (tau, Real) | |
| tau parameter More... | |
| SOPT_MACRO (xi, Real) | |
| xi parameter More... | |
| SOPT_MACRO (rho, Real) | |
| rho parameter More... | |
| SOPT_MACRO (precondition_stepsize, Real) | |
| precondtion step size parameter More... | |
| SOPT_MACRO (precondition_weights, t_Vector) | |
| precondition weights parameter More... | |
| SOPT_MACRO (precondition_iters, t_uint) | |
| precondition iterations parameter More... | |
| SOPT_MACRO (is_converged, t_IsConverged) | |
| A function verifying convergence. More... | |
| SOPT_MACRO (Phi, t_LinearTransform) | |
| Measurement operator. More... | |
| SOPT_MACRO (Psi, t_LinearTransform) | |
| Wavelet operator. More... | |
| SOPT_MACRO (random_measurement_updater, t_Random_Updater) | |
| lambda that determines if to update measurements More... | |
| SOPT_MACRO (random_wavelet_updater, t_Random_Updater) | |
| lambda that determines if to update wavelets More... | |
| t_Vector const & | target () const |
| Vector of target measurements. More... | |
| template<typename DERIVED > | |
| TVPrimalDual< Scalar > & | target (Eigen::MatrixBase< DERIVED > const &target) |
| Sets the vector of target measurements. More... | |
| Diagnostic | operator() (t_Vector &out) const |
| Calls Primal Dual. More... | |
| Diagnostic | operator() (t_Vector &out, std::tuple< t_Vector, t_Vector > const &guess) const |
| Calls Primal Dual. More... | |
| Diagnostic | operator() (t_Vector &out, std::tuple< t_Vector const &, t_Vector const & > const &guess) const |
| Calls Primal Dual. More... | |
| DiagnosticAndResult | operator() (std::tuple< t_Vector, t_Vector > const &guess) const |
| Calls Primal Dual. More... | |
| DiagnosticAndResult | operator() (std::tuple< t_Vector const &, t_Vector const & > const &guess) const |
| Calls Primal Dual. More... | |
| DiagnosticAndResult | operator() () const |
| Calls Primal Dual. More... | |
| DiagnosticAndResult | operator() (DiagnosticAndResult const &warmstart) const |
| Makes it simple to chain different calls to PD. More... | |
| TVPrimalDual &::type | Phi (ARGS &&... args) |
| proximal::WeightedL2Ball< Scalar > & | l2ball_proximal () |
| Proximal of the L2 ball. More... | |
| TVPrimalDual &::type | Psi (ARGS &&... args) |
| SOPT_MACRO (epsilon, l2ball, WeightedL2Ball) | |
| SOPT_MACRO (weights, l2ball, WeightedL2Ball) | |
| TVPrimalDual< Scalar > & | residual_convergence (Real const &tolerance) |
| Helper function to set-up default residual convergence function. More... | |
| TVPrimalDual< Scalar > & | objective_convergence (Real const &tolerance) |
| Helper function to set-up default residual convergence function. More... | |
| TVPrimalDual< Scalar > & | is_converged (std::function< bool(t_Vector const &x)> const &func) |
| Convergence function that takes only the output as argument. More... | |
Definition at line 19 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::Real = typename PD::Real |
Definition at line 26 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::Scalar = typename PD::Scalar |
Definition at line 25 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::t_Constraint = typename PD::t_Constraint |
Definition at line 32 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::t_IsConverged = typename PD::t_IsConverged |
Definition at line 31 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::t_LinearTransform = typename PD::t_LinearTransform |
Definition at line 28 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::t_Proximal = std::function<void(t_Vector &, const T &, const t_Vector &)> |
Definition at line 30 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::t_Random_Updater = typename PD::t_Random_Updater |
Definition at line 33 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::t_Vector = typename PD::t_Vector |
Definition at line 27 of file tv_primal_dual.h.
| using sopt::algorithm::TVPrimalDual< SCALAR >::value_type = typename PD::value_type |
Definition at line 24 of file tv_primal_dual.h.
|
inline |
Setups imaging wrapper for PD
| [in] | f_proximal | proximal operator of the \(f\) function. |
| [in] | g_proximal | proximal operator of the \(g\) function |
Definition at line 51 of file tv_primal_dual.h.
|
inlinevirtual |
Definition at line 80 of file tv_primal_dual.h.
|
inline |
Convergence function that takes only the output as argument.
Definition at line 262 of file tv_primal_dual.h.
|
inline |
Proximal of the L2 ball.
Non-const version to setup the object.
Definition at line 221 of file tv_primal_dual.h.
|
inline |
Helper function to set-up default residual convergence function.
Definition at line 258 of file tv_primal_dual.h.
|
inline |
Calls Primal Dual.
| [in] | guess | initial guess |
Definition at line 199 of file tv_primal_dual.h.
References sopt::algorithm::PrimalDual< SCALAR >::initial_guess(), sopt::algorithm::TVPrimalDual< SCALAR >::Phi(), sopt::algorithm::TVPrimalDual< SCALAR >::target(), and sopt::algorithm::TVPrimalDual< SCALAR >::DiagnosticAndResult::x.
Referenced by sopt::algorithm::TVPrimalDual< SCALAR >::operator()().
|
inline |
Makes it simple to chain different calls to PD.
Definition at line 206 of file tv_primal_dual.h.
References sopt::algorithm::PrimalDual< SCALAR >::Diagnostic::residual, and sopt::algorithm::TVPrimalDual< SCALAR >::DiagnosticAndResult::x.
|
inline |
Calls Primal Dual.
| [in] | guess | initial guess |
Definition at line 191 of file tv_primal_dual.h.
References sopt::algorithm::TVPrimalDual< SCALAR >::DiagnosticAndResult::x.
|
inline |
Calls Primal Dual.
| [in] | guess | initial guess |
Definition at line 186 of file tv_primal_dual.h.
References sopt::algorithm::TVPrimalDual< SCALAR >::operator()().
|
inline |
Calls Primal Dual.
| [out] | out | Output vector x |
Definition at line 168 of file tv_primal_dual.h.
References sopt::algorithm::PrimalDual< SCALAR >::initial_guess(), sopt::algorithm::TVPrimalDual< SCALAR >::operator()(), sopt::algorithm::TVPrimalDual< SCALAR >::Phi(), and sopt::algorithm::TVPrimalDual< SCALAR >::target().
|
inline |
Calls Primal Dual.
| [out] | out | Output vector x |
| [in] | guess | initial guess |
Definition at line 180 of file tv_primal_dual.h.
References sopt::algorithm::TVPrimalDual< SCALAR >::operator()().
|
inline |
Calls Primal Dual.
| [out] | out | Output vector x |
| [in] | guess | initial guess |
Definition at line 174 of file tv_primal_dual.h.
References sopt::algorithm::TVPrimalDual< SCALAR >::operator()().
|
inline |
Definition at line 214 of file tv_primal_dual.h.
References sopt::linear_transform().
Referenced by main(), and sopt::algorithm::TVPrimalDual< SCALAR >::operator()().
|
inline |
Definition at line 225 of file tv_primal_dual.h.
References sopt::linear_transform().
Referenced by main().
|
inline |
Helper function to set-up default residual convergence function.
Definition at line 254 of file tv_primal_dual.h.
Referenced by main().
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | epsilon | , |
| l2ball | , | ||
| WeightedL2Ball | |||
| ) |
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | is_converged | , |
| t_IsConverged | |||
| ) |
A function verifying convergence.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | itermax | , |
| t_uint | |||
| ) |
Maximum number of iterations.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | l2ball_proximal | , |
| proximal::WeightedL2Ball< Scalar > | |||
| ) |
The weighted L2 proximal functioning as g.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | objective_convergence | , |
| t_IsConverged | |||
| ) |
Convergence of the residuals.
If negative, this convergence criteria is disabled.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | Phi | , |
| t_LinearTransform | |||
| ) |
Measurement operator.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | positivity_constraint | , |
| bool | |||
| ) |
Apply positivity constraint.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | precondition_iters | , |
| t_uint | |||
| ) |
precondition iterations parameter
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | precondition_stepsize | , |
| Real | |||
| ) |
precondtion step size parameter
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | precondition_weights | , |
| t_Vector | |||
| ) |
precondition weights parameter
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | Psi | , |
| t_LinearTransform | |||
| ) |
Wavelet operator.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | random_measurement_updater | , |
| t_Random_Updater | |||
| ) |
lambda that determines if to update measurements
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | random_wavelet_updater | , |
| t_Random_Updater | |||
| ) |
lambda that determines if to update wavelets
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | real_constraint | , |
| bool | |||
| ) |
Apply real constraint.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | regulariser_strength | , |
| Real | |||
| ) |
regulariser_strength parameter
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | relative_variation | , |
| Real | |||
| ) |
Convergence of the relative variation of the objective functions.
If negative, this convergence criteria is disabled.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | residual_convergence | , |
| t_IsConverged | |||
| ) |
Convergence of the residuals.
If negative, this convergence criteria is disabled.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | residual_tolerance | , |
| Real | |||
| ) |
Convergence of the relative variation of the objective functions.
If negative, this convergence criteria is disabled.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | rho | , |
| Real | |||
| ) |
rho parameter
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | sigma | , |
| Real | |||
| ) |
sigma parameter
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | tau | , |
| Real | |||
| ) |
tau parameter
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | tv_proximal | , |
| t_Proximal< Real > | |||
| ) |
The tv prox functioning as f.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | tv_proximal_weighted | , |
| t_Proximal< Vector< Real >> | |||
| ) |
The tv prox with weights functioning as f.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | tv_proximal_weights | , |
| Vector< Real > | |||
| ) |
The tv prox weights functioning.
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | update_scale | , |
| Real | |||
| ) |
update parameter
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | weights | , |
| l2ball | , | ||
| WeightedL2Ball | |||
| ) |
| sopt::algorithm::TVPrimalDual< SCALAR >::SOPT_MACRO | ( | xi | , |
| Real | |||
| ) |
xi parameter
|
inline |
Vector of target measurements.
Definition at line 158 of file tv_primal_dual.h.
Referenced by sopt::algorithm::TVPrimalDual< SCALAR >::operator()(), and sopt::algorithm::TVPrimalDual< SCALAR >::target().
|
inline |
Sets the vector of target measurements.
Definition at line 161 of file tv_primal_dual.h.
References sopt::algorithm::TVPrimalDual< SCALAR >::target().