Class PenaltyBarrierU_bipower

Inheritance Relationships

Base Type

Class Documentation

class Mechatronix::PenaltyBarrierU_bipower : public Mechatronix::PenaltyBarrierU_base

Bipower penalty.

Public Functions

inline PenaltyBarrierU_bipower(string const &name)

Construct the penalty.

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

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

Set the parameter

\[ N \geq \frac{\log\left(\frac{\epsilon}{2}\right)} {\log(1-h)} \]
where \( N \) is the first even integer which satisfy inequality. Now compute
\[ \delta = \frac{\epsilon-(1-h)^N}{(1-h)^2-(1-h)^N} \geq \frac{\epsilon}{2}\]
Parameters
  • epsilon[in] value \( \epsilon \)

  • tolerance[in] value \( h \)

inline virtual real_type eval(real_type z) const override

Compute penalty value

Compute the penalty

\[ p(x) = \epsilon x^2 + x^N \]

../_images/U_BIPOWER_0.jpeg

inline virtual real_type eval_D(real_type z) const override

First derivative of the penalty

../_images/U_BIPOWER_1.jpeg

inline virtual real_type eval_DD(real_type z) const override

Second derivative of the penalty

../_images/U_BIPOWER_2.jpeg

inline virtual real_type solve(real_type RHS) const override

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

\[ 2\delta x + N(1-\delta) x^{N-1}=r \]