Ultra 0.9.4
Loading...
Searching...
No Matches
ultra::recombination::base< E > Class Template Reference

#include <evolution_recombination.h>

Inheritance diagram for ultra::recombination::base< E >:
ultra::recombination::strategy< E >

Public Member Functions

template<class R>
requires std::ranges::random_access_range<const R> && std::ranges::sized_range<const R> && std::same_as<std::ranges::range_value_t<const R>, scored_t>
auto operator() (const R &) const
template<class R>
requires std::ranges::random_access_range<const R> && std::ranges::sized_range<const R> && std::same_as<std::ranges::range_value_t<const R>, scored_t>
auto operator() (const R &parents) const
Public Member Functions inherited from ultra::recombination::strategy< E >
 strategy (E &, const problem &)

Additional Inherited Members

Public Types inherited from ultra::recombination::strategy< E >
using scored_t
Protected Attributes inherited from ultra::recombination::strategy< E >
E & eva_
const problem & prob_

Detailed Description

template<Evaluator E>
class ultra::recombination::base< E >

This class defines the program skeleton of a standard genetic programming crossover plus mutation operation. It's a template method design pattern: one or more of the algorithm steps can be overridden by subclasses to allow differing behaviours while ensuring that the overarching algorithm is still followed.

Member Function Documentation

◆ operator()() [1/2]

template<Evaluator E>
requires std::ranges::random_access_range<const R> && std::ranges::sized_range<const R> && std::same_as<std::ranges::range_value_t<const R>, scored_t>
template<class R>
requires std::ranges::random_access_range<const R> && std::ranges::sized_range<const R> && std::same_as<std::ranges::range_value_t<const R>, scored_t>
auto ultra::recombination::base< E >::operator() ( const R & parents) const
nodiscard

This is a quite standard crossover + mutation operator.

Parameters
[in]parentsa vector of ordered parents
Returns
the offspring (single child)

◆ operator()() [2/2]

template<Evaluator E>
template<class R>
requires std::ranges::random_access_range<const R> && std::ranges::sized_range<const R> && std::same_as<std::ranges::range_value_t<const R>, scored_t>
auto ultra::recombination::base< E >::operator() ( const R & parents) const
nodiscard

This is a quite standard crossover + mutation operator.

Parameters
[in]parentsa vector of ordered parents
Returns
the offspring (single child)

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