Генетический алгоритм : это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путём случайного подбора, комбинирования и вариации искомых параметров с использованием механизмов, аналогичных естественному отбору в природе.
- Элитарный отбор новых особей
- Метод рулетки для отбора родителей
- Двуточечный кроссинговер
- Бинарная мутация генома
Инициализация класса генетического алгоритма
GeneticAlgorithm geneticAlgorithm =new GeneticAlgorithm();Создание популяции для использования
var population =new Population(
РазмерПопуляции,
КоличествоОсобей,
КоличествоОсобейДляВыбора
РазмерГеномаИндивида,
ФитнесФункция
);Создание фитнес функции для использования
- Необходимо создать свой класс фитнесс функции в котором необходимо реализивать метод _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;
}
}- Создать экземпляр вашего класса для добавления в популяцию
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());-
Genetic Algorithm in Artificial Intelligence - The Math of Intelligence https://www.youtube.com/watch?v=rGWBo0JGf50
-
Панченко, Т.В. Генетические алгоритмы: учебно-методическое пособие / под ред. Ю.Ю. Тарасевича. - Астрахань: Издательнский дом "Астраханский университет", 2007.-87 [3] c.