Skip to content

vinogradnick/GeneticAlgorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Библиотека генетического алгоритма С#


Генетический алгоритм : это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путём случайного подбора, комбинирования и вариации искомых параметров с использованием механизмов, аналогичных естественному отбору в природе.

Используемые методы

  1. Элитарный отбор новых особей
  2. Метод рулетки для отбора родителей
  3. Двуточечный кроссинговер
  4. Бинарная мутация генома
Пример использования алгоритма

Инициализация класса генетического алгоритма

    GeneticAlgorithm geneticAlgorithm =new GeneticAlgorithm();

Создание популяции для использования

    var population =new Population(
        РазмерПопуляции,
        КоличествоОсобей,
        КоличествоОсобейДляВыбора
        РазмерГеномаИндивида,
        ФитнесФункция
    );

Создание фитнес функции для использования

  1. Необходимо создать свой класс фитнесс функции в котором необходимо реализивать метод _GetFitness() Пример:
    public class FitnessFunction:IFitnessFunction
    {
        public float GetFitness(IChromosome chromosome)
        {
            float fitness = 0;
            for (int i = 0; i <chromosome.Genome.Length; i++)
                fitness += chromosome.Genome[i];
            return fitness;
        }
    }
  1. Создать экземпляр вашего класса для добавления в популяцию
    var fitness = new FitnessFunction();

Создание мутатора

    var mutator = new Mutator(ШансМутации);

Полный пример использования:

var fitnes = new FitnessFunction();

var population = new Population(100,50,20,8,fitnes);

var mutator = new Mutator(0.05f);

GeneticAlgorithm geneticAlgorithm = new GeneticAlgorithm(population,mutator);
//Запуск эволюции
geneticAlgorithm.Evaluate();
//Вывод приспособленности самого лучшего индивида в популяции
Console.WriteLine(geneticAlgorithm.PopulationFitness);
// Печать набора хромосом лучшего индивида
Console.WriteLine(geneticAlgorithm.BestChromosome.ToString());

Используемые справочные материалы

  1. Genetic Algorithm in Artificial Intelligence - The Math of Intelligence https://www.youtube.com/watch?v=rGWBo0JGf50

  2. Панченко, Т.В. Генетические алгоритмы: учебно-методическое пособие / под ред. Ю.Ю. Тарасевича. - Астрахань: Издательнский дом "Астраханский университет", 2007.-87 [3] c.

About

Библиотека генетического алгоритма с применением элитарного отбора и отбора родителей с помощью рулетки. Рекомбинация генов выполняется с помощью бинарного двухточечного кроссинговера

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages