Class PenaltyBarrierU_cos_logarithmic

Inheritance Relationships

Base Type

Class Documentation

class Mechatronix::PenaltyBarrierU_cos_logarithmic : public Mechatronix::PenaltyBarrierU_base

Cosine Logarithmic barrier.

Public Functions

inline PenaltyBarrierU_cos_logarithmic(string const &name)

Construct the barrier.

inline virtual void setup(real_type epsilon, real_type tolerance) override

Initialize the barrier internal parameters based on the values of \( h \) and \( \epsilon \)

Set the internal parameter

\[ C = \displaystyle\frac{\epsilon}{\log\cos\left(\frac{\pi}{2}(1-h)\right)} \]

based on the values of \( h \) and \( \epsilon \)

Parameters
  • epsilon – value \( \epsilon \)

  • tolerance – value \( h \)

inline virtual real_type eval(real_type x) const override

Compute the barrier \( p(x) = C\log\left(\cos\left(\frac{\pi}{2}x\right)\right) \)

../_images/U_COS_LOG_0.jpeg

inline virtual real_type eval_D(real_type x) const override

First derivative of the barrier

../_images/U_COS_LOG_1.jpeg

inline virtual real_type eval_DD(real_type x) const override

Second derivative of the barrier

../_images/U_COS_LOG_2.jpeg

inline virtual real_type solve(real_type RHS) const override

Solve the problem \( p'(x) = r \)

\[ x = -\frac{2}{\pi}\arctan\left(\frac{2r}{C\pi}\right) \]
inline virtual void check_range_throw(real_type u, real_type u_min, real_type u_max) const override

check if value of the control is in the correct range

inline virtual bool check_range(real_type u, real_type u_min, real_type u_max) const override