Class to hold the information and operations of current atoms in the soluton space. More...
Public Member Functions | |
| Atoms () | |
| void | AddAtom (const arma::vec &v, FuncSq &function, const double c=0) |
| Add atom into the solution space. More... | |
| const arma::mat & | CurrentAtoms () const |
| Get the current atoms. More... | |
| arma::mat & | CurrentAtoms () |
| Modify the current atoms. More... | |
| const arma::vec & | CurrentCoeffs () const |
| Get the current atom coefficients. More... | |
| arma::vec & | CurrentCoeffs () |
| Modify the current atom coefficients. More... | |
| void | ProjectedGradientEnhancement (FuncSq &function, double tau, double stepSize, size_t maxIteration=100, double tolerance=1e-3) |
| Enhance the solution in the convex hull of current atoms with atom norm constraint tau. More... | |
| void | PruneSupport (const double F, FuncSq &function) |
| Prune the support, delete previous atoms if they don't contribute much. More... | |
| void | RecoverVector (arma::mat &x) |
| Recover the solution coordinate from the coefficients of current atoms. More... | |
Class to hold the information and operations of current atoms in the soluton space.
|
inline |
Add atom into the solution space.
| v | new atom to be added. |
| c | coefficient of the new atom. |
Definition at line 36 of file atoms.hpp.
References Atoms::CurrentAtoms(), and Atoms::CurrentCoeffs().
Referenced by UpdateSpan::Update(), and UpdateFullCorrection::Update().
|
inline |
Get the current atoms.
Definition at line 203 of file atoms.hpp.
Referenced by Atoms::AddAtom(), and UpdateSpan::Update().
|
inline |
|
inline |
Get the current atom coefficients.
Definition at line 198 of file atoms.hpp.
Referenced by Atoms::AddAtom(), UpdateSpan::Update(), and UpdateFullCorrection::Update().
|
inline |
|
inline |
Enhance the solution in the convex hull of current atoms with atom norm constraint tau.
Used in UpdateFullCorrection class for update step.
Minimize the function in the atom domain defined by current atoms, where the solution still need to have atom norm (defined by current atoms) less than or equal to tau. We use projected gradient method to solve it, see the "Enhancement step" of the following paper:
| function | function to be minimized. |
| tau | atom norm constraint. |
| stepSize | step size for projected gradient method. |
| maxIteration | maximum iteration number. |
| tolerance | tolerance for projected gradient method. |
Definition at line 165 of file atoms.hpp.
References Proximal::ProjectToL1Ball(), and Atoms::RecoverVector().
Referenced by UpdateFullCorrection::Update().
|
inline |
Prune the support, delete previous atoms if they don't contribute much.
See Algorithm 2 of paper:
| F | thresholding number. |
| function | function to be optimized. |
Definition at line 85 of file atoms.hpp.
References Atoms::RecoverVector().
Referenced by UpdateSpan::Update().
|
inline |
Recover the solution coordinate from the coefficients of current atoms.
Definition at line 61 of file atoms.hpp.
Referenced by Atoms::ProjectedGradientEnhancement(), Atoms::PruneSupport(), UpdateSpan::Update(), and UpdateFullCorrection::Update().