12.07.2015 Views

Методы построения конечных автоматов на основе ...

Методы построения конечных автоматов на основе ...

Методы построения конечных автоматов на основе ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Санкт-Петербургский <strong>на</strong>цио<strong>на</strong>льный исследовательский университетинформационных технологий, механики и оптикиНа правах рукописиЦарев Федор Николаевич<strong>Методы</strong> <strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong>эволюционных алгоритмовСпециальность 05.13.11 – Математическое и программное обеспечениевычислительных машин, комплексов и компьютерных сетейДиссертация <strong>на</strong> соискание ученой степеникандидата технических <strong>на</strong>укНаучный руководитель:доктор технических <strong>на</strong>ук,профессор А. А. ШалытоСанкт-Петербург – 2012 г.


2ОГЛАВЛЕНИЕВВЕДЕНИЕ ........................................................................................................ 6ГЛАВА 1. АВТОМАТНОЕ ПРОГРАММИРОВАНИЕ ИПОИСКОВАЯ ИНЖЕНЕРИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ .......... 191.1. АВТОМАТНОЕ ПРОГРАММИРОВАНИЕ ..................................................... 191.1.1. Сущности со сложным поведением ............................................ 191.1.2. Парадигма автоматного программирования ............................ 211.1.3. Управляющий конечный автомат ............................................... 261.1.4. Верификация автоматных программ <strong>на</strong> <strong>основе</strong> метода ModelChecking ............................................................................................................... 301.2. ПОИСКОВАЯ ИНЖЕНЕРИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ................... 351.2.1. Основные понятия ......................................................................... 351.2.2. Метод спуска ................................................................................. 371.2.3. Эволюцион<strong>на</strong>я стратегия ............................................................. 391.2.4. Генетические алгоритмы ............................................................. 411.3. ПРИМЕНЕНИЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ ДЛЯ ПОСТРОЕНИЯКОНЕЧНЫХ АВТОМАТОВ ........................................................................................... 431.3.1. <strong>Методы</strong>, использующие моделирование при вычислениифункции приспособленности ............................................................................. 441.3.2. <strong>Методы</strong>, использующие обучающие примеры при вычислениифункции приспособленности ............................................................................. 581.3.3. <strong>Методы</strong>, использующие верификацию при вычислении функцииприспособленности ............................................................................................. 681.3.4. А<strong>на</strong>лиз эволюционных алгоритмов <strong>построения</strong> <strong>автоматов</strong> .... 701.4. ЗАДАЧИ, РЕШАЕМЫЕ В ДИССЕРТАЦИОННОЙ РАБОТЕ............................. 75ВЫВОДЫ ПО ГЛАВЕ 1 ..................................................................................... 76ГЛАВА 2. МЕТОДЫ ПОСТРОЕНИЯ УПРАВЛЯЮЩИХКОНЕЧНЫХ АВТОМАТОВ НА ОСНОВЕ ЭВОЛЮЦИОННЫХАЛГОРИТМОВ ПО ОБУЧАЮЩИМ ПРИМЕРАМ И ТЕМПОРАЛЬНЫМФОРМУЛАМ .............................................................................................................. 77


32.1. МЕТОД ПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХ АВТОМАТОВ ПООБУЧАЮЩИМ ПРИМЕРАМ НА ОСНОВЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ ................ 772.1.1. Входные данные ............................................................................. 772.1.2. Выходные данные........................................................................... 792.1.3. Представление управляющего конечного автомата в видеособи в эволюционных алгоритмах ................................................................... 802.1.4. Алгоритм расстановки выходных воздействий ......................... 812.1.5. Вычисление функции приспособленности ................................... 842.1.6. Операция мутации, использующаяся в методе спуска <strong>на</strong> <strong>основе</strong>случайных мутаций и в генетическом алгоритме .......................................... 852.1.7. Операция удаления дублированных и противоречивыхпереходов ............................................................................................................. 862.1.8. Операция мутации, использующаяся в эволюционнойстратегии ............................................................................................................ 862.1.9. Генетический алгоритм ................................................................ 872.1.10. Операция скрещивания ................................................................ 882.1.11. Совместное использование генетического алгоритма,эволюционной стратегии и метода спуска <strong>на</strong> <strong>основе</strong> случайных мутаций . 892.2. МЕТОД ВЫПОЛНЕНИЯ ОПЕРАЦИИ СКРЕЩИВАНИЯ С УЧЕТОМПОВЕДЕНИЯ АВТОМАТОВ НА ОБУЧАЮЩИХ ПРИМЕРАХ ........................................... 902.3. ЭКСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ МЕТОДОВ ПОСТРОЕНИЯУПРАВЛЯЮЩИХ АВТОМАТОВ ПО ОБУЧАЮЩИМ ПРИМЕРАМ НА ОСНОВЕЭВОЛЮЦИОННЫХ АЛГОРИТМОВ ............................................................................... 912.3.1. Построение автомата управления часами с будильником ...... 912.3.2. Тесты, сгенерированные случайным образом .......................... 1042.4. МЕТОД ПОСТРОЕНИЯ АВТОМАТОВ ПО ОБУЧАЮЩИМ ПРИМЕРАМ ИТЕМПОРАЛЬНЫМ ФОРМУЛАМ НА ОСНОВЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ ИВЕРИФИКАЦИИ ........................................................................................................ 1072.4.1. Входные данные ........................................................................... 1082.4.2. Выходные данные......................................................................... 1082.4.3. Представление конечного автомата в виде хромосомыэволюционного алгоритма ............................................................................... 108


42.4.4. Вычисление функции приспособленности ................................. 1082.4.5. Операции мутации и скрещивания ............................................ 1102.5. ЭКСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ МЕТОДА ПОСТРОЕНИЯАВТОМАТОВ ПО ОБУЧАЮЩИМ ПРИМЕРАМ И ТЕМПОРАЛЬНЫМ ФОРМУЛАМ ........ 110ВЫВОДЫ ПО ГЛАВЕ 2 ................................................................................... 119ГЛАВА 3. ТЕХНОЛОГИЯ И ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВОПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХ АВТОМАТОВ НАОСНОВЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ И ВЕРИФИКАЦИИ ........ 1213.1. ТЕХНОЛОГИЯ ПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХ АВТОМАТОВНА ОСНОВЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ И ВЕРИФИКАЦИИ............................. 1213.2. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО ДЛЯ АВТОМАТИЗИРОВАННОГОПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХ АВТОМАТОВ ....................................... 1243.2.1. Формат входных данных ............................................................ 1243.2.2. Формат выходных данных.......................................................... 1263.2.3. Структура программной реализации ........................................ 127ВЫВОДЫ ПО ГЛАВЕ 3 ................................................................................... 130ГЛАВА 4. ВНЕДРЕНИЕ РЕЗУЛЬТАТОВ РАБОТЫ ............................ 1314.1. ВНЕДРЕНИЕ РАЗРАБОТАННЫХ МЕТОДОВ НА ПРИМЕРЕ ПОСТРОЕНИЯАВТОМАТА УПРАВЛЕНИЯ МОДЕЛЬЮ БЕСПИЛОТНОГО САМОЛЕТА ........................ 1314.1.1. Описание объекта управления ................................................... 1324.1.2. Входные переменные и события ................................................ 1334.1.3. Набор обучающих примеров ....................................................... 1344.1.4. Вычисление функции приспособленности ................................. 1374.1.5. Модифицировнный алгоритм расстановки выходныхвоздействий ....................................................................................................... 1384.1.6. Результаты <strong>построения</strong> автомата ......................................... 1454.2. ВНЕДРЕНИЕ РЕЗУЛЬТАТОВ РАБОТЫ В УЧЕБНЫЙ ПРОЦЕСС ................... 1504.2.1. Виртуаль<strong>на</strong>я лаборатория <strong>на</strong> языке Java ................................. 1514.2.2. Виртуаль<strong>на</strong>я лаборатория <strong>на</strong> языке C# .................................... 1564.2.3. Применение виртуальных лабораторий в учебном процессе.. 161


5ВЫВОДЫ ПО ГЛАВЕ 4 ................................................................................... 162ЗАКЛЮЧЕНИЕ ............................................................................................ 163СПИСОК ИСТОЧНИКОВ ......................................................................... 165ПЕЧАТНЫЕ ИЗДАНИЯ НА РУССКОМ ЯЗЫКЕ.................................................. 165ПЕЧАТНЫЕ ИЗДАНИЯ НА АНГЛИЙСКОМ ЯЗЫКЕ .......................................... 168РЕСУРСЫ СЕТИ ИНТЕРНЕТ ........................................................................... 178ПУБЛИКАЦИИ АВТОРА ................................................................................. 181Статьи в жур<strong>на</strong>лах из перечня ВАК ................................................... 181Другие статьи автора .......................................................................... 182Материалы конференций с участием автора.................................... 182ПРИЛОЖЕНИЕ 1. СВИДЕТЕЛЬСТВА О РЕГИСТРАЦИИПРОГРАММ ДЛЯ ЭВМ ......................................................................................... 186ПРИЛОЖЕНИЕ 2. ПРИМЕР ОТЧЕТА ПО ЛАБОРАТОРНОЙРАБОТЕ ..................................................................................................................... 189


6ВВЕДЕНИЕАктуальность проблемы. В последнее время при разработкепрограммного обеспечения (ПО) для управляющих систем все ширеприменяется автоматное программирование [22, 27] – парадигмапрограммирования, при использовании которой программу предлагаетсястроить как совокупность автоматизированных объектов управления,каждый из которых содержит систему управления (один или нескольковзаимодействующих управляющих <strong>конечных</strong> <strong>автоматов</strong>) и объектуправления.Объект управления характеризуется множеством вычислительныхсостояний, а также двумя <strong>на</strong>борами функций: множествомпредикатов (они же являются входными переменными или входнымивоздействиями автомата), отображающих вычислительное состояние влогическое з<strong>на</strong>чение (исти<strong>на</strong> или ложь), и множеством воздействий,позволяющих изменять вычислительное состояние, которые являютсявыходными воздействиями автомата. Кроме этого, внешняя среда можетгенерировать события, которые поступают <strong>на</strong> вход управляющегоконечного автомата.Управляющий конечный автомат определяется конечныммножеством управляющих состояний, функцией переходов и функциейвыходных воздействий (выходов). Функция переходов зависит от события,<strong>на</strong>бора з<strong>на</strong>чений входных переменных и текущего состояния автомата.З<strong>на</strong>чением этой функции является номер состояния, в которое долженперейти автомат. Функция выходных воздействий в общем случае такжезависит от события, <strong>на</strong>бора з<strong>на</strong>чений входных переменных и текущегосостояния автомата. З<strong>на</strong>чением этой функции является <strong>на</strong>бор выходныхвоздействий <strong>на</strong> объект управления.Главное отличие управляющих <strong>конечных</strong> <strong>автоматов</strong> от других типов<strong>конечных</strong> <strong>автоматов</strong> (<strong>конечных</strong> преобразователей и распоз<strong>на</strong>вателей)


7состоит в том, что в них в пометки переходов входят не отдельныевходные воздействия, а булевы формулы из них. Именно такие автоматы ирассматриваются в <strong>на</strong>стоящей диссертации.Взаимодействие между автоматами может осуществлятьсяразличными способами: за счет вложенности <strong>автоматов</strong>, с помощьюобме<strong>на</strong> сообщениями, с помощью обме<strong>на</strong> номерами состояний и т. д.При использовании автоматного программирования существенноупрощается (по сравнению с программами, <strong>на</strong>писанными традиционнымиметодами) верификация программ с использованием метода Model checking[6, 9, 125, 56], так как построение модели Крипке по автоматнойпрограмме может быть автоматизировано [125]. Кроме этого, прииспользовании инструментальных средств для поддержки автоматногопрограммирования таких, как, <strong>на</strong>пример, UniMod [3], до 70% исходногокода автоматной программы может быть сгенерировано автоматически [27,137]. Уровень автоматизации программирования этого класса программстанет з<strong>на</strong>чительно выше, если удастся автоматизировать процесс<strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong>, что и является предметомисследования в <strong>на</strong>стоящей работе.В последнее десятилетие активно развивается область исследований,<strong>на</strong>зываемая поисковая инженерия ПО (Search-Based Software Engineering,SBSE) [45, 69 – 71], в рамках которой для решения задач программнойинженерии (включая а<strong>на</strong>лиз требований [37, 121], прогнозирование ходаразработки [30], проектирование [110], тестирование [34, 67, 93] ирефакторинг [68, 106]) предлагается применять алгоритмы поисковойоптимизации. В число методов, которые <strong>на</strong>шли применение в поисковойинженерии ПО [69], входят эволюционные алгоритмы [7] (генетическиеалгоритмы [2, 11, 12, 43], генетическое программирование [84] иэволюционные стратегии [40]), а также муравьиные алгоритмы [49],метод роя частиц [82], метод имитации отжига [94], метод спуска [66],


8алгоритмы оценки распределений [86], поиск с запретами [58],меметические алгоритмы [51], метод рассеянного поиска [59],квадратичное программирование [105], целочисленное программирование[113], искусственные иммунные системы [47]. При этом в <strong>на</strong>стоящеевремя <strong>на</strong>ибольшее распространение получили эволюционные алгоритмы[71].Как указано выше, при использовании автоматногопрограммирования возникает задача, для решения которой можно, аиногда и необходимо, применять методы поисковой инженерии ПО. Этоопределяется тем, что построение управляющих <strong>конечных</strong> <strong>автоматов</strong>вручную может представлять существенную сложность, а в ряде случаевпостроить автоматы вручную и вовсе не удается.Примерами таких задач являются: управление командойбеспилотных летательных аппаратом в соревнованиях с другой командой[21, 136], итерирован<strong>на</strong>я дилемма узника [98], задача о «Флибах» [1, 53],задача «Умный муравей» [79]. Полный перебор управляющих <strong>конечных</strong><strong>автоматов</strong> даже при их небольших размерах крайне трудоемок, аэвристическое их построение, как отмечено выше, не всегда даетприемлемые результаты.Разработка методов решения указанной задачи является одним изшагов к автоматическому построению программ и позволит повыситьуровень автоматизации <strong>построения</strong> автоматных программ (как отмечалосьвыше, до 70% исходного кода программ может быть построеноавтоматически) и снизить влияние человеческого фактора <strong>на</strong> их качество.Как отмечается в работе [69], большая часть работ в областипоисковой инженерии ПО основа<strong>на</strong> <strong>на</strong> использовании эволюционныхалгоритмов, а для решения задач проектирования ПО (к которымотносится задача <strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong>) применялись толькоэволюционные и муравьиные алгоритмы, методы имитации отжига и


9спуска. Так как метод имитации отжига не дает существенного улучшениярезультатов по сравнению с генетическими алгоритмами [8, 124], амуравьиные алгоритмы более приспособлены для задач, в которыхрешением является путь в графе, то для решения задачи <strong>построения</strong><strong>конечных</strong> <strong>автоматов</strong> обычно применялись эволюционные алгоритмы иметод спуска.Подобные идеи возникали у ряда исследователей. В 1962 г.Л. Фогель занялся изучением интеллектуального поведения индивида и егоразвития в процессе эволюции [52]. При этом поведение индивидазадавалось конечным автоматом. Продолжая данные исследования,Л. Фогель, А. Оуэнс и М. Уолш предложили в 1966 г. схему эволюции<strong>конечных</strong> <strong>автоматов</strong>, решающих задачи предсказания [53].При решении задачи каким-либо из методов поисковой оптимизациинеобходимо описать задачу в терми<strong>на</strong>х множества допустимых решений(пространства поиска) и функции приспособленности. Для задачи<strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> множеством допустимыхрешений является множество <strong>автоматов</strong> с заданными событиями,входными переменными и выходными воздействиями и числом состоянийне больше заданного. Функция приспособленности зависит от задачи,которую должен решать автомат, и долж<strong>на</strong> характеризовать качество еерешения.Генетические алгоритмы ведут поиск оптимальных решенийпараллельно в нескольких точках пространства поиска. В<strong>на</strong>чалеслучайным образом генерируется некоторое число решений (особей),образующих <strong>на</strong>чальное поколение. Далее, особи этой популяциискрещиваются и мутируют, формируя новое поколение. Скрещивание(кроссовер, рекомби<strong>на</strong>ция) – фундаменталь<strong>на</strong>я операция в генетическихалгоритмах, позволяющая производить обмен «генетическим материалом»между особями. Мутация – не менее важ<strong>на</strong>я составляющая, о<strong>на</strong> позволяет


10получать новый «генетический материал», а также предотвращать«застревание» в области локального оптимума.В классическом генетическом алгоритме особь кодируется строкой<strong>на</strong>д небольшим алфавитом (как правило, это битовая строка), по а<strong>на</strong>логиис хромосомой, кодирующей <strong>на</strong>следственную информацию в живыхорганизмах. По этой причине особь генетического алгоритма также<strong>на</strong>зывают хромосомой. Для битовых строк известно несколькостандартных операций скрещивания и мутации, что, од<strong>на</strong>ко, неограничивает возможные варианты выбора этих операций.Функция приспособленности выражает <strong>на</strong>сколько решение,представленное данной особью, удовлетворяет задаче. О<strong>на</strong> может такжесодержать дополнительные слагаемые, выражающие, <strong>на</strong>пример, штраф заслишком большое число переходов в автомате. Эти слагаемыеиспользуются для <strong>на</strong>правления процесса поиска оптимального решения.Особи нового поколения выбирается <strong>на</strong> <strong>основе</strong> критерия отбора.Этот критерий отдает предпочтение более приспособленным особям, в тоже время, давая шанс и менее приспособленным. Таким образом, впопуляции поддерживается необходимое разнообразие особей, в то жевремя лучшие особи выживают гораздо чаще. Можно сказать, что идеягенетического алгоритма берет свои истоки в учении об естественномотборе. Од<strong>на</strong>ко, эволюция Дарви<strong>на</strong> в некотором смысле «слепа» –улучшения в генотипе популяции происходят случайно. В генетических жеалгоритмах улучшение особей в популяции является основной целью.Генетическое программирование – разновидность генетическихалгоритмов, в которой вместо низкоуровневого представления объектов ввиде битовых строк используется высокоуровневое представление: деревьяразбора программ, диаграммы переходов <strong>конечных</strong> <strong>автоматов</strong> и т. д. Спомощью генетического программирования эффективно решаются задачи


11автоматического <strong>построения</strong> программ, <strong>конечных</strong> <strong>автоматов</strong> и клеточных<strong>автоматов</strong>.Эволюционные стратегии имеют два отличия от генетическихалгоритмов: в них не используется операция скрещивания и, как правило,каждое поколение состоит только из одной особи. Процесс поиска<strong>на</strong>чи<strong>на</strong>ется со случайно выбранной особи, задающей некотороедопустимое решение задачи. На каждой итерации к текущей особиприменяется операция мутации. О<strong>на</strong> обычно устрое<strong>на</strong> таким образом,чтобы в результате могло получиться (пусть и с весьма малойвероятностью) любое допустимое решение.Если результат этой операции представляет собой лучшее решение,то оно становится текущим <strong>на</strong> следующей итерации. Работа алгоритмасчитается оконченной, когда будет достигнуто необходимое з<strong>на</strong>чениефункции приспособленности.Метод спуска устроен следующим образом. Процесс поиска<strong>на</strong>чи<strong>на</strong>ется со случайно выбранной точки в пространстве решений задачи.На каждой итерации рассматриваются точки, соседние с текущей. Еслинекоторая соседняя точка представляет собой улучшенное решение, то о<strong>на</strong>становится текущей <strong>на</strong> следующей итерации. В противном случае поисксчитается оконченным, а текущая точка – оптимальным решением.В предыдущих работах, связанных с автоматнымпрограммированием, рассматривались, прежде всего, методы,использующие моделирование для вычисления функцииприспособленности [5, 14, 15, 17, 35, 53, 73, 76, 79, 95, 112, 114, 129 – 132,135].Эти методы обладают следующими недостатками: для решения новой задачи необходимо заново выполнятьпрограммную реализацию вычисления функцииприспособленности, что может быть весьма трудоемким;


12 каждое вычисление функции приспособленности можеттребовать з<strong>на</strong>чительного времени, так как связано смоделированием поведения управляющего конечного автоматав некоторой внешней среде.Поэтому исследования, <strong>на</strong>правленные <strong>на</strong> разработку лишенныхуказанных недостатков эволюционных алгоритмов для <strong>построения</strong>управляющих <strong>конечных</strong> <strong>автоматов</strong>, являются актуальными.В соответствии с паспортом специальности 05.13.11 –«Математическое обеспечение вычислительных машин, комплексов икомпьютерных сетей» областями исследования, к которым относится<strong>на</strong>стоящая диссертация, в частности, являются «5. Теория <strong>построения</strong>программ, пакетов прикладных программ (ППП), программныхкомплексов (ПК), а также сетевых программ (СП), в том числе,поддерживающих сетевые протоколы» и «9. Модели и методы разработкипрограммных средств обработки данных и з<strong>на</strong>ний в ВМ, ВК и КС».Цель диссертационной работы – разработка методов <strong>построения</strong>управляющих <strong>конечных</strong> <strong>автоматов</strong> (в дальнейшем <strong>автоматов</strong>) <strong>на</strong> <strong>основе</strong>эволюционных алгоритмов.Основные задачи диссертационной работы состоят в следующем:1. Разработать метод <strong>построения</strong> <strong>автоматов</strong> по обучающимпримерам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов.2. Разработать метод выполнения операции скрещивания длягенетических алгоритмов, учитывающий поведение <strong>автоматов</strong><strong>на</strong> обучающих примерах.3. Разработать метод <strong>построения</strong> <strong>автоматов</strong> по обучающимпримерам и темпоральным формулам <strong>на</strong> <strong>основе</strong> эволюционныхалгоритмов и верификации.4. Разработать технологию <strong>построения</strong> <strong>автоматов</strong> по обучающимпримерам и темпоральным формулам.


135. Разработать инструментальное средство для автоматизации<strong>построения</strong> <strong>автоматов</strong>.6. Внедрить разработанные методы при построении автоматауправления моделью беспилотного самолета и в учебныйпроцесс.Науч<strong>на</strong>я новиз<strong>на</strong>. В работе получены следующие новые <strong>на</strong>учныерезультаты, которые выносятся <strong>на</strong> защиту:1. Метод <strong>построения</strong> <strong>автоматов</strong> по обучающим примерам <strong>на</strong><strong>основе</strong> эволюционных алгоритмов. Его основное отличие отизвестных состоит в том, что в предлагаемые алгоритмыдобавлен новый шаг «Расстановка выходных воздействий»,который выполняется перед вычислением функцииприспособленности.2. Метод выполнения операции скрещивания для генетическихалгоритмов, учитывающий поведение <strong>автоматов</strong> <strong>на</strong>обучающих примерах. Показано, что генетический алгоритм,использующий разработанный метод выполнения операциискрещивания, осуществляет построение <strong>автоматов</strong> пообучающим примерам быстрее, чем генетический алгоритм,использующий традиционный метод выполнения операциискрещивания, эволюцион<strong>на</strong>я стратегия и метод спуска <strong>на</strong><strong>основе</strong> случайных мутаций.3. Метод <strong>построения</strong> <strong>автоматов</strong> по обучающим примерам итемпоральным формулам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмови верификации. Его основное отличие от известных состоит втом, что для вычисления функции приспособленностисовместно применяются обучающие примеры и метод ModelChecking.


14<strong>Методы</strong> исследования. В работе используются методы теории<strong>автоматов</strong>, дискретной математики и эволюционных алгоритмов.Достоверность <strong>на</strong>учных положений, выводов и практическихрекомендаций, полученных в диссертации, подтверждается корректнымобоснованием постановок задач, точной формулировкой критериев, атакже результатами экспериментов по использованию предложенных вдиссертации методов.Практическое з<strong>на</strong>чение работы состоит в том, что разработа<strong>на</strong>технология автоматизированного <strong>построения</strong> управляющих <strong>конечных</strong><strong>автоматов</strong> <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов и созданоинструментальное средство для автоматизации <strong>построения</strong> <strong>автоматов</strong>,поддерживающее эту технологию. По постренным автоматам, какотмечено выше, автоматически может быть сгенерирован программныйкод. Предложенные в работе эволюционные алгоритмы позволяют решитьзадачи <strong>построения</strong> <strong>автоматов</strong>, которые не удается решить вручную, а длядругих <strong>автоматов</strong> – существенно сократить затраты времени <strong>на</strong> ихпостроение по сравнению с известными методами, что подтверждаетсярезультатами экспериментальных исследований, приведенными в работе.Внедрение результатов работы. Результаты диссертации былиполучены при выполнении <strong>на</strong>учно-исследовательских работ <strong>на</strong> кафедрах«Компьютерные технологии» и «Технологии программирования» НИУИТМО по следующим государственным контрактам: «Технологиягенетического программирования для генерации <strong>автоматов</strong> управлениясистемами со сложным поведением» (государственный контракт№ 02.514.11.4044 от 18.05.2007 г. по Федеральной целевой программе«Исследования и разработки по приоритетным <strong>на</strong>правлениям развития<strong>на</strong>учно-технологического комплекса России <strong>на</strong> 2007–2013 годы»),«Разработка методов совместного применения генетического иавтоматного программирования для <strong>построения</strong> систем управления


15беспилотными летательными аппаратами» (государственный контракт№ П1188 от 27.08.2009 г. по Федеральной целевой программе «Научные и<strong>на</strong>учно-педагогические кадры инновационной России» <strong>на</strong> 2009–2013годы), «Разработка методов машинного обучения <strong>на</strong> <strong>основе</strong> генетическихалгоритмов для <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong>»(государственный контракт № П2174 от 09.11.2009 г. по Федеральнойцелевой программе «Научные и <strong>на</strong>учно-педагогические кадрыинновационной России» <strong>на</strong> 2009–2013 годы), «Применение методовискусственного интеллекта в разработке управляющих программныхсистем» (государственный контракт № П2236 от 11.11.2009 г. поФедеральной целевой программе «Научные и <strong>на</strong>учно-педагогическиекадры инновационной России» <strong>на</strong> 2009–2013 годы), в рамках проекта«Подготовка и переподготовка профильных специалистов <strong>на</strong> базе центровобразования и разработок в сфере информационных технологий в Северо-Западном федеральном округе» (Государственный контракт№ 07.Р20.11.0028 от 07.09.2011 г.) и были внедрены <strong>на</strong> примере<strong>построения</strong> автомата управления моделью беспилотного самолета, а такжев учебном процессе <strong>на</strong> кафедре «Компьютерные технологии» в рамкахкурса «Теория <strong>автоматов</strong> и программирование».Апробация результатов работы. Основные положениядиссертационной работы докладывались <strong>на</strong> следующих <strong>на</strong>учных и <strong>на</strong>учнопрактическихконференциях: IV Между<strong>на</strong>род<strong>на</strong>я <strong>на</strong>учно-практическаяконференция «Интегрированные модели и мягкие вычисления вискусственном интеллекте» (Колом<strong>на</strong>, 2007), <strong>на</strong>учно-техническаяконференция «Научное программное обеспечение в образовании и<strong>на</strong>учных исследованиях» (СПбГПУ, 2008), XII Всероссийскаяконференция по проблемам <strong>на</strong>уки и высшей школы «Фундаментальныеисследования и инновации в технических университетах» (СПбГПУ, 2008),Second Spring Young Researchers' Colloquium on Software Engineering –


16SYRCoSE'2008 (SPbSU, 2008), III и IV Между<strong>на</strong>род<strong>на</strong>я <strong>на</strong>учнопрактическаяконференция «Современные информационные технологии иИТ-образование» (ВМК МГУ, 2008, 2009), <strong>на</strong>учно-практическаяконференция студентов, аспирантов, молодых ученых и специалистов«Интегрированные модели, мягкие вычисления, вероятностные системы икомплексы программ в искусственном интеллекте (ИММВИИ-2009)»(Колом<strong>на</strong>, 2009), VI и VII межвузовская конференция молодых ученых(СПбГУ ИТМО, 2009, 2010), X, XI и XII Между<strong>на</strong>род<strong>на</strong>я конференции помягким вычислениям и измерениям (СПбГЭТУ (ЛЭТИ), 2009, 2010, 2011),Между<strong>на</strong>род<strong>на</strong>я <strong>на</strong>уч<strong>на</strong>я конференция «Компьютерные <strong>на</strong>уки иинформационные технологии» памяти А. М. Богомолова (Саратовскийгосударственный университет имени Н. Г. Чернышевского, 2009), 32-яконференция молодых ученых и специалистов Института проблемпередачи информации им. А. А. Харкевича РАН «Информационныетехнологии и системы» (2009), XL <strong>на</strong>уч<strong>на</strong>я и учебно-методическаяконференция профессорско-преподавательского и <strong>на</strong>учного составаСПбГУ ИТМО (2011), 14-th Annual Graduate Students Workshop (part of the«Genetic and Evolutionary Computation Conference» GECCO – 2011, Dublin,ACM SIGEVO, 2011), вторая межвузовская <strong>на</strong>уч<strong>на</strong>я конференция попроблемам информатики (СПИСОК, СПбГУ, 2011), XLI <strong>на</strong>уч<strong>на</strong>я и учебнометодическаяконференция НИУ ИТМО (2012), 15-th Annual GraduateStudents Workshop (part of the «Genetic and Evolutionary ComputationConference» GECCO – 2012, Philadelphia, ACM SIGEVO, 2012), третьяроссийская конференция с между<strong>на</strong>родным участием «Технические ипрограммные средства систем управления, контроля и измерения»(Институт проблем управления имени В. А. Трапезникова РАН, 2012) –пле<strong>на</strong>рный доклад.


17Публикации. По теме диссертации опубликованы 23 печатныеработы, в том числе шесть статей, из которых пять в жур<strong>на</strong>лах из перечняВАК.Свидетельства о регистрации программ для ЭВМ. В рамкахдиссертационной работы получены три свидетельства о регистрациипрограмм для ЭВМ: № 2010 614197 от 29.06.2010 г. «Программноесредство для <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong>обучающих примеров с использованием генетических алгоритмов»,№ 2011 615664 от 19.07.2011 г. «Программное средство для генерации<strong>конечных</strong> <strong>автоматов</strong> с дискретными и непрерывными выходнымивоздействиями», № 2011 616977 от 08.09.2011 г. «Виртуаль<strong>на</strong>ялаборатория для обучения методам искусственного интеллекта припостроении <strong>конечных</strong> <strong>автоматов</strong>».Структура диссертации. Диссертация изложе<strong>на</strong> <strong>на</strong> 196 страницах исостоит из введения, четырех глав, заключения и двух приложений.Список источников содержит 170 <strong>на</strong>именований. Работапроиллюстрирова<strong>на</strong> 41 рисунком и 14 таблицами.В первой главе приводится обзор работ, посвященных автоматномупрограммированию, поисковой инженерии ПО и применениюэволюционных алгоритмов для <strong>построения</strong> <strong>автоматов</strong>. На <strong>основе</strong>результатов обзора формулируются задачи, решаемые в <strong>на</strong>стоящейдиссертации.Вторая глава посвяще<strong>на</strong> методам <strong>построения</strong> <strong>автоматов</strong> пообучающим примерам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов и выполненияоперации скрещивания с учетом поведения <strong>автоматов</strong> <strong>на</strong> обучающихпримерах, а также <strong>построения</strong> управляющих <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong>эволюционных алгоритмов по обучающим примерам и темпоральнымформулам. Рассматриваются следующие эволюционные алгоритмы: методспуска <strong>на</strong> <strong>основе</strong> случайных мутаций, эволюцион<strong>на</strong>я стратегия,


18генетический алгоритм. Описывается представление <strong>конечных</strong> <strong>автоматов</strong> вэволюционных алгоритмах, алгоритмы выполнения операций мутации искрещивания, метод вычисления функции приспособленности. Приводятсярезультаты вычислительных экспериментов по построению <strong>автоматов</strong> <strong>на</strong>примерах задач <strong>построения</strong> автомата управления часами с будильником иавтомата управления дверьми лифта, а также для тестов, сгенерированныхслучайным образом.В третьей главе описываются разработанные автором технология<strong>построения</strong> <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов иинструментальное средство для автоматизированного <strong>построения</strong><strong>автоматов</strong>.Четвертая глава посвяще<strong>на</strong> результатам внедрения предложенныхметодов <strong>на</strong> примере <strong>построения</strong> автомата управления модельюбеспилотного самолета и в учебный процесс.В заключении сформулированы результаты, полученные вдиссертации.


19ГЛАВА 1. АВТОМАТНОЕ ПРОГРАММИРОВАНИЕ И ПОИСКОВАЯИНЖЕНЕРИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯВ <strong>на</strong>стоящей главе приводятся результаты обзора работ,посвященных автоматному программированию, поисковой инженерии ПОи применению эволюционных алгоритмов для <strong>построения</strong> <strong>конечных</strong><strong>автоматов</strong>. На основании результатов обзора формулируются задачи,решаемые в диссертации.1.1. АВТОМАТНОЕ ПРОГРАММИРОВАНИЕВ <strong>на</strong>стоящем разделе приводятся результаты обзора работ,посвященных автоматному программированию.1.1.1. Сущности со сложным поведениемВ процессе разработки программного обеспечения часто возникаетнеобходимость реализации сущностей со сложным поведением. Такимповедением обладают многие устройства и системы управления, сетевыепротоколы и т. д.Сущность обладает сложным поведением, если в ответ <strong>на</strong> одно и тоже входное воздействие о<strong>на</strong> может сгенерировать в зависимости отпредыстории различные выходные воздействия. Сущность с простымповедением в ответ <strong>на</strong> одно и то же входное воздействие всегда генерируетодно и то же выходное воздействие (рис. 1).входныевоздействиясущностьx 1 z 1x 2 z 2выходныевоздействиявходныевоздействиясущностьx 1z 1z 2z 3x 2z 2выходныевоздействияz 4Рис. 1. Сущность с простым поведением и сущность со сложнымповедением


20При традиционной программной реализации сущностей с такимповедением используются переменные, <strong>на</strong>зываемые флагами. Их роль –участвовать в конструкциях ветвления, реализующих логику поведения.Флаги неявно задают отдельные компоненты состояний. Использованиефлагов трудно для понимания, подвержено ошибкам и практически нерасширяемо.Вместо этого в автоматном программировании предлагается [18]описывать системы со сложным поведением, приписывая каждой из нихнекоторое множество управляющих состояний (в дальнейшем, если неоговаривается особо, состояний). В этих состояниях поведение системыявляется простым и может быть описано явно. Связь управляющихсостояний с выходными воздействиями и механизм переходов междусостояниями удобно описывать с помощью <strong>конечных</strong> <strong>автоматов</strong> свыходами [26]. При этом все описание поведения системы оказываетсясосредоточенным в автомате или системе взаимодействующих <strong>автоматов</strong>.Одним из <strong>на</strong>иболее широких классов систем, для которыхцелесообразно применять такой подход, являются реактивные системы.Системы этого класса могут быть также <strong>на</strong>званы событийными. В такихсистемах в качестве входных воздействий используются события ивходные переменные. События, в отличие от входных переменных, неопрашиваются программой, а вызывают соответствующие имобработчики. Входные переменные и выходные воздействия реализуютсяпроизвольными подпрограммами (функциями). Перечислим основныеотличия реактивных систем от систем других классов.Если в системах логического управления [28] в качестве входныхвоздействий используются опрашиваемые программой двоичные входныепеременные и предикаты, соответствующие определенным состояниям<strong>автоматов</strong>, взаимодействующих с рассматриваемым автоматом, то для«реактивных» систем это понятие расширено. Во-первых, в качестве


21входных переменных применяются любые подпрограммы (функции),возвращающие двоичные з<strong>на</strong>чения, а, во-вторых, введены события, нетолько обеспечивающие возможность выполнения переходов в автоматах,но и инициирующие запуск <strong>автоматов</strong>. События могут такжеинициировать реализацию выходных воздействий в случае, когдасостояние автомата не изменяется.Другое отличие «реактивных» систем от систем логическогоуправления состоит в том, что в них в качестве выходных воздействийприменяются не двоичные переменные, а произвольные подпрограммы.Также как и в системах логического управления, в «реактивных»системах алгоритмы представляются в виде системы взаимосвязанных<strong>автоматов</strong>. При этом если в системах первого типа взаимодействие<strong>автоматов</strong> в основном осуществляется за счет обме<strong>на</strong> номерами состояний,а вложенность присутствует в «зачаточном» состоянии, то в «реактивных»системах число способов взаимодействия увеличилось.1.1.2. Парадигма автоматного программированияАвтоматное программирование, предложенное в работе [22], – этопарадигма программирования, которая состоит в представлении сущностейсо сложным поведением в виде автоматизированных объектовуправления.Од<strong>на</strong> из центральных идей автоматного программирования состоит вотделении описания логики поведения (при каких условиях необходимовыполнить те или иные действия) от описания его семантики (собственносмысла каждого из воздействий). Кроме того, описание логики приавтоматном подходе жестко структурировано. Эти два свойства делаютавтоматное описание сложного поведения ясным и удобным.Базовым понятием автоматного программирования является«состояние». Это понятие в том смысле, как оно используется вописываемой парадигме, было введено А. Тьюрингом. Основное свойство


22состояния системы в любой момент времени состоит в том, что оно несет всебе всю информацию о прошлом системы, необходимую для определенияее реакции <strong>на</strong> любое входное воздействие, формируемое в текущий моментвремени. Состояние можно рассматривать как особую характеристику,которая в неявной форме объединяет все входные воздействия прошлого,влияющие <strong>на</strong> реакцию сущности в <strong>на</strong>стоящий момент времени. Реакциясистемы зависит только от входного воздействия и текущего состояния.Состояния системы, как отмечалось выше, могут быть разделены <strong>на</strong>управляющие и вычислительные. Если говорить неформально, то основныеотличия между ними можно сформулировать следующим образом: число управляющих состояний не очень велико, а числовычислительных состояний либо очень велико, либобесконечно; управляющие состояния отличаются друг от другакачественно, а управляющие – количественно; управляющие состояния определяют совершаемые выходныевоздействия, а вычислительные – их результаты.Понятие «входное воздействие» также является одним из базовыхдля автоматного программирования. Чаще всего, входное воздействиесодержит событие и з<strong>на</strong>чения входных переменных. Совокупностьконечного множества состояний и конечного множества входныхвоздействий образует автомат без выходов. Такой автомат реагирует <strong>на</strong>входные воздействия, определенным образом изменяя текущее состояние.Правила, по которым происходит сме<strong>на</strong> состояний, задаются функциейпереходов автомата.То, что в автоматном программировании собственно и <strong>на</strong>зываетсяавтоматом (рис. 2), получается, если соединить понятие автомата безвыходов с понятием «выходное воздействие». Такой автомат реагирует <strong>на</strong>входное воздействие не только сменой состояния, но и формированием


23определенных з<strong>на</strong>чений <strong>на</strong> выходах. Правила формирования выходныхвоздействий <strong>на</strong>зывают функцией выходных воздействий (выходов)втомата.АвтоматСостояниеФункцияпереходовФункциявыходныхвоздействийВыходныевоздействияВходныевоздействияРис. 2. АвтоматПри построении систем автоматизации технических процессовобычно выделяют управляющие устройства и управляемые объекты.Следуя этой концепции, сущность со сложным поведением естественноразделить <strong>на</strong> две части: управляющую часть, ответственную за логику поведения – выборвыполняемых действий, зависящий от текущего состояния ивходного воздействия, а также за переход в новое состояние; управляемую часть, ответственную за выполнение действий,выбранных для выполнения управляющей частью, и, возможно, заформирование некоторых компонентов входных воздействий дляуправляющей части – обратных связей.В соответствии с традицией теории управления, управляемая часть<strong>на</strong>зывается объект управления, а управляющая часть – системауправления. Поскольку для реализации управляющей части используютсяконечные автоматы, то каждый из них <strong>на</strong>зывается управляющий конечныйавтомат или просто автомат.После разделения сущности со сложным поведением <strong>на</strong> объектуправления и автомат реализовать ее уже несложно, а главное, ее


24реализация становится понятной и удобной для модификации. Вся логикаповедения сущности сосредоточе<strong>на</strong> в автоматах. Объект управленияобычно обладает простым поведением (а, следовательно, может быть легкореализован традиционными «неавтоматными» методами). Он необрабатывает непосредственно входные воздействия от внешней среды, атолько получает от <strong>автоматов</strong> команды совершить те или иные действия.При этом каждая команда всегда вызывает одно и то же действие (это иесть определение простого поведения).Таким образом, в соответствии с автоматным подходом, сущности сосложным поведением следует представлять в виде автоматизированныхобъектов управления – так в теории управления <strong>на</strong>зывают объектуправления, интегрированный с системой управления в одно «устройство».При построении модели автоматизированного объектапредполагается, что управляющий автомат взаимодействует и с объектомуправления, и с внешней средой (рис. 3).Внешняя средаE/XАвтоматZXОУРис. 3. Взаимодействие компонентов модели автоматизированногообъектаНа этом рисунке сплошными стрелками обоз<strong>на</strong>чены традиционные и<strong>на</strong>иболее типичные для программных реализаций виды взаимодействиямежду автоматом, объектом управления и внешней средой. Автоматполучает входные воздействия, как со стороны внешней среды, так и отобъекта управления. В событийных системах часть или все компонентывходного воздействия со стороны среды могут быть событиями(множество событий обоз<strong>на</strong>чено <strong>на</strong> рисунке буквой E). Входное


25воздействие со стороны объекта управления формирует в моделиобратную связь (от управляемого объекта к управляющему). Этовоздействие может отсутствовать, тогда модель является разомкнутой –так в теории управления <strong>на</strong>зываются системы управления без обратнойсвязи. В противном случае модель <strong>на</strong>зывается замкнутой. Автомат, в своюочередь, воздействует <strong>на</strong> объект управления.Пунктирными стрелками обоз<strong>на</strong>чены менее распространенные, хотяи возможные, варианты взаимодействия. Так, автомат может оказыватьвыходное воздействие и <strong>на</strong> внешнюю среду. Од<strong>на</strong>ко таких связей обычноможно избежать, включив все управляемые автоматом сущности в составего объекта управления. Отметим, что в программировании, в общемслучае, различие между объектом управления и внешней средой носитскорее концептуальный, а не формальный характер. Создавая модельсистемы со сложным поведением, разработчик производит еедекомпозицию <strong>на</strong> автоматизированные объекты, определяя тем самымобъект управления для каждого автомата. В целях минимизации связеймежду модулями программной системы целесообразно проводитьдекомпозицию таким образом, чтобы автомат оказывал выходныевоздействия только <strong>на</strong> собственный объект управления.Кроме того, объект управления может взаимодействовать с внешнейсредой <strong>на</strong>прямую.В программировании <strong>на</strong> вид входных и выходных воздействий нетограничений: это могут быть символы, числа, строки, множества,последовательности, произвольные объекты – все зависит от спецификипоставленной задачи и инструментов, используемых для ее решения.Кроме того, могут различаться способы передачи входных воздействийавтомату и интерпретации выходных воздействий в объекте управления.Если по <strong>на</strong>з<strong>на</strong>чению сущность близка к традиционной системеуправления, то представление входных и выходных воздействий битовыми


26строками будет удобным по тем же причи<strong>на</strong>м, что и для структурныхавтоматных моделей. Од<strong>на</strong>ко интерпретация этого представления можетбыть различной. В программировании обычно используется такаяинтерпретация: каждой выходной переменной сопоставляетсяопределенное изменение вычислительного состояния (действие, команда).При этом единица обоз<strong>на</strong>чает <strong>на</strong>личие воздействия, а ноль – егоотсутствие. В этом случае вектору из нулей соответствует отсутствиекаких-либо команд. Такой вид выходного воздействия может привести кнедетерминизму в том случае, если результат зависит отпоследовательности выполнения команд. Поэтому в качестве выходноговоздействия вместо множества команд часто используетсяпоследовательность команд.1.1.3. Управляющий конечный автоматУправляющий конечный автомат представляет собой <strong>на</strong>бор, где X – множество входных переменных, E –множество событий, Y – множество состояний, y 0 – <strong>на</strong>чальное состояние,– функция выходных воздействий, –функция переходов.Главное отличие управляющих <strong>конечных</strong> <strong>автоматов</strong> от других типов<strong>конечных</strong> <strong>автоматов</strong> (<strong>конечных</strong> преобразователей и распоз<strong>на</strong>вателей)состоит в том, что в них в пометки переходов входят не отдельныевходные воздействия, а булевы формулы из них. Именно такие автоматы ирассматриваются в дальнейшнм в <strong>на</strong>стоящей диссертации.Приведем пример управляющего конечного автомата – автоматауправления часами с будильником [22]. Эти часы имеют трикнопки (рис. 4), которые пред<strong>на</strong>з<strong>на</strong>чены для изменения режима их работыи для <strong>на</strong>стройки текущего времени или времени срабатывания будильника.


27Рис. 4. Внешний вид часов с будильникомЕсли будильник выключен, то кнопки «H» и «M» пред<strong>на</strong>з<strong>на</strong>чены,соответственно, для увеличения <strong>на</strong> единицу числа часов и минут втекущем времени. Кнопка «A» в этом режиме служит для перехода врежим <strong>на</strong>стройки времени срабатывания будильника. В этом режимекнопки «H» и «M» позволяют увеличивать <strong>на</strong> единицу число часов иминут во времени срабатывания будильника. Нажатие кнопки «A» в этомрежиме приводит к включению будильника. Он срабатывает, как тольковремя срабатывания совпадает с текущим временем. Звонок автоматическивыключается через минуту или может быть выключен <strong>на</strong>жатием кнопки«A», которая также выключает будильник. Кроме кнопок часы содержаттаймер, который срабатывает каждую минуту – при каждом егосрабатывании текущее время увеличивается <strong>на</strong> одну минуту.Отметим, что рассматриваемые часы являются системой со сложнымповедением, так как в ответ <strong>на</strong> одни и те же входные события (<strong>на</strong>жатиякнопок) в зависимости от режима работы генерируются различныевыходные воздействия.Эта система имеет четыре события: H – <strong>на</strong>жата кнопка «H» <strong>на</strong> корпусе часов; M – <strong>на</strong>жата кнопка «M» <strong>на</strong> корпусе часов; A – <strong>на</strong>жата кнопка «A» <strong>на</strong> корпусе часов;


28 T – сработал таймер.О<strong>на</strong> также содержит две входные переменные: x 1 – верно ли, что время срабатывания будильника совпадает стекущим временем? x 2 – верно ли, что текущее время превышает времясрабатывания будильника ровно <strong>на</strong> одну минуту?Система имеет семь выходных воздействий: z 1 – увеличить <strong>на</strong> единицу число часов текущего времени; z 2 – увеличить <strong>на</strong> единицу число минут текущего времени; z 3 – увеличить <strong>на</strong> единицу число часов времени срабатываниябудильника; z 4 – увеличить <strong>на</strong> единицу число минут времени срабатываниябудильника; z 5 – прибавить минуту к текущему времени; z 6 – включить звонок будильника; z 7 – выключить звонок будильника.На рис. 5 приведен граф переходов автомата управления часами сбудильником из работы [22].H /z 1 M /z 2 H /z 3 M /z 4A / 2. Установка1. БудильниквременивыключенбудильникаH /z 1 M /z 2T /z 5T /z 5A /A /z 73. БудильниквключенT [x 1 ] /z 5 , z 6 T [x 2 ] /z 5 , z 7T [!x 1 &!x 2 ] /z 5Рис. 5. Граф переходов конечного автомата управления часами сбудильником


29Начальным состоянием этого автомата является состояние«1. Будильник выключен». На приведенном графе переходов каждыйпереход t помечен событием e, логической формулой f относительновходных переменных (о<strong>на</strong> выражает условие перехода и приведе<strong>на</strong> вквадратных скобках) и последовательностью o выходных воздействий(приведе<strong>на</strong> после косой черты). Переход t выполняется в случаепоступления события e, если при подстановке з<strong>на</strong>чений входныхпеременных в формулу f ее з<strong>на</strong>чение есть «исти<strong>на</strong>». При выполнении этогоперехода генерируются выходные воздействия, составляющиепоследовательность o, а автомат переходит в состояние, в которое ведетпереход t.От графа переходов автомата обычно требуют выполнения двухсвойств – полноты и непротиворечивости. Полнота оз<strong>на</strong>чает, что в каждомсостоянии для любого события и любой комби<strong>на</strong>ции з<strong>на</strong>чений входныхпеременных задан хотя бы один переход. Непротиворечивость оз<strong>на</strong>чает,нет двух переходов из одного состояния, которые бы выполнялись приодном и том же событии и одном и том же <strong>на</strong>боре з<strong>на</strong>чений входныхпеременных.Отметим, что приведенный <strong>на</strong> рис. 5 автомат обладает свойствомполноты, но не обладает свойством непротиворечивости, так как всостоянии «3. Будильник включен» при поступлении события T иодновременной истинности входных переменных x 1 и x 2 задано дваперехода.Если этот граф переходов исправить, как показано <strong>на</strong> рис. 6, тополучится автомат, обладающий свойством непротиворечивости, но необладающий свойством полноты, так как в этом случае не задано ниодного перехода из состояния «3. Будильник включен» при поступлениисобытия T и одновременной истинности входных переменных x 1 и x 2 .


30H /z 1 M /z 2 H /z 3 M /z 4A / 2. Установка1. БудильниквременивыключенбудильникаH /z 1 M /z 2T /z 5T /z 5A /A /z 73. БудильниквключенT [x 1 &!x 2 ] /z 5 z 6 T [x 2 &!x 1 ] /z 5 z 7T [!x 1 &!x 2 ] /z 5Рис. 6. Исправленный граф переходов конечного автоматауправления часами с будильникомПри этом отметим, что оба автомата корректно описываютповедение системы управления часами с будильником, так как изсемантики входных переменных следует, что x 1 и x 2 не могут бытьистинными одновременно. Это оз<strong>на</strong>чает, что даже если некоторыйуправляющий конечный автомат формально не обладаетнепротиворечивостью и полнотой переходов, то он все равно можетоказаться приемлемым для управления сущностью со сложнымповедением.В дальнейшем в диссертации будет рассматриваться задача<strong>построения</strong> <strong>автоматов</strong>, обладающих свойством непротиворечивости.1.1.4. Верификация автоматных программ <strong>на</strong> <strong>основе</strong> методаModel CheckingМетод проверки того, что программ<strong>на</strong>я система удовлетворяетопределенным требованиям, <strong>на</strong>зывается верификацией. Наиболееприменимым <strong>на</strong> практике методом верификации в <strong>на</strong>стоящее времяявляется верификация моделей программ (Model Checking) [9, 73]. Прииспользовании этого метода процесс верификации состоит из трех этапов.


31Первый из них (моделирование программы) состоит в преобразованиипрограммы в модель Крипке [9], содержащую конечное число состояний.Второй этап (спецификация) – это формаль<strong>на</strong>я запись утверждений,которые требуется проверить. На третьем этапе выполняется собственноверификация – алгоритмическая проверка выполнения спецификации длямодели.Сложность применения такого подхода для <strong>на</strong>писанныхтрадиционным образом программ (без явного выделения состояний)состоит в том, что после <strong>построения</strong> модели и ее верификации в случаеоб<strong>на</strong>ружения контрпримера необходимо преобразование контрпримера изтерминов модели в термины программы. Кроме того, не всегдакорректность модели оз<strong>на</strong>чает соответствие программы спецификации, таккак при построении модели выполняется переход <strong>на</strong> другой уровеньабстракции, теряя определенные данные и связи в программе. Данныйпроцесс представлен <strong>на</strong> рис. 7.МодельПрограммаВерификацияКонтрпримерв терми<strong>на</strong>хпрограммыКонтрпримерв терми<strong>на</strong>хмоделиРис. 7. Процесс верификации программы


32При использовании автоматного программирования проблемы<strong>построения</strong> модели по программе и преобразования контрпримеров изтерминов модели в термины программы не возникают, так как конечныйавтомат может быть автоматически преобразован в модель, пригодную дляверификации, а контрпримеры могут быть автоматически преобразованыиз терминов модели в термины автомата [4, 125 – 128]. Эта особенностьавтоматных программ упрощает их верификацию по сравнению спрограммами, <strong>на</strong>писанными традиционным путем.Для верификации автоматных программ в работах [6, 125 – 128]было разработано несколько инструментальных средств. Некоторые из нихиспользовали существующие верификаторы (<strong>на</strong>пример, SPIN [76], SMV[92], Bogor [143]) и осуществляли только преобразование в их входнойязык, а инструментальное средство, предложенное в работе [6], используетсобственную реализацию алгоритма верификации. Именно оно ииспользовалось в <strong>на</strong>стоящей работе.1.1.4.1. Логика линейного времениВ указанном инструментальном средстве для описания утверждений,верификация которых проводится, используется логика линейноговремени (Linear Time Logic, LTL) [9]. Синтаксис LTL включает в себяпредикаты P, булевы связки (! – логическое «НЕ», & – логическое «И», || –логическое «ИЛИ») и темпоральные операторы, применяющиеся длясоставления утверждений о событиях в будущем.В этой логике допустимы следующие темпоральные операторы: X (neXt) – «X p» верно тогда, когда в следующий моментвремени в программе будет выполняться предикат p; G (Globally) – «G p» верно, если во время работы программывсегда выполняется p;


33 F (Future) – «F p» верно, если в будущем <strong>на</strong>ступит момент,когда выполнится p; U (Until) – «p U q» верно, если в программе в каждый моментвремени выполняется p до тех пор, пока не выполнится q. Приэтом q обязательно должно когда-либо выполниться; R (Release) – «q R p» верно, если p выполняется до тех пор,пока не станет выполняться q (включая момент, когдавыполнится q), или всегда, если q не выполнится никогдаМножество LTL-формул таково: предикаты P; True, False; если φ и ψ – формулы, тоo !φ, φ&ψ, φ||ψ – формулы;o Xφ, Fφ, Gφ, φUψ, φRψ – формулы.Для проведения верификации LTL-формула, описывающаятребования к программе, преобразуется в автомат Бюхи [9] – конечныйавтомат <strong>на</strong>д бесконечными словами. Переходы автомата Бюхи помечаютсяпредикатами из исходной LTL-формулы. <strong>Методы</strong> <strong>построения</strong> автоматаБюхи по LTL-формуле описаны в работах [9, 44, 56].Так как задача верификатора – <strong>на</strong>йти контрпример, если онсуществует, то автомат Бюхи строится для отрицания исходной LTLформулы.Такой автомат допускает любые последовательности з<strong>на</strong>ченийпредикатов, которые не удовлетворяют требованиям.Приведем несколько примеров <strong>автоматов</strong> Бюхи, построенных поLTL-формулам. На рис. 8 приведены автоматы, построенные длятемпоральных операторов Future, Until и Release. При этом как «init»обоз<strong>на</strong>чены <strong>на</strong>чальные состояния, а состояния, отмеченные двойнымкругом, являются допускающими.


34а) б) в)Рис. 8. Автоматы Бюхи для LTL-формул Fp (а), pUq (б), pRq (в)Далее модель Крипке, построен<strong>на</strong>я для исходной программы, такжепреобразуется в автомат Бюхи, в котором метка <strong>на</strong> переходе – этовыполнимость определенного предиката. Для автоматных программ подпредикатом будем понимать утверждение о текущем переходе, <strong>на</strong>пример,сгенерированные автоматом выходные воздействия в объекте управленияили состояние, в которое перешел автомат.После этого строится его пересечение с автоматом Бюхи,построенным по отрицанию LTL-формулы. Это пересечение такжеявляется автоматом Бюхи, и для него запускается алгоритм двойногопоиска в глубину [9], который <strong>на</strong>ходит допускающую последовательностьпредикатов. Если эта последовательность существует, то: о<strong>на</strong> допускается автоматом Бюхи, построенным по моделиКрипке. Следовательно, эта последовательность являетсяисторией работы исходной программы; последовательность допускается автоматом Бюхи,построенным из отрицания LTL-формулы. Следовательно, этапоследовательность является историей, <strong>на</strong>рушающейпроверяемые требования.


351.2. ПОИСКОВАЯ ИНЖЕНЕРИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯВ <strong>на</strong>стоящем разделе приводятся результаты обзора работ,посвященных поисковой инженерии ПО.1.2.1. Основные понятияВ рамках поисковой инженерии ПО [45, 69 – 71] для решения задачпрограммной инженерии таких, как а<strong>на</strong>лиз требований [37, 121],прогнозирование хода разработки [30], проектирование [110], верификация<strong>на</strong> <strong>основе</strong> метода Model Checking [31 – 33, 60], тестирование [34, 67, 93],разбиение <strong>на</strong> модули [91] и рефакторинг [68, 106], предлагается применятьалгоритмы поисковой оптимизации.Отметим, что эта область исследований является новой – <strong>на</strong> апрель2012 г. по этой тематике было опубликовано всего 1020 работ(http://crestweb.cs.ucl.ac.uk/resources/sbse_repository/repository.html).В число методов, которые <strong>на</strong>шли применение в поисковойинженерии ПО [69], входят эволюционные алгоритмы (генетическиеалгоритмы [2, 11, 12, 43, 24, 25], генетическое программирование [84] иэволюционные стратегии [40]), а также муравьиные алгоритмы [49], методроя частиц [82], метод имитации отжига [94], метод спуска [66], алгоритмыоценки распределений [86], поиск с запретами [58], меметическиеалгоритмы [51], метод рассеянного поиска [59], квадратичноепрограммирование [105], целочисленное программирование [113],искусственные иммунные системы [47]. При этом <strong>на</strong>ибольшеераспространение получили эволюционные алгоритмы [71].В работе [45] приводятся следующие критерии, которые позволяютопределить, <strong>на</strong>сколько задача подходит для решения с помощью методовпоисковой оптимизации: Большой размер пространства поиска. Если пространствопоиска достаточно мало, для того чтобы все допустимыерешения можно было перебрать за относительно небольшое


36время, то нет смысла использовать методы поисковойоптимизации. Не существует известных эффективных решений даннойзадачи. Действительно, не имеет смысла применять новые,заведомо менее эффективные алгоритмы для решения ужерешенной задачи. Од<strong>на</strong>ко если существующие решенияпокрывают лишь часть возможных входных данных,применение алгоритмов поисковой оптимизации может помочьдля того, чтобы решить задачу для оставшихся вариантоввходных данных. Существование подходящей функции приспособленности. Вчастности, при разработке ПО существует множество метрик,применимых для этой цели [72]. Приемлемое время для генерации новых потенциальныхрешений, а также для вычисления функцииприспособленности.Общие рекомендации по применению алгоритмов поисковойоптимизации для решения задач инженерии ПО сформулированы вработах [45, 69] следующим образом:1. С<strong>на</strong>чала необходимо определить, достаточно ли дан<strong>на</strong>я задачаслож<strong>на</strong>, для того чтобы решать ее методами поисковойоптимизации (пространство поиска является чрезмернобольшим, для того чтобы использовать <strong>на</strong> нем традиционныеалгоритмы, используемые в задачах такого рода).2. Далее необходимо разработать метод представленияпотенциальных решений, позволяющий использоватьалгоритмы поисковой оптимизации, и задать функциюприспособленности.


373. Применение методов поисковой оптимизации следует <strong>на</strong>чать сметода спуска. Если он дает достаточно хорошие результаты,то имеет смысл применять и другие алгоритмы поисковойоптимизации.Последний пункт объясняется тем, что во многих задачах методспуска часто дает удовлетворительные результаты [66, 83, 96, 97]. Приэтом существуют как задачи [119], в которых генетический алгоритмработает лучше метода спуска, так и задачи, в которых метод спускаработает лучше генетического алгоритма [100].В любом случае, результаты применения метода спуска могутслужить <strong>на</strong>чальной точкой для а<strong>на</strong>лиза задачи. Если применение методаспуска не дает хороших результатов, это может оз<strong>на</strong>чать, что задачапроа<strong>на</strong>лизирова<strong>на</strong> недостаточно тщательно или используемоепредставление является неэффективным. Возможно, это также оз<strong>на</strong>чает,что дан<strong>на</strong>я задача не может быть удовлетворительно реше<strong>на</strong> алгоритмамипоисковой оптимизации в целом.Как отмечается в работе [69], для решения задач проектированияПО, к которым относится задача <strong>построения</strong> <strong>автоматов</strong>, применялисьследующие алгоритмы: метод спуска, метод имитации отжига [94],муравьиные алгоритмы, эволюционные алгоритмы. Как отмечалось выше,в литературе для <strong>построения</strong> <strong>автоматов</strong> применяются в основномэволюционные алгоритмы, которые улучшаются в <strong>на</strong>стоящей работе ирассматриваются ниже.1.2.2. Метод спускаНаиболее простым из алгоритмов решения задач поисковойоптимизации является метод спуска (англ. hill climbing). Процесс поиска<strong>на</strong>чи<strong>на</strong>ется со случайно выбранной точки в пространстве решений задачи.На каждой итерации рассматриваются точки, соседние с текущей. Еслинекоторая из этих точек представляет собой улучшенное решение по


38сравнению с текущей, то о<strong>на</strong> становится текущей <strong>на</strong> следующей итерации.В противном случае поиск считается оконченным, а текущая точка –оптимальным решением.Главной проблемой метода спуска является то, что <strong>на</strong>йденноерешение является локальным оптимумом, который может оказатьсягораздо хуже глобального.У метода спуска существует множество вариаций. Например, вопросо том, требуется ли выбирать первую соседнюю точку, оказавшуюся вуказанном смысле лучше текущей, или требуется ли рассмотреть всесоседние точки и выбрать среди них оптимальный вариант, порождаетразличные версии алгоритма (first ascent hill climbing, steepest ascent hillclimbing).Еще одним вариантом метода спуска является метод спуска <strong>на</strong><strong>основе</strong> случайных мутаций (random mutation hill climbing), которыйединственный из всех вариаций метода спуска относится кэволюционным алгоритмам. В этом методе к текущему решению <strong>на</strong>каждом шаге применяется случайное локальное изменение (мутация), иполученное решение сравнивается с текущим. Если оно не хуже его, то оностановится текущим. Если в течение некоторого числа итераций непроисходит улучшения з<strong>на</strong>чения функции приспособленности, топроисходит перезапуск алгоритма (рис. 9).Этот процесс продолжается до тех пор, пока не будет выполненкритерий остановки алгоритма (достигнуто определенное з<strong>на</strong>чениефункции приспособленности, с момента запуска алгоритма прошелопределенный промежуток времени и т. д.).Метод спуска является достаточно простым в реализацииалгоритмом, и во многих случаях применение этого метода даетдостаточно хорошие результаты, <strong>на</strong>пример, в задаче разбиения <strong>на</strong>модули [66, 97] и оценки стоимости проекта [83].


39Инициализация –генерация случайногоэлемента изпространства поискаВ течение заданного числа шаговне было улучшения з<strong>на</strong>ченияфункции приспособленностиВычисление функцииприспособленностиВнесение случайноголокального измененияРешение, полученноелокальным изменением,лучше текущегоСравнение текущегорешения и полученноголокальным изменениемВыполнен критерий остановки алгоритмаНайдено решениеРис. 9. Схема работы метода спуска <strong>на</strong> <strong>основе</strong> случайных мутаций1.2.3. Эволюцион<strong>на</strong>я стратегияОпишем (1+1)-эволюционную стратегию [40]. Процесс поиска<strong>на</strong>чи<strong>на</strong>ется со случайно выбранной точки в пространстве решений задачи.На каждой итерации к текущему решению применяется мутация, иполученное решение сравнивается с текущим – если оно не хуже его, тооно становится текущим. При этом в отличие от метода спуска мутация неявляется локальной – в ее результате может получить любой элементпространства решений (пусть и с небольшой вероятностью).Если в течение некоторого числа итераций не происходит улучшенияз<strong>на</strong>чения функции приспособленности, то а<strong>на</strong>логично методу спускапроисходит перезапуск алгоритма (рис. 10). Этот процесс продолжается дотех пор, пока не будет выполнен критерий остановки алгоритма(достигнуто определенное з<strong>на</strong>чение функции приспособленности, с


40момента запуска алгоритма прошел определенный промежуток времении т. д.).Инициализация –генерация случайногоэлемента изпространства поискаВ течение заданного числа шаговне было улучшения з<strong>на</strong>ченияфункции приспособленностиВычисление функцииприспособленностиМутацияРешение, полученное врезультате мутации,лучше текущегоСравнение текущегорешения и полученного врезультате мутацииВыполнен критерий остановки алгоритмаНайдено решениеРис. 10. Схема работы (1+1)-эволюционной стратегииКроме (1+1)-эволюционных стратегий известны также (1+λ)-эволюционные стратегии, в которых <strong>на</strong> каждой итерации с помощьюмутаций генерируется λ новых решений, из которых выбирается лучшее.Известны и (μ+λ)-эволюционные стратегии, в которых рассматривается неодно текущее решение, а μ решений, из которых <strong>на</strong> каждой итерации спомощью мутаций генерируются λ новых решений. Также существуютварианты эволюционных стратегий, использующие операциюскрещивания [40], что делает их во многом похожими <strong>на</strong> генетическиеалгоритмы.


411.2.4. Генетические алгоритмыГенетический алгоритм (genetic algorithm) [36, 73] представляетсобой метод оптимизации, основ<strong>на</strong>я идея которого состоит виспользовании принципа естественного отбора, составляющего основытеории эволюции живых организмов, предложенной Ч. Дарвином.Подобные идеи возникали у ряда исследователей. В 1962 г.Л. Фогель занялся изучением интеллектуального поведения индивида и егоразвития в процессе эволюции [52]. Такое поведение задавалось конечнымавтоматом. Продолжая данные исследования, Л. Фогель, А. Оуэнс и М.Уолш предложили в 1966 г. схему эволюции <strong>конечных</strong> <strong>автоматов</strong>,решающих задачи предсказания [53]. Примерно в это же время (в середине60-х годов) Дж. Холланд разработал новый метод поиска оптимальныхрешений – генетические алгоритмы. Результатом работы Дж. Холландастала книга [73], вышедшая в 1975 г. Эти работы заложили основыэволюционных вычислений.Кратко сформулировать принцип естественного отбора можноследующим образом: <strong>на</strong>именее приспособленные особи умирают раньше, а<strong>на</strong>иболее приспособленные выживают и дают потомство. Потомствовыживших особей оказывается в среднем более приспособленным, носреди них опять выделяются более приспособленные особи, и т. д.В генетических алгоритмах используются те же принципы. Вкачестве особей выступают элементы пространства возможных решенийнекоторой задачи (маршруты коммивояжера, графы переходов автомата ит. п.). Задан <strong>на</strong>бор генетических операций, с помощью которых изсуществующих особей формируются новые. Кроме этого определе<strong>на</strong> так<strong>на</strong>зываемая функция приспособленности (fitness function), котораяпоказывает <strong>на</strong>сколько «хорошим» решением задачи является особь.Генетические алгоритмы, в отличие от изложенных ранееалгоритмов, ведут поиск оптимальных решений сразу в нескольких точках


42пространства поиска. В<strong>на</strong>чале случайным образом генерируется некотороечисло решений (особей, в терминологии генетических алгоритмов),образующих <strong>на</strong>чальное поколение. Далее, особи этой популяциискрещиваются и мутируют, формируя новое поколение. Скрещивание(кроссовер, рекомби<strong>на</strong>ция) – фундаменталь<strong>на</strong>я операция в генетическихалгоритмах, позволяющая обмен генетическим материалом междуособями. Мутация – не менее важ<strong>на</strong>я составляющая, о<strong>на</strong> позволяетполучать новый генетический материал, а также предотвращать алгоритмот «застревания» в области локального оптимума.Процесс работы генетического алгоритма состоит в генерациипоколений особей до тех пор, пока не будет выполнено некоторое условиеостанова (<strong>на</strong>пример, достигнуто целевое з<strong>на</strong>чение функцииприспособленности или сгенерировано заданное число поколений). Нарис. 11 приведе<strong>на</strong> общая схема работы генетического алгоритма.В классическом генетическом алгоритме особь кодируется строкой<strong>на</strong>д небольшим алфавитом (как правило, это битовая строка), по а<strong>на</strong>логиис хромосомой, кодирующей <strong>на</strong>следственную информацию в живыхорганизмах. По этой причине особь генетического алгоритма нередкотакже <strong>на</strong>зывают хромосомой. Для битовых строк известно несколькостандартных операций скрещивания и мутации, что, од<strong>на</strong>ко, неограничивает возможные варианты выбора этих операций [20].Генетическое программирование (genetic programming),предложенное Дж. Козой в 1992 г. [84], предполагает применениегенетических алгоритмов для автоматизированного <strong>построения</strong> программ.Основным отличием генетического программирования оттрадиционных генетических алгоритмов является способ представленияособей в виде деревьев разбора программ.


43Инициализация –генерация случайныхособейВычисление функцииприспособленностиОтборКритерий завершенияалгоритма не выполненПрименение операциискрещиванияПрименение операциимутацииКритерий завершенияалгоритма выполненНайдено решениеРис. 11. Общая схема работы генетического алгоритма1.3. ПРИМЕНЕНИЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ ДЛЯПОСТРОЕНИЯ КОНЕЧНЫХ АВТОМАТОВВ <strong>на</strong>стоящем разделе приводится обзор существующихэволюционных алгоритмов <strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong>. <strong>Методы</strong><strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong> с помощью эволюционных алгоритмов игенетического программирования можно разделить <strong>на</strong> три типа: методы, использующие моделирование для вычисления функцииприспособленности; методы, использующие обучающие примеры (тесты) длявычисления функции приспособленности;


44 методы, использующие верификацию для вычисления функцииприспособленности.1.3.1. <strong>Методы</strong>, использующие моделирование привычислении функции приспособленностиВ <strong>на</strong>стоящем разделе описываются эволюционные алгоритмы,осуществляющие построение <strong>конечных</strong> <strong>автоматов</strong> и использующиемоделирование при вычислении функции приспособленности.1.3.1.1. Эксперименты ФогеляОдин из создателей эволюционного программирования Л.Фогельрассматривал интеллектуальное поведение индивида как способностьуспешно предсказывать поведение среды, в которой он <strong>на</strong>ходится, исообразно с этим действовать. В 60-x годах прошлого века годах Л. Фогельпоставил ряд экспериментов [53] по созданию искусственных систем,способных адаптироваться к перво<strong>на</strong>чально неизвестной им среде.В проведенных экспериментах Л. Фогель моделировал поведениепростейшего живого существа, которое способно предсказыватьизменения параметра среды, обладающего периодичностью. Это существомоделировалось конечным автоматом с действиями <strong>на</strong> переходах –автоматом Мили. В качестве среды выступала последовательностьсимволов <strong>на</strong>д двоичным алфавитом, <strong>на</strong>пример, (1111010010) * . На входавтомата в каждый момент времени подавалось битовое з<strong>на</strong>чениепараметра окружающей среды. Автомат формировал з<strong>на</strong>чение выходнойпеременной – возможное з<strong>на</strong>чение рассматриваемого параметра вследующий момент времени. На рис. 12 приведен один из возможных<strong>автоматов</strong>, который построен для распоз<strong>на</strong>вания указанной вышепоследовательности.


451/1 1/11/11/00/10/11/00/10/01/0Рис. 12. Граф переходов эвристически построенного автоматаЗадача состояла в эволюционном построении автомата, способногокак можно более точно в смысле какой-либо разумной функцииприспособленности от входа и выхода (<strong>на</strong>пример, числа совпавшихсимволов) предсказывать среду – угадывать следующий символпоследовательности. Кроме того, Л. Фогель <strong>на</strong>кладывал ограничения <strong>на</strong>сложность порождаемого автомата, так как строить автоматы с числомсостояний, равным длине обозреваемой последовательности, непредставляет труда. Таким образом, предпочтение отдавалось автоматам,угадывающим как можно лучше, и в то же время имеющим как можноменьше состояний.В <strong>на</strong>чале эксперимента задавалась периодическаяпоследовательность символов <strong>на</strong>д двоичным алфавитом, <strong>на</strong>пример(101110011101) * . На <strong>на</strong>чальной фазе выбирался префикс даннойпоследовательности малой длины. После этого создавалась популяция<strong>автоматов</strong> с небольшим числом состояний (около пяти). Затем каждый из<strong>автоматов</strong> путем одной из пяти мутаций (выбираемой случайным образомравновероятно) производил потомка. Далее <strong>на</strong>д потомком подобнымобразом производилось еще несколько мутаций (их число определялосьслучайным образом). Получившийся в результате мутаций автоматдобавлялся в популяцию. Были допустимы следующие мутации автомата: добавление состояния; удаление состояния (в случае, если число состояний большеединицы); заме<strong>на</strong> <strong>на</strong>чального состояния (в случае, если число состоянийбольше единицы);


46 заме<strong>на</strong> перехода; заме<strong>на</strong> действия <strong>на</strong> переходе.После добавления потомков в популяцию <strong>на</strong> всех ее особяхвычислялась функция приспособленности. Полови<strong>на</strong> <strong>на</strong>иболееприспособленных особей переносилась в популяцию следующегопоколения, а менее приспособленные автоматы – отбрасывались. Такимобразом, размер популяции оставался постоянным (стоит отметить, что всилу ограниченных возможностей компьютеров того времени, он былмал – всего несколько особей). Данный процесс продолжался до тех пор,пока не удавалось достигнуть желаемого результата – максимальноез<strong>на</strong>чение функции приспособленности не превосходило заданного порога.После этого к битовой последовательности, которая определяла среду,добавлялся очередной символ, и эволюционный процесс переходил вочередную фазу.По мнению Л. Фогеля, результаты экспериментов показали, чтоэволюционное программирование может быть успешно применено для<strong>построения</strong> «интеллектуальных» искусственных систем. При этом былоотмечено, что построение вручную <strong>автоматов</strong> столь же результативных ипростых, как те, что были построены эволюционным алгоритмом, являетсякрайне сложной задачей.1.3.1.2. Задача «Умный муравей»Еще одной задачей, в которой построенные с помощью генетическихалгоритмов автоматы обладают подобными свойствами, является задача«Умный муравей» [35, 79]. В этой задаче рассматривается поле, имеющееформу тора размером 32 <strong>на</strong> 32 клетки (рис. 13). В некоторых клетках полярасположены яблоки – черные клетки <strong>на</strong> рис. 13. Яблоки расположенывдоль некоторой ломаной линии, но не во всех ее клетках. Клеткиломаной, <strong>на</strong> которых яблок нет – серые. Белые клетки не при<strong>на</strong>длежатломаной и не содержат яблок. Всего <strong>на</strong> поле 89 яблок.


47Рис. 13. Поле с яблокамиВ клетке с пометкой «Start» в <strong>на</strong>чальный момент времени <strong>на</strong>ходитсямуравей. Он занимает клетку поля и смотрит в одном из четырех<strong>на</strong>правлений (север, запад, юг, восток). В <strong>на</strong>чале игры муравей смотрит <strong>на</strong>восток. Он умеет определять, <strong>на</strong>ходится ли непосредственно перед нимяблоко. Каждый ход муравей совершает одно из четырех действий: идет вперед <strong>на</strong> одну клетку, съедая яблоко, если оно <strong>на</strong>ходитсяв этой клетке; поворачивает вправо; поворачивает влево; стоит <strong>на</strong> месте.Съеденные муравьем яблоки не восполняются. Муравей жив <strong>на</strong> всемпротяжении игры – еда не является необходимым ресурсом для егосуществования. Никаких других персо<strong>на</strong>жей, кроме муравья, <strong>на</strong> поле нет.Лома<strong>на</strong>я строго зада<strong>на</strong>. Муравей может ходить по любым клеткам поля.Игра длится 200 ходов. В конце игры подсчитывается число яблок,съеденных муравьем. Это з<strong>на</strong>чение – результат игры.Поведение муравья может быть задано конечным автоматом.Например, конечный автомат, граф переходов которого изображен <strong>на</strong>рис. 14, содержит пять состояний и описывает стратегию «Вижу яблоко –


48иду вперед. Не вижу – поворачиваю. Сделал круг, но яблок нет – идувперед».!F / R1F / M2F / M!F / R3!F / MF / MF / M!F / RF / M5!F / R4Рис. 14. Конечный автомат, описывающий поведение муравьяВ рассматриваемой задаче требуется построить конечный автомат,под управлением которой муравей за 200 ходов съест все 89 яблок.Приведенный <strong>на</strong> рис. 14 автомат не решает задачу – за 200 ходов муравейсъедает только 81 яблоко (<strong>на</strong> все 89 яблок ему требуется 314 ходов).В работе [79] с помощью генетических алгоритмов построен автоматиз 13 состояний, решающий поставленную задачу. В работе [35] также спомощью генетических алгоритмов построен автомат из 11 состояний,который позволяет муравью съесть все яблоки за 193 хода. В указанныхработах автомат представлялся в виде битовой строки, априспособленность особи определялась как число яблок, съеденное за 200ходов.В работах [156 – 159] при участии автора <strong>на</strong>стоящей диссертациидля решения рассматриваемой задачи было предложено применятьгенетическое программирование – в отличие от указанных выше работ вгенетическом алгоритме автомат представлялся не в виде битовой строки,а в виде графа переходов. Кроме этого, существенное отличиепредлагаемого в этой работе алгоритма состоит в использовании двух


49операторов скрещивания – традиционного и сохраняющего з<strong>на</strong>чимыечасти <strong>автоматов</strong> [157].Оператор скрещивания, предложенный в указанной работе, получает<strong>на</strong> вход две особи и выдает также две особи. Процесс скрещиванияпроисходит следующим образом. Обоз<strong>на</strong>чим родительские особи P1 и P2,а потомков – S1 и S2.Обоз<strong>на</strong>чим <strong>на</strong>чальное состояние автомата A как A.is. Тогда дляпотомков S1 и S2 будет верно одно из двух: либо S1.is = P1.is иS2.is = P2.is, либо S1.is = P2.is и S2.is = P1.is, причем оба вариантаравновероятны.Для осуществления скрещивания, сохраняющего з<strong>на</strong>чимые части<strong>автоматов</strong> P1 и P2, <strong>на</strong>йдем переходы, которые эти автоматы выполняют втечение первых сорока ходов по игровому полю. Обоз<strong>на</strong>чим множествотаких переходов <strong>автоматов</strong> P1 и P2 как TF(P1) и TF(P2) соответственно.Множество переходов некоторого автомата A обоз<strong>на</strong>чим T(A). Для<strong>автоматов</strong>, получающихся в результате скрещивания возможны дваравновероятных варианта:и;и.За счет применения такого алгоритма удалось построить автомат,содержащий семь состояний и позволяющий муравью съесть все 89 яблокза число шагов, не превышающее предельное. Граф переходов этогоавтомата приведен <strong>на</strong> рис. 15. При построении этого автомата функцияприспособленности была вычисле<strong>на</strong> порядка 130 миллионов раз, в товремя как полный перебор в этом случае связан со з<strong>на</strong>чительно большимчислом вычислений.


50!F / M173!F / R F / MF / M!F / RF / M5F / M!F / R6!F / L!F / M4!F / M2F / MF / MF / MРис. 15. Граф переходов автомата из семи состояний, решающегозадачу «Умный муравей»Кроме этого, в работе [156] описывается алгоритм перебора, спомощью которого было установлено, что автоматы с шестью и менеесостояниями задачу «Умный муравей» не решают.1.3.1.3. Задача «Умный муравей-3»В рамках исследований по теме «Технология генетическогопрограммирования для генерации <strong>автоматов</strong> управления системами сосложным поведением» <strong>на</strong> кафедре «Технологии программирования»НИУ ИТМО для сравнения методов генерации <strong>конечных</strong> <strong>автоматов</strong> спомощью генетических алгоритмов [129 – 132] была предложе<strong>на</strong> задача«Умный муравей-3». Постановка этой задачи, предложенной вработе [123], содержит несколько существенных отличий от задачи«Умный муравей».Во-первых, расшире<strong>на</strong> область обзора муравья – вместо однойклетки он видит восемь. Таким образом, множество з<strong>на</strong>чений входныхпеременных содержит 2 8 = 256 элементов. На рис. 16 изображе<strong>на</strong> областьобзора муравья (клетка, в которой <strong>на</strong>ходится муравей, обоз<strong>на</strong>че<strong>на</strong> серымцветом).


51Рис. 16. Область видимости муравьяВо-вторых, расположение яблок <strong>на</strong> поле не фиксировано, агенерируется случайным образом. При этом вероятность того, что яблокоокажется в некоторой клетке, оди<strong>на</strong>кова для всех клеток поля и рав<strong>на</strong> μ.В этом случае число яблок, съеденных муравьем за 200 ходов,является случайной величиной ξ (определяемой муравьем) <strong>на</strong> дискретноммножестве элементарных исходов Ω – множестве расположений яблок –битовых матриц 32×32. Для каждого исхода ω, обоз<strong>на</strong>чим как apples(ω)соответствующее ему число яблок <strong>на</strong> поле, и поставим в соответствие емувероятность p(ω) = μ apples(ω) (1–μ) 1024- apples(ω) .Для вычисления этой величины в общем случае необходимоперебрать все возможные битовые матрицы размером 32×32. Поэтому дляоценки эффективности автомата, задающего поведение муравья, вместоточного вычисления этого математического ожидания, оно вычисляетсяприближенно – с помощью моделирования поведения муравья <strong>на</strong> 10 000случайно сгенерированных полях.В рамках указанных исследований было предложено три методагенерации <strong>конечных</strong> <strong>автоматов</strong> с помощью генетических алгоритмов: метод сокращенных таблиц переходов; метод представления <strong>автоматов</strong> деревьями решений; метод совместного применения <strong>конечных</strong> <strong>автоматов</strong> инейронных сетей.Метод сокращенных таблиц переходов был предложен в работе [22].Он позволяет решить проблему экспоненциального роста размераописания автомата, которая возникает при использовании полных таблиц


52переходов – число строк в таблице равноr2 , где r – число входныхпеременных. Опыт показывает, что в реальных задачах управляющиеавтоматы, построенные вручную, имеют гораздо меньше переходов, чемrS 2 (здесь как |S| обоз<strong>на</strong>чено число состояний автомата). Причи<strong>на</strong> этогосостоит в том, что в большинстве задач входные переменные имеют«локальную природу» по отношению к управляющим состояниям. Вкаждом состоянии з<strong>на</strong>чимым является лишь определенный, небольшой<strong>на</strong>бор входных переменных, остальные же переменные не влияют <strong>на</strong>з<strong>на</strong>чение функции переходов и функции выходных воздействий. Именноэто свойство позволяет существенно сократить размер описаниясостояний. Кроме того, использование этого свойства в процессеоптимизации позволяет получить результат, более похожий <strong>на</strong> автомат,построенный вручную, а, следовательно, и более понятный человеку.Свойство локальности входных переменных можно применять длясокращения описания управляющего состояния разными способами. Приразработке метода сокращенных таблиц был выбран один из подходов, прикотором число з<strong>на</strong>чимых в состоянии входных переменныхограничивается некоторой константой r’.К таблице, задающей сужение функции переходов <strong>на</strong> данноесостояние, в этом случае добавляется битовый вектор, описывающиймножество з<strong>на</strong>чимых входных переменных. Число строк таблицы в этомслучае'2 r . Ее выбор зависит от сложности задачи. Как показывает опыт,для большинства автоматизированных объектов з<strong>на</strong>чение r’ не превышаетпяти.решенийВторой метод – метод представления <strong>автоматов</strong> деревьями[5, 135, 149]. Дерево решений является удобным способомзадания дискретной функции, зависящей от конечного числа логическихпеременных. Оно представляет собой помеченное дерево, метки в которомрасставлены по следующему правилу:


53 внутренние узлы помечены символами переменных; ребра – з<strong>на</strong>чениями переменных; листья – з<strong>на</strong>чениями искомой функции.Для определения з<strong>на</strong>чения функции по з<strong>на</strong>чениям переменныхнеобходимо спуститься от корня до листа, и сформировать з<strong>на</strong>чение,которым помечен полученный лист. При этом из вершины, помеченнойпеременной x, переход производится по тому ребру, которое помечено темже з<strong>на</strong>чением, что и з<strong>на</strong>чение переменной x.Метод представления автомата с помощью деревьев решенийсостоит в следующем: функции переходов и выходных воздействийавтомата выражаются с помощью деревьев решений. Деревья решенийсостоят из узлов, среди которых выделяется корень. Каждый узелпредставляется следующим образом: номер переменной, соответствующей метке узла (для внутреннихузлов); указатель <strong>на</strong> дочерний узел, соответствующий нулевому з<strong>на</strong>чениюпеременной (для внутренних узлов); указатель <strong>на</strong> дочерний узел, соответствующий единичному з<strong>на</strong>чениюпеременной (для внутренних узлов); ассоциированное выходное действие (для листьев); номер состояния, в которое ведет переход из данной вершины (длялистьев).Третий метод – метод совместного применения <strong>автоматов</strong> инейронных сетей был предложен автором <strong>на</strong>стоящей диссертации вработах [148, 154]. При использовании этого метода для управлениясистемой со сложным поведением предлагается применять нейроннуюсеть и автомат, которые совместно строятся генетическим алгоритмом.При этом нейрон<strong>на</strong>я сеть используется для классификации з<strong>на</strong>ченийвещественных входных переменных и выработки входных логических


54переменных для автомата, а автомат – для выработки выходныхвоздействий <strong>на</strong> систему со сложным поведением (рис. 17).Числовые илилогическиевходныепеременныеЛогическиепеременныеВыходныевоздействияВнешняясредаНейрон<strong>на</strong>ясетьКонечныйавтоматСистема сосложнымповедениемРис. 17. Структур<strong>на</strong>я схема системы управления прииспользовании метода совместного применения <strong>конечных</strong><strong>автоматов</strong> и нейронных сетейОд<strong>на</strong> из возможных структур нейронной сети и способ еевзаимодействия с конечным автоматом показаны <strong>на</strong> рис. 18. Отметим, чтодля решения других задач структура нейронной сети может быть измене<strong>на</strong>.1S52LЧисловые или логическиевходные переменныеS36LКонечныйавтоматS74LSРис. 18. Возмож<strong>на</strong>я структура нейронной сеть и ее взаимодействиес автоматомСимволами S <strong>на</strong> рис. 18 обоз<strong>на</strong>чены нейроны с сигмоидальнойфункцией активации, символом L – нейроны с пороговой функциейактивации. Рядом с нейро<strong>на</strong>ми указаны их номера (они используются при


55описании операции скрещивания нейронных сетей). На каждый из трехвыходов нейронной сети поступает число равное нулю или единице. Такимобразом, существует восемь вариантов комби<strong>на</strong>ций выходных сиг<strong>на</strong>ловнейронной сети (000, 001, 010, 011, 100, 101, 110, 111), подаваемых <strong>на</strong> входавтомата.Экспериментальные исследования, проведенные в работе [132],показали, что при построении автомата для задачи «Умный муравей-3» триметода представления <strong>автоматов</strong>, рассмотренные выше, привели примернооди<strong>на</strong>ковые результаты.1.3.1.4. Игра «Соревнование за ресурсы»В работе [114] рассматривается задача <strong>построения</strong> <strong>автоматов</strong> дляигры «Соревнование за ресурсы» (Competition for Resources). Игровое полев этой игре имеет форму тора размером 10 <strong>на</strong> 10 клеток (тор можнопредставить в виде квадрата, у которого верхняя сторо<strong>на</strong> склее<strong>на</strong> снижней, а правая – с левой). Оно моделирует компьютерную сеть, вкоторой могут распространяться программные агенты.В игре участвуют два агента. Находясь в некоторой клетке поля,агент получает информацию о четырех соседних клетках (соседи справа,слева, сверху и снизу). Каждая клетка может <strong>на</strong>ходиться в одном из трехсостояний – никому не при<strong>на</strong>длежать, при<strong>на</strong>длежать первому агенту илипри<strong>на</strong>длежать второму агенту. На основании полученной информацииагент может переместиться в одну из соседних клеток, при этомперемещение разрешается выполнять либо в никому не при<strong>на</strong>длежащуюклетку, либо в клетку, при<strong>на</strong>длежащую рассматриваемому агенту. Несовершать перемещение агенту не разрешается.В <strong>на</strong>чале первый агент <strong>на</strong>ходится в левом верхнем углу, а второй – вправом нижнем. Агенты делают ходы по очереди. Игра заканчивается,когда все клетки оказываются при<strong>на</strong>длежащими либо первому агенту, либовторому. Победителем приз<strong>на</strong>ется тот агент, которому <strong>на</strong> момент


56окончания игры при<strong>на</strong>длежит большее число клеток. В случае оди<strong>на</strong>ковогочисла клеток, при<strong>на</strong>длежащих агентам, победителем приз<strong>на</strong>ется второйагент.В рассматриваемой работе стратегия поведения второго агента былазада<strong>на</strong>, а цель состояла в построении автомата для управления первымагентом, который позволял бы достаточно часто выигрывать игру.Стратегия второго агента в рассматриваемой была такой: <strong>на</strong> каждом ходепри <strong>на</strong>личии хотя бы одной никому не при<strong>на</strong>длежащей соседней клетки,перемещение осуществлялось в случайно выбранную из них, а приотсутствии – случайно выбиралась од<strong>на</strong> из соседних клеток,при<strong>на</strong>длежащих этому агенту. Таким образом, стратегия второго агентаимеет стохастический характер.Для решения описанной задачи в работе [114] применяетсягенетический алгоритм. Автомат представляется в виде таблиц з<strong>на</strong>ченийфункции переходов и функции выходов. В работе рассматривалосьпостроение <strong>автоматов</strong>, содержащих от одного до десяти состояний. Припостроении автомата из k состояний размер таблиц з<strong>на</strong>чений указанныхфункции составляет k×80, так как существует 80 комби<strong>на</strong>ций входныхпеременных. Это объясняется тем, что имеется четыре переменные, каждаяиз которых может принимать три возможных з<strong>на</strong>чений, при этом ровноод<strong>на</strong> комби<strong>на</strong>ция (все четыре соседние клетки при<strong>на</strong>длежат другомуагенту) не может встретиться в игре (это объясняется тем, что клетка, изкоторой агент пришел в текущую, при<strong>на</strong>длежит ему).Мутации с некоторой заданной вероятностью подвергалась каждаяиз ячеек таблицы з<strong>на</strong>чений функции переходов и функции выходов. Приэтом с вероятностью p менялось состояние, в которое ведет переход, а свероятностью 1–p – з<strong>на</strong>чение выхода, выполняемое <strong>на</strong> этом переходе.Кроме этого, использовалась операция однородного скрещивания. Длякаждой позиции (i, j) в таблицах з<strong>на</strong>чений функций переходов и выходов


57производился обмен ячеек между «родителями» с некоторой заданнойвероятностью.Так как поведение второго агента носит вероятностный характер, тооптимальным вариантом функции приспособленности была бывероятность выигрыша для первого агента, поведение которого задаетсяавтоматом, описываемым особью. Од<strong>на</strong>ко вычисление этой вероятностисопряжено с перебором всех вариантов поведения первого агента и требуетбольших вычислительных ресурсов. Поэтому указан<strong>на</strong>я вероятностьвычисляется приближенно – вычисляется не вероятность выигрыша, а доляигр, выигранных агентом.Вычисление функции приспособленности выполняется в два этапа –<strong>на</strong> первом из них для всех <strong>автоматов</strong>, описываемых особями текущегопоколения, проводится 500 игр против заданной стратегии поведениявторого агента. Если в текущем поколении <strong>на</strong>ходится автомат, который порезультатам этого вычисления показывает результат, превосходящий<strong>на</strong>илучший автомат, рассмотренный в процессе работы алгоритма, то дляавтомата из текущего поколения проводится более точное вычислениефункции приспособленности – по итогам 10 000 игр.В качестве метода отбора, применяемого при генерации новогопоколения, использовалась комби<strong>на</strong>ция пропорцио<strong>на</strong>льного отбора иэлитизма. Это оз<strong>на</strong>чает, что особь, имеющая <strong>на</strong>ибольшее з<strong>на</strong>чениефункции приспособленности в текущем поколении <strong>на</strong>прямую переходилав следующее, а для остальных вероятность перехода былапропорцио<strong>на</strong>ль<strong>на</strong> з<strong>на</strong>чению функции приспособленности.Вычислительные эксперименты проводились при з<strong>на</strong>чениях числасостояний в генерируемых автоматах от одного до десяти. Их результатыпоказывают, что при решении этой задачи существенное преимуществоимеют автоматы, имеющие более двух состояний. Автоматы с числомсостояний от трех до десяти показывали примерно оди<strong>на</strong>ковые


58результаты – около 90% побед. Кроме этого, были проведеныэксперименты, в которых в процессе мутации разрешалось добавлять иудалять состояния – в этом случае было замечено, что в построенныхавтоматах используется меньше половины состояний. На основаниирезультатов экспериментов был сделан вывод о том, что операциидобавления и удаления состояний являются слишком «разрушительными»для их применения в эволюционных алгоритмах <strong>построения</strong> <strong>автоматов</strong>.А<strong>на</strong>лиз поведения агентов, управляемых построенными автоматами,показал, что поведение агента достаточно быстро зацикливается, чтоприводит к ухудшению его результатов. Для того чтобы устранить этотнедостаток, в рассматриваемой работе предлагается метод, основанный <strong>на</strong><strong>на</strong>блюдении за поведением агента во время игры. Этот метод состоит втом, что к автомату добавляется память размером в 20 ячеек, котораяпозволяет отслеживать циклы в поведении агента. В этой памятизаписывались ячейки, посещенные агентом. Если далее об<strong>на</strong>руживалось,что действие, генерируемое автоматом, приводит к зацикливанию, тодействие выбиралось случайным образом. Применение такого методапозволило построить систему управления агентом, которая добиваласьпобед в 96% игр. Описанный метод устранения зацикливания являетсяодной из разновидностей ди<strong>на</strong>мической верификации [101].1.3.2. <strong>Методы</strong>, использующие обучающие примеры привычислении функции приспособленностиВ <strong>на</strong>стоящем разделе приводится обзор методов <strong>построения</strong><strong>конечных</strong> <strong>автоматов</strong>, использующих обучающие примеры (тесты) привычислении функции приспособленности.1.3.2.1. Построение <strong>конечных</strong> распоз<strong>на</strong>вателейРассматриваемая ниже модель в литературе обычно <strong>на</strong>зывается«детерминированный конечный автомат». В <strong>на</strong>стоящей работе, од<strong>на</strong>ко, для


59того чтобы отличать автоматы такого типа от управляющих <strong>конечных</strong><strong>автоматов</strong> и <strong>конечных</strong> преобразователей для этой модели используетсятермин «конечный распоз<strong>на</strong>ватель»,.Конечным распоз<strong>на</strong>вателем A <strong>на</strong>зывается пятерка (Q, Σ, δ, q 0 , F), гдеQ – множество состояний автомата, Σ – его входной алфавит, δ – функцияпереходов, q 0 – <strong>на</strong>чальное состояние, F – множество допускающихсостояний. Аргументами функции переходов являются текущее состояниеи входной символ, а з<strong>на</strong>чением – новое состояние.Из теории формальных языков известно, что конечныедетерминированные автоматы способны распоз<strong>на</strong>вать регулярныеязыки [26]. В связи с этим в ряде работ рассматривалась задача <strong>построения</strong>по множеству примеров автомата, распоз<strong>на</strong>ющего некий язык. Длярешения этой задачи успешно применялись генетические алгоритмы.Задача может быть усиле<strong>на</strong> до <strong>построения</strong> автомата с минимальнымчислом состояний. В работе [61] показано, что эта задача является NPполной.В работе [38] автоматы представлялись с помощью таблицыпереходов. Разработанный в этой работе метод позволяет поддерживать впопуляции автоматы с разным числом состояний. Функцияприспособленности учитывает три компонента – число вернораспоз<strong>на</strong>нных обучающих примеров, число состояний и переходовавтомата, степень общности языка, соответствующего построенномуавтомату. Это позволяет сузить область поиска, и <strong>на</strong>ходить языки,соответствующие определенным критериям. В обучающий <strong>на</strong>бор могутвходить примеры слов, которые как при<strong>на</strong>длежат, так и не при<strong>на</strong>длежатязыку.Приведем описание генетической операции «репродукция». Числосостояний потомка выбирается случайно из диапазо<strong>на</strong> [k – 2, k + 2], где k –число состояний первого родителя. После этого каждый переход


60копируется из родителей, при этом вероятность копирования перехода иззаданной особи прямо пропорцио<strong>на</strong>ль<strong>на</strong> з<strong>на</strong>чению ее функцииприспособленности. Переходы, представленные только в одном изродителей, копируются из того родителя, в котором присутствуют.Переходы, отсутствующие в обоих родителях, генерируются случайно.Генетическая операция мутации осуществляется изменениемслучайного перехода. При этом переход разрешается удалять. Этоприводит к распаду графа переходов <strong>на</strong> несколько компонент. Результатыэкспериментов показали, что удаление недостижимых состоянийзамедляет построение <strong>конечных</strong> <strong>автоматов</strong>. Поэтому оно неиспользовалось.Предложенный подход был проверен <strong>на</strong> практических задачах.Авторам указанной работы удалось построить автомат из семи состояний,который распоз<strong>на</strong>ет по множеству из ста примеров русские двухсложныеслова.В работе [88] производится сравнение алгоритмов <strong>построения</strong><strong>конечных</strong> <strong>автоматов</strong>-распоз<strong>на</strong>вателей. При этом рассматриваются дватипа алгоритмов: эволюционные и основанные <strong>на</strong> построениипрефиксного дерева и дальнейшем объединении состояний <strong>на</strong> <strong>основе</strong>свидетельств (Evidence-Driven State Merging, далее EDSM).Входными данными для алгоритма <strong>построения</strong> конечного автоматараспоз<strong>на</strong>вателяявляется <strong>на</strong>бор слов, для каждого из которых известно,должно ли оно допускаться автоматом или не должно. Этот <strong>на</strong>бор слов вдальнейшем будет <strong>на</strong>зываться множеством обучающих примеров.Выходными данными для рассматриваемого алгоритма является описаниепостроенного конечного автомата, который удовлетворяет входнымданным.Для представления конечного автомата-распоз<strong>на</strong>вателя врассматриваемой работе применяется таблич<strong>на</strong>я форма задания его


61функции переходов. При этом <strong>на</strong>чальным состоянием всегда считаетсясостояние, имеющее номер «0». В рассматриваемой работерассматриваются только автоматы, обрабатывающие слова <strong>на</strong>ддвухсимвольным алфавитом, поэтому число возможных таблиц переходовдля k состояний равно k 2k . Если учитывать то, что каждое состояниеавтомата может быть допускающим или недопускающим, то общий размерпространства поиска равен 2 k·k 2k .Для сокращения пространства поиска в работе [88] применяетсяспециальный метод определения того, какие состояния автомата являютсядопускающими, а какие – нет. Для этого предлагается использовать так<strong>на</strong>зываемый «алгоритм расстановки пометок» <strong>на</strong> состояниях. Он состоит вследующем. Для каждой строки t из множества обучающих примеров <strong>на</strong>единицу увеличивается з<strong>на</strong>чение h[f(t)][χ], где f(t) – номер состояния, вкоторое приходит рассматриваемый автомат после обработки строки t, ачисло χ равно единице, если строка t долж<strong>на</strong> допускаться автоматом, иравно нулю, если не долж<strong>на</strong> допускаться автоматом. После этого тесостояния s, для которых h[s][1] > h[s][0], помечаются как допускающие, авсе остальные – как недопускающие. За счет применения описанногоалгоритма размер пространства поиска существенно сокращается – егоразмер становится равным k 2k .В качестве эволюционного алгоритма в рассматриваемой работеприменяется метод спуска <strong>на</strong> <strong>основе</strong> случайных мутаций.Для вычисления функции приспособленности определяется долястрок из обучающего <strong>на</strong>бора, которые правильно классифицируются(допускаются или не допускаются) автоматом.Сравнение эволюционного алгоритма проводилась <strong>на</strong> двух <strong>на</strong>борахтестовых данных. Первый <strong>на</strong>бор тестовых данных был предложен в работе[116]. На этом <strong>на</strong>боре входных данных сравнение проводилось не только салгоритмом EDSM, но и с алгоритмом генетического программирования,


62предложенным в работе [116]. Это сравнение показывает, чторазработанный алгоритм эволюционного программирования превосходити алгоритм EDSM, и алгоритм из работы [116], как по точностипостроенных <strong>автоматов</strong>, так и по времени работы. Например, среднеевремя, которое требуется предложенному в рассматриваемой работеалгоритму для <strong>построения</strong> конечного автомата, составляет 1.6миллисекунды, а алгоритму EDSM требуется 37 миллисекунд в среднем(вычислительные эксперименты проводились <strong>на</strong> компьютере спроцессором Pentium IV с тактовой частотой 2.4 ГГц).Второй <strong>на</strong>бор тестовых данных строился следующим образом:1. Выбиралось число m.2. Генерировался случайный ориентированный граф из 5m/4вершин, в котором каждая верши<strong>на</strong> имеет степень два.3. Случайным образом выбиралась верши<strong>на</strong> – <strong>на</strong>чальное состояние.4. Рассматривались все достижимые из <strong>на</strong>чального состояния.5. Каждое из состояний с равной вероятностью становилось либодопускающим, либо недопускающим.6. После этого генерировалось множество строк <strong>на</strong>д двухсимвольнымалфавитом, для каждой из которых с помощью построенного<strong>на</strong> шагах 1 – 5 автомата определялось, допускаетсяо<strong>на</strong> или нет.На этом <strong>на</strong>боре данных эволюционный алгоритм при m = 4, 8, 16превосходил алгоритм EDSM, но при m = 32 ему уступал.На основании проведенных экспериментов был сделан вывод, чторазработанный эволюционный алгоритм превосходит алгоритм EDSM втом случае, когда необходимо построить автомат с относительнонебольшим числом состояний, а множество обучающих примеровсодержит небольшую долю строк заданной длины.


63В работе [89] также рассматривается задача <strong>построения</strong> <strong>конечных</strong><strong>автоматов</strong>-распоз<strong>на</strong>вателей с помощью эволюционных алгоритмов.Предлагаемый в рассматриваемой работе эволюционный алгоритмявляется улучшенной версией алгоритма, предложенного в работе [88].Конечный распоз<strong>на</strong>ватель в рассматриваемой работе представляетсятак же, как и в работе [88]: в хромосому входит таблица переходов, апометки <strong>на</strong> состояниях расставляются с помощью специальногоалгоритма. В качестве эволюционного алгоритма в работе [89] такжеиспользуется (1+1)-эволюцион<strong>на</strong>я стратегия, но операцию мутациипредлагается выполнять не так, как в работе [88].В последней при выполнении мутации случайным образомвыбиралась од<strong>на</strong> из ячеек таблицы переходов, после этого з<strong>на</strong>чение в нейзаменялось <strong>на</strong> случайно сгенерированное. Предлагаемый врассматриваемой работе метод выполнения операции мутации учитываетповедение автомата при обработке обучающего <strong>на</strong>бора.Для каждого перехода t в автомате вычисляются две величины.Число строк, которые были правильно классифицированы автоматом и приобработке которых использовался переход t, обоз<strong>на</strong>чается как cor(t). Числострок, неправильно классифицированных автоматом и при обработкекоторых использовался переход t, обоз<strong>на</strong>чается как err(t). При этомвероятность того, что переход t будет выбран при выполнении операциимутации, вычисляется по формуле:err( t)p(t)cor( t) err( t).Здесь p(t) = 0, еслиerr(t) = 0. Такой подход к выполнению операции мутации требуетвыполнения двух проходов для вычисления з<strong>на</strong>чения функцииприспособленности и указанных вероятностей. На первом из нихнеизвестно, какие состояния являются допускающими, а какие – нет. Этотпроход необходим для алгоритма пометки состояний. На втором проходе


64известно, какие состояния являются допускающими, поэтому указанныевероятности могут быть вычислены.Кроме описанного способа выполнения операции мутации врассматриваемой работе также предлагается метод: для каждого состояниязапоми<strong>на</strong>ются строки, которые оно должно принимать, и строки, котороеоно должно не принимать. В соответствии с алгоритмом расстановкипометок, состояние будет допускающим, если строк, которое оно должнодопускать больше, чем строк, которое оно не должно допускать, инедопускающим – в противном случае. При выполнении операциимутации случайным образом выбирается строка, которую автоматклассифицирует неправильно. После этого случайным образом выбираетсяодин из переходов, которые используется при обработке выбраннойстроки. Изменению подвергается та ячейка таблицы переходов, котораяему соответствует.Для сравнения алгоритмов в рассматриваемой работе применялосьдва <strong>на</strong>бора тестовых данных. Первый строился так же, как второй <strong>на</strong>бортестовых данных в работе [88] (описание приведено выше). Второй <strong>на</strong>борданных был зашумленным – для некоторых строк из обучающего <strong>на</strong>борабыло неправильно указано, должны они допускаться автоматом или нет.На первом <strong>на</strong>боре данных проводилось сравнение четырехалгоритмов: не использующего алгоритм расстановки пометок (plain); метода из работы [88] (smart labeling); метода, использующего первый из предлагаемых в рассматриваемойработе подходов к выполнению операции мутации (sampled); метода, использующего второй из предлагаемых в рассматриваемойработе подходов к выполнению операции мутации (quick-sampled).Результаты вычислительных экспериментов показали, что привосьми состояниях автомата, <strong>на</strong> <strong>основе</strong> которого генерировались


65обучающие <strong>на</strong>боры, из 50 случаев алгоритм plain построил автомат в 26,алгоритм smart labeling – в 42, алгоритм sampled – в 47, а алгоритм quicksampled– в 43. При использовании автомата из 16 состояний результатыбыли такими: plain – 5 из 50, smart – 21 из 50, sampled – 26 из 50, quicksampled– 4 из 50. Если же в исходном автомате было 32 состояния, тотолько два алгоритма справились с задачей: smart правильно строилавтомат в 6 случаях из 50, а sampled – в 12 случаях из 50.Как отмечалось выше, второй <strong>на</strong>бор данных содержал зашумленныеобучающие <strong>на</strong>боры. На этом <strong>на</strong>боре данных сравнение проводилось салгоритмом EDSM и с другими алгоритмами, участвовавшими всоревновании в рамках конференции GECCO 2004 [144]. Результатывычислительных экспериментов показали, что предлагаемый врассматриваемой работе эволюционный алгоритм (sampled) превосходитвсе существующие алгоритмы <strong>построения</strong> <strong>автоматов</strong> <strong>на</strong> этом обучающем<strong>на</strong>боре по точности их <strong>построения</strong>. При этом отметим, что предложенныйалгоритм эффективен только для <strong>построения</strong> <strong>автоматов</strong> из относительнонебольшого числа состояний (порядка нескольких десятков), в то времякак с помощью алгоритма EDSM могут быть успешно построены автоматыиз сотен состояний.В работе [115] также рассматривается задача <strong>построения</strong> <strong>конечных</strong><strong>автоматов</strong>-распоз<strong>на</strong>вателей. В качестве метода представления <strong>конечных</strong><strong>автоматов</strong> выбраны двоичные строки, в качестве операций мутации искрещивания используется однородное скрещивание и мутация.В качестве исходных данных для генетического алгоритмавыступают пары, состоящие из входных слов и последовательностейпометок состояний, которые используются при обработкесоответствующих слов.Рассматривается три варианта функции приспособленности. Первыйиз них основан <strong>на</strong> строгом сравнении строк, второй – <strong>на</strong> вычислении


66функции приспособленности, третий – <strong>на</strong> вычислении длины общегопрефикса строк. В качестве метода генерации следующего поколенияиспользуется метод рулетки.Алгоритмы, предлагаемые в рассматриваемой работе, реализованы винструментальном средстве GeSM. В этом инструментальном средстве,кроме самого генетического алгоритма, также реализован алгоритмудаления недостижимых состояний <strong>автоматов</strong>.Экспериментальное исследование разработанных генетическихалгоритмов проводилось <strong>на</strong> задачах <strong>построения</strong> <strong>автоматов</strong> для проверкичетности, элемента задержки <strong>на</strong> два такта, распоз<strong>на</strong>вателя паттернов исчетчика.1.3.2.2. Построение <strong>конечных</strong> преобразователейКонечным преобразователем <strong>на</strong>зывается шестерка (Q, Σ, O, δ, γ, q 0 ),где Q – множество состояний автомата, Σ – его входной алфавит, O – еговыходной алфавит, δ – функция переходов, γ – функция выходов, q 0 –<strong>на</strong>чальное состояние. Аргументами функции переходов являются текущеесостояние и входной символ, а з<strong>на</strong>чением – новое состояние. Аргументамифункции выходов также являются текущее состояние и входной символ, аз<strong>на</strong>чением – символ из выходного алфавита или пустая строка.В работе [90] для <strong>построения</strong> <strong>конечных</strong> преобразователейприменяется (1 + 1)-эволюцион<strong>на</strong>я стратегия. Конечный преобразовательпредставляется в виде <strong>на</strong>бора двух таблиц – з<strong>на</strong>чений функции переходови з<strong>на</strong>чений функции выходов. При этом предполагалось, что <strong>на</strong> каждом изпереходов конечный преобразователь может вывести не более одногосимвола.Входными данными для <strong>построения</strong> конечного автоматараспоз<strong>на</strong>вателяявляется <strong>на</strong>бор обучающих примеров – пар слов, одно изкоторых является входным, а второе – соответствующим ему выходным.


68обоз<strong>на</strong>че<strong>на</strong> функция, з<strong>на</strong>чение которой равно нулю, если з<strong>на</strong>чения ееаргументов совпадают, и единице – в противном случае.При использовании редакционного расстояния функцияприспособленности вычисляется по формуле:edits( s',s'')f max(| s''|,|s''|). Здесь какedits(s’, s’’) обоз<strong>на</strong>чено редакционное расстояние между строками s’ и s’’,которое равно минимальному числу операций вставки, замены илиудаления символа, которые необходимо выполнить, для того чтобыпреобразовать строку s’ в строку s’’. Отметим, что з<strong>на</strong>чения всех трехуказанных функций приспособленности <strong>на</strong>ходятся в отрезке от 0 до 1, приэтом меньшее з<strong>на</strong>чение соответствует большему соответствию выходнойстроки эталону.Экспериментальное исследование алгоритмов проводилось <strong>на</strong> задаче<strong>построения</strong> конечного преобразователя для преобразования представлениядвумерного изображения из цепного кода для четырех <strong>на</strong>правлений вцепной код для восьми <strong>на</strong>правлений. Применялись два <strong>на</strong>бора данных. В«простом» <strong>на</strong>боре было достаточно много коротких строк, а в «сложном» –их доля была <strong>на</strong>много меньше.Результаты экспериментов показали, что <strong>на</strong>илучшие результаты <strong>на</strong>«сложном» <strong>на</strong>боре данных достигаются при использовании функцииприспособленности, основанной <strong>на</strong> редакционном расстоянии. Второй поэффективности является функция, основан<strong>на</strong>я <strong>на</strong> расстоянии Хэмминга, атретьей – основан<strong>на</strong>я <strong>на</strong> строгом сравнении. На «простом» <strong>на</strong>бореситуация примерно такая же, только функции строгого сравнения ивычисления расстояния Хэмминга меняются местами.1.3.3. <strong>Методы</strong>, использующие верификацию при вычислениифункции приспособленностиИзвест<strong>на</strong> только од<strong>на</strong> работа [80], посвящен<strong>на</strong>я построениювзаимодействующих <strong>конечных</strong> <strong>автоматов</strong> с использованием генетического


69программирования с функцией приспособленности, при вычислениикоторой применяется верификация моделей [9]. Верификация моделей –это <strong>на</strong>бор методов и алгоритмов, которые позволяют определять,соответствует ли программа некоторому множеству требований. При этомтребования выражаются <strong>на</strong> языке темпоральной логики – записываютсяутверждения о поведении программы во времени.В рассматриваемой работе применяется темпораль<strong>на</strong>я логика CTL(Computation Tree Logic – логика деревьев вычислений), а для верификациииспользуется система SMV (http://www.cs.cmu.edu/~modelcheck/smv.html).В рассматриваемой работе решается задача <strong>построения</strong> системывзаимодействующих <strong>конечных</strong> <strong>автоматов</strong>. Это оз<strong>на</strong>чает, что автоматы,входящие в систему, имеют общие глобальные переменные и ка<strong>на</strong>лысвязи, по которым могут передаваться сообщения.В качестве входных данных для вычисления функцииприспособленности используется описание системы <strong>автоматов</strong>, а также<strong>на</strong>бор темпоральных формул, которые требуется проверить. Результатомвычисления функции приспособленности является число верных длясистемы <strong>автоматов</strong> формул.В качестве эволюционного алгоритма в рассматриваемой работеприменяется (1+λ)-эволюцион<strong>на</strong>я стратегия. Возможные вариантывыполнения операции мутации таковы: с вероятностью 0.4 добавляется новое состояние; всегда (с вероятностью 1.0) добавляется новое состояние сослучайно выбранной пометкой; с вероятностью 0.3 удаляется случайно выбранный переход; с вероятностью 0.1 изменяется пометка одного из состояний;Экспериментальное исследование разработанного алгоритмапроводилось <strong>на</strong> задаче <strong>построения</strong> автомата управления кофе-машиной.Применялось два <strong>на</strong>бора входных данных. Первый из них содержал восемь


70темпоральных формул, а второй – 17. Второй <strong>на</strong>бор описывал кофемашину,которая обладает большей функцио<strong>на</strong>льностью, чем описываемаяпервым <strong>на</strong>бором. Задача состояла в <strong>на</strong>хождении системы из двух<strong>автоматов</strong>, один из которых описывал поведение пользователя, а второй –кофе-машины.Вычислительные эксперименты проводились следующим образом:выполнялось 30 запусков эволюционного алгоритма, в каждом из которыхпроводилось 20 итераций эволюционного алгоритма. На первом <strong>на</strong>бореданных в 25 из 30 запусков была <strong>на</strong>йде<strong>на</strong> система <strong>автоматов</strong>,удовлетворяющая всем восьми формулам, а в пяти оставшихся –удовлетворяющая семи.На втором <strong>на</strong>боре данных в каждом запуске выполнялось 30итераций эволюционного алгоритма. Ни в одном из запусков не была<strong>на</strong>йде<strong>на</strong> система <strong>автоматов</strong>, удовлетворяющая всем темпоральнымформулам. При этом в семи запусках была <strong>на</strong>йде<strong>на</strong> система <strong>автоматов</strong>, длякоторой выполняются 16 из 17 формул.1.3.4. А<strong>на</strong>лиз эволюционных алгоритмов <strong>построения</strong> <strong>автоматов</strong>Обобщим материал разделов 1.3.1 – 1.3.3, проведя сравнениерассмотренных эволюционных алгоритмов <strong>построения</strong> <strong>автоматов</strong> (табл. 1).Сравнение алгоритмов проводится по следующим параметрам: Тип <strong>конечных</strong> <strong>автоматов</strong>. Тип эволюционного алгоритма. Метод представления особей в эволюционном алгоритме. Метод вычисления функции приспособленности.


71Таблица 1. Сравнитель<strong>на</strong>я характеристика эволюционныхалгоритмов <strong>построения</strong> <strong>автоматов</strong>НазваниеТип <strong>конечных</strong>ТипМетодМетод вычисленияработы<strong>автоматов</strong>эволюционногопредставленфункцииалгоритмаия особей вприспособленностиэволюционномалгоритмеArtificialIntelligenceКонечныйавтоматпреобразователь(μ+λ)- эволюцион<strong>на</strong>ястратегияГрафпереходовНа <strong>основе</strong>моделированияthroughSimulatedEvolution [53]The GenesysSystem:УправляющийконечныйГенетическийалгоритмБитовая строка На <strong>основе</strong>моделированияEvolution as aTheme inArtificial Life[79]автоматEvolutionaryModuleУправляющийконечныйГенетическийалгоритмБитовая строка На <strong>основе</strong>моделированияAcquisition[35]автоматПрименениегенетическихУправляющийконечныйГенетическоепрограммированиеГрафпереходовНа <strong>основе</strong>моделированияалгоритмовдля<strong>построения</strong><strong>автоматов</strong> сминимальнымчисломсостояний длязадачи«Умныймуравей»[157]автоматПрименение Управляющие Генетическое Функции На <strong>основе</strong>


72генетическогоконечныепрограммированиепереходов имоделированияпрограммировавтоматыдействий вания длявидегенерациисокращенных<strong>автоматов</strong> стаблицыбольшимчисломвходныхпеременных[23]МетодУправляющиеГенетическоеФункцииНа <strong>основе</strong>представленияконечныепрограммированиепереходов имоделирования<strong>автоматов</strong>автоматыдействий вдеревьямивиде деревьеврешений длярешенийиспользованиявгенетическомпрограммировании [5]СовместноеУправляющиеГенетическоеТаблицаНа <strong>основе</strong>применениеконечныепрограммированиез<strong>на</strong>чениймоделированиягенетическогоавтоматыфункциипрограммировпереходов иания,таблица<strong>конечных</strong>з<strong>на</strong>чений<strong>автоматов</strong> ифункцииискусственнывыходов,х нейронныхнейрон<strong>на</strong>я сетьсетей длядля обработки<strong>построения</strong>входныхсистемыпеременныхуправлениябеспилотнымлетательнымаппаратом[148]EvolvingУправляющиеГенетическоеТаблицаНа <strong>основе</strong>Finite-Stateконечныепрограммированиез<strong>на</strong>чениймоделирования


73MachineавтоматыфункцииStrategies forпереходов иProtectingтаблицаResourcesз<strong>на</strong>чений[114]функциивыходовLearning DFA:КонечныеМетод спуска <strong>на</strong>ТаблицаНа <strong>основе</strong> обучающихEvolutionавтоматы-<strong>основе</strong> случайныхз<strong>на</strong>ченийпримеровversusраспоз<strong>на</strong>вателимутацийфункцииEvidence DriveпереходовState Merging[88]LearningКонечныеМетод спуска <strong>на</strong>ТаблицаНа <strong>основе</strong> обучающихDeterministicавтоматы-<strong>основе</strong> случайныхз<strong>на</strong>ченийпримеровFiniteраспоз<strong>на</strong>вателимутацийфункцииAutomata withпереходовa Smart StateLabelingAlgorithm [89]A GeneticКонечныеГенетическоеТаблицаНа <strong>основе</strong> обучающихAlgorithm forавтоматы-программированиез<strong>на</strong>ченийпримеровFinite Stateраспоз<strong>на</strong>вателифункцииAutomataпереходовInduction withApplication toPhonotactics[38]GeneticКонечныеГенетическийБитовыеНа <strong>основе</strong> обучающихInference ofавтоматы-алгоритмстрокипримеровFinite Stateраспоз<strong>на</strong>вателиMachines [115]EvolvingКонечныеМетод спуска <strong>на</strong>ТаблицаНа <strong>основе</strong> обучающихFinite-StateTransducers:автоматыпреобразователи<strong>основе</strong> случайныхмутацийз<strong>на</strong>ченийфункциипримеровSome Initialпереходов иExplorationsтаблица[90]з<strong>на</strong>ченийфункциивыходов


74GeneticProgrammingwith FitnessСистема двухвзаимодействующих<strong>конечных</strong> <strong>автоматов</strong>(1+λ)- эволюцион<strong>на</strong>ястратегияГрафыпереходовНа <strong>основе</strong> верификацииbased onModelChecking [80]На основании проведенного обзора можно сделать следующиевыводы: главное отличие управляющих <strong>конечных</strong> <strong>автоматов</strong> от другихтипов <strong>конечных</strong> <strong>автоматов</strong> (<strong>конечных</strong> преобразователей ираспоз<strong>на</strong>вателей) состоят в том, что в пометки переходоввходят булевы формулы, зависящие от входных переменных; для <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> ранееприменялись только методы, использующие вычислениефункции приспособленности <strong>на</strong> <strong>основе</strong> моделирования; в работах, использующих эволюционную стратегию и методспуска (в частности, в работах [80, 89]) выбор этих методовобоснован тем, что для <strong>конечных</strong> <strong>автоматов</strong> труднопредложить осмысленный способ выполнения операциискрещивания; практически нет работ, в которых проводится сравнениеразличных методов <strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong>,основанных <strong>на</strong> алгоритмах поисковой оптимизации. Этоподтверждается работой [69], в которой упоми<strong>на</strong>ется, что вобласти поисковой инженерии ПО <strong>на</strong>блюдается такая жеситуация; только од<strong>на</strong> работа посвяще<strong>на</strong> построению <strong>конечных</strong><strong>автоматов</strong> с вычислением функции приспособленности <strong>на</strong><strong>основе</strong> верификации.


751.4. ЗАДАЧИ, РЕШАЕМЫЕ В ДИССЕРТАЦИОННОЙ РАБОТЕИз выполненного обзора следует, что существующие методы<strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> используют вычислениефункции приспособленности <strong>на</strong> <strong>основе</strong> моделирования и обладаютследующими недостатками: для решения новой задачи необходимо заново писатьпрограмму моделирования для вычисления функцииприспособленности, что может быть весьма трудоемким; каждое вычисление функции приспособленности можеттребовать з<strong>на</strong>чительного времени, так как связано смоделированием поведения автомата в некоторой внешнейсреде.На основании проведенного обзора сформулируем задачи, решаемыев диссертационной работе:1. Разработать метод <strong>построения</strong> управляющих <strong>конечных</strong><strong>автоматов</strong> по обучающим примерам <strong>на</strong> <strong>основе</strong> эволюционныхалгоритмов.2. Разработать метод выполнения операции скрещивания длягенетических алгоритмов, учитывающий поведение <strong>автоматов</strong><strong>на</strong> обучающих примерах.3. Разработать метод <strong>построения</strong> управляющих <strong>конечных</strong><strong>автоматов</strong> по обучающим примерам и темпоральнымформулам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов иверификации.4. Разработать технологию <strong>построения</strong> управляющих <strong>конечных</strong><strong>автоматов</strong> по обучающим примерам и темпоральнымформулам.5. Разработать инструментальное средство для автоматизации<strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong>.


766. Внедрить разработанные методы при построении автоматауправления моделью беспилотного самолета и в учебныйпроцесс.ВЫВОДЫ ПО ГЛАВЕ 11. Приведены результаты обзора работ, посвященных автоматномупрограммированию и поисковой инженерии программногообеспечения.2. Приведен обзор методов <strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong><strong>основе</strong> эволюционных алгоритмов.3. Сформулированы основные недостатки существующих методов<strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong>эволюционных алгоритмов.4. Сформулированы задачи, решаемые в диссертационной работе.


77ГЛАВА 2. МЕТОДЫ ПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХАВТОМАТОВ НА ОСНОВЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ ПООБУЧАЮЩИМ ПРИМЕРАМ И ТЕМПОРАЛЬНЫМ ФОРМУЛАМНастоящая глава посвяще<strong>на</strong> методам <strong>построения</strong> управляющих<strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов: методу <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> пообучающим примерам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов; методу выполнения операции скрещивания с учетомповедения <strong>автоматов</strong> <strong>на</strong> обучающих примерах; методу <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> пообучающим примерам и темпоральным формулам <strong>на</strong> <strong>основе</strong>эволюционных алгоритмов и верификации.2.1. МЕТОД ПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХ АВТОМАТОВПО ОБУЧАЮЩИМ ПРИМЕРАМ НА ОСНОВЕ ЭВОЛЮЦИОННЫХАЛГОРИТМОВВ <strong>на</strong>стоящем разделе описывается разработанный метод <strong>построения</strong>управляющих <strong>конечных</strong> <strong>автоматов</strong> по обучающим примерам (тестам) <strong>на</strong><strong>основе</strong> эволюционных алгоритмов [133, 150, 160, 161].2.1.1. Входные данныеИсходными данными для <strong>построения</strong> конечного автоматауправления системой со сложным поведением являются: множество событий E; множество входных переменных X; множество выходных воздействий Z; множество тестов Tests (число тестов в дальнейшем будетобоз<strong>на</strong>чаться как n); максимальное число состояний в искомом автомате k.


78Опишем структуру тестов: i-й из них состоит из двухпоследовательностей – входной Input[i] и выходной Answer[i].Элементами входной последовательности являются пары (e, f), где e –некоторое событие из множества E, а f – логическая формула от входныхпеременных, задающая условие перехода.2.1.1.1. Предваритель<strong>на</strong>я обработка входных данныхПеред выполнением эволюционного алгоритма производитсяпредваритель<strong>на</strong>я обработка входных данных. Создается список всехусловий, входящих во входные последовательности тестов: f 1 , f 2 , …, f l .Далее строятся две таблицы, содержащие логические з<strong>на</strong>чения: areEquivalent[i, j] – верно ли, что f i и f j эквивалентны; haveCommon[i, j] – верно ли, что f i и f j имеют общуювыполняющую подстановку.Для <strong>построения</strong> этих таблиц перебираются все пары охранныхусловий (f i , f j ), i ≠ j, и для каждой из них строится таблица истинности дляформул (f i ↔ f j ) и !(f i & f j ). Если первая из них является тавтологией, то вячейку таблицы areEquivalent[i, j] записывается з<strong>на</strong>чение«исти<strong>на</strong>», если вторая формула всегда лож<strong>на</strong>, то в ячейку таблицыhaveCommon[i, j] записывается з<strong>на</strong>чение «исти<strong>на</strong>».В дальнейшем информация, содержащаяся в этих таблицах, будетиспользоваться в алгоритме расстановки выходных воздействий и валгоритме удаления дублированных и неодноз<strong>на</strong>чных переходов.Время работы алгоритма <strong>построения</strong> этих таблиц – O(2 2r’·l 2 ), где, каки раньше, r’ – максимальное число входных переменных, от которыхзависит некоторое условие перехода. На практике, как уже отмечалосьвыше, з<strong>на</strong>чение r’ не превышает пяти, что позволяет говорить о том, чтовремя, требуемое <strong>на</strong> предварительную обработку данных пропорцио<strong>на</strong>льноквадрату суммарного размера входных последовательностей.


792.1.2. Выходные данныеВыходные данные должны представлять собой описание автомата,содержащего не более k состояний, удовлетворяющего каждому тесту измножества Tests и обладающего свойством непротиворечивости.Управляющий конечный автомат A удовлетворяет тестуTest = (Input, Answer), если результат обработки входнойпоследовательности Input при старте из <strong>на</strong>чального состояния автоматасовпадает с последовательностью Answer.Результат обработки входной последовательности Input при<strong>на</strong>чале из состояния s определяется рекурсивно: если последовательность Input пуста, то результат ееобработки также является пустой последовательностью; если последовательность Input не пуста, а ее первый элементимеет вид (e, f), то результат обработки последовательностиInput конкате<strong>на</strong>ция двух последовательностей – результатаобработки элемента входной последовательности (e, f) всостоянии s и результата обработки оставшейся частипоследовательности Input при <strong>на</strong>чале из состояния, в котороеведет переход из s по событию e и условию, эквивалентному f.Если результат обработки оставшейся частипоследовательности Input не определен, то и результатобработки последовательности также не определен.Результатом обработки элемента входной последовательности(e, f) в состоянии s является последовательность выходных воздействий,соответствующая переходу, который помечен событием e и условием,эквивалентным f. Если же такого перехода из состояния s нет или такихпереходов несколько, то результат обработки указанного элемента неопределен.


80Например, для автомата управления часами с будильником, графпереходов которого приведен <strong>на</strong> рис. 6, результат обработки элементавходной последовательности (H, true) в состоянии «1. Будильниквыключен» является последовательность, содержащее одно выходноевоздействие – z 1 , результат обработки элемента входнойпоследовательности (A, true) в состоянии «2. Установка временибудильника» – пустая последовательность, результат обработки элементавходной последовательности (T, !x 2 &x 1 ) в состоянии «3. Будильниквключен» – последовательность из двух элементов z 5 , z 6 , а результатобработки элемента (T, x 2 &x 1 ) в состоянии «3. Будильник включен» неопределен.Результат обработки входной последовательности (A, true), (M, true)при <strong>на</strong>чале из состояния «1. Будильник выключен» – последовательностьиз одного элемента z 4 , а результат обработки входной последовательности(A, true), (A, true), (T, x 2 &x 1 ) при <strong>на</strong>чале из того же состояния не определен.2.1.3. Представление управляющего конечного автомата в видеособи в эволюционных алгоритмахКонечный автомат в эволюционных алгоритмах предлагаетсяпредставлять в виде объекта, который содержит описания переходов длякаждого из состояний. Во всех автоматах, рассматриваемых в процессеработы эволюционных алгоритмов, номер <strong>на</strong>чального состояния равеннулю. Для каждого из состояний хранится список переходов. Каждыйпереход описывается событием, при поступлении которого этот переходвыполняется, условием перехода и числом выходных воздействий, которыедолжны быть сгенерированы при выборе этого перехода. При этом вкачестве условий переходов используются булевы формулы,встречающиеся во входных последовательностях тестов. На рис. 19приведен пример автомата и его представления в виде особиэволюционного алгоритма.


81A [x] / 00 1T [!x] / 1M / 2T / 1{2, {{A, x, 1, 0}, {T, !x, 1, 1}}, {{T, true, 1, 1},{M, true, 0, 2}}}Рис. 19. Представление конечного автомата в виде особиэволюционного алгоритмаДля <strong>построения</strong> <strong>автоматов</strong> в <strong>на</strong>стоящей работе существующиеэволюционные алгоритмы предлагается модифицировать, добавив передвычислением функции приспособленности в каждый из нихдополнительный шаг – расстановку выходных воздействий. Он необходим,так как особь в эволюционном алгоритме представляет собой «каркас»автомата. При этом расстановка выходных воздействий долж<strong>на</strong>выполняться так, чтобы з<strong>на</strong>чение функции приспособленностиполучившегося в результате автомата было максимальным или близким кнему.2.1.4. Алгоритм расстановки выходных воздействийОпишем алгоритм расстановки выходных воздействий длядискретных воздействий. Как было сказано выше, для каждого перехода вособи эволюционного алгоритма записано, сколько выходных воздействийдолжно вырабатываться при его выборе.Подадим <strong>на</strong> вход конечного автомата входную последовательность,соответствующую одному из тестов, и будем <strong>на</strong>блюдать, за тем, какиепереходы выполняет автомат (для определения этих переходов


82необходимо использовать з<strong>на</strong>чения из таблицы areEquivalent). З<strong>на</strong>яэти переходы и информацию о том, сколько выходных воздействийдолжно быть сгенерировано <strong>на</strong> каждом переходе, можно определить, какиевыходные воздействия должны вырабатываться <strong>на</strong> переходах,использовавшихся при обработке входной последовательности.Например, пусть входной последовательности событийA, T, T, M, H, T, T соответствует выход<strong>на</strong>я последовательность z 5 , z 5 , z 4 , z 3 ,z 5 , z 5 , и при обработке входной последовательности выполняютсяследующие переходы: 1 → 2 → 2 → 2 → 3 → 4 → 2 → 2. Пусть при этом<strong>на</strong> первом из переходов не должно выполняться ни одно выходноевоздействие, а <strong>на</strong> каждом из остальных – должно выполнятьсяодно (рис. 20).1A [x 1 ] / 02T [x 2 ] / 1T [x 1 ] / 1M [x 1 ] / 14 3H [x 2 ] / 1Рис. 20. Некоторые переходы «каркаса» автоматаНа рис. 20 для каждого из переходов, кроме события, привозникновении которого он выполняется, указано число выходныхвоздействий, которые ему соответствуют.Тогда <strong>на</strong> основании этого теста можно сделать вывод о том, что <strong>на</strong>переходе по событию T из второго состояния в себя должновырабатываться выходное воздействие z 5 , <strong>на</strong> переходе по событию M извторого состояния в третье должно вырабатываться выходное воздействие


83z 4 , <strong>на</strong> переходе по событию H из третьего состояния в четверное должновырабатываться z 5 , а <strong>на</strong> переходе по событию T из четвертого состояния вовторое – z 3 (рис. 21).1A [x 1 ] /2T [x 2 ] / z 5T [x 1 ] / z 5M [x 1 ] / z 34 3H [x 2 ] / z 4Рис. 21. Помеченные <strong>на</strong> основании теста переходы автоматаТаким образом, <strong>на</strong> основании одного теста можно расставитьвыходные воздействия <strong>на</strong> части переходов автомата. Если тестов большеодного, то возможны различные ситуации: может оказаться, что в разных тестах используется один и тотже переход, но <strong>на</strong> этих тестах при выборе этого переходадолжны генерироваться одни и те же выходные воздействия; может оказаться, что в разных тестах используется один и тотже переход, но при его выборе должны генерироваться разныевыходные воздействия (имеется противоречие).В первом случае ситуация а<strong>на</strong>логич<strong>на</strong> ситуации с одним тестом. Вовтором случае этот переход помечается тем выходным воздействием,которое чаще всего вырабатывается <strong>на</strong> нем в тестах.Этот же принцип можно распространить <strong>на</strong> случай, когда <strong>на</strong>переходе должно вырабатываться более одного выходного воздействия.Для каждого перехода T и каждой последовательности выходныхвоздействий zs вычисляется величи<strong>на</strong> C[T][zs] – число раз, когда приобработке входной последовательности, соответствующей одному из


84тестов, <strong>на</strong> переходе T должны быть выработаны выходные воздействия,образующие последовательность zs. Далее, каждый переход помечаетсятой последовательностью zs 0 , для которой величи<strong>на</strong> C[T][zs 0 ] максималь<strong>на</strong>.2.1.5. Вычисление функции приспособленностиФункция приспособленности в этом случае основывается <strong>на</strong>редакционном расстоянии. Для ее вычисления выполняются следующиедействия: <strong>на</strong> вход автомату подается каждая из последовательностейInput[i]. Обоз<strong>на</strong>чим как Output[i] последовательность выходныхвоздействий, которую сгенерировал автомат при входе Input[i]. Послеэтого вычисляется величи<strong>на</strong>FF1ni1ED(Output[i],Answer[i])(1 )max(| Output[i] |,| Answer[ i] |)n, гдеED(A, B) – редакционное расстояние между последовательностями A и B.Отметим, что з<strong>на</strong>чение этой величины лежит в пределах от 0 до 1. Приэтом, чем «лучше» автомат соответствует тестам, тем больше ее з<strong>на</strong>чение.Функция приспособленности зависит не только от того, <strong>на</strong>сколько«хорошо» автомат работает <strong>на</strong> тестах, но и от числа переходов, которые онсодержит. О<strong>на</strong> вычисляется по формуле:FF2 110 FF1 ( M cnt),FF1 1M 120 ( M cnt),FF1 1 Mгде M – число, заведомо большее числа переходов в автомате (вэкспериментах M выбиралось равным 100), а cnt – число переходов вавтомате, кодируемом рассматриваемой особью.Учет числа переходов в функции приспособленности необходим подвум причи<strong>на</strong>м. Во-первых, минимизация числа переходов приводит ктому, что в результирующем автомате отсутствуют не используемые втестах переходы. Во-вторых, чем меньше в автомате переходов, тем более«общее» поведение он задает. Таким образом, решается проблемапереобучения (overfitting), состоящая в том, что автомат демонстрирует,


85правильное поведение только <strong>на</strong> входных последовательностях,соответствующих <strong>на</strong>бору тестов.Оценим время вычисления функции приспособленности. Длявычисления редакционного расстояния применяется алгоритмди<strong>на</strong>мического программирования [10], время работы которогопропорцио<strong>на</strong>льно произведению длин последовательностей, для которыхоно вычисляется. На вход этому алгоритму подаются двепоследовательности A = A 1 …A |A| и B = B 1 …B |B| . Он основан <strong>на</strong> заполнениитаблицы ED, которая определяется следующим образом: элемент ED[i, j]равен редакционному расстоянию между последовательностями A 1 …A i иB=B 1 …B j .Таким образом, время вычисления функции приспособленностиnсоставляет O ( | Output[i] | | Answer[ i]|) . Заметим также, что добавление вi1<strong>на</strong>бор тестов их префиксов не увеличивает времени вычисления функцииприспособленности, так как достаточно вычислить редакционноерасстояние только для «самых больших» тестов, а для префиксовредакционное расстояние взять из таблицы, вычисляемой алгоритмомди<strong>на</strong>мического программирования.2.1.6. Операция мутации, использующаяся в методе спуска <strong>на</strong><strong>основе</strong> случайных мутаций и в генетическом алгоритмеПри выполнении операции мутации с заданной вероятностью (поумолчанию, о<strong>на</strong> рав<strong>на</strong> 0.05) выполняется одно из действий: изменениеописания каждого из переходов и удаление или добавление перехода длякаждого состояния.При изменении описания перехода с равной вероятностьювыполняется одно из следующих действий: Изменение состояния, в которое ведет переход (изменяется <strong>на</strong>случайно выбранное).


86 Изменение события, по которому выполняется переход(изменяется <strong>на</strong> случайно выбранное). Изменение числа выходных воздействий, вырабатываемых <strong>на</strong>этом переходе (с равной вероятностью это число либоуменьшается <strong>на</strong> единицу, либо увеличивается <strong>на</strong> единицу, нопри этом не может стать отрицательным или превзойтинекоторое заданное ограничение). Изменение условия (изменяется <strong>на</strong> случайно выбранное изчисла тех, которые встречаются в тестах вместе с событием,которым помечен переход).2.1.7. Операция удаления дублированных и противоречивыхпереходовОбоз<strong>на</strong>чим L in список переходов, поступающих <strong>на</strong> вход операцииудаления дублированных и противоречивых переходов, а списокпереходов, получающийся в результате этой операции, – L out . Для егоформирования выполняются следующие операции: по очереди рассматриваются переходы, входящие в список L in ; очередной переход t добавляется в L out , если в нем еще нетперехода, помеченного тем же событием, что и t, и охраннымусловием, имеющим общую выполняющую подстановку сохранным условием перехода t.2.1.8. Операция мутации, использующаяся в эволюционнойстратегииТак как в эволюционной стратегии операции мутации долж<strong>на</strong> бытьустрое<strong>на</strong> таким образом, чтобы в ее результате мог получиться любойэлемент пространства поиска, то о<strong>на</strong> выполняется следующим образом.Выбирается случайным образом число x из геометрическогораспределения с вероятностью успеха, равной 0.5. После этого к


87поступившей <strong>на</strong> вход особи (x + 1) раз применяется мутация,использующаяся в методе спуска и эволюционной стратегии.2.1.9. Генетический алгоритмВ <strong>на</strong>стоящем разделе описывается генетический алгоритм,предложенный в <strong>на</strong>стоящей работе для <strong>построения</strong> управляющих<strong>конечных</strong> <strong>автоматов</strong> по тестам.2.1.9.1. Генерация <strong>на</strong>чального поколенияНачальное поколение заполняется автоматами, сгенерированнымислучайным образом. При этом все автоматы содержат оди<strong>на</strong>ковое числосостояний, из каждого их которых число переходов определяетсяслучайным образом в диапазоне от нуля до числа событий, которыеприсутствуют в рассматриваемой системе со сложным поведением.2.1.9.2. Формирование следующего поколенияВ качестве основной стратегии формирования следующегопоколения используется элитизм [2]. При обработке текущего поколенияотбрасываются все особи, кроме нескольких <strong>на</strong>иболее приспособленных.Доля выживающих особей постоян<strong>на</strong> для каждого поколения и являетсяодним из параметров алгоритма.Эти особи переходят в следующее поколение. После этого онодополняется до требуемого размера следующим образом: пока оно незаполнено выбираются две особи из текущего поколения, и они снекоторой вероятностью скрещиваются или мутируют. Обе особи,полученные в результате мутации или скрещивания, добавляются в новоепоколение.Кроме этого, если <strong>на</strong> протяжении достаточно большого числапоколений не происходит увеличения приспособленности, то применяются«малая» и «большая» мутации поколения. При «малой» мутации


88`поколения ко всем особям, кроме 10% лучших, применяется оператормутации. При «большой» мутации каждая особь либо мутирует, либозаменяется <strong>на</strong> случайно сгенерированную.Число поколений до «малой» и «большой» мутации постоянно вовремя работы алгоритма, но может быть различным для разных егозапусков.2.1.10. Операция скрещиванияСкрещивание особей производится следующим образом. Обоз<strong>на</strong>чимкак P1 и P2 «родительские» особи, а как S1 и S2 – особи-«потомки».Начальные состояния S1.is и S2.is имеют номер ноль. Как было отмеченовыше, у всех особей нулевое состояние является <strong>на</strong>чальным.Опишем, как устроены переходы <strong>автоматов</strong> S1 и S2. Скрещиваниеописаний <strong>автоматов</strong> производится отдельно для каждого состояния.Обоз<strong>на</strong>чим список переходов из состояния номер i автомата P1 как P1.T[i],а список переходов из состояния номер i автомата P2 как P2.T[i].При использовании традиционного метода скрещивания спискипереходов S1.T[i] и S2.T[i] строятся следующим образом:1. Строится общий список переходов, в который помещаютсяпереходы, входящие как в P1.T[i], так и в P2.T[i].2. К полученному списку применяется случай<strong>на</strong>я перестановка.3. Далее возможны два равновероятных варианта: либо в S1.T[i] помещаются первые |P1.T[i]|переходов из полученного списка, а в S2.T[i] –оставшиеся переходы; либо в S1.T[i] помещаются первые |P2.T[i]|переходов из полученного списка, а в S2.T[i] –оставшиеся переходы.


89К получившимся в результате скрещивания автоматам S1 и S2применяется операция удаления дублированных и противоречивыхпереходов.2.1.11. Совместное использование генетическогоалгоритма, эволюционной стратегии и метода спуска <strong>на</strong><strong>основе</strong> случайных мутацийВ процессе проведения вычислительных экспериментов сописанными выше алгоритмами была замече<strong>на</strong> следующая особенностьэволюционной стратегии и метода спуска <strong>на</strong> <strong>основе</strong> случайных мутаций –в ряде запусков целевое з<strong>на</strong>чение функции приспособленностидостигалось очень быстро – в процессе работы алгоритм рассматривал неболее 10 000 особей. Как правило, это происходило тогда, когдасгенерированное случайным образом <strong>на</strong>чальное решение обладалодостаточно высоким з<strong>на</strong>чением функции приспособленности.В то же время алгоритм генетического программирования в каждомиз запусков использовал более 10 000 вычислений функцииприспособленности. Это объясняется тем, что даже если у лучшей особи впоколении з<strong>на</strong>чение функции приспособленности близко к целевому, то впроцессе ее «доведения» до оптимума будет проведено достаточно многовычислений функции приспособленности, так как о<strong>на</strong> будет вычислятьсяне только для этой особи, но и для всех других особей, входящих впоколение.Поэтому в число рассматриваемых алгоритмов были добавленыгибридные алгоритмы, в которых до достижения лучшей особью з<strong>на</strong>ченияфункции приспособленности в 95% от целевого используетсягенетический алгоритм, а далее получен<strong>на</strong>я лучшая особь оптимизируетсяс помощью эволюционной стратегии или метода спуска <strong>на</strong> <strong>основе</strong>случайных мутаций.


902.2. МЕТОД ВЫПОЛНЕНИЯ ОПЕРАЦИИ СКРЕЩИВАНИЯ С УЧЕТОМПОВЕДЕНИЯ АВТОМАТОВ НА ОБУЧАЮЩИХ ПРИМЕРАХКак и ранее, обоз<strong>на</strong>чим как P1 и P2 «родительские» особи, а как S1 иS2 – особи-«потомки». Начальные состояния S1.is и S2.is имеют номерноль – как было отмечено выше, у всех особей нулевое состояние является<strong>на</strong>чальным.Опишем, как устроены переходы <strong>автоматов</strong> S1 и S2. Скрещиваниеописаний <strong>автоматов</strong> производится отдельно для каждого состояния.Обоз<strong>на</strong>чим список переходов из состояния номер i автомата P1 как P1.T[i],а список переходов из состояния номер i автомата P2 как P2.T[i].При использовании предлагаемого в <strong>на</strong>стоящей диссертации методаскрещивания с учетом поведения <strong>автоматов</strong> <strong>на</strong> обучающихпримерах [170] списки переходов S1.T[i] и S2.T[i] строятся следующимобразом:1. В автоматах P1 и P2 помечаются те переходы, которыевыполняются при обработке 10% тестов, для которыхнормированное редакционное расстояние между «правильнымответом» Answer и последовательностью Output выходныхвоздействий, генерируемой автоматом,ED(Output[i],Answer[i])max(| Output[i]|,|Answer[ i]|)минимально.2. Список переходов S1.T[i] формируется следующим образом:с<strong>на</strong>чала в него копируются помеченные переходы из P1.T[i],затем помеченные переходы из P2.T[i], а затем непомеченныепереходы из P1.T[i].3. Список переходов S2.T[i] формируется следующим образом:с<strong>на</strong>чала в него копируются помеченные переходы из P2.T[i],затем помеченные переходы из P1.T[i], а затем непомеченныепереходы из P2.T[i].


91К получившимся в результате скрещивания автоматам S1 и S2применяется операция удаления дублированных и противоречивыхпереходов.2.3. ЭКСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ МЕТОДОВПОСТРОЕНИЯ УПРАВЛЯЮЩИХ АВТОМАТОВ ПО ОБУЧАЮЩИМПРИМЕРАМ НА ОСНОВЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВВ <strong>на</strong>стоящем разделе описываются результаты экспериментальногоисследования эволюционных алгоритмов для <strong>построения</strong> управляющих<strong>конечных</strong> <strong>автоматов</strong> [170]. Рассматриваются шесть алгоритмов: генетический алгоритм, в котором используется толькотрадиционный метод выполнения операции скрещивания(далее обоз<strong>на</strong>чается ГА-1); метод спуска <strong>на</strong> <strong>основе</strong> случайных мутаций (МС); (1+1)-эволюцион<strong>на</strong>я стратегия (ЭС); генетический алгоритм, в котором используется толькооперация скрещивания <strong>на</strong> <strong>основе</strong> тестов (ГА-2); алгоритм, использующий совместно ГА-2 и метод спуска <strong>на</strong><strong>основе</strong> случайных мутаций (ГА-2 + МС); алгоритм, использующий совместно ГА-2 и метод спуска <strong>на</strong><strong>основе</strong> случайных мутаций (ГА-2 + ЭС).2.3.1. Построение автомата управления часами с будильникомВ <strong>на</strong>стоящем разделе описывается результаты экспериментальногоисследования указанных эволюционных алгоритмов <strong>на</strong> задаче <strong>построения</strong>автомата управления часами с будильником, описанной в разд. 1.1.3.2.3.1.1. Набор тестовВ систему тестов для <strong>построения</strong> автомата управления часами сбудильником включены тесты, описывающие его работу во всех трех


92режимах. Тесты, описывающие поведение часов с будильником в режимеработы «Будильник выключен», приведены в табл. 2. В этой таблице, есливо входной последовательности для некоторого события не указаноусловие перехода, считается, что условием является тождественноистин<strong>на</strong>я формула.Таблица 2. Тесты для режима работы «Будильник выключен»ТестInput: T, T, T, TAnswer: z 5 , z 5 , z 5 , z 5Input: H, H, H, HAnswer: z 1 , z 1 , z 1 , z 1Input: M, M, M, MAnswer: z 2 , z 2 , z 2 , z 2Input: T, M, H, T, T, T, M,T, H, H, T, MAnswer: z 5 , z 2 , z 1 , z 5 , z 5 , z 5 ,КомментарийОписывает обработку часами события«Сработал таймер». При возникновении этогособытия текущее время должно бытьувеличено <strong>на</strong> минуту.Описывает обработку часами <strong>на</strong>жатия кнопки«H». При <strong>на</strong>жатии <strong>на</strong> эту кнопку число часовв текущем времени должно быть увеличено<strong>на</strong> единицу.Описывает обработку часами <strong>на</strong>жатия кнопки«M». При <strong>на</strong>жатии <strong>на</strong> эту кнопку число минутв текущем времени должно быть увеличено<strong>на</strong> единицу.Описывает обработку событий H, M и T врежиме «Будильник выключен».z 2 , z 5 , z 1 , z 1 , z 5 , z 2Input: A, A, A, T, T, T, T После трех <strong>на</strong>жатий кнопки «A» часы должныAnswer: z 7 , z 5 , z 5 , z 5 , z 5 <strong>на</strong>ходиться в режиме «Будильник выключен».Input: A, A, A, H, H, H, H После трех <strong>на</strong>жатий кнопки «A» часы должныAnswer: z 7 , z 1 , z 1 , z 1 , z 1 <strong>на</strong>ходиться в режиме «Будильник выключен».Input: A, A, A, M, M, M, M После трех <strong>на</strong>жатий кнопки «A» часы должны


93Answer: z 7 , z 2 , z 2 , z 2 , z 2<strong>на</strong>ходиться в режиме «Будильник выключен».Тесты, описывающие поведение часов с будильником в режимеработы «Настройка будильника», приведены в табл. 3.Таблица 3. Тесты для режима работы «Настройка будильника»ТестInput: A, T, T, T, TAnswer: z 5 , z 5 , z 5 , z 5Input: A, H, H, H, HAnswer: z 3 , z 3 , z 3 , z 3Input: A, M, M, M, MAnswer: z 4 , z 4 , z 4 , z 4Input: A, T, M, H, T, T, T,M, T, H, H, T, MAnswer: z 5 , z 4 , z 3 , z 5 , z 5 , z 5 ,z 4 , z 5 , z 3 , z 3 , z 5 , z 4Input: A, A, A, A, TAnswer: z 7 , z 5КомментарийОписывает обработку часами события«Сработал таймер». При возникновении этогособытия текущее время должно бытьувеличено <strong>на</strong> минуту.Описывает обработку часами <strong>на</strong>жатия кнопки«H». При <strong>на</strong>жатии <strong>на</strong> эту кнопку число часовво времени срабатывания будильника должнобыть увеличено <strong>на</strong> единицу.Описывает обработку часами <strong>на</strong>жатия кнопки«M». При <strong>на</strong>жатии <strong>на</strong> эту кнопку число минутво времени срабатывания будильника должнобыть увеличено <strong>на</strong> единицу.Описывает обработку событий H, M и T врежиме «Настройка будильника».После четырех <strong>на</strong>жатий кнопки «A» часыдолжны <strong>на</strong>ходиться в режиме «Настройкабудильника». Описывается обработкасрабатывания таймера.


94Input: A, A, A, A, T, T, T, TAnswer: z 7 , z 5 , z 5 , z 5 , z 5Input: A, A, A, A, HAnswer: z 7 , z 3Input: A, A, A, A, H,H, H, HAnswer: z 7 , z 3 , z 3 , z 3 , z 3Input: A, A, A, A, MAnswer: z 7 , z 4Input: A, A, A, A, M,M, M, MAnswer: z 7 , z 4 , z 4 , z 4 , z 4После четырех <strong>на</strong>жатий кнопки «A» часыдолжны <strong>на</strong>ходиться в режиме «Настройкабудильника». Описывается обработканескольких срабатываний таймера.После четырех <strong>на</strong>жатий кнопки «A» часыдолжны <strong>на</strong>ходиться в режиме «Настройкабудильника». Описывается обработка<strong>на</strong>жатия кнопки «H».После четырех <strong>на</strong>жатий кнопки «A» часыдолжны <strong>на</strong>ходиться в режиме «Настройкабудильника». Описывается обработканескольких <strong>на</strong>жатий кнопки «H».После четырех <strong>на</strong>жатий кнопки «A» часыдолжны <strong>на</strong>ходиться в режиме «Настройкабудильника». Описывается обработка<strong>на</strong>жатия кнопки «M».После четырех <strong>на</strong>жатий кнопки «A» часыдолжны <strong>на</strong>ходиться в режиме «Настройкабудильника». Описывается обработканескольких <strong>на</strong>жатий кнопки «M».Тесты, описывающие поведение часов с будильником в режимеработы «Будильник включен», приведены в табл. 4.Таблица 4. Тесты для режима работы «Будильник включен»ТестInput: A, A, H, H, H, HAnswer: z 1 , z 1 , z 1 , z 1КомментарийОписывает обработку часами <strong>на</strong>жатия кнопки«H». При <strong>на</strong>жатии <strong>на</strong> эту кнопку число часовв текущем времени должно быть увеличено


95Input: A, A, M, M, M, MAnswer: z 2 , z 2 , z 2 , z 2Input: A, A, T [!x 1 & !x 2 ]Answer: z 5Input: A, A, T [!x 1 & !x 2 ],T [!x 1 & !x 2 ], T [!x 1 & !x 2 ]Answer: z 5 , z 5 , z 5Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ]Answer: z 5 , z 5 , z 6 , z 5 , z 7Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ]Answer: z 5 , z 5 , z 6Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ], HAnswer: z 5 , z 5 , z 6 , z 5 , z 7 , z 1Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ], MAnswer: z 5 , z 5 , z 6 , z 5 , z 7 , z 2<strong>на</strong> единицу.Описывает обработку часами <strong>на</strong>жатия кнопки«M». При <strong>на</strong>жатии <strong>на</strong> эту кнопку число минутв текущем времени должно быть увеличено<strong>на</strong> единицу.Описывает обработку часами события«Сработал таймер» при условии, что текущеевремя не совпадает со временемсрабатывания будильника или со временемсрабатывания будильника, увеличенными <strong>на</strong>минуту. Текущее время должно бытьувеличено <strong>на</strong> минуту.Расширение предыдущего теста.Описывает обработку события «Сработалтаймер» при различных з<strong>на</strong>чениях входныхпеременных.Префикс предыдущего теста.Описывает обработку события «Сработалтаймер» при различных з<strong>на</strong>чениях входныхпеременных, а также обработку <strong>на</strong>жатиекнопки «H».Описывает обработку события «Сработалтаймер» при различных з<strong>на</strong>чениях входныхпеременных, а также обработку <strong>на</strong>жатиекнопки «M».


96Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ],T [!x 1 & !x 2 ]Answer: z 5 , z 5 , z 6 , z 5 , z 7 , z 5Input: A, A, T [x 1 & !x 2 ]Answer: z 5 , z 6Input: A, A, T [x 2 & !x 1 ]Answer: z 5 , z 7Input: A, A, T [x 1 & !x 2 ],T [x 2 & !x 1 ]Answer: z 5 , z 6 , z 5 , z 7Input: A, A, T [!x 1 & !x 2 ], M,H, T [!x 1 & !x 2 ],T [!x 1 & !x 2 ], T [!x 1 & !x 2 ],M, T [!x 1 & !x 2 ], H, H,T [!x 1 & !x 2 ], MAnswer: z 5 , z 2 , z 1 , z 5 , z 5 , z 5 ,Описывает обработку события «Сработалтаймер» при различных з<strong>на</strong>чениях входныхпеременных.Описывает обработку события «Сработалтаймер» при условии, что текущее времясовпадает со временем срабатываниябудильника.Описывает обработку события «Сработалтаймер» при условии, что текущее времяпревышает <strong>на</strong> минуту время срабатываниябудильника.Объединяет два предыдущих теста.Описывает обработку событий H, M и T врежиме «Будильник включен».z 2 , z 5 , z 1 , z 1 , z 1 , z 2Кроме тестов, описывающих поведение автомата в каждом из трехрежимов, в <strong>на</strong>бор тестов включены тесты, описывающие поведениеавтомата сразу в нескольких режимах. Эти тесты приведены в табл. 5.


97Таблица 5. Тесты, описывающие поведение автомата в несколькихрежимахТестInput: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ], A, HAnswer: z 5 , z 5 , z 6 , z 5 , z 7 , z 7 , z 1Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ], A, MAnswer: z 5 , z 5 , z 6 , z 5 , z 7 , z 7 , z 2Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ], A, TAnswer: z 5 , z 5 , z 6 , z 5 , z 7 , z 7 , z 5Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ], A, A, HAnswer: z 5 , z 5 , z 6 , z 5 , z 7 , z 7 , z 3Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ], A, A, MAnswer: z 5 , z 5 , z 6 , z 5 , z 7 , z 7 , z 4Input: A, A, T [!x 1 & !x 2 ],T [x 1 & !x 2 ], T [x 2 & !x 1 ], A, A, TAnswer: z 5 , z 5 , z 6 , z 5 , z 7 , z 7 , z 5Input: A, A, T [!x 1 & !x 2 ],КомментарийОписывает поведение часов сбудильником в двух режимах:«Будильник включен» и «Будильниквыключен».Описывает поведение часов сбудильником в двух режимах:«Будильник включен» и «Будильниквыключен».Описывает поведение часов сбудильником в двух режимах:«Будильник включен» и «Будильниквыключен».Описывает поведение часов сбудильником в двух режимах:«Будильник включен» и «Настройкабудильника».Описывает поведение часов сбудильником в двух режимах:«Будильник включен» и «Настройкабудильника».Описывает поведение часов сбудильником в двух режимах:«Будильник включен» и «Настройкабудильника».Описывает поведение часов с


98T [x 1 & !x 2 ], A, A, TAnswer: z 5 , z 5 , z 6 , z 7 , z 5будильником в двух режимах:«Будильник включен» и «Настройкабудильника».2.3.1.2. Описание вычислительных экспериментовДля каждого алгоритма было проведено 1000 запусков соследующими параметрами алгоритмов: генетический алгоритм:o размер поколения – 2000 особей;o доля «элиты» – <strong>на</strong>иболее приспособленных особей,<strong>на</strong>прямую переходящих в следующее поколение, – 10 %;o число поколений до малой «мутации поколения» – 100поколений;o число поколений до большой «мутации поколения» –150 поколений; эволюцион<strong>на</strong>я стратегия и метод спуска – перезапускпроизводился, если в течение 300 000 итераций не былоулучшения з<strong>на</strong>чения функции приспособленности.Цель в каждом из запусков каждого из алгоритмов состояла в том,чтобы построить автомат, содержащий 14 переходов и соответствующийвсем тестам (з<strong>на</strong>чение функции приспособленности – 20.86). При этом впроцессе работы каждого из алгоритмов рассматривались автоматы изчетырех состояний.Для каждого алгоритма было проведено 1000 запусков. Для каждогозапуска каждого из алгоритмов записывалось число вычислений функцииприспособленности.2.3.1.3. Результаты вычислительных экспериментовПриведем распределения времени работы алгоритмов, полученные врезультате вычислительных экспериментов. В эволюционных алгоритмах


99время работы измеряется числом запусков функции приспособленности,так как, как правило, ее вычисление является более трудоемким, чемвыполнение операций мутации и скрещивания. Для а<strong>на</strong>лиза результатоввычислительных экспериментов использовался языкпрограммирования R [147].В результате каждого запуска каждого из алгоритмов был построе<strong>на</strong>втомат, граф переходов изображен <strong>на</strong> рис. 22. Отметим, что этот графпереходов изоморфен приведенному в разд. 1.1.3.T / z 5T[!x 1 &!x 2 ] / z 5M / z 20A / z 71H / z 1M / z 2H / z 3 M / z 4A /H / z 1T[x 2 &!x 1 ] / z 5 , z 7T[x 1 &!x 2 ] / z 5 , z 6T / z 5A /2Рис. 22. Граф переходов автомата управления часами сбудильником, построенного с помощью эволюционных алгоритмовНа рис. 23 приведе<strong>на</strong> гистограмма распределения времени работыалгоритма ГА-1. О<strong>на</strong> была построе<strong>на</strong> следующим образом: полученные врезультаты вычислительных экспериментов з<strong>на</strong>чения были распределеныпо 30 корзи<strong>на</strong>м оди<strong>на</strong>кового размера. В каждой из них <strong>на</strong> гистограммесоответствует один столбец, высота которого пропорцио<strong>на</strong>ль<strong>на</strong> числуэлементов, попавших в эту корзину. Гистограммы, приведенные далее,построены по такому же принципу.


100Рис. 23. Распределение времени работы алгоритма ГА-1На рис. 24 приведе<strong>на</strong> гистограмма распределения времен работыалгоритма МС.Рис. 24. Распределение времени работы алгоритма МСНа рис. 25 приведе<strong>на</strong> гистограмма распределения времен работыалгоритма ЭС.


101Рис. 25. Распределение времени работы алгоритма ЭСНа рис. 26 приведе<strong>на</strong> гистограмма распределения времен работыалгоритма ГА-2.Рис. 26. Распределение времени работы алгоритма ГА-2На рис. 27 приведе<strong>на</strong> гистограмма распределения времен работыалгоритма ГА-2 + МС.


102Рис. 27. Распределение времени работы алгоритма ГА-2 + МСНа рис. 28 приведе<strong>на</strong> гистограмма распределения времен работыалгоритма ГА-2 + ЭС.Рис. 28. Распределение времени работы алгоритма ГА-2 + ЭС


103В табл. 6 приведены минимальные, максимальные, средние имедианные з<strong>на</strong>чения числа вычислений функции приспособленности длякаждого из алгоритмов.Таблица 6. Результаты вычислительных экспериментовАлгоритм Минимум Максимум Среднее Медиа<strong>на</strong>ГА-1 1093938 41794531 6783215 5014202МС 1387 9710090 1275439 792481ЭС 1325 9915947 1317674 901615ГА-2 51977 1196233 205451.6 142013ГА-2 + МС 46311 780469 127712.2 103904ГА-2 + ЭС 38458 2714324 129330.4 84778Для каждой пары алгоритмов был проведен статистический тестANOVA [142]. Результаты этого теста приведены в табл. 7. В ней длякаждой пары алгоритмов указано p-з<strong>на</strong>чение (вычислен<strong>на</strong>я сиспользованием указанного теста вероятность того, что среднее числовычислений функции приспособленности оди<strong>на</strong>ково для соответствующейпары алгоритмов). Если эта вероятность меньше 0.05, то можно сделатьвывод о том, что время работы соответствующих алгоритмов <strong>на</strong>рассматриваемой задаче существенно различается.Таблица 7. Результаты статистического тестаГА-1 МС ЭС ГА-2 ГА-2 + МС ГА-2 + ЭСГА-1 -


104По результатам статистического теста можно сказать, что алгоритмыможно разбить <strong>на</strong> четыре группы: в первую входят ГА-2 + ЭС и ГА-2 + МС; во вторую – ГА-2; в третью – МС и ЭС; в четвертую – ГА-1.Указанное разбиение <strong>на</strong> группы обладает тем свойством, чтоалгоритмы внутри одной группы имеют статистически неразличимоевремя работы, а для алгоритмов из разных групп оно существенноразличается.На основании проведенных вычислительных экспериментов можносделать вывод о том, что применение метода скрещивания с учетомповедения <strong>автоматов</strong> <strong>на</strong> обучающих примерах позволяет существенноповысить скорость работы генетического алгоритма. Этот выводобосновывается тем, что генетический алгоритм, не использующий этотметод выполнения операции скрещивания, выполняет построение<strong>автоматов</strong> существенно медленнее по сравнению с эволюционнойстратегией и методом спуска <strong>на</strong> <strong>основе</strong> случайных мутаций, агенетический алгоритм, использующий этот метод выполнения операциискрещивания, работает существенно быстрее этих двух алгоритмов.2.3.2. Тесты, сгенерированные случайным образомДля проведения экспериментов по построению управляющих<strong>автоматов</strong> по тестам, сгенерированным случайным образом, былисгенерированы автоматы, содержащие 4, 5, …, 10 состояний. Далее покаждому из <strong>автоматов</strong> был сгенерирован случайным образом <strong>на</strong>бор тестов(при этом суммар<strong>на</strong>я дли<strong>на</strong> входных последовательностей в этих тестахсоставляла 150k для автомата из k состояний).Число событий в генерируемых автоматах было равно двум, числовыходных воздействий – двум, <strong>на</strong>ибольшее число воздействий <strong>на</strong> одном


105переходе также равно двум, охранные условия зависели от единственнойвходной переменной. В каждом генерируемом автомате присутствовалаполови<strong>на</strong> возможных ребер. По каждому сгенерированному автоматугенерировалось несколько случайных путей суммарной длиной в 150k дляавтомата.Входные последовательности тестов формировались <strong>на</strong> <strong>основе</strong>последовательностей событий, соответствующих переходам в этих путях, авыходные последовательности – <strong>на</strong> <strong>основе</strong> последовательностей выходныхвоздействий.Для каждого <strong>на</strong>бора тестов проводилось 100 запусков каждого изалгоритмов, для каждого запуска записывалось число вычисленийфункции приспособленности, проведенных в рамках этого запуска.В табл. 8 приведены средние з<strong>на</strong>чения времени работы алгоритмовпри генерации <strong>автоматов</strong> по тестам, сгенерированным случайным образом.Таблица 8. Среднее время работы алгоритмов <strong>на</strong> тестах,сгенерированных случайным образомЧислосостоянийГА-1 МС ЭС ГА-2ГА-2 +МСГА-2 +ЭС4 25514587 5432560 6017983 875514 629232 4605645 62124022 10711175 13519507 2032536 1545070 12418446 161261630 29291065 36216142 4537179 3721738 29816507 376970651 80844608 66850953 10928249 8799660 68158458 881025771 144343577 179974240 27500471 20036385 138778979 2149301686 350141493 409724265 56380237 41708779 3288479310 4496075865 830139535 924940477 131551924 108635507 85621418В табл. 9 приведены минимальные з<strong>на</strong>чения времени работыалгоритмов при генерации <strong>автоматов</strong> по тестам, сгенерированнымслучайным образом.


106Таблица 9. Минимальное время работы алгоритмов <strong>на</strong> тестах,сгенерированных случайным образомЧислосостоянийГА-1 МС ЭС ГА-2 ГА-2 + МС ГА-2 + ЭС4 4450666 22728 8702 226277 305653 1536675 11125313 38674 23419 561985 761696 5030856 29526605 42520 50715 1458957 2098487 11865267 70124676 154112 103496 3274814 4883189 26823608 157506999 376283 686229 8004707 11072585 55528969 425132279 677943 559753 16821591 24104822 1201643310 881931482 1353674 1292637 33051714 55850889 31173813В табл. 10 приведены максимальные з<strong>на</strong>чения времени работыалгоритмов при генерации <strong>автоматов</strong> по тестам, сгенерированнымслучайным образом.Таблица 10. Максимальное время работы алгоритмов <strong>на</strong> тестах,сгенерированных случайным образомЧислосостоянийГА-1 МС ЭС ГА-2ГА-2 +МСГА-2 +ЭС4 128084670 25531049 33402011 3827994 2267119 18938125 327022223 63827050 72560219 11539775 4408312 77484366 581028240 190639172 176047012 13932578 12708223 178409227 2027627902 359547552 320105572 45892343 31137911 441866398 3279139457 816989660 986060034 116893304 94516506 613053659 12036694052 1305740341 2855806080 284066504 132115726 15069600110 20575772375 5384346929 6346239622 574414101 362471791 505240679В табл. 11 приведены максимальные з<strong>на</strong>чения времени работыалгоритмов при генерации <strong>автоматов</strong> по тестам, сгенерированнымслучайным образом.


107Таблица 11. Медианное время работы алгоритмов <strong>на</strong> тестах,сгенерированных случайным образомЧислосостоянийГА-1 МС ЭС ГА-2ГА-2 +МСГА-2 +ЭС4 20036223 2635943 3909706 616509 543407 3375415 46596249 6586319 8197656 1406818 1338371 8714406 126837100 19305364 21307240 3417363 3207257 21183357 249924503 57797982 44591716 7615641 7845902 49850048 646687247 82266747 102373914 16662240 16838018 103800419 1455756119 249606313 234509937 36787191 37917625 2421249610 3205917742 511224031 473184839 86252583 87076432 57412402Результаты вычислительных экспериментов <strong>на</strong> тестах,сгенерированных случайным образом, подтверждают результатыэкспериментов по построению автомата управления часами сбудильником.Таким образом, результаты вычислительных экспериментовпоказывают, что применение метода скрещивания с учетом поведения<strong>автоматов</strong> <strong>на</strong> обучающих примерах позволяет существенно повыситьскорость работы генетического алгоритма.2.4. МЕТОД ПОСТРОЕНИЯ АВТОМАТОВ ПО ОБУЧАЮЩИМ ПРИМЕРАМИ ТЕМПОРАЛЬНЫМ ФОРМУЛАМ НА ОСНОВЕ ЭВОЛЮЦИОННЫХАЛГОРИТМОВ И ВЕРИФИКАЦИИНастоящий раздел посвящен методу <strong>построения</strong> <strong>автоматов</strong> пообучающим примерам (тестам) и темпоральным формулам <strong>на</strong> <strong>основе</strong>эволюционных алгоритмов и верификации [163, 165 – 167].Этот метод расширяет метод, описанный в разд. 2.1, за счет того, чтоиспользует верификацию <strong>на</strong> стадии вычисления функции


108приспособленности. Для верификации используется инструментальноесредство, предложенное в работе [6], од<strong>на</strong>ко при необходимости вместонего может применяться любое другое инструментальное средство,пред<strong>на</strong>з<strong>на</strong>ченное для верификации автоматных программ.2.4.1. Входные данныеВходные данные для метода <strong>построения</strong> <strong>автоматов</strong> по тестам итемпоральным формулам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов иверификации в дополнение к данным, описанным в разд. 2.1.1, содержат<strong>на</strong>бор темпоральных формул <strong>на</strong> языке логики LTL.2.4.2. Выходные данныеВыходные данные представляют собой описание автомата. Этотавтомат должен содержать не более k состояний, удовлетворять каждомузаданному тесту и каждой заданной темпоральной формуле, а такжеобладать свойством непротиворечивости. Если такой автомат не <strong>на</strong>йден, товыдается соответствующее сообщение.2.4.3. Представление конечного автомата в виде хромосомыэволюционного алгоритмаВ методе <strong>построения</strong> <strong>автоматов</strong> по тестам и темпоральнымформулам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов и верификациииспользуется такое же представление автомата в виде хромосомыэволюционного алгоритма, как и в методе <strong>построения</strong> <strong>автоматов</strong> по тестам(разд. 2.1).2.4.4. Вычисление функции приспособленностиДля вычисления функции приспособленности автомат, задаваемыйрассматриваемой особью, запускается <strong>на</strong> всех тестах и проверяется <strong>на</strong>соответствие всем темпоральным формулам.


109Функция приспособленности вычисляется по формулеnf1FF FF2 (1 ) , где величи<strong>на</strong> FF 2 определе<strong>на</strong> в разд. 2.1.5. Здесь nf 2 –nf2общее число темпоральных формул в спецификации, а nf 1 – число формул,которые выполняются для рассматриваемого автомата. При вычислениифункции приспособленности считается, что в случае nf 1 = nf 2 = 0, величи<strong>на</strong>nfnf12также рав<strong>на</strong> нулю. Таким образом, если число темпоральных формулравно нулю, то функция приспособленности совпадает с определенной вразд. 2.1.5.Оценим, <strong>на</strong>сколько увеличилось время вычисления функцииприспособленности по сравнению с описанной ранее. Для выполненияверификации автомата, как было сказано выше, каждая LTL-формулапреобразуется в автомат Бюхи.Оценить время проверки автомата <strong>на</strong> соответствие однойLTL-формуле можно следующим образом. Если L – дли<strong>на</strong> формулы, тосоответствующий ей автомат Бюхи в худшем случае будет содержатьL × 2 L состояний [55]. Следовательно, в худшем случае автоматпересечение,который строится по автомату Бюхи и модели Крипке,соответствующей верифицируемому автомату, будет содержатьO(L × 2 L × k) состояний, где k – число состояний в верифицируемомавтомате.Для <strong>построения</strong> <strong>автоматов</strong> Бюхи по LTL-формулам применяетсябиблиотека LTL2BA [146], которая использует ряд эвристик дляуменьшения размера получаемого автомата Бюхи. Кроме этого, какправило, темпоральные формулы, задающие требования имеют несложную структуру и относительно небольшую длину. Поэтому <strong>на</strong>практике размер автомата Бюхи редко превышает 100 состояний.Преобразование темпоральных формул в автоматы Бюхипроизводится один раз – перед запуском эволюционного алгоритма.


110Отметим также, что при верификации не всегда требуется целикомобходить автомат-пересечение. Если модель не удовлетворяеттемпоральной формуле, то контрпример может быть <strong>на</strong>йден задолго дообхода всего автомата. Кроме этого, часть состояний автоматапересечениямогут быть недостижима.Из изложенного следует, что <strong>на</strong> практике время вычисленияфункции приспособленности с учетом результатов верификациинесущественно увеличивается по сравнению с функциейприспособленности, учитывающей только тесты.2.4.5. Операции мутации и скрещиванияОперация мутации выполняется так же, как описано в разд. 2.1.6, аоперация скрещивания – как описано в разд. 2.2.2.5. ЭКСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ МЕТОДА ПОСТРОЕНИЯАВТОМАТОВ ПО ОБУЧАЮЩИМ ПРИМЕРАМ И ТЕМПОРАЛЬНЫМФОРМУЛАМНастоящий раздел посвящен экспериментальному исследованиюметода <strong>построения</strong> <strong>автоматов</strong> по обучающим примерам (тестам) итемпоральным формулам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов иверификации. Исследование проводилось <strong>на</strong> задаче <strong>построения</strong> автоматауправления дверьми лифта.Требования к этой системе управления можно неформально описатьследующим образом. Двери лифта могут открываться и закрываться. Еслипри закрытии дверей, они <strong>на</strong>ткнулись <strong>на</strong> препятствие, то требуетсяостановить закрытие и открыть двери. Кроме этого, лифт может сломатьсяв процессе открытия или закрытия дверей, и тогда необходим звонок ваварийную службу.Система управления дверьми лифта содержит пять входныхсобытий:


111 e 11 – <strong>на</strong>жата кнопка «Открыть двери»; e 12 – <strong>на</strong>жата кнопка «Закрыть двери»; e 2 – двери успешно открыты или закрыты; e 3 – препятствие мешает закрытию дверей; e 4 – двери лифта сломались.Эта система имеет три выходных воздействия: z 1 – <strong>на</strong>чать открытик дверей; z 2 – <strong>на</strong>чать закрытие дверей z 3 – звонок в аварийную службу.Поведение дверей лифта может быть описано конечнымавтоматом (рис. 29), построенным вручную в работе [125].4e4 / z3e4 / z30e11 / z11e2e3/ z1e23e12 / z22Рис. 29. Граф переходов автомата управления дверьми лифта,построенного <strong>на</strong> <strong>основе</strong> тестов и LTL-формулНачальное состояние имеет номер «0» и выделено <strong>на</strong> рисункежирной линией.2.5.1.1. Набор тестов и темпоральных формулЧисло тестов для <strong>построения</strong> автомата управления дверьми лифтаравно девяти. Они описывают различные варианты поведения дверейлифта и представлены в табл. 12.


112Таблица 12. Тесты для автомата управления дверьми лифтаТестКомментарийInput: e 11 , e 2 , e 12 , e 2Answer: z 1 , z 2Input: e 11 , e 2 , e 12 , e 2 , e 11 , e 2 , e 12 , e 2Answer: z 1 , z 2 , z 1 , z 2Input: e 11 , e 2 , e 12 , e 3 , e 2 , e 12 , e 2Answer: z 1 , z 2 , z 1 , z 2Input: e 11 , e 2 , e 12 , e 2 , e 11 , e 2 , e 12 , e 3 ,e 2 , e 12 , e 2Answer: z 1 , z 2 , z 1 , z 2 , z 1 , z 2Input: e 11 , e 2 , e 12 , e 3 , e 2 , e 12 , e 3 , e 2 ,e 12 , e 2Answer: z 1 , z 2 , z 1 , z 2 , z 1 , z 2Input: e 11 , e 4Answer: z 1 , z 3Input: e 11 , e 2 , e 12 , e 4Answer: z 1 , z 2 , z 3Input: e 11 , e 2 , e 12 , e 2 , e 11 , e 4Answer: z 1 , z 2 , z 1 , z 3Input: e 11 , e 2 , e 12 , e 3 , e 4Answer: z 1 , z 2 , z 1 , z 3Описывает ситуацию открытия изакрытия дверей лифта.Описывает процесс открытия изакрытия дверей лифта дважды.Описывает открытие дверей ипоявления препятствия при закрытии.Дверь закрывается со второго раза.Открытие и закрытие дверей лифта,закрытие, снова открытие, и призакрытии появление препятствия.Процесс открытия дверей, призакрытии появление препятствия,вторая попытка закрытия и опятьпрепятствие мешает закрыть дверь.Описывает процесс возникновенияполомки в процессе открытия дверей.Описывает процесс возникновенияполомки в процессе закрытия дверей.Описывает процесс возникновенияполомки во время второго открытиядверей лифта.Описывает процесс возникновенияполомки в момент открытия дверей иззапрепятствия.


113Кроме тестов, использовались 11 темпоральных формул. Ихописание приведено в табл. 13.В темпоральных формулах используются следующие предикаты: wasEvent(e) – <strong>на</strong> вход автомату поступило событие e; wasAction(z) – автомат выработал выходное воздействие z.Таблица 13. Темпоральные формулы для автомата управлениядверьми лифтаФормулаG(wasEvent(e 11 ) => wasAction(z 1 ))КомментарийЕсли <strong>на</strong> вход автомату поступилособытие e 11 , то автомат выработаетвыходное воздействие z 1 . Втерми<strong>на</strong>х системы управлениядверьми лифта утверждение можнозаписать следующим образом: приобработке события «Нажата кнопка«Открыть двери» обязательно будет<strong>на</strong>чато открытие дверей.G(wasEvent(e 12 ) wasAction(z 2 )) Выходное воздействие z 2вырабатывается тогда и толькотогда, когда <strong>на</strong> вход автоматупоступает событие e 12 . В терми<strong>на</strong>хсистемы управления дверьми лифтаутверждение можно записатьследующим образом: при <strong>на</strong>жатиикнопки «Закрыть двери» <strong>на</strong>чато ихзакрытие, и закрытие дверей может<strong>на</strong>чаться только при <strong>на</strong>жатиикнопки «Закрыть двери».


114G(wasEvent(e 4 ) wasAction(z 3 )) Выходное воздействие z 3генерируется тогда и только тогда,когда <strong>на</strong> вход автомату поступаетсобытие e 4 . В терми<strong>на</strong>х системыуправления дверьми лифтаутверждение можно записатьследующим образом: звонок ваварийную службу будетпроизведен тогда и только тогда,когда лифт сломается.G(wasEvent(e 3 ) => wasAction(z 1 )) Если <strong>на</strong> вход автомату поступилособытие e 3 , то будет выработановыходное воздействие z 1 . Втерми<strong>на</strong>х системы управлениядверьми лифта утверждение можнозаписать следующим образом: еслипрепятствие мешает закрыть двери,то они <strong>на</strong>чнут открываться.G(wasEvent(e 2 ) => X[wasEvent(e 11 ) || После события e 2 следующимwasEvent(e 12 )])обработанным событием будет e 11или e 12 . В терми<strong>на</strong>х системыуправления дверьми лифтаутверждение можно записатьследующим образом: если дверьуспешно открылась или закрылась,то следующее обработанноесобытие может быть либо «Нажатакнопка «Открыть двери» или«Нажата кнопка «Закрыть двери».


115G( wasEvent(e 11 ) => X[wasEvent(e 4 ) ||wasEvent(e 2 )] )G( wasAction(z 1 ) => X[wasEvent(e 2 ) ||wasEvent(e 4 )] )G( wasEvent(e 12 ) => X[wasEvent(e 2 ) ||wasEvent(e 3 ) || wasEvent(e 4 )] )Если <strong>на</strong> вход автомату поступилособытие e 11 , то следующимобработанным событием будет e 4или e 2 . В терми<strong>на</strong>х системыуправления дверьми лифтаутверждение можно записатьследующим образом: если была<strong>на</strong>жата кнопка «Открыть двери», тодвери лифта либо успешнозакроются, либо сломаются.Если автоматом было выработановыходное воздействие z 1 , тоследующим обработаннымсобытием будет e 2 или e 4 . Втерми<strong>на</strong>х системы управлениядверьми лифта утверждение можнозаписать следующим образом: еслидверь <strong>на</strong>чала закрываться, то либоо<strong>на</strong> успешно откроется, либосломается.Если <strong>на</strong> вход автомату поступилособытие e 12 , то следующимобработанным событием будет илиe 2 , или e 3 , или e 4 . В терми<strong>на</strong>хсистемы управления дверьми лифтаутверждение можно записатьследующим образом: если была<strong>на</strong>жата кнопка «Закрыть двери», топроизойдет одно из трех: либо


116G( wasAction(z 1 ) =>X[U(!wasAction(z 1 ), wasAction(z 2 ))] )G( wasAction(z 2 ) =>X[ U(!wasAction(z 2 ), wasAction(z 1 )] )!F(wasEvent(e 4 ) & X(F(wasEvent(e 11 ) ||wasEvent(e 12 ) || wasEvent(e 2 ) ||wasEvent(e 3 ))))двери закроются, либо препятствиепомешает закрыть двери, либо лифтсломается.Если автомат выработал выходноевоздействие z 1 , то оно не будетбольше выработано, пока автоматне выработает z 2 . В терми<strong>на</strong>хсистемы управления дверьми лифтаутверждение можно записатьследующим образом: если было<strong>на</strong>чато открытие дверей, то вследующий раз открытие можетбыть <strong>на</strong>чато только после того, какони закроются.Если автомат выработал выходноевоздействие z 2 , то оно не будетбольше выработано, пока автоматне выработает z 1 . В терми<strong>на</strong>хсистемы управления дверьми лифтаутверждение можно записатьследующим образом: если было<strong>на</strong>чато закрытие дверей, то вследующий раз закрытие можетбыть <strong>на</strong>чато только после того, какони откроются.После поступления e 4 <strong>на</strong> входавтомату не будут поступатьсобытия e 11 , e 12 , e 2 или e 3 . Втерми<strong>на</strong>х системы управления


117дверьми лифта утверждение можнозаписать следующим образом: неверно, что после поломки лифтабудут поступать события «Нажатакнопка «Открыть двери», «Нажатакнопка «Закрыть двери», «Двериуспешно открыты или закрыты»,«Препятствие мешает закрытиюдверей».2.5.1.2. Описание вычислительных экспериментовВ вычислительных алгоритмах использовался генетическийалгоритм, использующий операцию скрещивания с учетом поведения<strong>автоматов</strong> <strong>на</strong> тестах. Рассматривались два варианта входных данных –первый содержал только тесты, а второй – и тесты, и темпоральныеформулы.Для каждого <strong>на</strong>бора входных данных было проведено 1000 запусковсо следующими параметрами алгоритма: размер поколения – 2000 особей; доля «элиты» – <strong>на</strong>иболее приспособленных особей, <strong>на</strong>прямуюпереходящих в следующее поколение, – 10 %; число поколений до малой «мутации поколения» – 100поколений; число поколений до большой «мутации поколения» – 150поколений.Для каждого запуска записывалось число вычислений функцииприспособленности.


1182.5.1.3. Результаты экспериментовВ результате экспериментов, использующих только тесты в качествевходных данных, в 993 случаях из 1000 получался неправильный конечныйавтомат. Один из таких <strong>автоматов</strong> представлен <strong>на</strong> рис. 30, жирной линиейвыделено <strong>на</strong>чальное состояние.0e11 / z1e2e2e3 / z1e121 2e4 / z3e12 / z2Рис. 30. Граф переходов автомата управления дверьми лифта,построенного только <strong>на</strong> <strong>основе</strong> тестовОшибка в представленном автомате состоит в том, что послеполомки лифта дверь может снова <strong>на</strong>чать закрываться, а затем лифт <strong>на</strong>чнетфункционировать как рабочий. Также данный автомат может повторно<strong>на</strong>чать закрывать или открывать двери после закрытия или открытиясоответственно.Среднее з<strong>на</strong>чение числа вычислений функции приспособленностиоказалось равным 7.479 × 10 4 , минимальное число вычислений –2.184 × 10 4 , максимальное число – 2.999 × 10 5 .При использовании в качестве входных данных тестов итемпоральных формул в результате каждого из 1000 запусков алгоритмабыл построен автомат, изоморфный автомату, изображенному <strong>на</strong> рис. 29.Среднее з<strong>на</strong>чение числа вычислений функции приспособленностиоказалось равным 7.246 × 10 5 , минимальное число вычислений –7.054 × 10 4 , максимальное число – 5.492 × 10 6 .Таким образом, число вычислений функции приспособленности дляметода <strong>построения</strong> <strong>автоматов</strong> по тестам и темпоральным формулам <strong>на</strong>


119<strong>основе</strong> эволюционных алгоритмов и верификации <strong>на</strong> задаче <strong>построения</strong>автомата управления дверьми лифта оказалось примерно в 10 раз больше,чем для метода <strong>построения</strong> <strong>автоматов</strong> по тестам <strong>на</strong> <strong>основе</strong> эволюционныхалгоритмов. Од<strong>на</strong>ко применение верификации оправдывает себя, так какпри ее использовании при каждом из 1000 запусков был построен автомат,удовлетворяющий не только тестам, но и всем темпоральным формулам.ВЫВОДЫ ПО ГЛАВЕ 21. Разработан метод <strong>построения</strong> управляющих <strong>автоматов</strong> пообучающим примерам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов. Егоосновное отличие от известных состоит в том, что в предлагаемыеалгоритмы добавлен новый шаг «Расстановка выходныхвоздействий», который выполняется перед вычислением функцииприспособленности.2. Разработан метод выполнения операции скрещивания длягенетических алгоритмов, учитывающий поведение <strong>автоматов</strong> <strong>на</strong>обучающих примерах. Показано, что генетический алгоритм,использующий разработанный метод выполнения операциискрещивания, осуществляет построение управляющих <strong>автоматов</strong>по обучающим примерам быстрее, чем генетический алгоритм,использующий традиционный метод выполнения операциискрещивания, эволюцион<strong>на</strong>я стратегия или метод спуска <strong>на</strong><strong>основе</strong> случайных мутаций.3. Разработан метод <strong>построения</strong> <strong>автоматов</strong> по обучающимпримерам и темпоральным формулам <strong>на</strong> <strong>основе</strong> эволюционныхалгоритмов и верификации. Его основное отличие от известныхсостоит в том, что для вычисления функции приспособленностисовместно применяются обучающие примеры и метод ModelChecking.


1204. Проведено экспериментальное исследование, показывающееэффективность разработанных методов.


121ГЛАВА 3. ТЕХНОЛОГИЯ И ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВОПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХ АВТОМАТОВ НАОСНОВЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ ИВЕРИФИКАЦИИНастоящая глава посвяще<strong>на</strong> описанию предлагаемых в работетехнологии <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong>эволюционных алгоритмов и верификации и инструментального средствадля автоматизированного <strong>построения</strong> <strong>автоматов</strong>, поддерживающего этутехнологию. Исходный код этого программного средства размещен воткрытом доступе в сети Интернет по адресу:http://code.google.com/p/gabp/.3.1. ТЕХНОЛОГИЯ ПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХАВТОМАТОВ НА ОСНОВЕ ЭВОЛЮЦИОННЫХ АЛГОРИТМОВ ИВЕРИФИКАЦИИИсходными данными для <strong>построения</strong> управляющих <strong>автоматов</strong> <strong>на</strong><strong>основе</strong> эволюционных алгоритмов являются описания поставщиковсобытий и объектов управления (в общем случае их может бытьнесколько), а также спецификация программы. На <strong>основе</strong> описанийформируются списки входных переменных, выходных воздействий исобытий. Далее по спецификации программы строится <strong>на</strong>бор тестов, а, принеобходимости, и темпоральных формул.Каждый тест содержит входную последовательности Input[i],содержащую входные события и условия переходов из входныхпеременных, и эталонную последовательность выходных воздействийAnswer[i].К <strong>на</strong>бору тестов предъявляются следующие требования. Во-первых,если система со сложным поведением, для управления которой строитсяавтомат, имеет несколько режимов работы, то система тестов долж<strong>на</strong>


122содержать тесты для каждого из этих режимов и для переходов междуними. Во-вторых, тесты не должны противоречить друг другу – есливход<strong>на</strong>я последовательность в одном из тестов является префиксомвходной последовательности в другом тесте, то и выход<strong>на</strong>япоследовательность из первого теста долж<strong>на</strong> быть префиксом выходнойпоследовательности из второго теста. В-третьих, <strong>на</strong>бор тестов долженсодержать все существующие в системе входные события, входныепеременные и выходные воздействия.При записи темпоральных формул необходимо учитывать, что, таккак <strong>на</strong> момент их формирования известны только входные воздействия,входные переменные и выходные воздействия, то они не могут содержатьутверждения о состояниях автомата.На <strong>основе</strong> спецификации необходимо также задать максимальноечисло состояний в автомате и требуемое число переходов в нем. По числупереходов необходимо определить целевое з<strong>на</strong>чение функцииприспособленности.Тесты совместно с темпоральными формулами подаются <strong>на</strong> входэволюционному алгоритму. Отметим, что эволюционный алгоритмоди<strong>на</strong>ков для всех задач – для новой задачи необходим только новый<strong>на</strong>бор тестов, входных и выходных воздействий и, возможно, параметровалгоритма – размера поколения, вероятности выполнения операциимутации и т. д. (рис. 31).В качестве эволюционного алгоритма, как показывает приведенноевыше экспериментальное исследование, рекомендуется использоватьгенетический алгоритм, использующий метод скрещивания с учетомповедения автомата <strong>на</strong> обучающих примерах.


123ОбъектуправленияВходные переменные и выходныевоздействияПоставщиксобытийПараметрыалгоритмаСобытияЭволюционныйалгоритмУправляющийконечныйавтоматТестыСпецификацияТемпоральныесвойстваРис. 31. Технология <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong><strong>основе</strong> эволюционных алгоритмов и верификацииЕсли в результате работы эволюционного алгоритма был построе<strong>на</strong>втомат, з<strong>на</strong>чение функции приспособленности для которого равноцелевому или превышает его, то этот автомат соответствуетспецификации. При любом изменении спецификации необходимо с<strong>на</strong>чалапроверить, соответствует ли ей уже построенный автомат. В случаенесоответствия необходимо модифицировать подаваемые <strong>на</strong> входэволюционному алгоритму тесты и темпоральные формулы (при ихиспользовании) и выполнить построение автомата заново.Если же в результате работы эволюционного алгоритма не удаетсяпостроить автомат, з<strong>на</strong>чение функции приспособленности для которогоравно целевому или превышает его, то в качестве результата работыалгоритма рассматривается сгенерированный алгоритмом автомат с<strong>на</strong>ибольшим з<strong>на</strong>чением функции приспособленности. З<strong>на</strong>чение функцииприспособленности этого автомата может быть меньше целевого по тремпричи<strong>на</strong>м:1. Он удовлетворяет всем тестам и темпоральным формулам, ноимеет слишком большое число переходов.2. Он удовлетворяет не всем тестам.3. Он соответствует не всем темпоральным формулам.


124В первом случае необходимо провести экспертную оценкупостроенного автомата <strong>на</strong> соответствие не формализуемым требованиямспецификации.Во втором и третьем случаях требуется проверить корректностьтестов и темпоральных формул, которым не удовлетворяет построенныйавтомат. Если в результате проверки будет определено, что в нихсодержатся ошибки, то необходимо их исправить и выполнить построениеавтомата заново. Если же ошибки в них <strong>на</strong>йдены не будут, то необходимозаново выполнить построение автомата, увеличив максимальное числосостояний.3.2. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО ДЛЯ АВТОМАТИЗИРОВАННОГОПОСТРОЕНИЯ УПРАВЛЯЮЩИХ КОНЕЧНЫХ АВТОМАТОВНа <strong>основе</strong> разработанной технологии было созданоинструментальное средство GABP (Genetic Automata-Based Programming),исходный код которого размещен в открытом доступе в сети Интернет поадресу: http://code.google.com/p/gabp/. На разработанное инструментальноесредство было получено свидетельство о регистрации программы дляЭВМ (Первое свидетельство в Приложении 1).3.2.1. Формат входных данныхВходные данные для этого инструментального средства задаютсяфайлом в формате XML. Это файл описывает параметры алгоритма,<strong>на</strong>боры событий, входных переменных, выходных воздействий, а такжетесты и темпоральные формулы. Приведем фрагмент входного файла длязадачи <strong>построения</strong> автомата управления часами с будильником,рассмотренной в главе 2.


125200020.8640.1701000.01[x2]A, T, H, M, T [!x1 &amp; !x2], T [x1], Tz1, z2, z3, z4, z5, z6, z7T, T, T, Tz5, z5, z5, z5A, T, T, T, Tz5, z5, z5, z5A, A, A, T, T, T, Tz7, z5, z5, z5, z5H, H, H, Hz1, z1, z1, z1...A, A, T [!x1 &amp; !x2]z5


1263.2.2. Формат выходных данныхРезультат работы программного средства представляет собойописание конечного автомата в XML-формате инструментального средстваUniMod.Приведем пример выходного файла, описывающего автоматуправления часами с будильником.


1273.2.3. Структура программной реализацииПрограмм<strong>на</strong>я реализация инструментального средства выполне<strong>на</strong> <strong>на</strong>языке программирования Java. Основные классы, входящие в этупрограммную реализацию, приведены <strong>на</strong> рис. 32.


128Класс Starter является точкой входа в программу, он используеткласс InputReader для чтения входных данных, а также запускаетэволюционный алгоритм (в текущей версии инструментального средстваиспользуется генетический алгоритм, описанный в разд. 2.1.9), которыйреализован в классе GeneticAlgorithm.ВходныеданныеКлассInputReaderКласс StarterКласс TestКлассVerifierFactoryКлассTransitionКлассFitnessCalculatorКлассGeneticAlgorithmКлассMealyFSMКлассUnimodModelWriterВыходныеданныеРис. 32. Структура инструментального средстваКласс InputReader позволяет читать из xml-файла параметрыалгоритма (вероятность мутации, размер популяции, ожидаемое числосостояний, число поколений до мутации и т. д.), <strong>на</strong>бор тестов итемпоральных формул, разбитых по группам.Класс VerifierFactory предоставляет методы дляпреобразования темпоральных формул в автоматы Бюхи, дляпредставления особи в виде автомата, принимаемого используемым


129верификатором, и для верификации. Как было сказано выше, дляпреобразования в автоматы Бюхи используется библиотека LTL2BA [146].Преобразование темпоральных формул в автоматы Бюхи происходиттолько один раз – при запуске инструментального средства, так кактемпоральные формулы в процессе работы эволюционного алгоритма неизменяются. Этот класс, а также используемые им вспомогательныеклассы ModifiableAutomataContext и AutomataTransitionоснованы <strong>на</strong> исходном коде инструментального средства для верификацииавтоматных программ, описанного в работе [6].В процессе работы генетический алгоритм использует особь (классMealyFSM) и вычислитель функции приспособленности (классFitnessCalculator). Особь, в свою очередь, представле<strong>на</strong> <strong>на</strong>боромсостояний (класс Transition), а при вычислении функцииприспособленности используется <strong>на</strong>бор тестов, каждый из которыхпредставлен экземпляром класса Test.Класс MealyFSM соответствует описанному выше представлениюконечного автомата с действиями <strong>на</strong> переходах в виде особиэволюционного алгоритма, он хранит число состояний, <strong>на</strong>бор переходовдля каждого состояния, <strong>на</strong>бор входных событий и <strong>на</strong>бор выходныхвоздействий. В этом классе также реализованы операции мутации,скрещивания и алгоритм расстановки выходных воздействий. Этот классреализует интерфейс Individual, соответствующий особиэволюционного алгоритма, таким образом, при необходимости вдальнейшем инструментальное средство может быть расширено за счетдобавления других типов особей.Класс Transition хранит событие, по которому выполняетсяданный переход, условие перехода, число выходных воздействий, которыедолжны <strong>на</strong> нем вырабатываться, а также номер состояния, в которое ведетэтот переход. Кроме этого, он содержит массив, в который будут записаны


130выходные воздействия в результате работы алгоритма расстановкивыходных воздействий.Класс Test хранит последовательность входных событий,представленную в виде <strong>на</strong>бора строк, а также соответствующую ейпоследовательность выходных воздействий.Класс FitnessCalculator реализует описанный выше методвычисления функции приспособленности <strong>на</strong> <strong>основе</strong> тестов и темпоральныхформул.Класс UnimodModelWriter сохраняет особь в файл в XMLформатепрограммного средства UniMod. В результате построенный спомощью разработанного инструментального средства автомат можноиспользовать в программах, <strong>на</strong>писанных с помощью инструментальногосредства UniMod, при условии, что выполне<strong>на</strong> программ<strong>на</strong>я реализацияпоставщиков событий и объектов управления.ВЫВОДЫ ПО ГЛАВЕ 31. Разработа<strong>на</strong> технология <strong>построения</strong> управляющих <strong>конечных</strong><strong>автоматов</strong> по тестам и темпоральным формулам.2. Разработано инструментальное средство для автоматизации<strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong>, поддерживающеепредложенную технологию. На это программное средствополучено свидетельство о регистрации программы для ЭВМ.


131ГЛАВА 4. ВНЕДРЕНИЕ РЕЗУЛЬТАТОВ РАБОТЫНастоящая глава посвяще<strong>на</strong> внедрению результатов работы.4.1. ВНЕДРЕНИЕ РАЗРАБОТАННЫХ МЕТОДОВ НА ПРИМЕРЕПОСТРОЕНИЯ АВТОМАТА УПРАВЛЕНИЯ МОДЕЛЬЮ БЕСПИЛОТНОГОСАМОЛЕТАНастоящий раздел посвящен внедрению разработанных методов <strong>на</strong>примере <strong>построения</strong> автомата управления моделью беспилотногосамолета [152, 162, 164]. В рамках этого внедрения было полученосвидетельство о регистрации программы для ЭВМ (второе свидетельство вПриложении 1).Для моделирования беспилотного самолета используется свободныйкроссплатформенный симулятор FlightGear (http://www.flightgear.org). Еговыбор обоснован тем, что он позволяет осуществлять как ручное, так иавтоматное управление моделью беспилотного самолета. На рис. 33представлен снимок экра<strong>на</strong> симулятора FlightGear.Рис. 33. Снимок экра<strong>на</strong> симулятора FlightGearСимулятор позволяет осуществлять сохранение параметров полета(скорость, <strong>на</strong>правление полета и т. д.) и параметров самолета (положениеруля, элеронов, состояние стартера и т. п.). Параметры полета являются


132входными параметрами для системы управления, а параметры самолета –управляющими, так как за счет их изменений выполняется управлениесамолетом. З<strong>на</strong>чения управляющих параметров формируются автоматом(рис. 34).ВходныепараметрыВычислительз<strong>на</strong>чений входныхпеременныхЗ<strong>на</strong>чения входныхпеременныхАвтоматНовыез<strong>на</strong>ченияуправляющихпараметровВычислительз<strong>на</strong>ченийуправляющихпараметровВыходные воздействияРис. 34. Управление моделью беспилотного самолета с помощьюавтомата4.1.1. Описание объекта управленияОбъектом управления является модель беспилотного самолета.Объект управления характеризуется <strong>на</strong>бором органов управления, спомощью воздействия <strong>на</strong> которые объектом можно управлять. Параметры,соответствующие орга<strong>на</strong>м управления, будем <strong>на</strong>зывать управляющими.Параметры некоторых органов управления могут принимать лишьконечное множество з<strong>на</strong>чений – такие органы <strong>на</strong>зываются дискретными.Параметры других органов управления характеризуются вещественнымиз<strong>на</strong>чениями – такие органы <strong>на</strong>зываются непрерывными. Будем также<strong>на</strong>зывать управляющие воздействия <strong>на</strong> непрерывные органы управлениянепрерывными, а управляющие воздействия <strong>на</strong> дискретные органы –дискретными.Управляющими орга<strong>на</strong>ми являются: магнето, стартер, дроссель,элероны, руль высоты и руль <strong>на</strong>правления. Первые два орга<strong>на</strong> являютсядискретными, а остальные – непрерывными. При этом, <strong>на</strong>пример,


133воздействие «включить стартер» является дискретным, а «повернуть руль<strong>на</strong> 0.5 град вправо» – непрерывным.Непрерывное воздействие изменяет параметр орга<strong>на</strong> управления <strong>на</strong>некоторую вещественную величину, а дискретное – уста<strong>на</strong>вливаетсоответствующий орган управления в конкретное з<strong>на</strong>чение. Заметим, чтопоследовательное выполнение действий с одним органом управленияэквивалентно сумме воздействий <strong>на</strong> него в случае непрерывноговоздействия и последнему воздействию – в случае дискретного.Например, одним из непрерывных управляющих параметровявляется угол поворота руля самолета. Непрерывным воздействием <strong>на</strong> этоторган управления является изменение угла его поворота <strong>на</strong> некотороез<strong>на</strong>чение. Тогда последовательность поворотов руля <strong>на</strong> x и y градусовэквивалент<strong>на</strong> повороту руля <strong>на</strong> x + y градусов.В свою очередь, примером дискретного исполнительного орга<strong>на</strong>является стартер. Дискретное воздействие <strong>на</strong> него – включение иливыключение. Тогда последовательность включений и выключенийстартера эквивалент<strong>на</strong> последнему совершенному <strong>на</strong>д ним действию.4.1.2. Входные переменные и событияВ качестве поставщика событий выступает модель беспилотногосамолета. Будем считать, что генерируемый автомат является синхронным– все такты его работы оди<strong>на</strong>ковы.На каждом такте система управления получает з<strong>на</strong>чения всехвходных параметров. После этого вычисляются логические з<strong>на</strong>чения всехусловий объекта управления в порядке увеличения их номеров. Послевычисления соответствующего з<strong>на</strong>чения условия генерируетсясоответствующее событие. Автомат в течение одного такта можетсовершить несколько переходов, и результирующее воздействие автоматав каждый момент времени t может быть составлено из несколькихпоследовательно выполненных воздействий <strong>на</strong> отдельных переходах.


134Напомним, что каждый параметр результирующего воздействия – суммавоздействий в случае непрерывного параметра, и последнее воздействие –в случае дискретного.Приведем список входных переменных: x 0 – двигатель включен; x 1 – ускорение изменения <strong>на</strong>правления движения самолета больше нуля; x 2 – скорость изменения <strong>на</strong>правления движения самолета больше нуля; x 3 – величи<strong>на</strong> отклонения от <strong>на</strong>чального <strong>на</strong>правления меньше одногоградуса; x 4 – величи<strong>на</strong> отклонения от <strong>на</strong>чального <strong>на</strong>правления больше нуля(отклонение влево); x 5 – ускорение изменения кре<strong>на</strong> (угла <strong>на</strong>кло<strong>на</strong>) больше нуля; x 6 – скорость изменения кре<strong>на</strong> больше нуля; x 7 – крен самолета меньше одного градуса; x 8 – крен больше нуля (самолет завалился <strong>на</strong> правый бок); x 9 – ускорение изменения вертикальной скорости самолета больше нуля; x 10 – скорость изменения вертикальной скорости больше нуля; x 11 – вертикаль<strong>на</strong>я скорость маленькая (меньше 0.1 м/с); x 12 – вертикаль<strong>на</strong>я скорость больше нуля (самолет поднимается).Набор событий содержит три<strong>на</strong>дцать событий e 0 , …, e 12 , при этомпоступление события e i оз<strong>на</strong>чает, что закончено вычисление з<strong>на</strong>чениявходной переменной x i .4.1.3. Набор обучающих примеровСтруктура обучающего примера приведе<strong>на</strong> <strong>на</strong> рис. 35. Обучающийпример T состоит из двух частей: T.in и T.ans. Каждая из них являетсяпоследовательностью длины T.len – первая из которых состоит из з<strong>на</strong>ченийвходных параметров, а вторая – из соответствующих эталонных з<strong>на</strong>чений


135управляющих параметров, которые записываются в ходе экспериментов,проводимых человеком.Рис. 35. Структура обучающего примераКаждый элемент T.in[t] последовательности входных параметровсостоит из P чисел – з<strong>на</strong>чений этих параметров в момент времени t.Элемент T.ans[t] включает в себя два <strong>на</strong>бора: T.ans[t].d и T.ans[t].c.Последовательность T.ans[t].d состоит из D дискретных параметров, аT.ans[t].c – из С непрерывных. Таким образом, T.ans[t] состоит из (D + C)чисел.Обоз<strong>на</strong>чим через T.out <strong>на</strong>бор управляющих параметров, выданныхавтоматом <strong>на</strong> обучающем примере T. Структура T.out совпадает соструктурой T.ans.Было подготовлено 10 обучающих примеров, каждый из которыхпредставляет собой запись выполнения «мертвой петли» под управлениемпилота-человека.На рис. 36, а – м приведены кадры видеозаписи одного изобучающих примеров.


136а) б)в) г)д) е)ж) з)


137и) к)л) м)Рис. 36. Кадры видеозаписи одного из обучающих примеров4.1.4. Вычисление функции приспособленностиДля вычисления з<strong>на</strong>чения функции приспособленности <strong>на</strong> входавтомата подается каждая из n последовательностей I i – входной <strong>на</strong>бор i-го обучающего примера и определяется последовательность з<strong>на</strong>ченийуправляющих параметроввычисляется з<strong>на</strong>чение функции.O ~ i , которую генерирует автомат. После этогоТак как в рассматриваемой задаче выходные воздействия могут бытьне только дискретными, но и непрерывными, то был выбран следующийвид функции приспособленностиFitness 11Nni12 ~ ( O , O )2 ( O ,0)iii.


2 (1O i138Для упрощения дальнейших формул обоз<strong>на</strong>чим через A i множитель,0), тогда предыдущее равенство примет видn12 ~Fitness 1 Ai ( Oi, Oi) (1)Ni1~Здесь под O i,O ) понимается «расстояние» между выходной и эталонной( iпоследовательностями управляющих параметров, которое вычисляется поформуле:c~~D D C C L i d~ 2 ( Oi, Oi) i,t,k i,t,k i,t,k i,t,k .t 1 k 1k 1Как предлагалось выше, перед вычислением функцииприспособленности к «каркасу» автомата применяется алгоритмрасстановки выходных воздействий. Для <strong>построения</strong> автомата управлениямоделью беспилотного самолета этот алгоритм был модифицирован дляучета непрерывных выходных воздействий.4.1.5. Модифицировнный алгоритм расстановки выходныхвоздействийДля расстановки выходных воздействий <strong>на</strong> переходах каркасуавтомата <strong>на</strong> вход подается входной <strong>на</strong>бор параметров из каждогообучающего примера. При этом отмечаются переходы, совершаемыеавтоматом.При использовании этого алгоритма <strong>на</strong> переходах «скелета»автомата <strong>на</strong> его вход подается вход<strong>на</strong>я последовательность из каждогообучающего примера. При этом запоми<strong>на</strong>ются переходы, совершаемыеавтоматом.


1394.1.5.1. Случай одного обучающего примераДля упрощения понимания предлагаемого подхода рассмотримслучай, когда обучающий <strong>на</strong>бор состоит из одного обучающего примера T(n = 1). Тогда функция приспособленности приобретает вид2 ~Fitness 1A ( O,O).Здесь и дальше в этом пункте будем опускать первый нижний индекс соз<strong>на</strong>чением 1 для упрощения формул (вместо A 1 будем писать А, вместо O 1– O и т.д.).Функция приспособленности достигает максимума, когда квадрат~расстояния 2 ( O,O)минимален. После подстановки и изменения порядкасуммирования получим:dLc L~~D D C C t,k t,kk 1 t 1 k 1 t 1Заметим, что сумму для каждого параметра можно минимизироватьнезависимо. Следовательно, достаточно минимизировать сумму:L~D t , k Dt, kt 1для каждого k от 1 до d и сумму:L~C t , m Ct, mt 1для каждого m от 1 до c. Далее будем считать индексы k и mфиксированными.~Расстановка дискретных выходных воздействий. Пусть – этоеще не определенное з<strong>на</strong>чение k-го дискретного параметра воздействия <strong>на</strong>последнем выполненном переходе в момент времени t. Поэтомувыражение (2) можно переписать следующим образом:cnt~t,k Dt,ki1ti2(2)(3)D (4)t,kt,k2.D t , k


Здесь140 i – множество з<strong>на</strong>чений моментов времени t, в которых номерпоследнего выполненного перехода был равен i, а cnt – число переходов вавтомате. Для минимизации суммы (4) достаточно минимизировать суммувида:~D t,k Dt,k tiдля каждого i от 1 до n. Зафиксируем i. При~t з<strong>на</strong>чение D t , kiравноз<strong>на</strong>чению k-го дискретного параметра <strong>на</strong> переходе i, которое не зависит отt. Обоз<strong>на</strong>чим его через u ( u D ~t , k при t i). После введения этогообоз<strong>на</strong>чения, получим:t k~ t k utiD , .Пусть – это множество тех моментов времени t из i , в которыеi, hD , равно v h . Здесь v h – h-е возможное з<strong>на</strong>чение k-го дискретногопараметра. Заметим, что~ – непересекающиеся подмножества, и приi, hэтом выполняется соотношениеGh1~i,h .Учитывая сказанное и обоз<strong>на</strong>чив как G число возможных з<strong>на</strong>ченийk-го дискретного параметра, получим:iGG u Dt,k u vhu vh 1u vh~~~h1ti,hh1ti,h h1ti, h h1GG~ i,h(5)Выбрав в качестве з<strong>на</strong>чения дискретного параметра <strong>на</strong> i-м переходеu=v g , получим з<strong>на</strong>чение суммы (5), равное v h~ i i,g, так как всекоэффициенты u равны единице тогда и только тогда, когда g h , аG~ h1i,hi.


141Поэтому для минимизации суммы (5) необходимо выбрать тоз<strong>на</strong>чение v g , при котором~i, максимально, – <strong>на</strong>иболее частоgвстречающееся з<strong>на</strong>чение средиD , при t i. Если таких з<strong>на</strong>ченийt kнесколько, то можно выбрать любое из них.Расстановка непрерывных выходных воздействий. Какупоми<strong>на</strong>лось выше, величи<strong>на</strong> изменения m-го непрерывного параметрарав<strong>на</strong> сумме изменений этого параметра <strong>на</strong> всех выполненных переходах.При этом <strong>на</strong> каждом из этих переходов рассматриваемый параметризменяется <strong>на</strong> определенную (постоянную для этого перехода), нонеизвестную величину. Обоз<strong>на</strong>чим u i величину изменения параметра <strong>на</strong> i-мпереходе. Тогда окончательное з<strong>на</strong>чение параметра в момент времени tравно сумме его <strong>на</strong>чального з<strong>на</strong>чения (равного нулю) и всех его изменений<strong>на</strong> каждом выполненном переходе:~C ui.cntt, k i[t]i1Здесь i[t]– число выполнений i-го перехода к моменту времени t. Такимобразом, сумму (3) можно переписать в виде:SLt1C ui .cntt, mi[t]i1Для того чтобы <strong>на</strong>йти точку, в которой S принимает минимальноез<strong>на</strong>чение, необходимо <strong>на</strong>йти точку, в которой частные производные S по u jдля всех j были равны нулю. Эти производные имеют видSuj Lt1cntLcnt 2 j[t]Ct, mi[t]ui 2j[t]i[t]ui Ct,m . i1 t1 i1После преобразования получим систему линейных уравнений:2


142cnt i cnt i... cnt iL1[t]i[t]u2[t]i[t]un[t]i[t]ui1 t1t1Li1 t1t1Li1 t1t1LLLCCCt,mt,mt,m [ t];1 [ t];2 [ t].В данной работе эти с систем (для m от 1 до с) решаются методомГаусса с целью получения искомых величин u j изменения m-го параметра<strong>на</strong> переходе j.Обобщим метод <strong>на</strong> случай нескольких обучающих примеров. Приэтом функция (1) достигает максимума, когда минималь<strong>на</strong> суммаni1Ai2 ~ ( Oi, Oi) .Как и ранее, суммы по каждому параметру можно минимизироватьнезависимо друг от друга. Получим, что необходимо минимизироватьсуммуn Li~ AiDt k Dt ki , , i , ,i1 t1для каждого k от 1 до d и суммуn Li~ AiCt m Ct mi , , i , ,i1 t1для каждого m от 1 до c. Далее считаем индексы k и m зафиксированными.Расстановка дискретных выходных воздействий. Выделим изсуммы (6) слагаемые, соответствующие каждому переходу:Здесь i 2(6)(7)cnt n~~D D A D D n cntAi,t,k i,t,k i i,t,k i,t,k .i1j1tj1 i1ti,j i, j – множество таких моментов времени t, при которых номерпоследнего выполненного перехода автомата, запущенного <strong>на</strong> обучающемi,jn


143примере i, равен j, а n – число переходов в автомате. Таким образом, длякаждого j от 1 до n необходимо минимизировать выражение видаn~ AiDt k Dt ki , , i , ,i1ti,jЗафиксируем j. Как и в случае, когда обучающий пример состоит из~одного обучающего примера, при равно з<strong>на</strong>чению k-гоD i , t , k.t i,jдискретного параметра <strong>на</strong> переходе j, которое не зависит от t. Сноваобоз<strong>на</strong>чим его через u.которыхПустьD i t , k~ i , j,h – это множество тех моментов времени t из i, j, при, равно v h . Как и раньше, v h – h-е возможное з<strong>на</strong>чение k-годискретного параметра, подмножества i , j,h являютсянепересекающимися, и выполняется соотношениеG~ i , j,h i, j .h1Обоз<strong>на</strong>чая как G число возможных з<strong>на</strong>чений этого параметра,получим:ni1An GDi, t,k u Ai Di, t,k uiti,j~i1 h1ti,j , h~nG Aivh u 1 Aiu vhi, j,hi1 h1~ti,j , hnGi1 h1~.Выбрав v g в качестве з<strong>на</strong>чения дискретного параметра <strong>на</strong> j-мпереходе (u=v g ) и подставив в предыдущую сумму, получим:n Gn Gn G~~ ~ ~ Aivg vhi, j,h Aig hi, j,h Aii, j,h i, j,g i1 h1i1 h1i1 h1nn~~i, j i, j,gAii, j Aii, j gn Ai ,i1i1i1Для минимизации суммы (8) необходимо выбрать то з<strong>на</strong>чение v g , прикотором(8)


144ni1~Aii, j,gмаксимально. Таким образом, <strong>на</strong> j-м переходе в качестве з<strong>на</strong>чения k-годискретного параметра следует выбрать v g , где~ng arg max Aii, j,ggi1Расстановка непрерывных выходных воздействий. Ввиду того,что величи<strong>на</strong> изменения m-го непрерывного параметра в момент времени t~( C i , t , m) рав<strong>на</strong> сумме изменений этого параметра <strong>на</strong> всех выполненныхпереходах к этому моменту, из формулы (7) получимSn LcntCi, t,mi,j[t]i1 t1j1i AiЗдесь, как и раньше, u j – неизвест<strong>на</strong>я величи<strong>на</strong> изменения m-гонепрерывного параметра <strong>на</strong> j-м переходе, а [ ] – число выполнений j-гоперехода к моменту времени t автомата, запущенного <strong>на</strong> обучающемпримере i. Производ<strong>на</strong>я S по u h имеет видSuhi Aii, j tn Lcnt2 i, h[t]i,j[t]i1 t1j1u.j u j Ci,t,m.Приравняв все производные к нулю, для каждого непрерывного m-гопараметра получим систему из n уравнений:2.


cnt j cnt j cnt j ni Aii Aii Ai145i Aii,1i,j j1 i1 t1i1 t1ni Aii,2i,j j1 i1 t1i1 t1nLLL [ t] [ t]u [ t] [ t]u [ t] [ t]ui Aii,n i,j j1 i1 t1i1 t1nNNLLLCCCi,t,mi,t,mi,t,m [ t];i,1 [ t];i,2 [ t].Каждая из этих систем решается методом Гаусса. Полученные u j –искомые величины изменений рассматриваемого непрерывного m-гопараметра <strong>на</strong> переходе j.4.1.6. Результаты <strong>построения</strong> автоматаБыло проведено 50 запусков генетического алгоритма, в каждом изкоторых выбирался автомат с <strong>на</strong>ибольшим з<strong>на</strong>чением функцииприспособленности. Полеты моделей самолетов, управляемыхвыбранными автоматами, были просмотрены экспертом.После этого автомат, используемый в полете, больше другихпохожем <strong>на</strong> «идеальную мертвую петлю», был <strong>на</strong>зван лучшим. В табл. 14приведено описание переходов лучшего из сгенерированных <strong>автоматов</strong>для задачи выполнения «мертвой петли» (число состояний – 4, <strong>на</strong>чальноесостояние – 0, число дуг – 68).Таблица 14. Описание лучшего из построенных <strong>автоматов</strong>Событие иДугаусловиеДискретныевыходныевоздействияi,nНепрерывные выходные воздействияРульРульМагнето Стартер Дроссель Элеронывысоты <strong>на</strong>правления0 -> 0 e 0 [not x 0 ] 0 0 1.00000 0.05239 0.01043 0.000000 -> 0 e 2 [not x 2 ] 0 0 0.00000 -0.01315 0.02117 0.000000 -> 0 e 4 [not x 4 ] 0 0 0.00000 0.00199 -0.09535 0.000000 -> 0 e 6 [not x 6 ] 0 0 0.00000 0.01336 -0.07833 0.00000


1460 -> 0 e 8 [not x 8 ] 0 0 0.00000 0.00178 -0.10299 0.000000 -> 0e 11 [notx 11 ] 3 0 0.00000 -0.00178 0.01466 0.000000 -> 1 e 5 [not x 5 ] 0 0 0.00000 -0.01119 0.09089 0.000000 -> 1 e 9 [x 9 ] 0 0 0.00000 -0.01622 0.20543 0.000000 -> 1 e 9 [not x 9 ] 0 0 0.00000 0.00000 0.00000 0.000000 -> 2 e 1 [x 1 ] 0 0 0.00000 0.00217 0.01965 0.000000 -> 2 e 3 [x 3 ] 0 0 0.00000 0.02432 0.01225 0.000000 -> 2 e 5 [x 5 ] 0 0 0.00000 0.00000 0.00000 0.000000 -> 2 e 6 [x 6 ] 0 0 0.00000 0.00000 0.00000 0.000000 -> 2e 12 [notx 12 ] 3 0 0.00000 0.00018 -0.00087 0.000000 -> 3 e 4 [x 4 ] 0 0 0.00000 -0.01352 -0.08765 0.000000 -> 3 e 7 [not x 7 ] 0 0 0.00000 -0.00394 0.06189 0.000000 -> 3e 10 [notx 10 ] 0 0 0.00000 -0.00688 0.05064 0.000001 -> 0 e 0 [not x 0 ] 0 0 1.00000 0.05239 0.01043 0.000001 -> 0 e 2 [x 2 ] 0 0 0.00000 -0.02552 -0.01522 0.000001 -> 0 e 4 [x 4 ] 0 0 0.00000 0.00000 0.00000 0.000001 -> 0 e 11 [x 11 ] 3 0 0.00000 0.00000 0.00000 0.000001 -> 1 e 1 [not x 1 ] 0 0 0.00000 -0.00132 0.00866 0.000001 -> 1 e 2 [not x 2 ] 0 0 0.00000 0.00000 0.00000 0.000001 -> 1 e 5 [x 5 ] 0 0 0.00000 -0.02809 -0.01434 0.000001 -> 1 e 7 [x 7 ] 0 0 0.00000 -0.00054 -0.00506 0.000001 -> 1e 12 [notx 12 ] 3 0 0.00000 -0.01224 -0.03468 0.000001 -> 2 e 0 [x 0 ] 0 0 0.00000 -0.00161 -0.00478 0.000001 -> 2 e 3 [x 3 ] 0 0 0.00000 0.00000 0.00000 0.000001 -> 2 e 3 [not x 3 ] 0 0 0.00000 -0.00274 -0.00202 0.000001 -> 2 e 6 [x 6 ] 0 0 0.00000 -0.01154 -0.11022 0.000001 -> 2 e 8 [x 8 ] 0 0 0.00000 -0.01082 -0.06436 0.000001 -> 2 e 9 [not x 9 ] 0 0 0.00000 -0.00993 -0.06966 0.000001 -> 3 e 5 [not x 5 ] 0 0 0.00000 -0.03879 -0.09682 0.000001 -> 3e 10 [notx 10 ] 0 0 0.00000 0.00172 0.03226 0.000001 -> 3 e 12 [x 12 ] 3 0 0.00000 0.00497 -0.01437 0.000002 -> 0 e 1 [not x 1 ] 0 0 0.00000 0.03000 0.06766 0.000002 -> 0 e 3 [not x 3 ] 0 0 0.00000 0.00000 0.00000 0.000002 -> 0 e 9 [x 9 ] 3 0 0.00000 0.01939 0.04064 0.000002 -> 1 e 0 [x 0 ] 0 0 0.00000 0.02731 0.02049 0.00000


1472 -> 1 e 0 [not x 0 ] 0 0 0.00000 0.02047 -0.02413 0.000002 -> 1 e 4 [x 4 ] 0 0 0.00000 0.00110 -0.00006 0.000002 -> 1 e 4 [not x 4 ] 0 0 0.00000 0.00000 0.00000 0.000002 -> 1 e 8 [x 8 ] 0 0 0.00000 0.01159 0.06208 0.000002 -> 2 e 2 [x 2 ] 0 0 0.00000 0.01880 0.00322 0.000002 -> 2 e 6 [x 6 ] 0 0 0.00000 -0.02062 -0.01551 0.000002 -> 2 e 7 [not x 7 ] 0 0 0.00000 0.00309 0.05025 0.000002 -> 2e 10 [notx 10 ] 0 0 0.00000 -0.00054 -0.01195 0.000002 -> 2e 11 [notx 11 ] 3 0 0.00000 0.01573 0.06745 0.000002 -> 2e 12 [notx 12 ] 3 0 0.00000 -0.00140 -0.00006 0.000002 -> 3 e 3 [not x 3 ] 0 0 0.00000 -0.00889 -0.04245 0.000002 -> 3 e 5 [x 5 ] 0 0 0.00000 0.00000 0.00000 0.000002 -> 3 e 7 [x 7 ] 0 0 0.00000 0.00239 0.03443 0.000002 -> 3 e 11 [x 11 ] 0 0 0.00000 0.00000 0.00000 0.000003 -> 0 e 1 [x 1 ] 0 0 0.00000 0.00661 -0.00695 0.000003 -> 0e 10 [notx 10 ] 0 0 0.00000 0.01817 0.04933 0.000003 -> 1 e 3 [x 3 ] 0 0 0.00000 0.02187 0.03925 0.000003 -> 1 e 5 [x 5 ] 0 0 0.00000 0.00905 0.09217 0.000003 -> 1 e 6 [not x 6 ] 0 0 0.00000 0.00664 0.08602 0.000003 -> 1e 12 [notx 12 ] 3 0 0.00000 0.00556 -0.07512 0.000003 -> 2 e 4 [x 4 ] 0 0 0.00000 -0.01550 -0.09491 0.000003 -> 2 e 8 [x 8 ] 0 0 0.00000 -0.00498 0.01483 0.000003 -> 2 e 10 [x 10 ] 0 0 0.00000 0.00000 0.00000 0.000003 -> 2e 11 [notx 11 ] 3 0 0.00000 0.00177 -0.03823 0.000003 -> 3 e 0 [not x 0 ] 0 0 1.00000 0.04394 0.11148 0.000003 -> 3 e 2 [not x 2 ] 0 0 0.00000 -0.02054 -0.17037 0.000003 -> 3 e 7 [not x 7 ] 0 0 0.00000 -0.00315 0.00256 0.000003 -> 3 e 9 [not x 9 ] 0 0 0.00000 -0.01064 0.00960 0.000003 -> 3 e 12 [x 12 ] 3 0 0.00000 0.00757 0.00196 0.00000Отметим, что для каждого состояния могут быть определены 2rпереходов, где r – число входных переменных (в рассматриваемом случаеоно равно 13). Од<strong>на</strong>ко ни одно из четырех состояний не содержит их все.


148Отсутствие перехода в таблице свидетельствует о том, что <strong>на</strong> этомпереходе автомат сохраняет свое состояние и не вырабатывает никакихвыходных воздействий.Перед осуществлением «мертвой петли» двигатель включен.Поэтому в ходе ее выполнения в использовании стартера нетнеобходимости – столбец «стартер» содержит только нули. Этот органуправления не был исключен при генерации <strong>автоматов</strong>, так как возможныдополнительные обучающие примеры, в которых требуется переключениестартера (<strong>на</strong>пример, если двигатель может заглохнуть). Последний столбецтакже оказался нулевым, но и соответствующий ему орган управленияможет быть использован при применении других обучающим примеров.В процессе <strong>на</strong>блюдения за ходом выполнения «мертвом петли» подуправлением лучшего автомата было установлено, что в зависимости отпараметров среды и самолета при запуске автомата возможны триварианта выполнения «петли»:1. В большинстве случаев модель самолета, как и при управлениивручную, выполняет одну «мертвую петлю» и летит дальше.2. Иногда модель самолета может выполнить несколько «мертвыхпетель» с некоторым интервалом. Это происходит в случае, когдаз<strong>на</strong>чения параметров модели самолета в конце выполнения «мертвойпетли» схожи со з<strong>на</strong>чениями параметров в <strong>на</strong>чале ее выполнения.Это приводит к тому, что если автомат после осуществления «петли»<strong>на</strong>ходится в том же состоянии, в котором был в <strong>на</strong>чале, то поведениемодели зацикливается. В ходе экспериментов авторы неоднократно<strong>на</strong>блюдали выполнение двух «мертвых петель» подряд. Выполнениебольшего числа «петель» не <strong>на</strong>блюдалось.3. Модель может вообще не выполнить «мертвую петлю», так какавтомат не справляется с управлением, что, правда, бывает крайнередко.


149Приведем ссылки <strong>на</strong> видеозаписи трех вариантов реализации«мертвой петли» под управлением лучшего автомата: выполнение«мертвой петли», близкое к «идеальному» (http://www.youtube.com/watch?v=TzrLoJjjVTA);выполнение «мертвой петли» с заваливанием <strong>на</strong> левый борт споследующим выравниванием (http://www.youtube.com/watch?v=C6WV7x2bqE8);последовательное выполнение двух «мертвых петель»(http://www.youtube.com/watch?v=yFiG4yz67Ks).На рис. 37, а – л приведены 11 кадров первой из этих видеозаписей.а) б)в) г)д) е)


150ж) з)и) к)л)Рис. 37. Кадры видеозаписи выполнения «мертвой петли» подуправлением лучшего автомата4.2. ВНЕДРЕНИЕ РЕЗУЛЬТАТОВ РАБОТЫ В УЧЕБНЫЙ ПРОЦЕССДля внедрения результатов работы в учебный процесс былиразработаны две виртуальные лаборатории (<strong>на</strong> языках программированияJava и C#) для обучения построению <strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong>эволюционных алгоритмов.


1514.2.1. Виртуаль<strong>на</strong>я лаборатория <strong>на</strong> языке JavaПервая из разработанных виртуальных лабораторий реализова<strong>на</strong> <strong>на</strong>языке программирования Java [168]. О<strong>на</strong> имеет модульную архитектуру –содержит ядро, предоставляющее базовую функцио<strong>на</strong>льность, котораяможет быть расшире<strong>на</strong> за счет подключаемых модулей (плагинов).Ядро виртуальной лаборатории позволяет просматривать исохранять в виде файлов графики зависимости з<strong>на</strong>чений некоторыхфункций (<strong>на</strong>пример, максимального, минимального и среднего з<strong>на</strong>ченияфункции приспособленности особей поколения) от номера поколения.Кроме этого поддерживается возможность визуализации особей и ихсохранения в текстовом формате. Также ядро программы поддерживаетподключение плагинов «<strong>на</strong> лету» (во время работы программы).В качестве подключаемых модулей выступают: решаемые задачи; функции, графики которых строятся ядром программы; реализации различных алгоритмов генетического программирования; реализации различных представлений особей и операций скрещивания имутации для алгоритмов генетического программирования; визуализаторы особей (<strong>автоматов</strong>) и управляемых ими объектов (онизависят от конкретной задачи и от конкретного представления особи).При этом отметим, что алгоритмы генетического программированияи особи в некотором смысле независимы – предполагается, что любойалгоритм рассматриваемого класса может работать с любымпредставлением особи.Виртуаль<strong>на</strong>я лаборатория используется следующим образом.Решаемая задача формулируется в виде текстового описания задачи ивыбранной функции приспособленности, для которой задаетсяпрограмм<strong>на</strong>я реализация. Задача оформляется в виде плаги<strong>на</strong> квиртуальной лаборатории.


152Для решаемой задачи выбирается метод представления <strong>конечных</strong><strong>автоматов</strong> в виде особи эволюционного алгоритма. Программ<strong>на</strong>яреализация этого метода оформляется в виде соответствующего плаги<strong>на</strong>.Далее задаются параметры особи, <strong>на</strong>пример, число состоянийавтомата, и операторы скрещивания и мутации. Каждый оператороформляется в виде отдельного плаги<strong>на</strong>.Далее выбирается эволюционный алгоритм, который будетприменяться для <strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong>, и осуществляется<strong>на</strong>стройка его параметров (размер поколения, вероятность мутации и т. д.).Алгоритм оформляется в виде плаги<strong>на</strong>.Далее осуществляется запуск алгоритма. В результате его работыпользователю представляются графики, <strong>на</strong>пример, график зависимостимаксимального з<strong>на</strong>чения функции приспособленности от номерапоколения (рис. 38).Рис. 38. Статистика работы генетического алгоритма


153При необходимости работа алгоритма может быть приостановле<strong>на</strong>.В этом случае становится доступен выбор для просмотра любой особи изтекущего поколения, а также лучших особей из каждого поколения(рис. 39).Рис. 39. Окно выбора особи для просмотраДля просмотра особей используются их визуализаторы, которыетакже в виде плагинов к виртуальной лаборатории.4.2.1.1. Структура виртуальной лабораторииЯдро программы включает в себя три модуля. common.jar – содержит интерфейсы, необходимые для разработкиплагинов; core.jar – ядро системы и пользовательский интерфейс; util.jar – содержит реализацию вспомогательных классов.В состав виртуальной лаборатории входят следующие плагины:


154 algorithms/simple.jar – генетический алгоритм; functors/max.jar – плагин для отображения графика зависимостимаксимального з<strong>на</strong>чения функции приспособленности от номерапоколения; functors/mean.jar – плагин для отображения графика зависимостисреднего з<strong>на</strong>чения функции приспособленности от номера поколения; individuals/mealy – особь эволюционного алгоритма,описывающая конечный автомат Мили.4.2.1.2. Правила <strong>на</strong>писания плагинов к виртуальнойлабораторииКак было сказано выше, виртуаль<strong>на</strong>я лаборатория имеет модульнуюархитектуру – содержит ядро, предоставляющее базовуюфункцио<strong>на</strong>льность, которая расширяется за счет подключаемых модулей(плагинов).Отметим, что все упоми<strong>на</strong>емые ниже интерфейсы содержатся вфайле common.jar, некоторые необязательные, но, возможно, полезные,при <strong>на</strong>писании собственного модуля классы, содержатся в файлеutil.jar.Создание плаги<strong>на</strong> состоит в реализации соответствующегоинтерфейса и сборке jar-архива.4.2.1.3. Плагин, содержащий представление особиВ рассматриваемой виртуальной лаборатории особь – это экземпляркласса, реализующего интерфейс Individual:public interface Individual extends Comparable{public double fitness();public Individual mutate(Random r);public Individual[] crossover(Individual p, Random r);


}155Метод toString() используется при сохранении особи в файл.Для подключения модуля к ядру виртуальной лаборатории JARархивс реализацией особи должен быть помещен в директориюindividuals. Этот JAR-архив должен содержать файл MANIFEST.MF, вкотором должны быть определены следующие параметры: Main-Class,Extension-Name, Comment. Параметр Main-Class задает имя класса,реализующего интерфейс Loader. ПараметрExtension-Name содержит имя особи, отображаемое в диалоге выбораособи. Параметр Comment должен иметь вид «arg1 arg2 ||| комментарий,отображаемый в диалоге выбора особи». Здесь arg1 и arg2 – параметры,необходимые для отображения графиков – максимальное з<strong>на</strong>чение и числоз<strong>на</strong>ков после десятичной точки, отображаемых в з<strong>на</strong>чении функцииприспособленности.4.2.1.4. Плагин, содержащий генетический алгоритмГенетический алгоритм в виртуальной лаборатории – это экземпляркласса, реализующего интерфейс GA:public interface GA {public List getGeneration();public void nextGeneration();public void bigMutation();public Individual getBest();}Приведем описание методов, входящих в этот интерфейс: getGeneration – возвращает текущее поколение; nextGeneration – переход к следующему поколению; bigMutation – вызов большой мутации поколения; getBest – возвращает лучшую особь <strong>на</strong> данный момент.


156Для подключения модуля к ядру виртуальной лаборатории JAR-файлс реализацией генетического алгоритма должен быть помещен вдиректорию gas. Этот JAR-архив должен содержать файл MANIFEST.MF,в котором должны быть определены следующие параметры: Main-Class, Extension-Name, Comment.Параметр Main-Class – это имя класса, реализующего интерфейсLoader. Параметры Extension-Name и Comment будутотображаться в диалоге выбора алгоритма.4.2.1.5. Плагин, содержащий визуализатор особиВизуализатор особи – это экземпляр класса java.awt.Frame. Дляподключения модуля к ядру виртуальной лаборатории JAR-файл среализацией визуализатора должен быть помещен в директорию emulators.Этот JAR-архив должен содержать файл MANIFEST.MF, в которомдолжны быть определены следующие параметры: Main-Class,Extension-Name, Comment. Параметр Main-Class – имя класса,реализующего интерфейс Loader. В данном случае метод loadбудет принимать одни параметр – возвращаемое з<strong>на</strong>чение методаgetAttributes() экземпляра Visualizable.public interface Visualizable extends Individual {public Object[] getAttributes();}Параметр Comment должен иметь вид «arg1 arg2 …|||комментарий, отображаемый в диалоге выбора визуализатора». ПараметрExtension-Name также используются при отображении в диалогевыбора визуализатора.4.2.2. Виртуаль<strong>на</strong>я лаборатория <strong>на</strong> языке C#Виртуаль<strong>на</strong>я лаборатория GlOpt [169] реализова<strong>на</strong> <strong>на</strong> языкепрограммирования С# <strong>на</strong> платформе Microsoft.NET. На эту виртуальную


157лабораторию было получено свидетельство о регистрации программы дляЭВМ (третье свидетельство в Приложении 1).О<strong>на</strong> состоит из ядра и подключаемых модулей (плагинов), которыереализуют конкретные задачи и методы их решения. Ядро представленоклассом Brain, который ответственен за загрузку основных сущностейпрограммного комплекса: задач, методов поисковой оптимизации ивизуализаторов, а также выполняет функции распределения ресурсовмежду работающими алгоритмами.4.2.2.1. Структура виртуальной лабораторииДля описания задач используются абстрактные классы Problem иIndividual, от которых <strong>на</strong>следуются классы, описывающие конкретныезадачи, <strong>на</strong>пример задачу «Умный муравей».Класс Problem содержит метод OptimizationDirection,возвращающий информацию о <strong>на</strong>правления оптимизации (минимизацияили максимизация) и метод EvaluateIndividual, пред<strong>на</strong>з<strong>на</strong>ченныйдля вычисления функции приспособленности у конкретной особи.Наследники этого класса должны реализовывать эти методы, а такжеметоды, обеспечивающие доступ к базовой информации о задаче: <strong>на</strong>званиии ее кратком описании.Алгоритмы решения описываются классами Algorithm иSearchOperator, от которых, в свою очередь, <strong>на</strong>следуются классы,реализующие конкретные методы поисковой оптимизации, <strong>на</strong>пример,метод спуска <strong>на</strong> <strong>основе</strong> случайных мутаций или генетический алгоритм.Класс SearchOperator необходим для организации требуемых взадаче операций <strong>на</strong>д объектами класса Individual. Он обеспечиваетуниверсальность в применении методов решения к различным задачам.Общая структура изображе<strong>на</strong> <strong>на</strong> рис. 40.


158BRAINPlugin-Description-HTML descriptionAlgorithm-Best Individual-Current Individuals+Initialize()+Next Iteration()+Terminated()Search Operator+Create()1Problem-Optimization Direction+Evaluate Individual()1 11Individual-Fitness-Sign+CompareTo()+Calculate Fitness()Individual Viewer+View Individual()Рис. 40. Структура виртуальной лабораторииТаким образом, в виртуальной лаборатории существует пять типовплагинов: рассматриваемые задачи (<strong>на</strong>следуется от абстрактного классаProblem); алгоритмы поисковой оптимизации (<strong>на</strong>следуется от абстрактного классаAlgorithm); методы, адаптирующие алгоритмы к конкретным задачам (<strong>на</strong>следуетсяот абстрактного класса SearchOperator); визуализаторы для задач (пример внешнего вида визуализатора приведен<strong>на</strong> рис. 41); текстовые описания задач и алгоритмов.Каждый плагин представляет собой dll-библиотеку. Особоотметим, что виртуаль<strong>на</strong>я лаборатория спроектирова<strong>на</strong> таким образом, что


159любую задачу можно решать, используя каждый из реализованныхметодов поисковой оптимизации.Рис. 41. Пример визуализатораВ состав виртуальной лаборатории входят следующие плагины: задачи: построение автомата по тестам, «Умный муравей», «Умный муравей-3»; методы поисковой оптимизации: генетический алгоритм, (1+1)-эволюцион<strong>на</strong>я стратегия; визуализатор для задачи «Умный муравей»; средства <strong>построения</strong> графиков зависимости з<strong>на</strong>чения функции приспособленностиот номера поколения; документация, в том числе html-описания решаемых задач и используемыхдля их решения методов.


1604.2.2.2. Правила <strong>на</strong>писания плагинов к виртуальнойлабораторииНиже приведены базовые рекомендации, которым необходимоследовать при разработке собственных модулей, определяющих алгоритмрешения. Процесс создания плагинов описывается <strong>на</strong> примере созданияплаги<strong>на</strong> задачи и алгоритма решения.Основные этапы при реализации новой задачи в виртуальнойлаборатории GLOpt.1. Реализация класса-<strong>на</strong>следника от абстрактного класса Individual,определяющего объект к которому в дальнейшем применяется алгоритмоптимизации. Так, <strong>на</strong>пример, в задаче о расстановке ферзей таким объектомвыступает шахмат<strong>на</strong>я доска с расставленными <strong>на</strong> ней ферзями.2. Реализация класса-<strong>на</strong>следника от абстрактного класса Problem. В данномклассе должен быть определен метод OptimizationDirection.Также необходимо определить метод EvaluateIndividual,возвращающий з<strong>на</strong>чение типа double – з<strong>на</strong>чение целевой функции дляданного индивида.3. Для реализации компоненты визуализации текущего решения требуетсяопределить класс Viewer, <strong>на</strong>следуемый от классаIndividualViewer, и, в частности, определить методViewIndividual, вызывающий графическую форму, либо представляющийданные о решении в любом другом удобном для пользователявиде.Приведем основные этапы разработки подключаемого модуля,определяющего алгоритм.1. Реализация алгоритма поиска оптимального решения – класса, <strong>на</strong>следованногоот абстрактного класса Algorithm. Данный класс долженопределять следующие методы.


161 OptimizationDirection – возвращает одну из двух именованныхконстант: OptimizationDirection.Minimizeили OptimizationDirection.Maximize. Initialize – описывает <strong>на</strong>чальное состояние в алгоритмепоиска решения. NextIteration – описывает действия, происходящие <strong>на</strong>очередной итерации алгоритма. В переменной BestIndividual типа Individual долж<strong>на</strong>содержаться актуаль<strong>на</strong>я информация об объекте типаIndividual c лучшей <strong>на</strong> данной итерации алгоритма целевойфункцией.2. Реализация интерфейса SearchOperator, <strong>на</strong>следованного от интерфейсаICreateOperator. В данном интерфейсе должен быть определенметод Create, возвращающий объект класса Individual (абстрактныйкласс, для каждой задачи используется своя реализация).Также в SearchOperator реализуются все необходимые методы дляработы с объектами Individual – <strong>на</strong>пример, операции мутации искрещивания.4.2.3. Применение виртуальных лабораторий в учебномпроцессеС 2008 г. в рамках дисциплины «Теория <strong>автоматов</strong> ипрограммирование» проводятся лекционные занятия и лабораторныеработы по методам применения эволюционных алгоритмов для <strong>построения</strong>управляющих <strong>конечных</strong> <strong>автоматов</strong>.Для проведения лабораторных работ используются описанные вышевиртуальные лаборатории. При этом виртуаль<strong>на</strong>я лаборатория <strong>на</strong> языкепрограммирования Java используется с 2008 г., а <strong>на</strong> языкепрограммирования C# – с 2009 г.


162Целью лабораторных работ является изучение методов <strong>построения</strong><strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов. В задании <strong>на</strong>лабораторную работу формулируется задача, для которой необходимопостроить конечный автомат, а также требования к используемомуэволюционному алгоритму, методу представления особи, выполненияопераций скрещивания и мутации, в том числе, и предложенные в<strong>на</strong>стоящей работе.Каждая лаборатор<strong>на</strong>я работа долж<strong>на</strong> выполняться одним студентом.В рамках работы студент реализует подключаемые модули к виртуальнойлаборатории <strong>на</strong> соответствующем языке программирования (Java или C#),а также выполняет несколько вычислительных экспериментов попостроению управляющих <strong>конечных</strong> <strong>автоматов</strong>. По результатамвыполнения лабораторной работы студент оформляет отчет. Примеротчета приведен в Приложении 2.За время использования виртуальных лабораторий в учебномпроцессе лабораторные работы были выполнены более чем 150 студентамикафедры «Компьютерные технологии» НИУ ИТМО. Часть отчетов полабораторным работам опубликова<strong>на</strong> <strong>на</strong> сайте http://is.ifmo.ru/labs/.ВЫВОДЫ ПО ГЛАВЕ 41. Разработанные методы <strong>построения</strong> управляющих <strong>конечных</strong><strong>автоматов</strong> использованы при построении автомата управлениямоделью беспилотного самолета.2. Разработанные методы <strong>построения</strong> управляющих <strong>конечных</strong><strong>автоматов</strong> внедрены в учебный процесс в рамках дисциплин«Теория <strong>автоматов</strong> и программирование» <strong>на</strong> кафедре«Компьютерные технологии» НИУ ИТМО.


163ЗАКЛЮЧЕНИЕВ результате диссертационного исследования получены следующиерезультаты:1. Разработан метод <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong>по обучающим примерам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов.Его основное отличие от известных состоит в том, что вэволюционные алгоритмы добавлен новый шаг «Расстановкавыходных воздействий», который выполняется передвычислением функции приспособленности.2. Разработан метод выполнения операции скрещивания длягенетических алгоритмов, учитывающий поведение <strong>автоматов</strong> <strong>на</strong>обучающих примерах. Показано, что генетический алгоритм,использующий разработанный метод выполнения операциискрещивания, осуществляет построение <strong>автоматов</strong> по обучающимпримерам быстрее, чем генетический алгоритм, использующийтрадиционный метод выполнения операции скрещивания,эволюцион<strong>на</strong>я стратегия и метод спуска <strong>на</strong> <strong>основе</strong> случайныхмутаций.3. Разработан метод <strong>построения</strong> <strong>автоматов</strong> по обучающим примерами темпоральным формулам <strong>на</strong> <strong>основе</strong> эволюционных алгоритмов иверификации. Его основное отличие от известных методов состоитв том, что для вычисления функции приспособленности совместноприменяются обучающие примеры и верификация.4. Разработа<strong>на</strong> технология <strong>построения</strong> <strong>автоматов</strong> по обучающимпримерам и темпоральным формулам.5. Разработано инструментальное средство для автоматизации<strong>построения</strong> <strong>автоматов</strong>.6. Разработанные методы использованы при построении автоматауправления моделью беспилотного самолета и внедрены в


164учебный процесс. Для внедрения в учебный процесс былиразработаны две виртуальные лаборатории. С их использованиемлабораторные работы были выполнены более чем 150 студентамикафедры «Компьютерные технологии» НИУ ИТМО.


165СПИСОК ИСТОЧНИКОВПЕЧАТНЫЕ ИЗДАНИЯ НА РУССКОМ ЯЗЫКЕ1. Букатова И. Л. Эволюционное моделирование и его приложения. М.:Наука, 1979.2. Гладков Л. А., Курейчик В. В., Курейчик В. М. Генетическиеалгоритмы. М.: Физматлит, 2006.3. Гуров В. С., Мазин М. А., Нарвский А. С., Шалыто А. А. UML.SWITCH-технология. Eclipse //Информационно-управляющиесистемы. 2004. № 6, c. 12 – 17. http://is.ifmo.ru/works/uml-switch-eclipse/4. Вельдер С. Э., Лукин М. А., Шалыто А. А., Яминов Б. Р. Верификацияавтоматных программ. СПб.: Наука, 2011.http://is.ifmo.ru/verification/velder_verification_posobie_nauka.pdf5. Данилов В. Р. Метод представления <strong>автоматов</strong> деревьями решенийдля использования в генетическом программировании //Научнотехническийвестник СПбГУ ИТМО. 2008. Выпуск 53. Автоматноепрограммирование, с. 103 – 108. http://is.ifmo.ru/works/2008/Vestnik/53/08-genetic-automata-decision-tree-method.pdf6. Егоров К. В., Шалыто А. А. Методика верификации автоматныхпрограмм // Информационно-управляющие системы. 2008. № 5,с. 15 – 21. http://is.ifmo.ru/works/_egorov.pdf7. Емельянов В. В., Курейчик В. М., Курейчик В. В. Теория и практикаэволюционного моделирования. М.: Физматлит, 2003.8. Заикин А. К. Разработка методов <strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong> сиспользованием алгоритма имитации отжига <strong>на</strong> примере игры«Вой<strong>на</strong> за ресурсы» // Научно-технический вестник СПбГУ ИТМО.2011. № 2, с. 49 – 54. http://is.ifmo.ru/works/_egorov.pdf9. Кларк Э., Грамберг О., Пелед Д. Верификация моделей программ. М.:МЦНМО, 2002.


16610. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы.Построение и а<strong>на</strong>лиз. М.: Вильямс, 2005.11. Курейчик В.М. Генетические алгоритмы. Состояние, проблемы, перспективы// Известия РАН. Теория и системы управления. 1999. № 1,с. 144 – 160.12. Курейчик В.В., Курейчик В.М., Сороколетов П.В. А<strong>на</strong>лиз и обзор моделейэволюции // Известия РАН. Теория и системы управления.2007. № 5, с. 114 – 126.13. Левенштейн В. И. Двоичные коды с исправлением выпадений,вставок и замещений символов. Доклады Академии <strong>на</strong>ук СССР. 1965.№ 4, с. 845 – 848.14. Лобанов П. Г., Шалыто А. А. Использование генетическихалгоритмов для автоматического <strong>построения</strong> <strong>конечных</strong> <strong>автоматов</strong> взадаче о «Флибах» / Сборник докладов 4-й Всероссийской <strong>на</strong>учнойконференции «Управление и информационные технологии» (УИТ-2006). СПбГЭТУ «ЛЭТИ». 2006, с.144 – 149. http://is.ifmo.ru/works/flib15. Лобанов П. Г. Использование генетических алгоритмов длягенерации <strong>конечных</strong> <strong>автоматов</strong>. Диссертация <strong>на</strong> соискание ученойстепени кандидата технических <strong>на</strong>ук. СПбГУ ИТМО. 2008.http://is.ifmo.ru/disser/lobanov_disser.pdf16. Люгер Дж. Искусственный интеллект: стратегии и методы решениясложных проблем. М: Вильямс, 2003.17. Мандриков Е.А., Кулев В.А. Разработка инструментального средствадля генерации <strong>конечных</strong> <strong>автоматов</strong> с использованием генетическихалгоритмов //Научно-технический вестник СПбГУ ИТМО. 2008.Вып. 53. Автоматное программирование, с. 100 – 103.http://is.ifmo.ru/works/2008/Vestnik/53/07-genetic-automata-tool.pdf18. Непейвода Н. Н. Стили и методы программирования. М.: Интернет-Университет Информационных технологий, 2005.


16719. Николенко С. И., Тулупьев А. Л. Самообучающиеся системы.М.: МЦНМО, 2009.20. Норенков И. П., Арутюнян Н. М. Метагенетический алгоритмоптимизации и структурного синтеза проектных решений// Информационные технологии. 2007. № 3, с. 10 – 13.21. Паращенко Д. А., Царев Ф. Н., Шалыто А. А. Технология моделированияодного класса мультиагентных систем <strong>на</strong> <strong>основе</strong> автоматногопрограммирования <strong>на</strong> примере игры «Соревнование летающих тарелок».Проект<strong>на</strong>я документация. СПбГУ ИТМО. 2006.http://is.ifmo.ru/unimod-projects/plates/22. Поликарпова Н. И., Шалыто А. А. Автоматное программирование.СПб.: Питер, 2009. http://is.ifmo.ru/books/_book.pdf23. Поликарпова Н. И., Точилин В. Н., Шалыто А. А. Методсокращенных таблиц для генерации <strong>автоматов</strong> с большим числомвходных переменных <strong>на</strong> <strong>основе</strong> генетического программирования //Известия РАН. Теория и системы управления. 2010. № 2, 100 – 117.http://is.ifmo.ru/works/_polikarpova_samolet.pdf24. Потапов А. С. Искусственный интеллект и универсальноемышление. СПб.: Политехника, 2012.25. Рассел С., Норвиг П. Искусственный интеллект. Современныйподход. М.: Вильямс. 2006.26. Хопкрофт Дж., Мотвани Р., Ульман Дж. Введение в теорию<strong>автоматов</strong>, языков и вычислений. М.: Вильямс, 2002.27. Шалыто А. А. Автоматное программирование / Материалыконференции с между<strong>на</strong>родным участием «Технические ипрограммные средства систем управления, контроля иизмерения» (УКИ’10). ИПУ РАН. 2010, с. 156 – 167.http://cmm.ipu.ru/proc/%D0%A8%D0%B0%D0%BB%D1%8B%D1%82%D0%BE%20%D0%90.%D0%90.%20.pdf


16828. Шалыто А. А. Switch-технология. Алгоритмизация ипрограммирование задач логического управления. СПб.: Наука, 1998.http://is.ifmo.ru/books/switch/129. Шалыто А. А. Логическое управление. <strong>Методы</strong> аппаратной и программнойреализации. СПб.: Наука, 2000.http://is.ifmo.ru/books/log_upr/1ПЕЧАТНЫЕ ИЗДАНИЯ НА АНГЛИЙСКОМ ЯЗЫКЕ30. Afzal W., Torkar R., Feldt R. A Systematic Review of Search-Based Testingfor Non-Functional System Properties // Information and SoftwareTechnology. 2009. Vol. 51. № 6, pp. 957 – 976.31. Alba E., Chicano F. ACOhg: Dealing with Huge Graphs / Proceedings ofthe 9th annual Conference on Genetic and Evolutionary Computation(GECCO ’07). NY. : ACM. 2007, pp. 10 – 17.32. Alba E., Chicano F. Ant Colony Optimization for Model Checking / Proceedingsof the 11th International Conference on Computer Aided SystemsTheory (EUROCAST 2007), pp. 523 – 530.33. Alba E., Chicano F. Finding Safety Errors with ACO / Proceedings of the9th annual Conference on Genetic and Evolutionary Computation(GECCO ’07). NY. : ACM. 2007, pp. 1066 – 1073.34. Ali S., Briand L., Hemmati H., Panesar-Walawege R. K. A Systematic Reviewof the Application and Empirical Investigation of Search-Based Test-Case Generation // IEEE Transactions of Software Engineering. 2010.Vol. 36, № 6, pp. 742 – 762.35. Angeline P., Pollack J. Evolutionary Module Acquisition / Proceedings ofthe Second Annual Conference on Evolutionary Programming. Cambridge:MIT Press. 1993, pp. 154 – 163.http://www.demo.cs.brandeis.edu/papers/ep93.pdf36. Back T. Evolutionary Algorithms in Theory and Practice. Oxford UniversityPress, 1996.


16937. Bagnall A.J., Rayward-Smith V.J., Whittley I.M. The Next Release Problem// Information and Software Technology. Dec. 2001, pp. 883 – 890.38. Belz A., Eskikaya B. A Genetic Algorithm for Finite State AutomataInduction with Application to Phonotactics / Proceedings of the ESSLLI-98 Workshop on Automated Acquisition of Syntax and Parsing.Saarbruecken. 1998, pp. 9 – 17.http://www.itri.brighton.ac.uk/~Anja.Belz/Publications/A_GA_for_FSA_induction_with_an_application_to_phonotactics.ps39. Benson K. Evolving Finite State Machines with Embedded GeneticProgramming for Automatic Target Detection / Proceedings of theCongress on Evolutionary Computation. 2000. Vol. 2, pp. 1543 – 1549.http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=87083840. Beyer H. G. The Theory of Evolution Strategies. Natural ComputingSeries. Berlin. NY: Springer-Verlag, 2001.41. Brave S. Evolving Deterministic Finite Automata Using Cellular Encoding/ Proceeding of First Annual Conference on Genetic Programming. 1996,pp. 39 − 44. http://citeseer.ist.psu.edu/131538.html42. Bryant R. E. Graph-based algorithms for boolean function manipulation/ IEEE Transactions on Computers. 1986, Vol. 35, pp. 677 – 691.43. Chambers L. Practical Handbook of Genetic Algorithms. Complex CodingSystems. Volumes I. II, III. CRC Press, 1999.44. Courcoubetis C., Vardi M., Wolper P., Yannakakis M. Memory-EfficientAlgorithms for the Verification of Temporal Properties / Formal Methodsin System Design. 1992, pp. 275 – 288.45. Clark J., Dolado J. J., Harman M., Hierons R., Jones B., Lumkin M.,Mitchell B., Mancoridis S., Rees K., Roper M., Shepperd M.Reformulating Software Engineering as a Search Problem. IEEEProceedings-Software. 2003. Vol. 150. № 3, pp. 161 – 175.


17046. Das R., Mitchell M., Crutchfield J. P. A genetic algorithm discoversparticle-based computation in cellular automata // Lecture Notes inComputer Science. 1994.www.santafe.edu/research/publications/workingpapers/94-03-015.pdf47. De Castro L., Timmis J. Artificial Immune Systems: A NewComputational Intelligence Approach. Springer, 2002.48. De Jong K. Evolutionary computation: a unified approach. MIT Press,Cambridge. MA, 2006.49. Dorigo M., Stutzle T. Ant Colony Optimization. The MIT Press, 2004.50. Eisenstein J. Evolving robot tank fighters. Technical Report AIM-2003-023. AI Lab. MIT, 2003.51. Ferrante N. Cotta C., Moscato P. Handbook of Memetic Algorithms. Berlin,NY: Springer-Verlag, 2012.52. Fogel L. Autonomous Automata // Industrial Research. 1962. V.4,pp. 14 – 19.53. Fogel L., Owens A., Walsh M. Artificial Intelligence through SimulatedEvolution. NY: Wiley, 1966.54. Frey C., Leugering G. Evolving Strategies for Global Optimization – AFinite State Machine Approach /Proceedings of the Genetic andEvolutionary Computation Conference (GECCO-2001). MorganKaufmann. 2001, pp. 27 – 33. http://citeseer.ist.psu.edu/456373.html55. Gastin P., Oddoux D. Fast LTL to Büchi Automata Translation / 13thConference on Computer Aided Verification (CAV'01). 2001, pp. 53 – 65.56. Gerth R., Peled D., Vardi M. Y.,Wolper P. Simple On-the-fly AutomaticVerification of Linear Temporal Logic / Proc. of the 15th Workshop onProtocol Specification. Testing and Verification. Warsaw. 1995,pp. 3 – 18.


17157. Ghnemat R., Khatatneh K., Oqeili S., Bertelle C., Duchamp G. Automatabasedadaptive behavior for economic modeling using game theory. 2005.http://arxiv.org/abs/cs/051008958. Glover F. Tabu search: A tutorial //Interfaces. 1990. Vol. 20, pp. 74 – 94.59. Glover F., Laguna M., Martí R. Fundamentals of Scatter Search and PathRelinking // Control and Cybernetics, 2000. № 29 (3), pp. 653 – 68460. Godefroid P. Model Checking for Programming Languages using Verisoft/ Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principlesof Programming Languages, pp. 174 – 186.61. Gold E. M. Complexity of automaton identification from given data. //Information and Control. 1978. № 37, pp. 302 − 320.62. Goldberg D. A Note on Boltzmann Tournament Selection for GeneticAlgorithms and Population-Oriented Simulated Annealing // ComplexSystems. 1990. Vol. 4, pp. 445 − 460.63. Goldsby H. J., Cheng B. H. Avida-MDE: a digital evolution approach togenerating models of adaptive software behavior / Proceedings of the 10thAnnual Conference on Genetic and Evolutionary Computation(GECCO’08), pp. 1751 – 1758.64. Hamming R. Error detecting and error correcting codes // Bell SystemTechnical Journal 29 (2), pp. 147 – 160.65. Harel D., Pnueli A. On the development of reactive systems / In «Logicand Models of Concurrent Systems». NATO Advanced Study Institute onLogic and Models for Verification and Specification of Concurrent Systems.Springer Verlag, 1985. pp. 477 – 498.66. Harman M., Hierons R., Proctor M. A new representation and crossoveroperator for search-based optimization of software modularization / InGECCO 2002: Proceedings of the Genetic and Evolutionary ComputationConference (NY, 2002). Morgan Kauffman Publishers, pp. 1351 – 1358.


17267. Harman M. Automated Test Data Generation Using Search-Based SoftwareEngineering / Proceedings of 2nd International Workshop Automationof Software Test (AST 07). IEEE CS Press, 2007, p. 2.68. Harman M., Tratt L. Pareto Optimal Search-Based Refactoring at the DesignLevel / Proceedings of 9th Annual Conference on Genetic and EvolutionaryComputation (GECCO 07). ACM Press. 2007, pp. 1106 – 1113.69. Harman M., Mansouri A., Zhang Y. Search-Based Software Engineering:A Comprehensive Analysis and Review of Trends, Techniques, and Applications.Tech. report TR-09-03. Dept. of Computer Science. King’sCollege London, 2009.70. Harman M. Why the Virtual Nature of Software Makes It Ideal forSearch-Based Optimization / Proceeding of 13th International ConferenceFundamental Approaches to Software Engineering (FASE 10). IEEE CSPress. 2010, pp. 1 – 12.71. Harman M. Software Engineering Meets Evolutionary Computation //Computer. 2011. Vol. 44. № 11, pp. 31 – 39.72. Harman M., Clark J. Metrics are fitness functions too / Proceedings of10 th International Symposium on Software Metrics. 2004, pp. 58 – 69.73. Hoffman L. Talking Model-Checking Technology // Communications ofthe ACM. 2008. V. 51. № 7, pp. 110 – 112.74. Holland J. Adaptation in Natural and Artificial Systems. University ofMichigan Press, 1975.75. Holland J. ECHO: Explorations of Evolution in a Miniature World /Proceedings of the Second Conference on Artificial Life. Redwood City.CA: Addison-Wesley, 1990.76. Holzmann G. J. The Model Checker SPIN // IEEE Transactions onsoftware engineering. 1997. Vol. 23. Issue 5, pp. 279 – 295.


17377. Horihan J., Yung-Hsiang Lu. Improving FSM evolution with progressivefitness functions / GLSVLSI '04: Proceedings of the 14th ACM GreatLakes symposium on VLSI. NY: ACM Press. 2004, pp. 123 − 126.78. Huang D. MS Thesis Preproposal: Adaptive Incremental FitnessEvaluation in Genetic Algorithms. 2005. NY: Rochester.http://www.cs.rit.edu/~dxh6185/downloads/MS_Thesis/Documents/Presentation.pdf79. Jefferson D., Collins R., Cooper C., Dyer M., Flowers M., Korf R., TaylorC., Wang A. The Genesys System: Evolution as a Theme in Artificial Life/Proceedings of Second Conference on Artificial Life. MA: Addison-Wesley. 1992, pp. 549 – 578.www.cs.ucla.edu/~dyer/Papers/AlifeTracker/Alife91Jefferson.html80. Johnson C. Genetic Programming with Fitness based on Model Checking.Lecture Notes in Computer Science. Springer Berlin / Heidelberg. 2007.Volume 4445/2007, pp. 114 – 124.81. Juillie H., Pollack J. Coevolving the «Ideal» Trainer: Application to theDiscovery of Cellular Automata Rules. 1998.http://citeseer.ist.psu.edu/16712.html82. Kennedy J., Eberhart R. C. Swarm Intelligence. Morgan Kaufmann. 2001.83. Kirsopp C., Shepperd M., Hart J. Search heuristic, case-based reasoningand software project effort prediction / GECCO 2002: Proceedings of theGenetic and Evolutionary Computation Conference. NY: 2002, pp. 1367 –1374.84. Koza J. Genetic programming. On the Programming of Computers byMeans of Natural Selection. MA: The MIT Press, 1998.85. Koza J. Genetic Evolution and Co-Evolution of Computer Programs /Proceedings of Second Conference on Artificial Life. Redwood City, CA:Addison-Wesley. 1992. pp. 603 − 629. http://citeseer.ist.psu.edu/177879.html


17486. Larranaga P., Lozano J. A. Estimation of distribution algorithms: A newtool for evolutionary computation. Kluwer Academic Publishers. Boston,2002.87. Levy S. Artificial Life: The Quest for a New Creation. NY: Pantheon,1992.88. Lucas S., Reynolds J. Learning DFA: Evolution versus Evidence DrivenState Merging / The 2003 Congress on Evolutionary Computation(CEC '03). Vol. 1, pp. 351 – 358.89. Lucas S., Reynolds J. Learning Deterministic Finite Automata with aSmart State Labeling Algorithm // IEEE Transactions on Pattern Analysisand Machine Intelligence. 2005. Vol. 27. № 7, pp. 1063 – 1074.90. Lucas S. Evolving Finite-State Transducers: Some Initial Explorations.Lecture Notes in Computer Science. Springer Berlin / Heidelberg. Volume2610/2003, pp. 241 – 257. http://www.springerlink.com/content/41a34vg70fp1hltb/91. Mancoridis S., Mitchell B. S., Rorres C., Chen Y., Gansner E. R. UsingAutomatic Clustering to Produce High-Level System Organizations ofSource Code / Proceedings of the 6th International Workshop on ProgramComprehension (IWPC ’98), pp. 45 – 52.92. McMillan K. L. Symbolic model checking: an approach to the state explosionproblem. PhD thesis. SCS. Carnegie Mellon University, 1992.93. McMinn P. Search-Based Software Test Data Generation: A Survey// Software Testing, Verification and Reliability. 2004. Vol. 14.№ 2, pp. 105 – 156.94. Metropolis N., Rosenbluth A., Rosenbluth M., Teller A., Teller E. Equationof state calculations by fast computing machines. Journal of ChemicalPhysics. 1953. Vol. 21, pp. 1087 – 1092.95. Miller J. The Coevolution of Automata in the Repeated Prisoner'sDilemma. Working Paper. Santa Fe Institute. 1989 // Journal of EconomicBehavior & Organization. 1996. Vol. 29. Issue 1, pp. 87 – 112.


17596. Mitchell B. S. A Heuristic Search Approach to Solving the Software ClusteringProblem. PhD Thesis. Drexel University, Philadelphia.97. Mitchell B. S., Mancordis S. Using heuristic search techniques to extractdesign abstractions from source code / GECCO 2002: Proceedings of theGenetic and Evolutionary Computation Conference (NY, 2002),pp. 1375 – 1382.98. Mitchell M. An Introduction to Genetic Algorithms. MA: The MIT Press,1996.99. Mitchell M., Crutchfield J. P., Hraber P. T. Evolving cellular automata toperform computations. Physica D. 1993. Vol. 75, pp. 361 – 391.http://web.cecs.pdx.edu/~mm/mech-imped.pdf100. Mitchell M., Holland J., Forrest S. When Will a Genetic Outperform HillClimbing? / Advances in Neural Information Processing Systems 6. SanMateo. CA: Morgan Kaufmann, 1994.101. Moonjoo K., Viswanathan M., Ben-Abdallah H., Kannan S., Lee I.,Sokolsky O. Formally specified monitoring of temporal properties /Proceedings of the 11th Euromicro Conference on Real-Time Systems,pp. 114 – 122.102. Naidoo A., Pillay N. The Induction of Finite Transducers Using GeneticProgramming / Proceedings of the 10th European conference on Geneticprogramming, pp. 371 – 380. http://saturn.cs.unp.ac.za/~nelishiap/papers/eurogp07.pdf103. Nedjah N., Mourelle L. Mealy Finite State Machines: An EvolutionaryApproach // International Journal of Innovative Computing, Informationand Control. 2006. Vol. 2. Issue 4, pp. 789 – 806.104. Niebert P., Peled D., Pnueli A. Discriminative Model Checking. LectureNotes In Computer Science. Springer Berlin / Heidelberg. 2008. Vol.5123/2008, pp. 504 – 516.105. Nocedal J., Wright S. Numerical Optimization. 2006. Berlin, NY:Springer-Verlag.


176106. O’Keeffe M., O’Cinneide M. Search-Based SoftwareMaintenance / Proceedings of Conference on Software Maintenance andReengineering (CSMR 06). IEEE CS Press. 2006, pp. 249 – 260.107. Petrovic P. Simulated evolution of distributed FSA behaviour-based arbitration.Poster at The Eighth Scandinavian Conference on Artificial Intelligence(SCAI'03). 2003.http://www.idi.ntnu.no/grupper/ai/eval/incremental/scai03-posterpetrovic.pdf108. Petrovic P. Evolving automatons for distributed behavior arbitration.Technical Report. Norwegian University of Science and Technology,2005. http://www.idi.ntnu.no/~petrovic/shortpaper.pdf109. Petrovic P. Comparing Finite-State Automata Representation with GPtrees.Technical Report. Norwegian University of Science and Technology,2006. http://www.idi.ntnu.no/~petrovic/fsatr/fsatr.pdf110. Räihä O. A Survey on Search-Based Software Design //Computer ScienceRev. 2010. Vol. 4. № 4, pp. 203 – 249.111. Ray T. An Approach to the Synthesis of Life / In Artificial Life II. MA:Addison-Wesley. 1992, pp. 371 − 408.112. Reynolds C. W. Competition, Coevolution and the Game of Tag /Proceedings of Artificial Life IV. Cambridge. MA: MIT Press. 1994,pp. 59 − 69. http://www.red3d.com/cwr/papers/1994/alife4.html113. Schrijver A. Theory of linear and integer programming. John Wiley andSons, 1998.114. Spears W., Gordon D. Evolving Finite-State Machine Strategies forProtecting Resources. Lecture Notes in Computer Science. Springer Berlin/ Heidelberg. Volume 1932/2009, pp. 5 – 28.115. Spichakova M. Genetic Inference of Finite State Machines. Masters thesis.Tallinn, 2007. http://s-ma-u-g.googlecode.com/files/thesis.pdf


177116. Tomita M. Dynamic construction of finite automata from examples usinghill climbing / Proceedings of the 4 th Annual Cognitive ScienceConference (USA, 1982), pp. 105 – 108.117. Tu M., Wolff E., Lamersdorf W. Genetic Algorithms for AutomatedNegotiations: A FSM-based Application Approach /Proceedings of the 11-th International Conference on Database and Expert Systems, 2000.http://ieeexplore.ieee.org/iel5/7035/18943/00875153.pdf118. Von Neumann J., Burks A. The Theory of Self-reproducing Automata.Urbana. Univ. of Illinois Press, 1966.119. Wegener J., Baresel A., Sthamer H. Evolutionary test environment for automaticstructural testing // Information and Software Technology SpecialIssue on Software Engineering using Metaheuristic Innovative Algorithms.2001. Vol. 43. Issue 14, pp. 841 – 854.120. Whitley D. The GENITOR Algorithm and Selective Pressure /Proceedings of the 3rd International Conference on Genetic Algorithms.Colorado State: Morgan Kaufmann. 1989, pp. 116 − 121.http://www.genalgo.com/index.php?option=com_content&task=view&id=80&Itemid=30121. Zhang Y., Finkelstein A., Harman M. Search-Based RequirementsOptimisation: Existing Work and Challenges / Proceedings ofInternationall Working Conference on Requirements Engineering:Foundation for Software Quality (REFSQ 08). LNCS 5025. Springer.2008, pp. 88 – 94.122. Zomorodian A. Context-free Language Induction by Evolution ofDeterministic Push-Down Automata Using Genetic Programming.http://www.cs.dartmouth.edu/~afra/papers/aaai96/aaai96.pdf


178РЕСУРСЫ СЕТИ ИНТЕРНЕТ123. Бедный Ю. Д., Шалыто А. А. Применение генетических алгоритмовдля <strong>построения</strong> <strong>автоматов</strong> в задаче «Умный муравей». СПбГУИТМО, 2007. http://is.ifmo.ru/works/ant124. Государственный контракт «Применение методов искусственногоинтеллекта в разработке управляющих программных систем».Промежуточный отчет по II этапу. СПбГУ ИТМО, 2010.http://is.ifmo.ru/science/_nk-408-15-2.pdf125. Государственный контракт «Разработка технологии верификацииуправляющих программ со сложным поведением, построенных <strong>на</strong><strong>основе</strong> автоматного подхода». Промежуточный отчет по I этапу«Выбор <strong>на</strong>правления исследований и базовых компонентов». СПбГУИТМО, 2007. http://is.ifmo.ru/verification/_2007_01_reportverification.pdf126. Государственный контракт «Разработка технологии верификацииуправляющих программ со сложным поведением, построенных <strong>на</strong><strong>основе</strong> автоматного подхода». Промежуточный отчет по II этапу«Теоретические исследования поставленных перед НИР задач».СПбГУ ИТМО, 2007. http://is.ifmo.ru/verification/_2007_02_reportverification.pdf127. Государственный контракт «Разработка технологии верификацииуправляющих программ со сложным поведением, построенных <strong>на</strong><strong>основе</strong> автоматного подхода». Промежуточный отчет по III этапу«Экспериментальные исследования поставленных перед НИР задач».СПбГУ ИТМО, 2007. http://is.ifmo.ru/verification/_2007_02_reportverification.pdf128. Государственный контракт «Разработка технологии верификацииуправляющих программ со сложным поведением, построенных <strong>на</strong><strong>основе</strong> автоматного подхода». Заключительный отчет по IV этапу


179«Обобщение и оценка результатов исследований». СПбГУ ИТМО,2007. http://is.ifmo.ru/verification/_2007_02_report-verification.pdf129. Государственный контракт «Технология генетическогопрограммирования для генерации <strong>автоматов</strong> управления системамисо сложным поведением». Промежуточный отчет по этапу I «Выбор<strong>на</strong>правлений исследований и базовых компонентов». СПбГУ ИТМО,2007. http://is.ifmo.ru/genalg/_2007_01_report-genetic.pdf130. Государственный контракт «Технология генетическогопрограммирования для генерации <strong>автоматов</strong> управления системамисо сложным поведением». Промежуточный отчет по этапу II«Теоретические исследования поставленных перед НИР задач».СПбГУ ИТМО, 2007. http://is.ifmo.ru/genalg/_2007_02_reportgenetic.pdf131. Государственный контракт «Технология генетическогопрограммирования для генерации <strong>автоматов</strong> управления системамисо сложным поведением». Промежуточный отчет по этапу III«Экспериментальные исследования поставленных перед НИР задач».СПбГУ ИТМО, 2007. http://is.ifmo.ru/genalg/_2007_03_reportgenetic.pdf132. Государственный контракт «Технология генетическогопрограммирования для генерации <strong>автоматов</strong> управления системамисо сложным поведением». Промежуточный отчет по этапу IV«Обобщение и оценка результатов исследований». СПбГУ ИТМО,2007. http://is.ifmo.ru/genalg/_2007_04_report-genetic.pdf133. Государственный контракт «Разработка методов машинногообучения <strong>на</strong> <strong>основе</strong> генетических алгоритмов для <strong>построения</strong>управляющих <strong>конечных</strong> <strong>автоматов</strong>». Промежуточный отчет поэтапу I. СПбГУ ИТМО, 2009. http://is.ifmo.ru/science/_nk-385-1-1.pdf


180134. Данилов В. Р. Технология генетического программирования для генерации<strong>автоматов</strong> управления системами со сложным поведением.Бакалаврская работа. СПбГУ ИТМО, 2007.http://is.ifmo.ru/download/danilov\_bachelor.pdf135. Данилов В. Р. <strong>Методы</strong> представления функции переходов при генерации<strong>автоматов</strong> управления <strong>на</strong> <strong>основе</strong> генетического программирования.Магистерская диссертация. СПбГУ ИТМО, 2009.http://is.ifmo.ru/papers/_2010_02_25_danilov.pdf136. Заочный тур всесибирской олимпиады 2005 по информатике.http://olimpic.nsu.ru/widesiberia/archive/wso6/2005/rus/1tour/problem/problem.html137. Колыхматов И. И., Рыбак О. О., Шалыто А. А. Моделированиеустройства для продажи газированной воды <strong>на</strong> инструментальномсредстве UniMod. Проект<strong>на</strong>я документация. СПбГУ ИТМО. 2006.http://is.ifmo.ru/download/vending-machine-ru.pdf138. Николенко С. И. Лекции по генетическим алгоритмам.http://logic.pdmi.ras.ru/~sergey/teaching/ml/04-genetic.pdf139. Сайт www.genetic-programming.com140. Сайт http://www.flightgear.org/141. Яминов Б. Р. Генетические алгоритмы.http://rain.ifmo.ru/cat/view.php/theory/unsorted/genetic-2005/142. Analysis of variance (ANOVA).http://www.csse.monash.edu.au/~smarkham/resources/anova.htm143. Bogor. Software Model Checking Framework.http://bogor.projects.cis.ksu.edu/144. Learning DFS from Noisy Samples. A contest from GECCO 2004.http://cswww.essex.ac.uk/staff/sml/gecco/NoisyDFA.html145. Levent A. H., Mericli C., Mericli T. и др. Cerberus’08 Team Report.http://www.tzi.de/spl/pub/Website/Teams2008/Cerberus.pdf


181146. LTL2BA project. http://www.lsv.ens-cachan.fr/~gastin/ltl2ba/147. The R Project for Statistical Computing. http://www.r-project.org/ПУБЛИКАЦИИ АВТОРАСтатьи в жур<strong>на</strong>лах из перечня ВАК148. Царев Ф. Н. Совместное применение генетического программирования,<strong>конечных</strong> <strong>автоматов</strong> и искусственных нейронных сетей для <strong>построения</strong>системы управления беспилотным летательным аппаратом//Научно-технический вестник СПбГУ ИТМО. 2008. Вып. 53. Автоматноепрограммирование, с. 42 – 60.http://is.ifmo.ru/works/2008/Vestnik/53/03-genetic-neuro-automata-flying-plates.pdf149. Царев Ф. Н., Давыдов А. А., Соколов Д. О. Применение генетическогопрограммирования и методов сокращенных таблиц переходов и деревьеврешений для <strong>построения</strong> <strong>автоматов</strong> управления моделью беспилотноголетательного аппарата //Научно-технический вестникСПбГУ ИТМО. 2008. Вып. 53. Автоматное программирование,с. 60 – 79. http://is.ifmo.ru/works/2008/Vestnik/53/04-genetic-automataredused-transition-table-flying.pdf150. Царев Ф. Н. Метод <strong>построения</strong> управляющих <strong>конечных</strong> <strong>автоматов</strong> <strong>на</strong><strong>основе</strong> тестовых примеров с помощью генетического программирования// Информационно-управляющие системы. 2010. № 5,с. 31 – 36. http://is.ifmo.ru/works/_zarev.pdf151. Царев Ф. Н., Егоров К. В., Шалыто А. А. Применение генетическогопрограммирования для <strong>построения</strong> <strong>автоматов</strong> управления системамисо сложным поведением <strong>на</strong> <strong>основе</strong> обучающих примеров и спецификации// Научно-технический вестник Санкт-Петербургского государственногоуниверситета информационных технологий, механикии оптики. 2010. № 5, с. 81 – 86.http://is.ifmo.ru/works/_2010_10_13_egorov.pdf


182152. Царев Ф. Н., Александров А. В., Казаков С. В. Сергушичев А. А., ШалытоА. А. Генерация <strong>конечных</strong> <strong>автоматов</strong> для управления модельюбеспилотного самолета // Научно-технический вестник СПбГУИТМО. 2011. № 2, с. 3 – 11. http://is.ifmo.ru/works/2011/Vestnik/72-2/01-Aleksandrov-Kazakov-Tsarev-Shalyto.pdfДругие статьи автора153. Царев Ф. Н., Егоров К. В., Шалыто А. А. Совместное применение генетическогопрограммирования и верификации для <strong>построения</strong> <strong>автоматов</strong>управления системами со сложным поведением // ТрудыСПИИРАН. 2010. Вып. 15, с. 123 – 135.Материалы конференций с участием автора154. Царев Ф. Н., Шалыто А. А. Применение генетического программированиядля <strong>построения</strong> мультиагентной системы одного класса/Между<strong>на</strong>род<strong>на</strong>я <strong>на</strong>учно-техническая мультиконференция «Проблемыинформационно-компьютерных технологий и мехатроники». Материалымежду<strong>на</strong>родной <strong>на</strong>учно-технической конференции «Многопроцессорныевычислительные и управляющие системы»(МВУС`2007). Таганрог: НИИМВС. Т. 2, с. 46 – 51.155. Царев Ф. Н., Шалыто А. А. Применение генетического программированиядля генерации <strong>автоматов</strong> в задаче об «Умном муравье»/Сборник <strong>на</strong>учных трудов. IV-я Между<strong>на</strong>род<strong>на</strong>я <strong>на</strong>учнопрактическаяконференция «Интегрированные модели и мягкие вычисленияв искусственном интеллекте». М.: Физматлит. 2007,с. 590 – 597. http://is.ifmo.ru/genalg/_ant_ga.pdf156. Царев Ф. Н., Шалыто А. А. О построении <strong>автоматов</strong> с минимальнымчислом состояний для задачи об «Умном муравье» //Сборник докладовX между<strong>на</strong>родной конференции по мягким вычислениям и изме-


183рениям. СПбГЭТУ «ЛЭТИ». Т.2. 2007, с. 88 – 91.http://is.ifmo.ru/download/ant_ga_min_number_of_state.pdf157. Царев Ф. Н., Шалыто А. А. Применение генетических алгоритмовдля <strong>построения</strong> <strong>автоматов</strong> с минимальным числом состояний для задачиоб «Умном муравье» / Тезисы <strong>на</strong>учно-технической конференции«Научно-программное обеспечение в образовании и <strong>на</strong>учных исследованиях».СПбГПУ. 2008, с. 209 – 215.http://is.ifmo.ru/download/2008-02-25_tsarev_shalyto.pdf158. Tsarev F., Davydov A., Sokolov D. Application of Genetic Algorithms forConstruction of Moore Automation and Systems of Interacting Mealy Automatain «Artificical Ant» Problem / Proceeding of the Second SpringYoung Researchers' Colloquium on Software Engineering (SYRCo-SE'2008). SPbSU. 2008. Vol.1, pp. 51 – 54.http://is.ifmo.ru/genalg/_2008_07_03_ant.pdf159. Tsarev F., Davydov A., Sokolov D., Shalyto A. Application of GeneticProgramming for Generation of Controllers represented by Automata/ Preprints of the 13th IFAC Symposium on Information Control Problemsin Manufacturing. Moscow. Russia. 2009, pp. 684 – 689.http://is.ifmo.ru/articles_en/_ifac-2009.pdf160. Царев Ф. Н. Построение <strong>автоматов</strong> управления системами со сложнымповедением <strong>на</strong> <strong>основе</strong> тестов с помощью генетического программирования/Сборник докладов между<strong>на</strong>родной конференции помягким вычислениям и измерениям (SCM`2009). СПбГЭТУ «ЛЭТИ».Т. 1, с. 231 – 234. http://is.ifmo.ru/works/_scm-2010_tsarev.pdf161. Царев Ф. Н. Метод <strong>построения</strong> <strong>автоматов</strong> управления системами сосложным поведением <strong>на</strong> <strong>основе</strong> тестов с помощью генетическогопрограммирования / Материалы Между<strong>на</strong>родной <strong>на</strong>учной конференции«Компьютерные <strong>на</strong>уки и информационные технологии». Саратов:СГУ. 2009, с. 216 – 219.


184162. Tsarev F., Alexandrov A., Sergushichev A., Kazakov S. Genetic Algorithmfor Induction of Finite Automation with Continuous and Discrete OutputActions / Proceedings of the 2011 GECCO Conference Companion onGenetic and Evolutionary Computation. NY. : ACM. 2011, pp. 775 – 778.http://is.ifmo.ru/articles_en/2011/GECCO2011-Alexandrov-Kazakov-Sergushichev-Tsarev.pdf163. Царев Ф. Н., Егоров К. В. Совместное применение генетическогопрограммирования и верификации моделей для <strong>построения</strong> <strong>автоматов</strong>управления системами со сложным поведением /Сборник трудовконференции «Информационные технологии и системы» (ИТИС`09).М.: Институт проблем передачи информации им. А. А. ХаркевичаРАН. 2009, с. 77 – 82.http://is.ifmo.ru/genalg/_2010_01_14_egorov_tsarev.pdf164. Царев Ф. Н., Александров А. В., Казаков С. В., Сергушичев А. А. Генетическоепрограммирование <strong>на</strong> <strong>основе</strong> обучающих примеров для <strong>построения</strong><strong>конечных</strong> <strong>автоматов</strong> управления моделью беспилотного самолета/Сборник докладов между<strong>на</strong>родной конференции по мягкимвычислениям и измерениям (SCM`2010). СПбГЭТУ «ЛЭТИ». Т. 1,с. 263 – 267. http://is.ifmo.ru/works/_scm-2010_autopilot.pdf165. Царев Ф. Н., Егоров К. В., Парфенов В. Г. Совместное применениегенетического программирования и верификации моделей для <strong>построения</strong><strong>автоматов</strong> управления системами со сложным поведением/Труды XVII Всероссийской <strong>на</strong>учно-методической конференции«Телематика`2010». Т. 2. СПбГУ ИТМО. 2010, с. 344, 345.166. Царев Ф. Н., Егоров К. В. Применение генетического программированиядля <strong>построения</strong> <strong>автоматов</strong> управления системами со сложнымповедением <strong>на</strong> <strong>основе</strong> верификации моделей и обучающих примеров/ Сборник «Список-2011». Материалы второй межвузовской <strong>на</strong>учной


185конференции по проблемам информатики». СПб.: ВВМ. 2011,с. 343 – 350. http://is.ifmo.ru/works/2011/SPISOK/07-Egorov-Tsarev.pdf167. Tsarev F., Egorov K. Finite State Machine Induction using Genetic ProgrammingBased on Testing and Model Checking / Proceedings of the2011 GECCO Conference Companion on Genetic and Evolutionary Computation.NY.: ACM. 2011, pp. 759 – 762.http://is.ifmo.ru/articles_en/2011/GECCO2011-Tsarev-Egorov-FSM-induction.pdf168. Царев Ф. Н., Давыдов А. А., Соколов Д. О., Шалыто А. А. Виртуаль<strong>на</strong>ялаборатория обучения генетическому программированию для генерацииуправляющих <strong>конечных</strong> <strong>автоматов</strong> / Сборник докладов IIIМежду<strong>на</strong>родной <strong>на</strong>учно-практической конференции «Современныеинформационные технологии и ИТ-образование». ВМК МГУ. М.:МАКС Пресс, 2008, с. 179 – 183.http://is.ifmo.ru/works/_2_93_davidov_sokolov.pdf169. Царев Ф. Н., Тяхти А. С., Чебатуркин А. А., Шалыто А. А. Виртуаль<strong>на</strong>ялаборатория для обучения методам искусственного интеллектадля генерации управляющих <strong>конечных</strong> <strong>автоматов</strong> / Сборник докладовIV Между<strong>на</strong>родной <strong>на</strong>учно-практической конференции «Современныеинформационные технологии и ИТ-образовние». М.:ИНТУИТ.РУ, МГУ. 2009, с. 222 – 227. http://is.ifmo.ru/works/_2010-10-01_tjahti.pdf170. Tsarev F., Chivilikhin D., Ulyantsev V. Test-Based Extended Finite-StateMachines Induction with Evolutionary Algorithms and Ant Colony Optimization/ Proceedings of the 2012 GECCO Conference Companion onGenetic and Evolutionary Computation. NY. : ACM. 2012, pp. 603 – 606.http://is.ifmo.ru/articles_en/2012/GECCO12-Chivilikhin-Ulyantsev-Tsarev.pdf


186ПРИЛОЖЕНИЕ 1. СВИДЕТЕЛЬСТВА О РЕГИСТРАЦИИПРОГРАММ ДЛЯ ЭВМ


187


188


189ПРИЛОЖЕНИЕ 2. ПРИМЕР ОТЧЕТА ПО ЛАБОРАТОРНОЙ РАБОТЕОтчет по лабораторной работе «Построение управляющих <strong>конечных</strong><strong>автоматов</strong> с помощью эволюционных алгоритмов»Выполнил: В. И. Ульянцев, гр. 3538Учебный год: 2009-2010ВведениеЦель данной лабораторной работы – применение эволюционнойстратегии для <strong>построения</strong> по тестам конечного автомата управлениячасами с будильником.Java.При выполнении работы использовался язык программированияПостановка задачиЦель данной лабораторной работы – построение по тестам конечногоавтомата управления часами с будильником. В систему тестов для<strong>построения</strong> автомата управления часами с будильником включены тесты,описывающие его работу во всех трех режимах. Набор из 38 тестов взят изработы [1].Структура хромосомыКонечный автомат при использовании эволюционной стратегиипредставляется в виде объекта, содержащего множество состояний. Будемсчитать, что <strong>на</strong>чальным состоянием автомата считается состояние сномером ноль, поэтому номер <strong>на</strong>чального состояния в явном виде хранитьне требуется. Каждое состояние описывается множеством переходов,инцидентных ему, и числом выходных воздействий, совершаемых привходе в данное состояние. Каждый переход описывается номером


190состояния, в которое переходит автомат, и числом выходных воздействий,совершаемых <strong>на</strong> переходе.Выбор представления графа переходов автомата с помощью списковребер (в отличие от работы [2], в которой применялись полные таблицыпереходов) обоснован тем, что, как правило, в автоматах управлениясистемами со сложным поведением не в каждом состоянии определе<strong>на</strong>реакция <strong>на</strong> каждое событие (граф переходов конечного автоматаразрежен).Параметром особи является максимальное число действий,совершаемых <strong>на</strong> переходах.Рассматриваемый управляющий автомат является автоматом Мили),так как выходные воздействия вырабатываются только <strong>на</strong> переходах.Заметим, что автоматы Мура и Мили являются частным случаем автоматасмешанного типа. При з<strong>на</strong>чении максимального числа действий,совершаемых <strong>на</strong> переходах автомата, равным нулю получим автоматМура. При з<strong>на</strong>чении числа действий, совершаемых при входе в состояния,равным нулю получим автомат Мили.В особи кодируется только «скелет» управляющего конечногоавтомата, а конкретные выходные воздействия, вырабатываемые <strong>на</strong>переходах и в состояниях, определяются с помощью алгоритмарасстановки выходных воздействий (рис. 1).


191T /A / z0, z3H / z1z1T / z0Рис. 1. Пример графа переходов управляющего автомата послеприменения алгоритма расстановки выходных воздействийОперация мутацииПри выполнении операции мутации с заданной вероятностью (поумолчанию, о<strong>на</strong> рав<strong>на</strong> 0.1) выполняется каждое из действий: изменение описания каждого из переходов (рис. 2);T / 0T / 00A / 20A / 2H / 11H / 11T / 1T / 1Рис. 2. Пример изменения описания перехода удаление или добавление перехода для каждого из состояний(рис. 3).


192T / 00A / 20A / 2H / 11H / 11T / 1T / 1Рис. 3. Пример удаления переходаПри изменении описания перехода с некоторой вероятностьювыполняется одно из следующих действий: изменение состояния, в которое ведет переход, – оноизменяется <strong>на</strong> случайно выбранное; изменение числа выходных воздействий, вырабатываемых <strong>на</strong>этом переходе, – с равной вероятностью изменяется <strong>на</strong>случайно выбранное число в диапазоне от нуля домаксимально допустимого числа действий, совершаемых <strong>на</strong>переходах (предварительно задан<strong>на</strong>я величи<strong>на</strong>, по умолчаниюрав<strong>на</strong> пяти).При изменении описания состояния выполняется изменение числавыходных воздействий, вырабатываемых при входе в вершину, – с равнойвероятностью изменяется <strong>на</strong> случайно выбранное число в диапазоне отнуля до максимально допустимого числа действий, совершаемых привходе в вершину (предварительно задан<strong>на</strong>я величи<strong>на</strong>, по умолчаниюрав<strong>на</strong>я трем).Операция скрещиванияСкрещивание описаний <strong>автоматов</strong> производится следующимобразом. Обоз<strong>на</strong>чим как P1 и P2 «родительские» особи, а как S1 и S2 –особи-«потомки». Скрещивание описаний <strong>автоматов</strong> производитсяотдельно для каждого состояния.


193Обоз<strong>на</strong>чим список переходов из состояния номер i автомата P1 какP1.T[i], а список переходов из состояния номер i автомата P2 как P2.T[i].Для выполнения «скрещивания состояний» с равной вероятностью можетбыть выбран один из двух методов.При использовании традиционного метода скрещивания (рис. 4)списки переходов S1.T[i] и S2.T[i] строятся следующим образом:1. Переходы состояния первого автомата P1.T[i]распределяются случайным образом между спискамиS1.T[i] и S2.T[i].2. Переходы состояния второго автомата P2.T[i]распределяются случайным образом между спискамиS1.T[i] и S2.T[i]. При этом, если в одном из списков ужеприсутствует соответствующий переход (из спискаP1.T[i]), то переход добавляется в список переходовдругого состояния.Действия в самих состояниях распределяются также случайнымобразом.T / 30 2A / 0T / 2T / 32 0A / 0T / 2Рис. 4. Пример традиционного метода скрещивания для состоянийПри использовании метода скрещивания с учетом тестовскрещивание производится а<strong>на</strong>логичным образом, за тем исключением,что некоторые переходы и состояния переходят <strong>на</strong>прямую из


194«родительских» особей в особи-«потомки». Данные переходы и состоянияопределяются тестами (по умолчанию десятой частью всех тестов), <strong>на</strong>которых автоматы показали результат «лучше», чем <strong>на</strong> остальных тестах.Функция приспособленностиФункция приспособленности основа<strong>на</strong> <strong>на</strong> редакционном расстоянии.Для ее вычисления выполняются следующие действия: <strong>на</strong> вход автоматуподается каждая из последовательностей Input[i]. Обоз<strong>на</strong>чимпоследовательность выходных воздействий, которую сгенерировалавтомат <strong>на</strong> входе Input[i] как Output[i]. После этого для каждого теставычисляется величи<strong>на</strong>0.1,ED(Output[i],Answer[i]) 1FF 1 ED(Output[i],Answer[i])1,ED(Output[ i],Answer[i]) 1i,где ED(A, B) – редакционное расстояние между строками A и B. Отметим,что з<strong>на</strong>чения этой функции лежат в пределах от 0 до 1, при этом, чем«лучше» автомат соответствует тесту, тем больше з<strong>на</strong>чение функцииприспособленности.Функция приспособленности особи зависит не только от того,<strong>на</strong>сколько «хорошо» автомат работает <strong>на</strong> тестах, но и числа переходов,которые он содержит. О<strong>на</strong> вычисляется по формуле:n0.001FF (FFi (| Output[i] | | Answer[ i] |)) cnti1, где как cnt обоз<strong>на</strong>чено числопереходов в автомате. Эта функция приспособленности устрое<strong>на</strong> такимобразом, что при оди<strong>на</strong>ковом уровне прохождения тестов преимуществоимеет автомат, содержащий меньше переходов. Кроме этого, автомат,который хоть немного лучше проходит тесты, оценивается выше, чемавтомат, проходящий тесты хуже, пусть даже и имеющий меньшее числопереходов.


195Вычислительные экспериментыПостроение конечного автомата управления часами с будильникомпроводилось при следующих параметрах эволюционной стратегии: размер параметра уста<strong>на</strong>вливался в з<strong>на</strong>чения 1, 100, 1000; максимальное допустимое число действий в состояниях равнотрем; максимальное допустимое число действий <strong>на</strong> переходах равнопяти; число состояний автомата равно четырем;В результате работы эволюционной стратегии <strong>на</strong> одном из запусковбыл построен автомат, в котором из <strong>на</strong>чального достижимы только трисостояния из четырех. Если удалить недостижимое состояние, то этот графпереходов будет изоморфен построенному вручную.График зависимости з<strong>на</strong>чения функции приспособленности отвремени приведен <strong>на</strong> рис. 5 при одном из запусков алгоритма.Рис. 5. Зависимость максимального з<strong>на</strong>чения функцииприспособленности от времени работы эволюционной стратегии


196Из графика видно, что требуемую особь удалось <strong>на</strong>йти не сразу – доэтого четыре раза достигался лишь локальный максимум, после чегоэволюционный алгоритм перезапускался.Источники1. Государственный контракт «Разработка методов машинногообучения <strong>на</strong> <strong>основе</strong> генетических алгоритмов для <strong>построения</strong>управляющих <strong>конечных</strong> <strong>автоматов</strong>». Научно-технический отчет овыполнении этапа I. СПбГУ ИТМО, 2009. http://is.ifmo.ru/science/_nk-385-1-1.pdf2. Lucas S. Evolving Finite-State Transducers: Some Initial Explorations.Lecture Notes in Computer Science. Springer Berlin / Heidelberg. Volume2610/2003, pp. 241 – 257. http://www.springerlink.com/content/41a34vg70fp1hltb/

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!