{'fraction_non_alphanumeric': 0.009695290858725761, 'fraction_numerical': 0.002770083102493075, 'mean_word_length': 5.020833333333333, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
The evolutionary consequences of redundancy in natural and artificial genetic codes.

Whilst the existence of redundancy within the genetic code has been recognised for some time, the consequences of this redundancy for natural selection have not been granted any attention by theoretical biologists. We postulate an adaptive value to the pattern of redundancy found in the modern genetic code and argue that redundancy might also be beneficial to the performance of genetic algorithms when introduced at a similar level in their encodings. We define a formal framework in which some comparable patterns of redundancy can be modelled and studied. We show that these patterns of redundancy vary significantly in their effects and that the number of neutral mutations they induce is a relevant parameter in understanding this variation. We then quantify the impact of this form of redundancy on a genetic algorithm. Several optimisation problems are tried in which redundancy brings a substantial decrease in the number of generations needed to find a solution of a given quality. A problem is also presented where redundancy does not speed up the discovery of good solutions. A more detailed analysis is carried out of the factors responsible for this limitation. The consequences of these findings for genetic algorithms and for the evolution of the genetic code are discussed. Submitted for the degree of D.Phil. University of Sussex May, 2002