This is the first subproject of the GP project.
The goal of this subproject is to
create a population of GP tree structures for a symbolic regression problem.
If you want to use it, or refer to it, I have written a
node and an individual class that uses pointers to build and
evaluate random expression trees. Trees are build of nodes, which point
to each other.
To compile the test main program use:
g++ test.cpp node.cpp individual.cpp
For this subproject you only need the following functionallity:
- Generate full random expression individuals.
- The expression trees should have, at least, the non-teminals:
+, -, *, /.
- The expression trees should have, at least, the teminals: X
(the input variable) and constants.
- The ability to copy individuals.
- The ability to evaluate individuals.
- The ability to erase individuals.
- The ability to calculate the size (number of terminals and non-terminals)
of individuals.
- The ability to create a population of individuals and to find
the best and average fitness of the population, and the average size of the
individuals in the population.
Individuals should represent expression trees, but may be coded as a different
type of data structure (e.g. a tree stored in an array).
For now you may choose your own fitness function, i.e. your own set of
x,y points that the GP should evolved an expression to fit.
Project Write-up:
Write a short paper describing the results of your project
that includes the following sections:
- Algorithm descriptions - Description of the
GP so far. Be careful to include all of the details someone would
need to replicate your work.
- Individual description - Description of the
structure of your individuals. Be careful to include all of
the details someone would
need to replicate your work.
- Results - Basically, does it seem to be working.
- Conclusions - If its not working, why not.
And what are then next steps to complete the project.