13#if !defined(ULTRA_EVOLUTION_STRATEGY_H)
14#define ULTRA_EVOLUTION_STRATEGY_H
68 using evaluator_type = E;
69 using fitness_t = evaluator_fitness_t<E>;
70 using individual_t = evaluator_individual_t<E>;
85 template<Population P>
void init(P &)
const {}
87 template<Population P>
103 [[nodiscard]]
const problem &get_problem() const noexcept {
return prob_; }
105 template<Population P>
111 template<LayeredPopulation P>
112 [[nodiscard]]
static bool valid_layer(P &,
typename P::layer_iter);
115 const problem &prob_;
165 using typename alps_es::evolution_strategy::fitness_t;
166 using typename alps_es::evolution_strategy::individual_t;
170 template<LayeredPopulation P> [[nodiscard]]
auto operations(
171 P &,
typename P::layer_iter,
174 template<LayeredPopulation P>
void init(P &)
const;
176 template<LayeredPopulation P>
182 template<LayeredPopulation P>
200 using typename std_es::evolution_strategy::fitness_t;
201 using typename std_es::evolution_strategy::individual_t;
205 template<SizedRandomAccessPopulation P> [[nodiscard]]
auto operations(
207 template<LayeredPopulation P> [[nodiscard]]
auto operations(
208 P &,
typename P::layer_iter,
227 using typename de_es::evolution_strategy::fitness_t;
228 using typename de_es::evolution_strategy::individual_t;
232 template<Population P> P *refinement_subgroup(P &)
const noexcept =
delete;
234 template<SizedRandomAccessPopulation P> [[nodiscard]]
auto operations(
237 template<LayeredPopulation P> [[nodiscard]]
auto operations(
238 P &,
typename P::layer_iter,
263 typename std::remove_cvref_t<T>::evaluator_type;
266 && std::derived_from<
267 std::remove_cvref_t<T>,
273 &&
requires(
const std::remove_reference_t<ES> &strategy, P &pop)
276 std::remove_pointer_t<
decltype(strategy.refinement_subgroup(pop))>>;
278 { strategy.refinement_subgroup(pop) } -> std::convertible_to<
279 std::remove_pointer_t<
decltype(strategy.refinement_subgroup(pop))> *>;
alps_es(const problem &, E &)
Definition evolution_strategy.h:152
void after_generation(P &, const summary< individual_t, fitness_t > &)
Definition evolution_strategy.h:274
void init(P &) const
Definition evolution_strategy.h:215
auto * refinement_subgroup(P &) const noexcept
Definition evolution_strategy.h:234
auto operations(P &, typename P::layer_iter, const evolution_status< individual_t, fitness_t > &) const
Definition evolution_strategy.h:183
std::size_t max_parallelism(const P &) const noexcept
Definition evolution_strategy.h:251
static parameters shape(parameters)
Definition evolution_strategy.h:366
auto operations(P &, const evolution_status< individual_t, fitness_t > &) const
Definition evolution_strategy.h:465
Definition evolution_status.h:36
Definition evolution_strategy.h:66
void init(P &) const
Definition evolution_strategy.h:85
std::size_t max_parallelism(const P &) const noexcept
Definition evolution_strategy.h:85
P * refinement_subgroup(P &) const noexcept
Definition evolution_strategy.h:67
static parameters shape(const parameters &p)
Definition evolution_strategy.h:75
void after_generation(P &, const summary< individual_t, fitness_t > &)
Definition evolution_strategy.h:119
evolution_strategy(const problem &, E &)
Definition evolution_strategy.h:36
Definition evolution_recombination.h:71
Definition evolution_recombination.h:89
Definition evolution_replacement.h:80
Definition evolution_replacement.h:107
Definition evolution_replacement.h:54
Definition evolution_selection.h:83
Definition evolution_selection.h:100
Definition evolution_selection.h:66
auto operations(P &, const evolution_status< individual_t, fitness_t > &) const
Definition evolution_strategy.h:401
Definition evolution_summary.h:33
Definition evaluator.h:44
Definition population.h:37
Definition evolution_strategy.h:270
Definition evolution_strategy.h:260
Definition parameters.h:26