|
Darwin Neuroevolution Framework
|
Domain: The classic Pong game. More...
#include <pong.h>
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::PropertySet > | calibrateGenotype ([[maybe_unused]] const Genotype *genotype) const |
| Optional: additional fitness metrics (normally not used in the population evaluation, ie a test set) | |
Domain: The classic Pong game.
This is an implementation of the classic 2-player Pong game: each player controlls a paddle (which can be moved up or down). The ball bounces off the walls, and if it goes behind the paddle line, the other player scores a point.
All the population members participate in a tournament and the outcomes are used to calculate the individual fitness values.
| Input | Value |
|---|---|
| 0 | my_paddle_pos |
| 1 | opponent_paddle_pos |
| 2 | ball_x |
| 3 | ball_y |
| 4 | ball_vx |
| 5 | ball_vy |
| Output | Value |
|---|---|
| 0 | move_up |
| 1 | move_down |
The largest output signal determines the player action at the current step. If none of the output values is larger than 0, then the default action is "do nothing".
|
overridevirtual |
Assigns fitness values to every genotype.
Having a good fitness function is a key part of evolutionary algorithms:
true if the evolution goal was reached Implements darwin::Domain.
1.8.14