SOPT
Sparse OPTimisation
Public Types | Public Member Functions | List of all members
sopt::RelativeVariation< TYPE > Class Template Reference

#include <relative_variation.h>

Public Types

using Scalar = TYPE
 Underlying scalar type. More...
 
using Real = typename real_type< Scalar >::type
 Underlying scalar type. More...
 

Public Member Functions

 RelativeVariation (Real tolerance=1e-12, std::string const &name="")
 Maximum variation from one step to the next. More...
 
 RelativeVariation (RelativeVariation const &c)
 Copy constructor. More...
 
template<typename T >
bool operator() (Eigen::MatrixBase< T > const &input)
 True if object has changed by less than tolerance. More...
 
template<typename T >
bool operator() (Eigen::ArrayBase< T > const &input)
 True if object has changed by less than tolerance. More...
 
Real tolerance () const
 Allowed variation. More...
 
RelativeVariationtolerance (Real &e) const
 Allowed variation. More...
 
std::string const & name () const
 Name that gets interpolated into the log's output. More...
 
RelativeVariation const & name (std::string const &name)
 

Detailed Description

template<typename TYPE>
class sopt::RelativeVariation< TYPE >

Definition at line 13 of file relative_variation.h.

Member Typedef Documentation

◆ Real

template<typename TYPE >
using sopt::RelativeVariation< TYPE >::Real = typename real_type<Scalar>::type

Underlying scalar type.

Definition at line 18 of file relative_variation.h.

◆ Scalar

template<typename TYPE >
using sopt::RelativeVariation< TYPE >::Scalar = TYPE

Underlying scalar type.

Definition at line 16 of file relative_variation.h.

Constructor & Destructor Documentation

◆ RelativeVariation() [1/2]

template<typename TYPE >
sopt::RelativeVariation< TYPE >::RelativeVariation ( Real  tolerance = 1e-12,
std::string const &  name = "" 
)
inline

Maximum variation from one step to the next.

Definition at line 20 of file relative_variation.h.

21  : tolerance_(tolerance), previous_(typename Array<Scalar>::Index(0)), name_(name){};
std::string const & name() const
Name that gets interpolated into the log's output.
Real tolerance() const
Allowed variation.

◆ RelativeVariation() [2/2]

template<typename TYPE >
sopt::RelativeVariation< TYPE >::RelativeVariation ( RelativeVariation< TYPE > const &  c)
inline

Copy constructor.

Definition at line 23 of file relative_variation.h.

24  : tolerance_(c.tolerance_), previous_(c.previous_){};

Member Function Documentation

◆ name() [1/2]

template<typename TYPE >
std::string const& sopt::RelativeVariation< TYPE >::name ( ) const
inline

Name that gets interpolated into the log's output.

Definition at line 42 of file relative_variation.h.

42 { return name_; }

Referenced by sopt::RelativeVariation< TYPE >::name().

◆ name() [2/2]

template<typename TYPE >
RelativeVariation const& sopt::RelativeVariation< TYPE >::name ( std::string const &  name)
inline

Definition at line 43 of file relative_variation.h.

43  {
44  name_ = name;
45  return *this;
46  }

References sopt::RelativeVariation< TYPE >::name().

◆ operator()() [1/2]

template<typename SCALAR >
template<typename T >
bool sopt::RelativeVariation< SCALAR >::operator() ( Eigen::ArrayBase< T > const &  input)

True if object has changed by less than tolerance.

Definition at line 112 of file relative_variation.h.

112  {
113  if (previous_.size() != input.size()) {
114  previous_ = input;
115  return false;
116  }
117  auto const norm = (input - previous_).matrix().squaredNorm();
118  previous_ = input;
119  SOPT_LOW_LOG(" - {} relative variation: {} <? {}", name(), std::sqrt(norm), tolerance());
120  return norm < tolerance() * tolerance();
121 }
#define SOPT_LOW_LOG(...)
Low priority message.
Definition: logging.h:227

References SOPT_LOW_LOG.

◆ operator()() [2/2]

template<typename TYPE >
template<typename T >
bool sopt::RelativeVariation< TYPE >::operator() ( Eigen::MatrixBase< T > const &  input)
inline

True if object has changed by less than tolerance.

Definition at line 28 of file relative_variation.h.

28  {
29  return operator()(input.array());
30  }
bool operator()(Eigen::MatrixBase< T > const &input)
True if object has changed by less than tolerance.

◆ tolerance() [1/2]

template<typename TYPE >
Real sopt::RelativeVariation< TYPE >::tolerance ( ) const
inline

Allowed variation.

Definition at line 35 of file relative_variation.h.

35 { return tolerance_; }

Referenced by TEST_CASE().

◆ tolerance() [2/2]

template<typename TYPE >
RelativeVariation& sopt::RelativeVariation< TYPE >::tolerance ( Real e) const
inline

Allowed variation.

Definition at line 37 of file relative_variation.h.

37  {
38  tolerance_ = e;
39  return *this;
40  }

The documentation for this class was generated from the following file: