aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
 
Loading...
Searching...
No Matches
l1-penalty.hpp
Go to the documentation of this file.
1
3#pragma once
4
6
7namespace aligator {
8
17template <typename _Scalar>
19 using Scalar = _Scalar;
21
27
29 using ActiveType = typename Base::ActiveType;
30 using Base::mu_;
31
32 Scalar evaluate(const ConstVectorRef &zproj) const {
33 return zproj.template lpNorm<1>();
34 }
35
36 decltype(auto) projection_impl(const ConstVectorRef &z) const {
37 return z.array().sign() *
38 (z.array().abs() - mu_).max(static_cast<Scalar>(0.));
39 }
40
41 void projection(const ConstVectorRef &z, VectorRef zout) const {
42 zout = projection_impl(z);
43 }
44
45 void normalConeProjection(const ConstVectorRef &z, VectorRef zout) const {
46 zout = z - projection_impl(z).matrix();
47 }
48
49 void computeActiveSet(const ConstVectorRef &z,
50 Eigen::Ref<ActiveType> out) const {
51 out = z.array().abs() <= mu_;
52 }
53};
54
55} // namespace aligator
Main package namespace.
Eigen::Matrix< bool, Eigen::Dynamic, 1 > ActiveType
decltype(auto) projection_impl(const ConstVectorRef &z) const
NonsmoothPenaltyL1Tpl & operator=(NonsmoothPenaltyL1Tpl &&)=default
void computeActiveSet(const ConstVectorRef &z, Eigen::Ref< ActiveType > out) const
NonsmoothPenaltyL1Tpl & operator=(const NonsmoothPenaltyL1Tpl &)=default
NonsmoothPenaltyL1Tpl(const NonsmoothPenaltyL1Tpl &)=default
ConstraintSetTpl< Scalar > Base
Scalar evaluate(const ConstVectorRef &zproj) const
NonsmoothPenaltyL1Tpl(NonsmoothPenaltyL1Tpl &&)=default
void normalConeProjection(const ConstVectorRef &z, VectorRef zout) const
Compute projection of z onto the normal cone to the set. The default implementation is just .
typename Base::ActiveType ActiveType
void projection(const ConstVectorRef &z, VectorRef zout) const
Compute projection of variable z onto the constraint set.