aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
l1-penalty.hpp
Go to the documentation of this file.
1
3
#pragma once
4
5
#include "
aligator/core/constraint-set.hpp
"
6
7
namespace
aligator
{
8
17
template
<
typename
_Scalar>
18
struct
NonsmoothPenaltyL1Tpl
:
ConstraintSetTpl
<_Scalar> {
19
using
Scalar
= _Scalar;
20
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
21
22
NonsmoothPenaltyL1Tpl
() =
default
;
23
NonsmoothPenaltyL1Tpl
(
const
NonsmoothPenaltyL1Tpl
&) =
default
;
24
NonsmoothPenaltyL1Tpl
&
operator=
(
const
NonsmoothPenaltyL1Tpl
&) =
default
;
25
NonsmoothPenaltyL1Tpl
(
NonsmoothPenaltyL1Tpl
&&) =
default
;
26
NonsmoothPenaltyL1Tpl
&
operator=
(
NonsmoothPenaltyL1Tpl
&&) =
default
;
27
28
using
Base
=
ConstraintSetTpl<Scalar>
;
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
constraint-set.hpp
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
aligator::ConstraintSetTpl::ConstraintSetTpl
ConstraintSetTpl()=default
aligator::ConstraintSetTpl< Scalar >::ActiveType
Eigen::Matrix< bool, Eigen::Dynamic, 1 > ActiveType
Definition
constraint-set.hpp:20
aligator::ConstraintSetTpl< Scalar >::mu_
Scalar mu_
Definition
constraint-set.hpp:112
aligator::NonsmoothPenaltyL1Tpl< Scalar >::mu_
Scalar mu_
aligator::NonsmoothPenaltyL1Tpl::projection_impl
decltype(auto) projection_impl(const ConstVectorRef &z) const
Definition
l1-penalty.hpp:36
aligator::NonsmoothPenaltyL1Tpl::operator=
NonsmoothPenaltyL1Tpl & operator=(NonsmoothPenaltyL1Tpl &&)=default
aligator::NonsmoothPenaltyL1Tpl::computeActiveSet
void computeActiveSet(const ConstVectorRef &z, Eigen::Ref< ActiveType > out) const
Definition
l1-penalty.hpp:49
aligator::NonsmoothPenaltyL1Tpl::operator=
NonsmoothPenaltyL1Tpl & operator=(const NonsmoothPenaltyL1Tpl &)=default
aligator::NonsmoothPenaltyL1Tpl::Scalar
_Scalar Scalar
Definition
l1-penalty.hpp:19
aligator::NonsmoothPenaltyL1Tpl::NonsmoothPenaltyL1Tpl
NonsmoothPenaltyL1Tpl()=default
aligator::NonsmoothPenaltyL1Tpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::NonsmoothPenaltyL1Tpl::NonsmoothPenaltyL1Tpl
NonsmoothPenaltyL1Tpl(const NonsmoothPenaltyL1Tpl &)=default
aligator::NonsmoothPenaltyL1Tpl::Base
ConstraintSetTpl< Scalar > Base
Definition
l1-penalty.hpp:28
aligator::NonsmoothPenaltyL1Tpl::evaluate
Scalar evaluate(const ConstVectorRef &zproj) const
Definition
l1-penalty.hpp:32
aligator::NonsmoothPenaltyL1Tpl::NonsmoothPenaltyL1Tpl
NonsmoothPenaltyL1Tpl(NonsmoothPenaltyL1Tpl &&)=default
aligator::NonsmoothPenaltyL1Tpl::normalConeProjection
void normalConeProjection(const ConstVectorRef &z, VectorRef zout) const
Compute projection of z onto the normal cone to the set. The default implementation is just .
Definition
l1-penalty.hpp:45
aligator::NonsmoothPenaltyL1Tpl::ActiveType
typename Base::ActiveType ActiveType
Definition
l1-penalty.hpp:29
aligator::NonsmoothPenaltyL1Tpl::projection
void projection(const ConstVectorRef &z, VectorRef zout) const
Compute projection of variable z onto the constraint set.
Definition
l1-penalty.hpp:41
include
aligator
modelling
constraints
l1-penalty.hpp
Generated by
1.17.0