Darwin Neuroevolution Framework
Public Member Functions | List of all members
find_max_value::FindMaxValue Class Reference

Domain: Locate the maximum value in an array. More...

#include <max.h>

Inheritance diagram for find_max_value::FindMaxValue:
darwin::Domain core::NonCopyable

Public Member Functions

size_t inputs () const override
 Number of inputs to a Brain.
 
size_t outputs () const override
 Number of outputs from a Brain.
 
bool evaluatePopulation (darwin::Population *population) const override
 Assigns fitness values to every genotype. More...
 
- Public Member Functions inherited from darwin::Domain
virtual unique_ptr< core::PropertySetcalibrateGenotype ([[maybe_unused]] const Genotype *genotype) const
 Optional: additional fitness metrics (normally not used in the population evaluation, ie a test set)
 

Detailed Description

Domain: Locate the maximum value in an array.

This is a minimalist problem intended to evaluate a population's ability to evolve basic memory facilities: locate the maximum value in an array of integers.

This deceptively simple problem requires the emergence of a few capabilities:

Core concepts

Inputs

Input Value
0 left_antenna (1.0 if the the agent is positioned at the left edge)
1 right_antenna (1.0 if the the agent is positioned at the right edge)
2 input_value

Outputs

Output Value
0 move_left
1 move_right
2 done (Accept current position as the final answer)

The largest output signal determines the agent's action at the current step.

Member Function Documentation

◆ evaluatePopulation()

bool find_max_value::FindMaxValue::evaluatePopulation ( darwin::Population population) const
inlineoverridevirtual

Assigns fitness values to every genotype.

Having a good fitness function is a key part of evolutionary algorithms:

  • Perhaps obvious, the fitness value should accurately estimate the quality of a particular solution
  • A "smooth" distribution is preferable since it provides a gradient which can guide the incremental search in the solutions space. (ex. if most fitness values are 1.0 or 0.0 it's hard to know which genotypes are good candidates for reproduction)
Returns
true if the evolution goal was reached

Implements darwin::Domain.


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