Skip to content

Latest commit

History

139 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GeneticSharp

####Build Build status

####Code quality Coverage StatusFxCopDupFinder

####Release LicenseNugetNuget

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 apps, like ASP .NET MVC, Web Forms, Windows Forms, GTK# and Unity3D applications.


##Features

###Chromosomes Add your own chromosome representation implementing IChromosome interface or extending ChromosomeBase

###Fitness Add your own fitness evaluation, implementing IFitness interface.

###Populations

###Selections

###Crossovers

###Mutations

###Reinsertions

###Terminations

###Randomizations

###Runner app (console) with samples

  • AutoConfig

  • Bitmap equality

  • Equality equation

  • Equation solver

  • Function builder

  • Ghostwriter

  • TSP (Travelling toman Problem)

###Runner app (GTK#) with visual samples:

####TSP (Travelling Salesman Problem).

####Bitmap equality

###Multi-platform

  • Mono support.
  • Fully tested on Windows and MacOSX.

###Code quality

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

Setup

PM> Install-Package GeneticSharp

Usage

Creating your own fitness evaluation

publicclassMyProblemFitness:IFitness{publicdoubleEvaluate(IChromosomechromosome){// Evaluate the fitness of chromosome.}}

Creating your own chromosome

publicclassMyProblemChromosome:ChromosomeBase{// Change the argument value passed to base construtor to change the length // of your chromosome.publicMyProblemChromosome():base(10){CreateGenes();}publicoverrideGeneGenerateGene(intgeneIndex){// Generate a gene base on my problem chromosome representation.}publicoverrideIChromosomeCreateNew(){returnnewMyProblemChromosome();}}

Running your GA

varselection=newEliteSelection();varcrossover=newOrderedCrossover();varmutation=newReverseSequenceMutation();varfitness=newMyProblemFitness();varchromosome=newMyProblemChromosome();varpopulation=newPopulation(50,70,chromosome);varga=newGeneticAlgorithm(population,fitness,selection,crossover,mutation);ga.Termination=newGenerationNumberTermination(100);Console.WriteLine("GA running...");ga.Start();Console.WriteLine("Best solution found has {0} fitness.",ga.BestChromosome.Fitness);

Roadmap

  • Unity3d game sample (WIP)
  • Improve Runner.GtkApp
    • Add new problems/classic samples
      • Checkers
      • Time series
      • Knapsack problem
  • Create the wiki
  • 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
    • Flip Bit
    • Boundary
    • Gaussian
  • Add new terminations
    • Fitness convergence
    • Population convergence
    • Chromosome convergence
  • MonoTouch Runner app (sample)
  • Parallel populations (islands)

FAQ

Having troubles?


How to improve it?

Create a fork of GeneticSharp.

Did you change it? Submit a pull request.

Donations

bitcoin:3GDWZCzu389UT2vwGHTML1gYxpS4pzKhVZ

License

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.

Change Log

  • 1.0.100 Added Order-based (OX2) and Position-based (POS) crossovers.
  • 1.0.56 NuGet package published.
  • 0.5.0 First version.

About

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

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages