Genetic Algorithm - Somnibyte/MLKit GitHub Wiki
MLKit provides a few classes in order to help you create programs that use genetic algorithms. There are two main classes that you will be using frequently which includes the BiologicalProcessManager
and Population
classes. These classes both provide static methods that manipulate the genes of your Genome
objects. Let's go through each class and protocol provided:
BiologicalProcessManager.swift
The BiologicalProcessManager
class provides static methods that handle operations such as crossover and mutation. The operations that are provided for you include:
- One-Point Crossover
- Scramble Mutation
- Swap Mutation
- Insert Mutation
- Inverse Mutation
Population.swift
The Population
class provides a static method that handles choosing parents from a population of individuals. The selectParents
method implements tournament selection
to choose the parents within a population.
Genome.swift
MLKit provides you with a protocol to help you define a Genome
object. The Genome
protocol requires you to include a fitness value and a genotypeRepresentation for your Genome
conforming objects. The Genome
protocol does not provide a fitness evaluation function because there are many ways to evaluate fitness and so this gives you the freedom of implementing a method within your Genome
conforming object to evaluate the fitness of an individual.
An example project is provided which includes an example of a genetic algorithm running as well as a neural network. An step-by-step explanation of how the example project was constructed is located here.