The simple idea behind genetic programming is to randomize a bunch of stuff, send that stuff through the objective function, and to evaluate how each thing does. First a few terms.
Population:
The collection of all individuals that are combined and tested for this problem.
Population Size:
The maximum number of individuals for this problem.
Generations:
Each time all individuals are tested for the problem.
Individual:
A randomized arrangement of terminal values and operators.
Terminal value:
Typically these are literal values. The values could be integers from -9 to 9, or real values from 0.0 to 9.9, or what fits your problem.
Operator:
If working on a numerical problem this could be add (+), subtract (-), multiply (*), divide (/), modulus (%), Bessel functions, Jacobian functions, or whatever fits your problem.
Crossover:
This idea takes two individuals and combines them into a third and forth, unique individuals. If one individual is ABCDEF and a second is 123456. One way to randomly combine these to choose a random number, say 4 since these individuals are each of length 6. Trade material from these two individuals into new individuals ABCD56 and 1234EF.
Mutation:
This idea is to create a random and small change in an individual to see how the change. If the individual is ABCDEF and a random number is chosen, say 4, the mutated individual could then be changed to ABCD7F.
These are the basic steps. When combined near magic will happen. More in the next post.
Mike
No comments:
Post a Comment