-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathSinglePointCrossoverManager.cs
23 lines (20 loc) · 1.02 KB
/
SinglePointCrossoverManager.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using GeneticAlgorithm.Components.Interfaces;
using GeneticAlgorithm.Interfaces;
namespace GeneticAlgorithm.Components.CrossoverManagers
{
/// <summary>
/// A point on both parents' chromosomes is picked randomly, and designated a 'crossover point'. Bits to the right of that point are swapped between the two parent chromosomes.
/// Works on chromosomes of type VectorChromosome<T>.
/// See: https://en.wikipedia.org/wiki/Crossover_(genetic_algorithm)#Single-point_crossover
/// </summary>
public class SinglePointCrossoverManager<T> : ICrossoverManager
{
private readonly K_PointCrossoverManager<T> kPointCrossover;
public SinglePointCrossoverManager(IMutationManager<T> mutationManager, IEvaluator evaluator)
{
kPointCrossover = new K_PointCrossoverManager<T>(1, mutationManager, evaluator);
}
public IChromosome Crossover(IChromosome chromosome1, IChromosome chromosome2) =>
kPointCrossover.Crossover(chromosome1, chromosome2);
}
}