КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Примеры оптимизации функции с помощью программы Evolver
Приложения эволюционных алгоритмов Большинство приложений эволюционных алгоритмов, и особенно генетических алгоритмов, касается оптимизационных задач. Простейшими из них можно назвать задачи, представленные в примерах 4.1 - 4.3, в примерах 4.5 и 4.6, а также просчитанные на компьютере примеры из п. 4.9. В каждом из них оптимизируется целевая функция, заданная конкретной формулой, и используется характерное для основного генетического алгоритма двоичное кодирование хромосом. Как уже упоминалось в п. 4.8.4, последующая модификация классического генетического алгоритма заключалась в представлении хромосом действительными числами. О таком способе кодирования говорилось и в разд. 4.10. Одной из наиболее известных компью- Глава 4. Генетические алгоритмы 4.11. Приложения эволюционных алгоритмов
терных программ, предназначенных для решения задач при помощи генетического алгоритма с кодированием действительными числами (real coding), считается программа Evolver [49] В этой программе применяется алгоритм с частичной заменой популяции (steady-state), при которой в каждый момент времени заменяется только одна особь. Селекция основана на ранговом методе (rank-based). Если говорить о так называемых генетических операторах, то в программе Evolver применяются два различных оператора скрещивания и два различных оператора мутации - отдельно для оптимизационных и для комбинаторных задач. Программа Evolver взаимодействует с табличным процессором Excel, в котором решаемая задача описывается в соответствующих ячейках таблицы путем задания ее параметров (переменных) и формулы функции приспособленности Прежде чем перейти к примерам, дадим характеристику генетическим операторам, используемым программой Evolver в задачах оптимизации функции.
Скрещивание. Это равномерное скрещивание (uniform crossover), определенное аналогично примененному в п. 4.8.3, но для хромосом, состоящих из генов с действительными аллелями. Скрещивание производится в соответствии с так называемым показателем скрещивания (crossover rate), определяющим, какой процент генов потомок унаследует от каждого родителя. В программе Evolver показатель скрещивания вводится пользователем и представляет собой число из интервала от 0,01 до 1,0. Например, значение показателя скрещивания 0,8 означает, что потомок получит около 80 % генов со значениями (аллелями) такими же, как у первого родителя, а оставшееся количество (порядка 20 %) - унаследует от второго родителя. Если показатель скрещивания равен 1, то никакого скрещивания практически не происходит, а образуются только так называемые клоны, т.е. хромосомы, идентичные родителям. По умолчанию в программе Evolver применяется значение показателя скрещивания, равное 0,5, что означает наследование примерно одинакового количества генов от каждого родителя. Мутация. Каждый ген в хромосоме представляет один параметр задачи. Следовательно, аллели соответствуют фенотипам, т.е. значениям конкретных переменных. Для каждого гена случайным образом выбирается число из интервала от 0 до 1, которое сравнивается с так называемым показателем мутации (mutation rate). Если разыгранное число меньше введенного значения показателя или равно ему, то выполняется мутация данного гена. Эта операция заключается в замене значения гена другим, случайно выбранным числом из области допустимых значений параметра, соответствующего мутирующему гену.
Вводимое пользователем значение показателя мутации представляет собой число из интервала от 0,0 до 1,0. Чем больше это значение, тем большее количество генов подвергается мутации. Если показатель мутации равен 1, то мутации подвергаются 100 % генов, выбираемых случайным образом. С учетом того, что в программе Evolver мутация всегда производится после скрещивания, задание показателя мутации равным 1 означает, что в этом случае эффект скрещивания не имеет никакого значения. Очевидно, что если показатель мутации равен 0, то мутация вообще не производится. Как правило, значение показателя мутации задается в пределах от 0,06 до 0,2. Отметим, что определяемый таким образом показатель мутации представляет собой аналог вероятности мутации рт, описанной в разд. 4.4. В то же время используемый в программе Evolver показатель скрещивания имеет смысл, отличающийся от введенной в разд. 4.4 вероятности скрещивания рс. Значения как показателя мутации, так и показателя скрещивания можно изменять в процессе выполнения программы Evolver.
В классическом генетическом алгоритме на каждой итерации обновляется вся популяция, что соответствует формированию очередного поколения. Применительно к программе Evolver можно говорить о последовательных «тактах» (trials) ее выполнения, причем на каждом такте изменяется только одна особь. Если популяция насчитывает N хромосом (особей, которые в описании программы называются организмами), то N таких «тактов» составляют одну итерацию классического генетического алгоритма. Поэтому для того, чтобы при заданном количестве «тактов» выполнения программы Evolver найти соответствующее ему количество поколений (в терминологии классического генетического алгоритма), необходимо значение N разделить на количество особей в популяции. В представляемых далее примерах «такты» будут обозначаться символом f. Пример 4.21 демонстрирует применение программы Evolver для оптимизации функции трех переменных. Пример 4.21 С помощью программы Evolver найти минимум функции f(x1,x2,x3) = x12 + x22 + x32 для целочисленных х-|, х2, х3 в интервале [-5, 5]. Вычисления производились для популяции размерностью N = 6. Использовалось значение показателя скрещивания равное 0,9 Это означает, что в результате скрещивания потомок наследует приблизительно (с округлением до целого) 90 % генов от первого родителя и остальные гены (около 10 %) - от второго родителя. Заметим, что для показателя скрещивания равного 1 будет наблюдаться такой же эффект, что и при отсутствии скрещивания, поскольку потомок будет наследовать все гены только от первого родителя. По этой причине
Глава 4 Генетические алгоритмы при выбранном значении данного показателя, равном 0,9, скрещивание либо не будет проводиться вообще (точнее говоря, потомок окажется абсолютно идентичным своему первому родителю), либо скрещивание будет выполнено, и потомок унаследует большую часть генов от первого родителя. Для мутации выбрана величина показателя мутации равная 0,1, которая указывает, что значения 10 % генов (с округлением до целого) должны подвергнуться случайным изменениям. С помощью программы Evolver сформирована следующая исходная популяция:
5] После шести «тактов», т.е. для f = 6, что соответствует одной итерации классического генетического алгоритма, получена популяция особей, упорядоченных по убыванию функции приспособленности так, как это показано на рис. 4.68. Отметим, что в популяцию не входит особь [4 -3 5] со значением функции приспособленности, равным 50. Она была исключена как «наихудшая» особь (с наибольшим значением функции приспособленности), и на ее место введена копия особи [5 3 -4]. Эта особь также оказывается «наихудшей», поэтому она будет исключена на следующем «такте» (f = 7). Популяции для f = 7 и f = 8 представлены на рис. 4.69 и 4.70. На последнем месте (№ п/п = 6) размещается «наилучшая к данному моменту» особь, имеющая наименьшее значение функции приспособленности. На первом месте (№ п/п = 1) показана вновь введенная в популяцию особь. На рис. 4.69 это копия особи [5 4 2] из предыдущей популяции (f = 6), а на рис. 4.70 - новая особь [0 -4 2], полученная в результате скрещивания с последующей мутацией от пары особей из популяции для f = 7. Выделенное прямоугольником значение функции приспособленности в первой строке таблицы относится к особи, исключаемой из популяции. На рис. 4.71 и 4.72 представлены популяции для t = 17 и t = 18. Заметим, что f = 18 соответствует трем итерациям классического генетического алгоритма. Новая особь в популяции на рис. 4.71 получена скрещиванием пары особей из предыдущей популяции (для f = 16), а новая особь в популяции на рис. 4.72 сформирована в результате мутации среднего гена особи [2 -4 0] из предыдущей популяции (для
На рис. 4.73 показана популяция для f = 41. Обратим внимание, что f = 42 соответствует семи итерациям (поколениям) классического генетического алгоритма. «Наилучшее к данному моменту» решение - это [-1 2 0] со значением функции приспособленности, равным 5. Получение «наилучшего» решения, равного [0 0 0], с нулевым значением функции приспособленности возможно в случае, если при
Рис. 4.70. Популяция особей для t = 8 (пример 4.21).
Рис. 4.73. Популяция особей для t = 41 (пример 4.21).
4.11. Приложения эволюционных алгоритмов дальнейшем выполнении алгоритма произойдет мутация второго гена (замена -3, 3 или 2 на 0). Следующий пример представляет собой обобщение предыдущего примера за счет увеличения количества переменных и расширения пространства поиска.
Дата добавления: 2015-06-04; Просмотров: 449; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |