InequalityPenaltyFunction.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
19 #pragma once
20 
23 
24 namespace gtsam {
25 
27 class GTSAM_EXPORT InequalityPenaltyFunction {
28  public:
29  typedef std::shared_ptr<InequalityPenaltyFunction> shared_ptr;
30  typedef std::function<double(const double& x, OptionalJacobian<1, 1> H)>
32 
35 
38 
39  virtual double operator()(const double& x,
40  OptionalJacobian<1, 1> H = {}) const = 0;
41 
42  virtual UnaryScalarFunc function() const;
43 };
44 
49 class GTSAM_EXPORT RampFunction : public InequalityPenaltyFunction {
50  public:
52  typedef RampFunction This;
53  typedef std::shared_ptr<This> shared_ptr;
54 
55  public:
56  RampFunction() : Base() {}
57 
58  virtual double operator()(const double& x,
59  OptionalJacobian<1, 1> H = {}) const override {
60  return Ramp(x, H);
61  }
62 
63  virtual UnaryScalarFunc function() const override { return Ramp; }
64 
65  static double Ramp(const double x, OptionalJacobian<1, 1> H = {});
66 };
67 
75 class GTSAM_EXPORT SmoothRampPoly2 : public InequalityPenaltyFunction {
76  public:
79  typedef std::shared_ptr<This> shared_ptr;
80 
81  protected:
82  double epsilon_;
83  double a_;
84 
85  public:
89  SmoothRampPoly2(const double epsilon = 1)
90  : Base(), epsilon_(epsilon), a_(0.5 / epsilon) {}
91 
92  virtual double operator()(const double& x,
93  OptionalJacobian<1, 1> H = {}) const override;
94 };
95 
104 class GTSAM_EXPORT SmoothRampPoly3 : public InequalityPenaltyFunction {
105  public:
108  typedef std::shared_ptr<This> shared_ptr;
109 
110  protected:
111  double epsilon_;
112  double a_;
113  double b_;
114 
115  public:
119  SmoothRampPoly3(const double epsilon = 1)
120  : Base(),
121  epsilon_(epsilon),
122  a_(-1 / (epsilon * epsilon)),
123  b_(2 / epsilon) {}
124 
125  virtual double operator()(const double& x,
126  OptionalJacobian<1, 1> H = {}) const override;
127 };
128 
130 class GTSAM_EXPORT SoftPlusFunction : public InequalityPenaltyFunction {
131  public:
134  typedef std::shared_ptr<This> shared_ptr;
135 
136  protected:
137  double k_;
138 
139  public:
143  SoftPlusFunction(const double k = 1) : Base(), k_(k) {}
144 
145  virtual double operator()(const double& x,
146  OptionalJacobian<1, 1> H = {}) const override;
147 };
148 
149 } // namespace gtsam
gtsam::RampFunction::RampFunction
RampFunction()
Definition: InequalityPenaltyFunction.h:56
gtsam::SmoothRampPoly3::Base
InequalityPenaltyFunction Base
Definition: InequalityPenaltyFunction.h:106
H
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set set xzeroaxis lt lw set x2zeroaxis lt lw set yzeroaxis lt lw set y2zeroaxis lt lw set tics in set ticslevel set tics set mxtics default set mytics default set mx2tics default set my2tics default set xtics border mirror norotate autofreq set ytics border mirror norotate autofreq set ztics border nomirror norotate autofreq set nox2tics set noy2tics set timestamp bottom norotate set rrange[*:*] noreverse nowriteback set trange[*:*] noreverse nowriteback set urange[*:*] noreverse nowriteback set vrange[*:*] noreverse nowriteback set xlabel matrix size set x2label set timefmt d m y n H
Definition: gnuplot_common_settings.hh:74
gtsam::SmoothRampPoly2
Definition: InequalityPenaltyFunction.h:75
gtsam::SmoothRampPoly3::a_
double a_
Definition: InequalityPenaltyFunction.h:112
gtsam::RampFunction::Base
InequalityPenaltyFunction Base
Definition: InequalityPenaltyFunction.h:51
x
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Definition: gnuplot_common_settings.hh:12
gtsam::SmoothRampPoly2::This
SmoothRampPoly2 This
Definition: InequalityPenaltyFunction.h:78
gtsam::SmoothRampPoly2::a_
double a_
Definition: InequalityPenaltyFunction.h:83
gtsam::SmoothRampPoly2::epsilon_
double epsilon_
Definition: InequalityPenaltyFunction.h:82
gtsam::SmoothRampPoly3
Definition: InequalityPenaltyFunction.h:104
gtsam::SmoothRampPoly2::shared_ptr
std::shared_ptr< This > shared_ptr
Definition: InequalityPenaltyFunction.h:79
gtsam::SmoothRampPoly2::Base
InequalityPenaltyFunction Base
Definition: InequalityPenaltyFunction.h:77
gtsam::SmoothRampPoly3::This
SmoothRampPoly3 This
Definition: InequalityPenaltyFunction.h:107
gtsam::SoftPlusFunction
Definition: InequalityPenaltyFunction.h:130
gtsam::InequalityPenaltyFunction::InequalityPenaltyFunction
InequalityPenaltyFunction()
Definition: InequalityPenaltyFunction.h:34
epsilon
static double epsilon
Definition: testRot3.cpp:37
expressions.h
Common expressions, both linear and non-linear.
gtsam::InequalityPenaltyFunction::~InequalityPenaltyFunction
virtual ~InequalityPenaltyFunction()
Definition: InequalityPenaltyFunction.h:37
gtsam::SoftPlusFunction::k_
double k_
Definition: InequalityPenaltyFunction.h:137
operator()
internal::enable_if< internal::valid_indexed_view_overload< RowIndices, ColIndices >::value &&internal::traits< typename EIGEN_INDEXED_VIEW_METHOD_TYPE< RowIndices, ColIndices >::type >::ReturnAsIndexedView, typename EIGEN_INDEXED_VIEW_METHOD_TYPE< RowIndices, ColIndices >::type >::type operator()(const RowIndices &rowIndices, const ColIndices &colIndices) EIGEN_INDEXED_VIEW_METHOD_CONST
Definition: IndexedViewMethods.h:73
gtsam::SoftPlusFunction::This
SoftPlusFunction This
Definition: InequalityPenaltyFunction.h:133
gtsam::SmoothRampPoly3::shared_ptr
std::shared_ptr< This > shared_ptr
Definition: InequalityPenaltyFunction.h:108
gtsam::RampFunction
Definition: InequalityPenaltyFunction.h:49
gtsam::SmoothRampPoly3::epsilon_
double epsilon_
Definition: InequalityPenaltyFunction.h:111
gtsam::InequalityPenaltyFunction::shared_ptr
std::shared_ptr< InequalityPenaltyFunction > shared_ptr
Definition: InequalityPenaltyFunction.h:29
gtsam::SoftPlusFunction::Base
InequalityPenaltyFunction Base
Definition: InequalityPenaltyFunction.h:132
gtsam::InequalityPenaltyFunction::UnaryScalarFunc
std::function< double(const double &x, OptionalJacobian< 1, 1 > H)> UnaryScalarFunc
Definition: InequalityPenaltyFunction.h:31
gtsam::SmoothRampPoly3::SmoothRampPoly3
SmoothRampPoly3(const double epsilon=1)
Definition: InequalityPenaltyFunction.h:119
gtsam::RampFunction::This
RampFunction This
Definition: InequalityPenaltyFunction.h:52
gtsam
traits
Definition: SFMdata.h:40
gtsam::RampFunction::shared_ptr
std::shared_ptr< This > shared_ptr
Definition: InequalityPenaltyFunction.h:53
gtsam::OptionalJacobian
Definition: OptionalJacobian.h:38
gtsam::SoftPlusFunction::shared_ptr
std::shared_ptr< This > shared_ptr
Definition: InequalityPenaltyFunction.h:134
gtsam::SmoothRampPoly3::b_
double b_
Definition: InequalityPenaltyFunction.h:113
gtsam::RampFunction::operator()
virtual double operator()(const double &x, OptionalJacobian< 1, 1 > H={}) const override
Definition: InequalityPenaltyFunction.h:58
ExpressionFactor.h
gtsam::SmoothRampPoly2::SmoothRampPoly2
SmoothRampPoly2(const double epsilon=1)
Definition: InequalityPenaltyFunction.h:89
gtsam::SoftPlusFunction::SoftPlusFunction
SoftPlusFunction(const double k=1)
Definition: InequalityPenaltyFunction.h:143
gtsam::InequalityPenaltyFunction
Definition: InequalityPenaltyFunction.h:27


gtsam
Author(s):
autogenerated on Wed Mar 19 2025 03:01:50