-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Welcome to the klgp wiki!
This project is designed to be a fast running implementation of techniques from evolutionary computing which evolve predictive models for machine learning. A focus of the project is on the encoding of the models, and a desire to explore the impacts of encodings of individuals on the ability to 'efficiently' find 'good' solutions.
Our system is based on 4 types of encodings
- Variable Length integer sequence [can be used to implement genetic programming]
- Fixed Length integer sequence
- Variable Length float sequence
- Fixed Length float sequence [can be used to implement evolutionary strategies]
A key idea behind this project is: The algorithm which evolves solutions should only depend minimally on the encoding of solutions.
The only thing that should depend on the encoding is 'how to produce new individuals from existing ones' [mutation/ crossover], and of course the GPMap, which interprets genotypes and maps them to phenotypes.
This system is composed of three kinds of objects; types, environments and functions. The most important are outlined below.
-
EAType
- Defines the flow of evolutionary algorithm
-
PopType
- Defines structure for storing current set of individuals, and selecting individuals for mutation/crossover
-
Genotype
- Defines encoding of an individual
-
Phenotype
- Defines the 'behavior' of an individual
-
FitType
- Defines the fitness of an individual (likely 1 or more floating point numbers, depending on # of objectives)
- DevelEnv -- Development environment contains information needed translate genotype to phenotype. If evolving predictive models, the DevelEnv will contain samples on which predictions are made (and possibly additional information).
- EvalEnv -- Evaluation environment contains information needed to translate a programs phenotype to genotype. If evolving predictive models, the EvalEnv will contain the ground truth values of the predictions made during development.
-
develop(Genotype, DevelEnv) -> Phenotype
- In a basic lgp ea, develop will interpret the genotype as a sequence of instructions, and use these to make predictions about the samples contained in DevelEnv. The phenotype would be the prediction vector, and possibly the length of the program.
- evaluate(Phenotype, EvalEnv) -> FitType
- mutate(Genotype) -> Genotype
- crossover(Genotype, Genotype) -> Genotype