GeneticSharp is a fast, extensible, multi-platform and multithreading C# Genetic Algorithm library that simplifies the development of applications using Genetic Algorithms (GAs).
C# ShaderLab XSLT Other
Clone or download
giacomelli Merge pull request #34 from mersadk/master
Add geneValues parameter to FloatingPointChromosome
Latest commit 0d87eee Jul 3, 2018


Join the chat at Build status Coverage Status License Nuget Stack Overflow

GeneticSharp is a fast, extensible, multi-platform and multithreading C# Genetic Algorithm library that simplifies the development of applications using Genetic Algorithms (GAs).

Can be used in any kind of .NET Core and .NET Framework apps, like ASP .NET MVC, ASP .NET Core, Web Forms, UWP, Windows Forms, GTK#, Xamarin and Unity3D games.

Projects, papers, journals, books and tutorials using GeneticSharp




Add your own fitness evaluation, implementing IFitness interface.








Console sample

  • AutoConfig
  • Bitmap equality
  • Equality equation
  • Equation solver
  • Function builder

  • Ghostwriter
  • TSP (Travelling Salesman Problem)

GTK# sample

TSP (Travelling Salesman Problem) and Function optimization

Bitmap equality

Unity3D sample

  • Car2D
  • TSP
  • Wall builder


  • Mono, .NET Standard 2.0 and .NET Framework 4.6.2 support.
  • Fully tested on Windows and MacOS.

Code quality

  • 100% unit test code coverage.
  • FxCop validated.
  • Code duplicated verification.
  • Good (and well used) design patterns.
  • 100% code documentation


.NET Standard 2.0 and .NET Framework 4.6.2

Only GeneticSharp:

install-package GeneticSharp

GeneticSharp and extensions (TSP, AutoConfig, Bitmap equality, Equality equation, Equation solver, Function builder, etc):

install-package GeneticSharp.Extensions


If want to use GeneticSharp on Unity3D you can use the latest GeneticSharp.unitypackage available on our release page.

Mono and .NET Framework 3.5

To install previous version that support .NET Framework 3.5:

install-package GeneticSharp -Version 1.2.0

Running samples

If you want to run the console, GTK# and Unity samples, just fork this repository and follow the instruction from our setup page wiki.


Creating your own fitness evaluation

public class MyProblemFitness : IFitness
	public double Evaluate (IChromosome chromosome)
		// Evaluate the fitness of chromosome.

Creating your own chromosome

public class MyProblemChromosome : ChromosomeBase
	// Change the argument value passed to base construtor to change the length 
	// of your chromosome.
	public MyProblemChromosome() : base(10) 

	public override Gene GenerateGene (int geneIndex)
		// Generate a gene base on my problem chromosome representation.

	public override IChromosome CreateNew ()
		return new MyProblemChromosome();

Running your GA

var selection = new EliteSelection();
var crossover = new OrderedCrossover();
var mutation = new ReverseSequenceMutation();
var fitness = new MyProblemFitness();
var chromosome = new MyProblemChromosome();
var population = new Population (50, 70, chromosome);

var ga = new GeneticAlgorithm(population, fitness, selection, crossover, mutation);
ga.Termination = new GenerationNumberTermination(100);

Console.WriteLine("GA running...");

Console.WriteLine("Best solution found has {0} fitness.", ga.BestChromosome.Fitness);


  • Add new problems/classic sample
    • Checkers
    • Time series
    • Knapsack problem
  • Add new selections
  • Reward-based
  • Add new crossovers
    • Voting recombination
    • Alternating-position (AP)
    • Sequential Constructive (SCX)
    • Shuffle crossover
    • Precedence Preservative Crossover (PPX)
  • Add new mutations
    • Non-Uniform
    • Boundary
    • Gaussian
  • Add new terminations
    • Fitness convergence
    • Population convergence
    • Chromosome convergence
  • New samples
    • Xamarin runner app (sample)
  • Parallel populations (islands)


Having troubles?

How to improve it?

Create a fork of GeneticSharp.

Did you change it? Submit a pull request.


Licensed under the The MIT License (MIT). In others words, you can use this library for developement any kind of software: open source, commercial, proprietary and alien.