17template <
typename _Scalar>
33 return zproj.template lpNorm<1>();
37 return z.array().sign() *
38 (z.array().abs() -
mu_).max(
static_cast<Scalar>(0.));
41 void projection(
const ConstVectorRef &z, VectorRef zout)
const {
50 Eigen::Ref<ActiveType> out)
const {
51 out = z.array().abs() <=
mu_;
55#ifdef PROXSUITE_NLP_ENABLE_TEMPLATE_INSTANTIATION
56extern template struct PROXSUITE_NLP_EXPLICIT_INSTANTIATION_DECLARATION_DLLAPI
57 NonsmoothPenaltyL1Tpl<context::Scalar>;
#define PROXSUITE_NLP_DYNAMIC_TYPEDEFS(Scalar)
Base constraint set type.
Eigen::Matrix< bool, Eigen::Dynamic, 1 > ActiveType
Composite -penalty function .
void normalConeProjection(const ConstVectorRef &z, VectorRef zout) const
Compute projection of z onto the normal cone to the set. The default implementation is just .
NonsmoothPenaltyL1Tpl()=default
NonsmoothPenaltyL1Tpl(NonsmoothPenaltyL1Tpl &&)=default
typename Base::ActiveType ActiveType
void projection(const ConstVectorRef &z, VectorRef zout) const
Compute projection of variable z onto the constraint set.
NonsmoothPenaltyL1Tpl & operator=(const NonsmoothPenaltyL1Tpl &)=default
NonsmoothPenaltyL1Tpl & operator=(NonsmoothPenaltyL1Tpl &&)=default
decltype(auto) projection_impl(const ConstVectorRef &z) const
NonsmoothPenaltyL1Tpl(const NonsmoothPenaltyL1Tpl &)=default
void computeActiveSet(const ConstVectorRef &z, Eigen::Ref< ActiveType > out) const
Scalar evaluate(const ConstVectorRef &zproj) const