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

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

Страница 1

Классы, имеющие отношение к реализации ГА в основном сосредоточены в пространстве имен GeneticClasses, схематически показанном на диаграмме классов (Рис.2.2.).

Рис.2.2. Диаграмма классов пространства имен GeneticClasses

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

public interface IChromosome

{FitnessFunctionValue{get;set;}CrossOver(IChromosome chr);Mutate(double p); // p - вероятность мутацииInversion(double p); // p - вероятность инверсии

}

Вполне очевидны элементы этого интерфейса, соответствующие основным терминам ГА.

Класс BinChromosome (реализует интерфейс IChromosome) реализует «классическую» хромосому, использующую бинарное кодирование фенотипа. Закрытыми переменными этого класса являются:

protected double fitnesFunctionValue;bool[] allels;PhenoGeno phenoGeno;double[] phenoAtributes;

Следует отметить подход к определению значения функции приспособленности (переменная fitnesFunctionValue). Исходя из теории ГА - это «внешняя» по отношению к ГА функция из «реального мира». Для обеспечения высокого уровня универсальности можно было бы передавать в класс BinChromosome переменную функционального типа (делегат в C#). Однако это привело бы к некоторым потенциальным проблемам: избыточность вычислений и сложность в определении универсальной сигнатуры такой функции.

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

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

Переменная alleles представляет бинарный массив - генотип хромосомы.

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

Это объект класса PhenoGeno, который содержит в себе массив объектов PhenoGenoTriada. Каждый такой объект содержит диапазон и точность кодировании (переменные a, b, и resolution). Используя эти данные и входной параметр-фенотип X метод Pheno2Geno осуществляет его преобразование во фрагмент генотипа - бинарныймассив. Метод Geno2Pheno осуществляет обратное преобразование.

Класс Geno2Pheno реализует стандартные генетические операторы кроссовера, мутации и инверсии.

Класс BinChromosome реализует интерфейс IChromosome для поддержки хромосом с вещественным кодированием. Переменные этого класса:

private string id; //идентификатор хромосомыdouble fitnessFunctionValue;double[] phenoAttributes;double from;double to;double alpha; //параметр BLX-кросовера

Для удобства наблюдения за ходом ГА в клиентских приложениях, в классе BinChromosome присутствует текстовый идентификатор id хромосомы, который закрытая функция MakeID генерирует как строку с высокой вероятностью уникальности.

Массив phenoAttributes соответствует фенотипу особи.

Переменные from и to определяют диапазон изменения всех параметров фенотипа. Вместо индивидуального определения диапазона для каждого параметра, общий диапазон используется, во-первых, для простоты, а во-вторых, поскольку элементы фенотипа будут соответствовать индивидуальным весам сети, для которых диапазон изменения значений не различим.

Переменная alpha - это коэффициент, характеризующий реализацию кроссовера для РГА.

Генетические операторы реализованы в классе BinChromosome следующим образом (см. Глава 2, стр.20-21)

кроссовер - BLX-a кроссовер;

мутация - случайная мутация Михалевича

Для обслуживания ГА удобно определить служебный класс Population, реализующий полезные функции популяции в целом. Здесь важно отметить 2 факта:

класс содержит множество особей в отсортированном в порядке возрастания функции приспособленности списке species;

класс поддерживает переменную fitnessSum, которая хранит суммарное значение функций приспособленностей особей.

Соответственно этому метод Add добавления особи в популяцию сохраняет отсортированное состояние списка species и актуальное значение переменной fitnessSum.

Страницы: 1 2

 Меню сайта

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

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

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

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

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


Вверх

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