Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом Voldem@r / Оно / ПЗ_release.doc
Скачиваний:
49
Добавлен:
16.04.2013
Размер:
1.6 Mб
Скачать

1. Специальный раздел

1.1. Исследовательская часть

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

1.1.1. Обзор существующих программ для оптимизации

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

Разнообразие областей, в которых требуется оптимизация и для которых существуют программные комплексы, огромно. Вот некоторые из них: оптимальный раскрой круглого леса (брёвен), оптимизация грузоперевозок, оптимальный рацион для домашних животных, наилучший раскрой стёкол, оптимизация сложных трубопроводных систем. Наряду с простыми программами есть и сложные комплексы. Например, программный комплекс логистического проектирования. Но повторюсь: все они пригодны только для какой-то одной предметной области.

Из всех программных комплексов для оптимизации систем хотелось бы выделить расчётный программный комплекс «Оптимизация». Данный комплекс применим для решения оптимизационных задач в различных областях. Однако его универсальность заключается в применении целенаправленных адаптивных поисковых алгоритмов, т.е. разных алгоритмов оптимизации для разных областей. Т.е. комплекс перестаёт работать, если применять его для оптимизации в тех областях, о которых ему ничего не известно. «Оптимизация» обладает расширяемостью, но новые модули поставляет разработчик продукта. Может оказаться так, что время, необходимое на поставку нового модуля, существенно превышает критичное для принятия решения.

Будет несправедливо не отметить такой программный продукт, как Microsoft Excel из пакета Microsoft Office. В Excel предусмотрен оптимизационный блок. Чтобы настроить его на любую проектную или научно-исследовательскую задачу необходимо ввести в лист Excel формулы и исходные данные, затем выбрать из меню «Сервис» пункт «Поиск решения». Можно установить режим оптимизации (минимизация или максимизация целевой функции), задать граничные условия. После окончания расчётов программа выдает значение аргументов, соответствующих оптимальному решению. Этот процесс занимает несколько минут без учета времени на ввод исходных данных и расчетных формул. Если данная оптимизационная задача не имеет решения, то выдается соответствующее сообщение. Аналогично реализуется поиск значений исходных данных, соответствующих заданному значению функции. Наряду с таким большим плюсом есть один недостаток. Excel является весьма многофункциональным табличным процессором. Т.е. блок оптимизации составляет лишь небольшую часть от всех возможностей программы. Получается, что использование Excel, как оптимизационного комплекса, крайне неэффективно с точки зрения материальных затрат.

Исходя из вышеперечисленного, было принято решение создать программный комплекс, решающий задачи оптимизации и отличающийся универсальностью. Хотелось создать такую программу, которую можно применять в как можно большем количестве областей. Конечно, универсальность приносит вместе с выгодой и некоторые ухудшения. Например, снижается скорость поиска решения или уменьшается точность полученного ответа. Однако зачастую очень большая точность не требуется. Время поиска тоже не всегда критично, тем более, если разница составляет всего несколько минут.

Генетические алгоритмы

Из большого количества оптимизационных алгоритмов наибольшей интерес представляют генетические алгоритмы (семейство однородных алгоритмов с небольшими модификациями).

Рис 1.1 Сравнительная эффективность алгоритмов оптимизации

На рисунке 1.1 показана сравнительная эффективность различных алгоритмов оптимизации [13]. Здесь под эффективностью понимается совокупность таких характеристик, как время работы алгоритма до получения желаемой точности и требуемый объём памяти. Видно, что генетические алгоритмы значительно превосходят другие алгоритмы по эффективности и немного уступают лишь на ограниченном множестве типов проблем. Это показывает универсальность ГА, что делает применение их в разработанном мною комплексе оправданным.

Преимущества генетических алгоритмов [13]:

  • не требуют никакой дополнительной информации о поверхности ответа;

  • разрывы, существующие на поверхности ответа, незначительно влияют на эффективность оптимизации;

  • устойчивы к попаданию в локальные оптимумы;

  • хорошо работают при решении задач многоцелевой оптимизации;

  • могут быть использованы для широкого класса задач;

  • просты и прозрачны в реализации.

Как я уже упоминал, универсальность приносит с собой и некоторые недостатки. Так что стоит обратить внимание и на некоторые отрицательные стороны использования ГА. Не желательно и проблематично использовать ГА в случае, когда необходимо найти точный глобальный оптимум. Кроме того, время исполнения функции оценки всё же велико по сравнению со специализированными методами.

Общая структура алгоритмов

В основе генетического алгоритма лежит метод случайного поиска. Основным недостатком случайного поиска является то, что заранее неизвестно, сколько понадобится времени для решения задачи. Для того, чтобы избежать больших затрат времени при решении задачи, применяются методы, проявившиеся в биологии. При этом используются методы, открытые при изучении эволюции и происхождения видов. Как известно, в процессе эволюции выживают наиболее приспособленные особи. Это приводит к тому, что приспособленность популяции возрастает, позволяя ей лучше выживать в изменяющихся условиях.

Выделяют три особенности алгоритма эволюции [16]:

  1. каждая новая популяция состоит только из “жизнеспособных” хромосом;

  2. каждая новая популяция “лучше” (в смысле целевой функции) предыдущей;

  3. в процессе эволюции последующая популяция зависит только от предыдущей.

Законы эволюции отбирают все ценное и пригодное для эволюции и отметают в сторону, как непригодное, все отсталое. Они не знают сострадания и производят оценку каждого лишь по степени пригодности или непригодности его для дальнейшего развития.

Впервые подобный алгоритм был предложен в 1975 году Джоном Холландом (John Holland) в Мичиганском университете. Он получил название «репродуктивный план Холланда» и лег в основу практически всех вариантов генетических алгоритмов [15].

Из биологии известно, что любой организм может быть представлен своим фенотипом, который фактически определяет, чем является объект в реальном мире, и генотипом, который содержит всю информацию об объекте на уровне хромосомного набора. При этом каждый ген, то есть элемент информации генотипа, имеет свое отражение в фенотипе. Применительно к оптимизации функции приспособленности (т.е. к нахождению её максимума или минимума) ген – это переменные, от которых зависит функция. Таким образом, для решения задач необходимо представить каждый признак объекта в форме, подходящей для использования в генетическом алгоритме. Все дальнейшее функционирование механизмов генетического алгоритма производится на уровне генотипа, позволяя обойтись без информации о внутренней структуре объекта, что и обуславливает его широкое применение в самых разных задачах.

В наиболее часто встречающейся разновидности генетического алгоритма для представления генотипа объекта применяются битовые строки. При этом каждому атрибуту объекта в фенотипе соответствует один ген в генотипе объекта. Ген представляет собой битовую строку, чаще всего фиксированной длины, которая представляет собой значение этого признака. Чтобы определить фенотип объекта (то есть значения признаков, описывающих объект) достаточно знать только значения генов, соответствующим этим признакам, то есть генотип объекта. Совокупность генов, описывающих генотип объекта, представляет собой хромосому. В некоторых реализациях ее также называют особью. Таким образом, в самой распространённой реализации генетического алгоритма хромосома представляет собой битовую строку фиксированной длины. При этом каждому участку строки соответствует ген. Длина генов внутри хромосомы может быть одинаковой или различной. Чаще всего применяют гены одинаковой длины.

Генетические алгоритмы работают с популяцией, состоящей из некоторого количества особей, заданных совокупностью генов. Популяция оценивается, то есть оценивается каждая особь при помощи оценивающей функции, значение которой - приспособленность. Чем выше приспособленность, тем лучше особь. Особи "скрещиваются" между собой с помощью генетических операторов, часть потомков заменяют представителей более старого поколения в соответствии со стратегией отбора. Выбор особей для скрещивания проводится согласно селективной стратегии. Заново сформированная популяция снова оценивается, затем выбираются наиболее достойные для скрещивания особи, которые скрещиваются, получаются потомки, занимают место старых особей и т.д.

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

С помощью генетических операторов реализуется механизм наследственности и изменчивости воображаемых особей. Существует два основных генетических оператора [14]:

  1. оператор скрещивания (кроссинговер или кроссовер)

С помощью этого оператора происходит комбинирование генетической информации родителей и передача ее потомкам. Из популяции выбираются две особи, которые будут родителями. У обоих родителей есть свои хромосомы. Определенным образом (обычно случайным) выбирается точка кроссовера, в которой хромосомы делятся на 2 части и обмениваются ими, как показано на рисунке:

Рис. 1.2 Принцип работы оператора скрещивания

Потомок определяется как конкатенация части первого и второго родителя. В результате получается две хромосомы, но в качестве потомка выбирается только одна из них с вероятностью 0,5.

  1. оператор мутации

Мутация в генетических алгоритмах имеет полную аналогию в природе, когда происходит замена одного гена другим в ДНК под воздействием, например, радиоактивности. Считается, что мутация - это причина скачкообразности эволюции, и благодаря ей появляются новые виды. В генетических алгоритмах мутация предназначена для того, чтобы поддерживать разнообразие особей в популяции. Если рассматривать этот оператор с точки зрения математики, то можно утверждать, что он обеспечивает предотвращение преждевременной сходимости или нахождение локального максимума или минимума. Реализуется она путем выбора случайного гена или группы генов и их изменения по определенным правилам (например, инверсия).

Схема функционирования генетического алгоритма [14]

  1. В начальный момент времени t = 0 случайным образом сформировать начальную популяцию, состоящую из k особей. B0 = {A1,A2,…,Ak}

  2. Вычислить приспособленность каждой особи FAi = fit(Ai) , i=1…k и популяции в целом Ft = fit(Bt) (также иногда называемую термином фиттнес). Значение этой функции определяет насколько хорошо подходит особь, описанная данной хромосомой, для решения задачи.

  3. Выбрать особь Ac из популяции. Ac = Get(Bt)

  4. С определенной вероятностью (вероятностью кроссовера Pc) выбрать вторую особь из популяции Аc1 = Get(Bt) и произвести оператор кроссовера Ac = Crossing(Ac,Ac1).

  5. С определенной вероятностью (вероятностью мутации Pm) выполнить оператор мутации. Ac = mutation(Ac).

  6. Поместить полученную хромосому в новую популяцию insert(Bt+1,Ac).

  7. Выполнить операции, начиная с пункта 3, k раз.

  8. Увеличить номер текущей эпохи t = t + 1.

  9. Если выполнилось условие останова, то завершить работу, иначе переход на шаг 2.

Рис. 1.3 Схема работы ГА

Различные модификации генетических алгоритмов

Существует множество модификаций базового ГА, описанного в предыдущем параграфе. Все эти модификации служат для разных специфических целей. Например, для увеличения скорости сходимости, или, наоборот, для предотвращения преждевременной.

В предыдущем параграфе был рассмотрен кроссовер – один из основных операторов ГА. Такой тип кроссовера называется одноточечным. Наряду с ним существует еще 2-точечный и N-точечный кроссовер. В этом случае хромосома разбивается не на 2 части, а на N+1. Хромосома потомков формируется из частей хромосом родителей следующим образом: сначала идёт первая часть хромосомы первого родителя, потом вторая часть хромосомы второго, затем третья часть хромосомы первого и т.д. Для второго потомка родители меняются местами (см. Рис 1.4).

x1

x2

y3

y4

y5

x6

x7

y8

y9

y1

y2

x3

x4

x5

y6

y7

x8

x9

Рис. 1.4 Пример четырёхточечного кроссовера

В принципе для функционирования генетического алгоритма достаточно двух основных генетических операторов, но на практике применяют еще и некоторые дополнительные операторы или модификации этих двух операторов [12]. Кроме рассмотренных выше операторов ГА используется еще и так называемый оператор инверсии, который заключается в том, что хромосома делится на две части, и затем они меняются местами. Схематически это можно представить следующим образом:

x1

x2

x2

x1

Рис. 1.5 Действие оператора инверсии

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

  1. Стратегии отбора При естественном отборе в природе выживают наиболее приспособленные особи. Так и в генетических алгоритмах необходимо выбирать самых приспособленных для скрещивания. Наиболее распространенные стратегии отбора: пропорциональный отбор, турнирный отбор, рулеточный отбор и др. [16].

  • турнирный отбор. Реализует отбор N случайных особей популяции. Обычно для этого N раз случайно выбирается позиция в популяции и каждый раз особь, соответствующая выбранной позиции, копируется в буфер. При этом одна и та же особь вне зависимости от её пригодности имеет шанс быть отобранной несколько раз.

  • рулеточный отбор. Реализует отбор N особей, причем вероятность отбора каждой конкретной особи пропорциональна её приспособленности. Лучшая метафора этой стратегии - рулетка. Пусть каждой особи популяции соответствует свой сектор рулетки. Размер сектора пропорционален приспособленности особи (для определения размера сектора в отрезке 0-1 можно воспользоваться нормализацией приспособленностей особей популяции). Теперь, необходимо лишь N раз “раскрутить рулетку” и посмотреть где остановится “шарик”.

  • пропорциональный отбор. Фактически, это более строгий вариант "рулетки". В последней, связь числа вхождений конкретной особи во множество отобранных для репродукции особей с приспособленностью этой особи реализовалась через вероятность отбора. В пропорциональном отборе вероятностное звено исключается. Здесь число вхождений особи непосредственно пропорционально приспособленности особи. При данном виде отбора сначала подсчитывается приспособленность каждой особи fi. После этого находят среднюю приспособленность в популяции fср как среднее арифметическое значений приспособленности всех особей. Затем для каждой особи вычисляется отношение fi/fср. Если это отношение больше 1, то особь считается хорошо приспособленной и допускается к скрещиванию, в противном случае особь, скорее всего, останется "за бортом". Например, если дробь равна 2.36, то данная особь имеет двойной шанс на скрещивание и будет иметь вероятность, равную 0.36 третьего скрещивания. Если же приспособленность равна 0.54, то особь примет участие в единственном скрещивании с вероятностью 0.54.

  • отбор усечением. Данная стратегия использует отсортированную по возрастанию популяцию. Число особей для скрещивания выбирается в соответствии с порогом TО[0; 1]. Порог определяет, какая доля особей, начиная с самой первой (т.е. самой приспособленной) будет принимать участие в отборе. В принципе, порог можно задать и числом больше 1, тогда он будет просто равен числу особей из текущей популяции, допущенных к отбору. Среди особей, попавших "под порог" случайным образом N раз выбирается самая везучая и записывается в промежуточный массив, из которого затем выбираются особи непосредственно для скрещивания. Из-за того, что в этой стратегии используется отсортированная популяция, время её работы может быть большим для популяций большого размера и зависеть также от алгоритма сортировки.

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

  2. Принцип элитизма Принцип элитизма заключается в том, что лучшие особи в популяции всегда включаются в следующее поколения. Таких особей может быть несколько, а может быть и одна. Использование "элитизма" позволяет не потерять хорошее промежуточное решение, но, в то же время, из-за этого алгоритм может "застрять" в локальном экстремуме.

  3. Размер популяции Следует выбирать размер популяции не слишком маленьким (до 10 особей) и не слишком большим (свыше 1000 особей). Малый размер популяции способствует вырождению, а большой - неоправданно увеличивает количество вычислений в алгоритме. Размер обычно выбирают 20-300 особей, все зависит от решаемой алгоритмом задачи.

Соседние файлы в папке Оно