КАТЕГОРИИ: Архитектура-(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) |
Примеры оптимизации функции с помощью программы FlexTool
Применение генетического алгоритма для оптимизации различных функций будем иллюстрировать примерами, реализованными на IBM PC совместимом компьютере с использованием программы FlexTool [48]. Программа FlexTool позволяет выбирать различные варианты генетического алгоритма - такие, как классический (regular), с частичной заменой популяции (steady-state) или микроалгоритм (micro). Помимо того, предоставляется возможность выбрать метод селекции (рулетка, турнирный или ранговый), а также количество точек скрещивания и способ кодирования (двоичное или логарифмическое). В данном случае под двоичным кодированием понимается способ, применявшийся в примерах 4.1, 4.5 и 4.6, а логарифмическое кодирование было представлено в п. 4.8.4. Программа FlexTool также позволяет одновременно оптимизировать несколько функций и содержит алго- ритм создания ниш для нахождения более чем одного оптимума (помимо единственного глобального решения). FlexTool взаимодействует с программой MATLAB и запускается в ее окне. Для определения оптимизируемых функций используются файлы с расширением.т (так называемые гл-файлы), служащие для записи математических функций в программе MATLAB. В рабочем окне MATLAB'a также можно считывать значения различных переменных, используемых программой FlexTool, что дает, в частности, возможность просмотра популяций хромосом. Программа FlexTool требует от пользователя ввести размерность популяций, вероятности скрещивания и мутации, интервалы изменения параметров задачи (пространства поиска), а также условия останова алгоритма. Предоставляется возможность прервать выполнение алгоритма в произвольный момент времени с последующим возобновлением его работы с точки прерывания (так называемый warm-start) либо с начальной точки (cold-start) Рассмотрим примеры оптимизации функции одной, двух и нескольких переменных. В качестве иллюстраций берутся графики большинства оптимизируемых функций (полученные средствами программы MATLAB) и сформированные программой FlexTool графики функций приспособленности для конкретных итераций генетического алгоритма. Пример 4.12 демонстрирует способ решения задачи, рассмотренной в примере 4.5, но при использовании генетического алгоритма, реализованного в программе FlexTool Для такой простой задачи лучше всего подходит генетический микроалгоритм, представленный в п. 4.8.8. В отличие от примера 4.5, в примере 4.12 ищется минимум функции, заданной формулой (4.1). Пример 4.12 С помощью генетического микроалгоритма программы FlexTool найти минимум функции, заданной формулой (4.1), т.е. f(x) = 2х2 + 1 для целых значений х в интервале от 0 до 31. Генетический микроалгоритм программы FlexTool выполняется на популяции с размерностью, равной пяти. Селекция производится детерминированным турнирным методом с применением элитарной стратегии, благодаря которой лучшая хромосома текущей популяции всегда переходит в следующее поколение. Производится одноточечное скрещивание. Вероятность скрещивания принимается равной 1, а вероятность мутации - равной 0. Длина хромосом равна пяти, что очевидно следует из возможности кодирования 32 целых чисел (для указанного интервала изменения переменной х) пятью битами двоичной последовательности. В программе FlexTool применяется двоичное кодирование, аналогичное представленному в примерах 4.1 и 4.5, однако для удобства программной реализации используется обратный код, т.е. на первой по- Глава 4. Генетические алгоритмы и функции с помощью программы FlexTool
зиции находится наименее значащий бит, а на последней - наиболее значащий. Такой способ записи прямо противоположен повсеместно распространенной форме записи двоичных чисел. Существенным элементом выполнения генетического микроалгоритма считается процедура «рестарта», т.е. запуска его с начальной точки при обнаружении сходимости (п. 4.8.8). В программе FlexTool рестарт производится периодически после выполнения установленного количества итераций. По умолчанию оно равно 7, примеры выполнялись именно при этом значении. Исходная популяция - на первой итерации генетического микроалгоритма - состоит из следующих хромосом: [01100] [11000] [01111] [10101] [11001] со значениями фенотипов 6 3 30 21 19, которые являются действительными целыми числами из интервала от 0 до 31. Наименьшее значение функции приспособленности в этой популяции имеет стоящая на втором месте хромосома с фенотипом, равным трем. Оно равно 19. Наибольшее значение функции приспособленности у стоящей на третьем месте хромосомы с фенотипом, равным 30, составляет 1801. Легко подсчитать, что среднее значение функции приспособленности будет равно 699,8. Популяция, полученная в результате селекции и скрещивания, становится текущей для следующей (второй) итерации. Она характеризуется средним значением функции приспособленности, равным 173,8. Заметно, что это значение меньше, чем рассчитанное для первого поколения. Наибольшее значение функции приспособленности, равное 723, имеет хромосома с фенотипом 19. Это наихудшая особь данной популяции. «Наилучшая к текущему моменту» хромосома с фенотипом, равным двум, имеет минимальное значение функции приспособленности, которое равно девяти. В третьем поколении среднее значение функции приспособленности уменьшается до 13. Наибольшее значение для хромосомы с фенотипом, равным трем, составляет 19, а наименьшее значение функции приспособленности для этой популяции, также, как и для предыдущей, равно девяти. «Наилучшей к текущему моменту» продолжает оставаться хромосома с фенотипом, равным двум В следующих четырех поколениях (от четвертого до седьмого) среднее значение функции приспособленности по популяции совпадает с наибольшим и наименьшим значениями, равными девяти. Это означает, что популяция состоит из одинаковых хромосом с фенотипами, равными двум. Следовательно, наблюдается сходимость к решению, которое не является оптимальным. До этого момента алгоритм выполнялся аналогично классическому генетическому алгоритму, причем селекция проводилась детерминированным турнирным методом с сохранением наилучшей хромосомы из популяции (элитарная стратегия). После семи итераций начинается новый цикл выполнения генетического микроалгоритма. Производится его «рестарт», т.е. повторный запуск алгоритма с начальной точки - случайного выбора четырех новых хромосом для включения в популяцию. Из особей предыдущего поколения сохраняется только одна - «наилучшая к текущему моменту» хромосома с фенотипом, равным двум. После селекции и скрещивания в очередном (девятом) поколении получаем популяцию со средним значением функции приспособленности, равным 481,4. Наибольшее значение функции приспособленности, равное 1579, имеет хромосома с фенотипом 28, а наименьшее значение, равное девяти, - с фенотипом, равным двум. На следующих пяти итерациях второго цикла генетического микроалгоритма мы вновь получаем популяцию, состоящую из одинаковых хромосом с фенотипом, равным двум, для которых среднее, наибольшее и наименьшее значения функции приспособленности равны девяти. Следовательно, опять наблюдается сходимость к решению, которое не является оптимальным С пятнадцатого поколения начинается очередной (третий) цикл выполнения генетического микроалгоритма. Он также открывается случайным выбором четырех новых хромосом и формированием популяции с сохранением «наилучшей к текущему моменту» особи с фенотипом, равным двум. На девятнадцатой итерации генетического микроалгоритма, т.е. в пятом поколении третьего цикла (состоящего из семи итераций) возникает сходимость к оптимальному решению, которым оказывается хромосома с фенотипом, равным 0. Среднее, наибольшее и наименьшее значения функции приспособленности по всей популяции с 19 по 21 поколение остается равным 1. Далее выполняются очередные циклы по семь итераций, начинающиеся «рестартом» алгоритма, и в каждом из них наблюдается сходимость к оптимальному решению, т.е. к хромосоме с фенотипом, равным 0. Конечно, задачу из примера 4.12 можно решить с применением генетического алгоритма с произвольной размерностью популяций, при задании пользователем значений вероятностей скрещивания и мутации, а также при выборе им одного из методов селекции (рулетки, турнирного или рангового). Таким образом, вместо микроалгоритма можно применить реализованный в программе FlexTool обычный генетический алгоритм (regular). Однако необходимо отметить, что при его использовании на популяциях малой размерности с вероятностями скрещивания и мутации, соответственно равными 1 и 0, а также при выполнении селекции методом рулетки (так, как в примере 4.5) весьма часто встает проблема преждевременной сходимости этого алгоритма. Результат значительно улучшается, если вероятность мутации отличается от нуля (например, если она принимается равной 0,1). Несмотря на то, что мутация играет определенно второстепенную роль по отношению к скрещиванию, она оказывается необходимой, поскольку обеспечивает разнообразие хромосом в популяции.
Следует еще раз подчеркнуть, что при выполнении генетического микроалгоритма разнообразие в популяции достигается благодаря процедуре рестарта алгоритма в случае обнаружения его сходимости В этом случае мутация оказывается излишней. Следующий пример относится к задаче, похожей на задачу примера 4.12. Минимизируется та же функция, однако переменная х принимает действительные значения из интервала [-5, 5]. По этой причине пространство поиска оказывается большим, чем в примере 4.12. Для решения данной задачи применим обычный генетический алгоритм программы FlexTool и селекцию методом рулетки. Заметим, что этот метод, который пригоден и для селекции в случае максимизации функции, в программе FlexTool может использоваться только для задач минимизации. Это обусловлено адаптацией программы к требованиям пользователей, которые чаще решают задачи минимизации (например, погрешностей, затрат и т.п.), чем задачи максимизации. Пример 4.13 С помощью генетического алгоритма программы FlexTool найти минимум функции, заданной формулой (4.1) для х е [-5, 5] с точностью до 0,1. Поставленная задача решается путем использования обычного генетического алгоритма (regular) с селекцией методом рулетки. Заметим, что поиск проводится в пространстве, состоящем из 100 возможных решений. Длина хромосом (в соответствии с формулой 4.4)) должна быть равной семи. Пусть размерность популяции составляет 11 особей. Будем применять одноточечное скрещивание с вероятностью 0,9, а вероятность мутации установим равной 0,1. | 4.9. Примеры оптимизации функции с помощью программы FlexTool 175 Исходная популяция состоит из 11 хромосом длиной семь битов, соответствующих следующим фенотипам: 3,4 2,4 2,0 5,0 1.4 0.1 3,0 -2,3 2,3 5,0 -4,8 Наилучшее решение, т.е. хромосома с фенотипом, равным 0, для которой значение функции приспособленности составляет 1, получено на седьмой итерации алгоритма. На первой итерации наибольшее значение функции приспособленности по всей популяции равно 51, среднее - 22,0745, а наименьшее - 1,02. Однако в седьмом поколении наибольшее значение функции приспособленности равно 45,18, среднее по популяции составляет 5,9909, а наименьшее значение соответствует лучшей хромосоме и равно 1. График на рис. 4.18 показывает наименьшее значение функции приспособленности в популяции на последовательных итерациях генетического алгоритма. Аналогично можно применять генетический алгоритм для нахождения решения с еще большей точностью, например, для двух или трех знаков после запятой. При этом будет соответственно расширяться пространство поиска и увеличиваться длина хромосом. Следующий пример относится к задаче нахождения максимума функции, имеющей локальные максимумы. Покажем, что генетический алгоритм находит глобальный оптимум. Для поиска максимума будем применять реализованный в программе FlexTool турнирный метод, поскольку метод колеса рулетки в ней работает только для задач минимизации. В программе FlexTool по умолчанию приняты следующие (наилучшие для большинства решаемых задач) значения параметров генетического алгоритма: - размерность популяции = 77, - вероятность скрещивания = 0,77, - вероятность мутации = 0,0077. В приводимых далее примерах используются указанные вероятности скрещивания и мутации, однако размерность популяций будет выбираться в зависимости от размерности решаемых задач. Пример 4.14 С помощью генетического алгоритма программы FlexTool найти минимум функции, заданной формулой
(х - 0.3)2 + 0,01""" (х - 0,9)2 + 0,04 для х е [-1, 2] с точностью до 0,01. График оптимизируемой функции представлен на рис. 4.19. Обратим внимание на то, что функция имеет не только глобальный максимум, но и локальные оптимумы. Для нахождения глобального максимума применяется генетический алгоритм с турнирной селекцией в подгруппах по две особи. Размерность популяции равна 21; вероятности скрещивания и мутации составляют, соответственно 0,77 и 0,0077; используется одна точка скрещивания.
алгоритмы Хромосомы состоят из девяти генов со значениями 0 или 1. На рисунке 4.20 более светлой линией показана динамика изменения «наилучшего», в рассматриваемом случае - максимального значения функции приспособленности в популяции при увеличении количества поколений. Более темная линия на втором графике иллюстрирует изменение «наихудшего» значения функции приспособленности в популяции при последовательной смене поколений. На оси ординат обоих графиков указаны значения функции приспособленности (fitness value). На оси абсцисс второго графика указаны номера поколений, которые соответствуют числам на оси абсцисс первого графика, умноженным на размерность популяции, т.е. на 21. Из графиков видно, что «наилучшая» хромосома в первом и втором поколениях характеризуется значением функции приспособленности, близким к 20. В то же время значение функции приспособленности «наихудшей» хромосомы примерно равно -5. В четвертом поколении это значение приблизилось к -4, а значение функции приспособленности «наилучшей» хромосомы возросло до 70. В нижней правой части рис. 4.20 показаны значения параметра задачи, т.е. переменной х со значениями в интервале от -1 до 2; другими словами, это фенотипы, соответствующие отдельным хромосомам рассматриваемой популяции. Заметно, что популяция характеризуется значительным разнообразием. На рис. 4.21 популяция более однородна, а на рис. 4.22 зафиксировано только одно значение параметра, равное 0,3; это означает, что все хромосомы в популяции равны между собой. В рассматриваемом примере мы имеем дело только с одним параметром задачи Р1, который совпадает с Р2, поэтому все точки располагаются вдоль прямой так, как это показано на рис. 4.20 и 4.21 Графики на рис. 4.21 демонстрируют увеличение «наилучшего» значения функции приспособленности от около 47 в третьем поколении до примерно 70 в четвертом и примерно 93 - в пятом поколении, а в седьмом поколении достигается значение, равное 96,5. Это максимальная величина, которая остается неизменной в следующих поколениях, что видно на рис. 4.22. Таким образом, на седьмой итерации алгоритма найдено «наилучшее» решение - хромосома со значением фенотипа, равным 0,3, для которого значение функции приспособленности составляет 96,5. Нижние графики на рис. 4.21 и 4.22 также показывают, как изменяется «наихудшее» значение функции приспособленности от 3 до 16 поколения. В шестнадцатом поколении это значение равно 92,81. Среднее значение функции приспособленности в популяциях очередных поколений изменяется от 2,24 на первой итерации алгоритма до 96,32 на шестнадцатой итерации, что показывает таблица 4.4.
Дата добавления: 2015-06-04; Просмотров: 642; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |