220 likes | 351 Views
Совместное применение генетического программирования и верификации моделей для построения автоматов управления системами со сложным поведением. К. В. Егоров, гр. 6538 Научный руководитель – докт. техн. наук , проф., зав. каф. ТП СПбГУ ИТМО А. А. Шалыто. Автоматное программирование
E N D
Совместное применение генетического программирования и верификации моделей для построения автоматов управления системами со сложным поведением К. В. Егоров, гр. 6538 Научный руководитель – докт. техн. наук, проф., зав. каф. ТП СПбГУ ИТМО А. А. Шалыто
Автоматное программирование Часто эвристическое построение автоматов затруднено Построенные вручную автоматы зачастую не оптимальны Автоматизированное построение конечных автоматов с помощью генетического программирования Решаемая проблема
Методика построения автоматных программ на основе тестов
Верификация автоматных программ • «Тестирование позволяет показать наличие ошибок, но не их отсутствие» (Э. Дейкстра, 1970 г.) • Тесты позволяют описать поведение системы только для конечного числа вариантов входных данных • Верификация позволяет проверить соответствие программы спецификации • Спецификация задается в виде набора формул на языке темпоральной логики (LTL = Linear-Time Logic)
Темпоральные операторы языка LTL • X (neXt) – «Xp» – в следующий момент выполнено p; • F (in the Future) – «Fp» – в некоторый момент в будущем будет выполнено p; • G (Globally in the future) – «Gp» – всегда в будущем выполняется p; • U (Until) – «pUq» – существует состояние, в котором выполнено q и во всех предыдущих выполняется p; • R (Release) – «pRq» – либо во всех состояниях выполняется q, либо существует состояние, в котором выполняется p, а во всех предыдущих выполнено q.
Методика построения автоматных программ на основе тестов и LTL-формул
Особь алгоритма генетического программирования • Списки переходов для каждого состояния + номер начального состояния • Для каждого перехода хранится событие, по которому он выполняется, и число выходных воздействий, но не хранятся выходные воздействия
Функция приспособленности Учет поведения автомата на тестах • ED – редакционное расстояние • n1–число верных формул • n2–общее число формул • M – число, большее максимального числа переходов
Функция приспособленности Учет поведения автомата на тестах • ED – редакционное расстояние • n1–число верных формул • n2–общее число формул • M – число, большее максимального числа переходов Учет числа переходов Учет числа переходов Учет числа переходов
Функция приспособленности Учет поведения автомата на тестах • ED – редакционное расстояние • n1–число верных формул • n2–общее число формул • M – число, большее максимального числа переходов Учет LTL-формул Учет LTL-формул Учет LTL-формул
Учет верификации в функции приспособленности • n – число LTL‑формул; • T – число достижимых переходов в особи; • ti – число верифицируемых переходов.
Пример учета верификации в функции приспособленности • 3 – число верифицируемых переходов из первого подмножества; • 7 – число переходов в конечном автомате.
Учет результата верификации при скрещивании и мутации • Верификатор помечает путь в модели, опровергающий формулу. • Удалить переход из контрпримера. • Изменить входное воздействие, количество выходных или состояние в которое перейдет автомат. • Когда верификатор покидает вершину при обходе в глубину, он помечает все исходящие переходы. • Такие переходы соответствуют LTL-формуле. • Подграф из таких переходом может перейти в новую особь без изменений при кроссовере.
Пример верификации G(!wasEvent(T)) Автомат Бюхи, построенный по отрицанию формулы
Пример скрещивания с учетом верификации
Пример – система управления дверьми лифта • Пять событий, три выходных воздействия • Девять тестов • Одиннадцать LTL-формул: • G(wasEvent(e11) => wasAction(z1)) – начать открытие дверей после того, как нажата кнопка «Открыть двери» • G(wasEvent(e4) <=> wasAction(z3)) • G(wasEvent(e3) => wasAction(z1)) • G(wasEvent(e11) => X(wasEvent(e4) or wasEvent(e2))) – если нажали «Кнопку открыть двери», то следующим событием будет либо e2 (открывание дверей успешно завершено) или e4 (двери заклинило) • G(wasAction(z1) => X(!wasAction(z1) U(wasAction(z2) or wasEvent(e4))))
Построенные автоматы Тесты + верификация Только тесты После поломки дверей может быть отдана команда на их закрытие!
Показатели производительности • Измерялось число вычислений функции приспособленности • 1000 экспериментов
Результаты работы • Предложен метод построения конечных автоматов с заранее заданным поведением на основе генетических алгоритмов. • На основе тестовых примеров • На основе темпоральных свойств • Учет верификации на этапах: • вычисления функции приспособленности; • скрещивания; • мутации. • Построение автомата управления дверьми лифта. • Построение автомата управления часами с будильником.
Спасибо за внимание! Спасибо за внимание!