1 #ifndef SCREENING_RULES_HPP     2 #define SCREENING_RULES_HPP     9 #include <eigen3/Eigen/Dense>    13 #include "../Generic/generics.hpp"    17 template < 
typename T >
    18 Eigen::Matrix< T, Eigen::Dynamic, 1 > DualPoint(
    19     const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic >& X,
    20     const Eigen::Matrix< T, Eigen::Dynamic, 1 >& Y,
    21     const Eigen::Matrix< T, Eigen::Dynamic, 1 >& Beta,
    24     Eigen::Matrix< T, Eigen::Dynamic, 1 > residual = Y - X*Beta;
    25     T alpha = 1.0 / ( X.transpose()*residual ).
template lpNorm< Eigen::Infinity >();
    26     T alpha_tilde = 
static_cast<T
>( Y.transpose()*residual ) / ( lambda * residual.squaredNorm() );
    28     T s = std::min( std::max( alpha_tilde, - alpha ), alpha );
    33 template < 
typename T >
    34 T DualityGap2 ( 
const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic >& X,
    35                 const Eigen::Matrix< T, Eigen::Dynamic, 1 >& Y,
    36                 const Eigen::Matrix< T, Eigen::Dynamic, 1 >& Beta,
    37                 const Eigen::Matrix< T, Eigen::Dynamic, 1 >& Nu,
    40     T f_beta = 0.5*( Y - X*Beta ).squaredNorm() + lambda*Beta.template lpNorm< 1 >();
    41     T d_nu = 0.5*Y.squaredNorm() - 
square( lambda ) / 2.0 *( Nu - Y * 1.0/lambda ).squaredNorm();
    47 template < 
typename T >
    48 std::vector< unsigned int > SafeActiveSet (
    49     const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic >& X,
    50     const Eigen::Matrix< T, Eigen::Dynamic, 1 >& center,
    53     unsigned int p = X.cols();
    54     std::vector< unsigned int > active_indices;
    56     for( 
unsigned int j = 0; j < p ; j ++ ) {
    58         Eigen::Matrix< T, Eigen::Dynamic, 1 > X_j = X.col( j );
    60         T safe_region = std::abs( static_cast<T>( X_j.transpose() * center ) ) + radius * X_j.norm();
    62         if( safe_region >= static_cast<T>( 1 ) ) {
    63             active_indices.push_back( j );
    68     return active_indices;
    74 #endif // SCREENING_RULES_HPP 
T square(T &val)
Compute the square of a value.