22 std::ostream &operator<<(std::ostream &t_os,
const PenaltyUpdate &t_penalty_update);
59 std::vector<double> m_factor;
60 unsigned int m_current_factor_index = 0;
63 explicit Multiplicative(
double t_factor,
bool t_normalized =
false) : m_factor({ t_factor }), m_normalized(t_normalized) {}
65 explicit Multiplicative(std::vector<double> t_factor,
bool t_normalized =
false) : m_factor(std::move(t_factor)), m_normalized(t_normalized) {}
67 double operator()(
double t_current_penalty)
override {
68 return t_current_penalty * m_factor[m_current_factor_index];
71 void operator()(std::list<ADM::Formulation::CurrentPenalty> &t_current_penalties)
override;
73 bool diversify()
override;
75 std::ostream &describe(std::ostream &t_os)
const override;
83 std::vector<std::unique_ptr<PenaltyUpdate>> m_penalty_updates;
84 unsigned int m_current_penalty_update_index = 0;
86 explicit Adaptive(
const std::vector<PenaltyUpdate*>& t_penalty_updates);
90 double operator()(
double t_current_penalty)
override {
91 return m_penalty_updates[m_current_penalty_update_index]->operator()(t_current_penalty);
94 void operator()(std::list<ADM::Formulation::CurrentPenalty> &t_current_penalties)
override {
95 m_penalty_updates[m_current_penalty_update_index]->operator()(t_current_penalties);
98 bool diversify()
override;
100 std::ostream &describe(std::ostream &t_os)
const override;