202502032130
Status: #idea
Tags: Evolutionary Algorithms
State: #nascient
Grammatical Evolution
A branch of research in the field of Formal Languages and Computation Theory.
It tries to automatically generate new computer programs, and to do so generally makes use of Context Free Grammars as they are expressive enough for most purposes, they use a constrained form of those called Closed Grammar where the programs always returns values of the same type.
While CFGs are by far the most used, due to the fact they are limited to context free and regular languages, they come with their limitations.
But there are many alternative grammars that one can use to get more expressive power for given purposes.
Genetic Programming involves key components:
- Grammars: Use the most powerful grammar necessary, but no more.
- Genetic operators: Many are good, but for a simple GE, Effective Crossover is a good choise.
- Initialisation: It plays a crucial role. A naive random initialisation will yield highly biased populations which are not useful for evolution, and fail to account for the full
- Parameter Settings: Bigger problems typically require a bigger population size, be careful.
- Variants: There are definitely variants that exist and that have been shown to outperform GE on some problems. Explore them!