The Computational Beauty of Nature
Source code

gasurf

find a surfaces peak with a genetic algorithm

gasurf -help
  or
gasurf [-size  integer]  [-len  integer]  [-gens  integer]
       [-seed integer] [-crate double] [-mrate double]

Uses a genetic algorithm to find the maximum of a multi-humped function. This program serves as an example of how GAs can be used to optimize functions which take multiple floating-point arguments.

Use a genetic algorithm to find the maximum of a multihumped function. This program serves as an example of how GAs can be used to optimize function which take a multiple floating point arguments. Reproduction of strings entails crossover and mutation with strings being selected based on fitness.

Miscellany

The bit strings are converted to floating point numbers with the formula (8 * int(string) / 2^len - 4) where int(string) is the integer value of a binary string. Thus, all numbers are forced to be between -4 and 4.

A more sophisticated GA encoding would use Gray codes to represent the floating point numbers which arguably are better behaved under mutation.

Bugs

No sanity checks are performed to make sure that any of the options make sense.

Options

-sizePopulation size.10
-lenDNA length.16
-gensNumber of generations.50
-seedRandom seed.0
-crateCrossover rate.0.75
-mrateMutation rate.0.01

gasurf.c on GitHub