As neural networks, genetic algorithms also rely one a specific representation of the problem to solve, but instead of the rather restricting network-parameters, any representation which can be expressed as a fixed length string (genotype) over a finite (typically the binary) alphabet can be used. The interpretation (i.e. the phenotype) of a strings (genotype) is of no importance to the algorithm, no matter whether they represent the design parameters of a jet, the strategy in a cooperative game or, as for this project, the weights and biases of a neural net.
The genetic algorithm will generate a (generally very high) number of those chromosome strings at random, each representing an individual in the initial (or parent) population, to which the evolutionary principles of selection and mutation are applied. For the selection mechanism, the user has to provide means to determine the relative fitness of the individuals. This can be done by comparing two individuals and deciding which one is better (tournament selection, rank selection) or by providing an fitness or error function which allows to classify each individual in relation to the average fitness or error of the population (normalised fitness). The algorithm will then favour individual with higher fitness (lower error) to be selected to be propagated into the next generation. Typically, this evaluation process consumes most of the execution time, no matter whether the fitness is determined by calculation or by experiment.
A new generation is then produced by applying genetic operators to the selected individuals. The basic operators are mutation, where one or more digits of the chromosome string are changed, and crossover, where two strings are cut and crosswise recombined to form two new strings, which contain features of both parents. Other operators like reproduction (copy) or inversion (swapping of substrings) are of minor importance.
The two steps of selection and propagation are repeated, until an individual matches the termination criterion. It is worth stressing the fact, that nothing has to be known about the actual solution of the problem and not even sample solutions (as with neural networks) have to be given. However, the more knowledge is put into the fitness function by making it more accurate and more ``linear'' (i.e. proportional to the actual distance to the solution string) the faster the algorithm will converge.
This directed stochastic search makes genetic algorithms a very robust and universal tool for almost any optimisation problem which can be expressed in a reasonably small set of parameters. Thus, they are e.g. often used in aero- and hydrodynamic design where, in lack of a practicable computer model, the fitness is evaluated by experiment. More academic applications are found e.g. in game theoretic simulations and artificial life.