• главная
  • Карта сайта
  • Контакты

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

Страница 2

Метод GetParent отбирает особь для скрещивания по методу рулетки. Таким образом, двукратный вызов этого метода предоставит двух «родителей» для скрещивания.

Метод Eliminate осуществляет удаление особи из популяции методом, описанным в Главе 2, стр. 18-19.

Классы BinaryPopulation и RealPopulation переопределяют некоторые особенности класса Population.

Вершиной этого небольшого «айсберга» является класс GeneticAlgoryth. Основная переменная этого класса - популяция population (объект класса Population).

Выполнение ГА осуществляет простой метод Run:

public void Run()

{= 0; // номер текущего шага

double ffSum;

{ ffSum = population.FitnessFunctionSum;();++;

}(!Stop(curStep, ffSum));

}

Здесь хорошо видно, что это циклический алгоритм, на каждом шаге которого выполняется основное действие - вызов метода RunStep - один шаг ГА. Наличие такого метода упрощает выполнение клиентского приложения в пошаговом режиме.

Условие завершения (предикат Stop) учитывает 2 аспекта - исчерпание шагов эволюции и достижение требуемой точности.

Метод RunStep является центральным, поэтому приведен здесь полностью:

public void RunStep()

{

//Подготовка и выполнение кроссовера

IChromosome parent1, parent2, child;= population.GetParent();= population.GetParent();= parent1.CrossOver(parent2);(new GACrossoverEventArgs(parent1, parent2, child));

//Выполнение мутации=child.Mutate(pMutation);(new GAMutationEventArgs(child));

//Выполнение инверсии=child.Inversion(pInversion);(new GAInversionEventArgs(child));

//добавление новой и удаление старой особи

population.Add(child);.Eliminate();

}

Заметим, что в класс GeneticAlgoryth включена поддержка механизма событий:

определены события, соответствующие выполнению генетических операций:

public event GACrossoverHandler GACrossoverEvent;event GAMutationHandler GAMutationEvent;event GAInversionHandler GAInversionEvent;

- определены методы для корректного вызова событий:

public void OnGACrossover(GACrossoverEventArgs ea) { . . .}void OnGAMutation(GAMutationEventArgs ea) { . . .}void OnGAInversion(GAInversionEventArgs ea) { . . .}

- в коде метода RunStep видно, как эти события вызываются.

Эти средства сделали удобной реализацию демонстрации хода ГА в клиентском приложении.

Страницы: 1 2 

 Меню сайта

  • Главная
  • Подбор торгового персонала
  • Портрет современного менеджера
  • Преодоление стрессов на работе
  • Применение SWOT-анализа
  • Принципы организации
  • Маркетинг: заметки, статьи, материалы

 Производительность труда сотрудника

В условиях рыночной экономики возрастает значение различных факторов, которые воздействуют на эффективность производства, так как в силу возрождающейся конкуренции результативность деятельности становится решающей предпосылкой существования и развития предприятий. ...

 Процесс коммуникации в организации

Управленческая деятельность связана с необходимостью постоянной координации деятельности подразделений организации и отдельных ее членов для достижения общих целей. Данная координация может осуществляться посредством разнообразных форм, а, прежде всего в процессе коммуникации. ...


Вверх

Copyright © 2013 - Все права принадлежат - www.markadvice.ru