Шалыто А.А. Автоматное программирование

advertisement
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Автоматное программирование
А.А. Шалыто
Санкт-Петербургский государственный университет
информационных технологий, механики и оптики
2007 г.
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ



Автоматное
программирование
Предложено мною в 1991 году
Программные системы
предлагается разрабатывать
так же, как выполняется
автоматизация
технологических (и не только)
процессов
Система управления является
системой взаимодействующих
конечных автоматов
E, X2
Система
управления





А.А. Шалыто
Автоматное программирование
Z
Объект
управления
X1
Состояния
События и входные
переменные
Выходные воздействия
Конечный автомат
Система конечных
автоматов
2
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Автоматное
программирование
X2,e
СУ
Z
ОУ
X1
А
Система управления
А.А. Шалыто
Автоматное программирование
А
Машина Тьюринга
3
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Как строить программы?
Поставщики
событий
Система
конечных
автоматов
Объекты
управления
Обратная связь
А.А. Шалыто
Автоматное программирование
4
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Преимущества
Обладает наибольшей эффективностью
для систем со сложным поведением
 Формальное и понятное описание
поведения
 Автоматическая генерация кода по
диаграммам переходов
 Возможность верификации программ
 Проектная документация

А.А. Шалыто
Автоматное программирование
5
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ

Применение
Программное обеспечение  «Железо»
 Системы высокой
 Микропроцессоры
надежности
 Микроконтроллеры
 Военные приложения
 Программируемые
 Аэрокосмическая
логические контроллеры
индустрия
 Встроенные системы
Мобильные системы
 Визуализаторы
 Web-приложения
 Клиент-сервер приложения


Парадигмы



Процедурная
Объектно-ориентированная
Языки контроллеров


Лестничные схемы
Функциональные схемы
А.А. Шалыто
Автоматное программирование
6
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ




Инструментальное средство
UniMod (1)
Инструментальное средство для поддержки
автоматного программирования
Создано в рамках ФЦНТП «Исследования и разработки
по приоритетным направлениям развития науки
и техники» на 2002-2006 годы по приоритетному
направлению «Информационнотелекоммуникационные системы»
Критическая технология – «Технология производства
программного обеспечения»
Вошел в число 15 наиболее инновационно
перспективных и социально значимых проектов
Федерального агентства по науке и инновациям
А.А. Шалыто
Автоматное программирование
7
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ






Инструментальное средство
UniMod (2)
Локальная и удаленная отладка диаграмм в
терминах состояний
Проверка формальных свойств диаграмм
Интерпретируемый и компилируемый подходы
Запись автоматов в нотации
UML-диаграмм классов и состояний
Встраиваемый редактор UML-диаграмм для
платформы Eclipse
Запуск диаграмм в «одно нажатие»
А.А. Шалыто
Автоматное программирование
8
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Инструментальное средство
UniMod (3)
Вручную
Семь автоматов
Автоматическая генерация
А.А. Шалыто
Автоматное программирование
Вручную
9
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Инструментальное средство
UniMod (4)
Один из автоматов – AL
А.А. Шалыто
Автоматное программирование
10
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ

Движение за открытую
проектную документацию
Три задачи:
Повышается качество обучения – обучение на проектах
 Создаются предпосылки для научной работы и отбор
«ученых»
 Совершенствуется технология автоматного
программирования




Создано более 100 студенческих проектов,
содержащих не только программную часть, но и
открытую проектную документацию
Из них – 15 UniMod-проектов
Проекты опубликованы на сайте http://is.ifmo.ru
А.А. Шалыто
Автоматное программирование
11
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Примеры. Игра «Космонавт» (1)
А.А. Шалыто
Автоматное программирование
12
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Примеры. Игра «Космонавт» (2)
А.А. Шалыто
Автоматное программирование
13
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Примеры. Игра «Космонавт» (3)
Входные
воздействия
А.А. Шалыто
Автоматное программирование
Выходные
воздействия
14
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Примеры. Игра «Космонавт» (4)
2: e2 | e4
---------z16
1. Прицеливание
6: e2!x10!x9
------------z7; z8; z13
2: x8
----z24
3: e3 | e5
--------z17
7: e3!x10!x11
--------------z8; z10; z12
иначе
-------z14
0. Ходьба
3: e1
1: x7
иначе
-------z22
z15
x17
----z23
1: e1
5: e3x10
-------z11
4: e2x10
-------z9
5. Смерть
z6
2: x8
----z24
4: x15!x16
---------z8
3: x15x16
4. Полет
1: x7
иначе
-------z21
1: e1 | x14 | x12
3:
4: e2
-------z0; z4
e1
-------z4; z5
1: x7
3. Качание
2. Стрельба
2: x13
2: x8
----z24
z20
z18
иначе
-------z19
e4!x5
-------------z2; z4; z25
6:
7:
e5!x6
------------z3; z4; z25
А.А. Шалыто
Автоматное программирование
5:
e3
-------z1; z4
иначе
---------z4; z25
15
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Примеры. Игра «Lines» (1)
А.А. Шалыто
Автоматное программирование
16
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Примеры. Игра «Lines» (2)
Управление игрой
Управление клеткой
А.А. Шалыто
Автоматное программирование
17
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Новые направления в
автоматном программировании
В рамках Федеральной целевой программы
«Исследования и разработки по приоритетным
направлениям развития научно-технологического
комплекса России на 2007–2012 годы»
 Технология генетического программирования для
генерации автоматов управления системами со
сложным поведением (шифр «2007-4-1.4-18-01033»)
 Разработка технологии верификации управляющих
программ со сложным поведением, построенных
на основе автоматного подхода (шифр «2007-4-1.418-02-041)

А.А. Шалыто
Автоматное программирование
18
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ






Генерация автоматов и
генетическое программирование
Основная сложность в автоматном программировании –
построение автоматов
В большинстве случаев автоматы проектируются
вручную
Однако эвристическое построение автоматов часто
затруднено или невозможно
Решение – автоматическое построение конечных
автоматов с помощью генетического программирования
Это позволит повысить уровень автоматизации
построения программ рассматриваемого класса
Материалы – на сайте http://is.ifmo.ru (раздел
«Генетические алгоритмы»)
А.А. Шалыто
Автоматное программирование
19
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Три рассматриваемые
задачи
«Простая» задача – задача об «Умном
муравье»
 «Сложная» задача – задача «Беспилотные
летательные объекты»
 «Народная» задача – «Разливочная
линия»

А.А. Шалыто
Автоматное программирование
20
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ






«Простая» задача – задача
об «Умном муравье»
Тор – 32x32
89 клеток с едой
200 ходов
Расположение еды и
начальная позиция
муравья фиксированы
Цель – создать
муравья, который
съест всю еду
Муравей = конечный
автомат
А.А. Шалыто
Автоматное программирование
21
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ

Эвристическое построение
задачу не решает
Пять состояний, за 200
ходов съедается 81
единица еды или все 89
единиц еды за 314
ходов
!F / R
2
!F / R
F/M
1
3
F/M
F/M
F/M
!F / M
!F / R
F/M
5
А.А. Шалыто
Автоматное программирование
!F / R
4
22
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ


Решение «простой» задачи
Известные подходы – кодирование
битовыми строками + генетический
алгоритм
Известные решения:
!F / M
!F / M
F/M
13 состояний (1992)
 11 состояний (1993)
 8 состояний (1999)




2
7
!F / L
!F / M
3
F/M
!F / R
Предлагаемый подход –
генетическое программирование
Построены два автомата с 7
состояниями после генерации 160
и 250 млн. автоматов
Полный перебор ~3·1018 автоматов
1
!F / R
F/M
!F / R
F/M
А.А. Шалыто
Автоматное программирование
5
F/M
4
6
F/M
F/M
23
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ






«Сложная» задача – задача
«Беспилотные летательные
объекты»
Соревнование на дальность полета
Две команды по восемь объектов
Ограничения: запас топлива, столкновения,
аэродинамическое взаимодействие
Цель – разработка управляющей программы
Задача заочного тура VI Открытой Всесибирской
олимпиады по программированию (2005 год)
Была решена при участии автора путем
эвристического построения автоматов
http://is.ifmo.ru/unimod-projects/plates/
А.А. Шалыто
Автоматное программирование
24
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ


Решение (1)
Система управления = нейронная сеть +
конечный автомат
Нейронная сеть преобразует вещественные
входные переменные в логические
Относительные координаты
«товарища» по команде
1
S
5
2
L
S
Относительные координаты
соперников
6
3
S
Летающая
тарелка
7
4
Угол с направлением «вперед»
Конечный
автомат
L
L
S
Время до столкновения
с ближайшей стеной
А.А. Шалыто
Автоматное программирование
25
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ


Решение (2)
Особь = две системы
Особь
управления
беспилотным
Система управления
Система управления
летающей тарелкой
летающей тарелкой
объектом
Нейронная
Конечный
Нейронная
Конечный
Особь из двух
сеть
автомат
сеть
автомат
Состояние Нейрон
Состояние
систем – для учета Нейрон
номер 1
номер 1
номер 1
номер 1
взаимодействия
...
...
...
...
Нейрон
Состояние Нейрон
Состояние
объектов
номер 7
номер N
номер 7
номер N
А.А. Шалыто
Автоматное программирование
26
Решение (3)
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ

Мутация особи

Мутация системы управления летательным объектом

Мутация нейронной сети


Мутация конечного автомата



Мутация элемента сети
Изменение начального состояния
Мутация перехода
Скрещивание особей

Скрещивание систем управления летающей тарелкой
 Скрещивание автоматов
 Скрещивание нейронных сетей
А.А. Шалыто
Автоматное программирование
27
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ

Результаты применения
генетического программирования
За сутки была построена управляющая система,
содержащая нейронную сеть и один автомат с
шестью состояниями (вместо семи автоматов с
21 состоянием)
Построенная с
помощью ГП
система
Построенная
вручную система
Среднее
216,55
212,59
Минимум
Максимум
203,05
241,11
203,44
225,09
А.А. Шалыто
Автоматное программирование
28
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
«Народная» задача –
«Разливочная линия»
Задача: налить как можно больше бутылок
за заданный промежуток времени
Объект
управления
Объект
управления
A
Бутылка стоит
правильно
x0
z0
Запустить
транспортер
Транспортер
движется
x1
z1
Остановить
транспортер
Бак пуст
x2
z2
Открыть нижний
клапан
Бак полон
x3
z3
Закрыть нижний
клапан
Тумблер в позиции
x4
"выключено"
z4
Открыть верхний
клапан
z5
Закрыть верхний
клапан
А.А. Шалыто
Автоматное программирование
29
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Решения «народной»
задачи
1. Бутылка
подъезжает,
бак
заполняется
x0/z1
2. Бак
заполняется
x2/z0z3
x0&x3/z1z2z5
x3/z5z2
x3/z5
3. Бутылка
подъезжает
!x0
x0/z1z2
4. Бутылка
заполняется
!x0x1/z4
x0x1/z1z5
1
2
!x2/z2
x0!x1/z5
x2/z3z4z0
5. Смена
бутылки
Построен вручную
Построен автоматически
А.А. Шалыто
Автоматное программирование
30
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Три традиционных подхода
к верификации программ
Тестирование – ничего не доказывает
 Доказательства теорем – все доказывает,
но практически нигде не используется
 Верификация на моделях – Model
Checking (модель программы с конечным
числом состояний и свойства программы в
темпоральной логике)

А.А. Шалыто
Автоматное программирование
31
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Недостатки Model Checking
для программ общего вида
Не ясно, как построить модель
 Не ясно, как записать темпоральные
свойства
 Не ясно, как перейти от модели к реальной
программе в случае обнаружения ошибки

А.А. Шалыто
Автоматное программирование
32
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ



Верификация автоматных
программ
Так как поведение автоматных программ
задается графами переходов конечных
автоматов, то все три указанные проблемы для
этого класса программ эффективно решаются
Работы проводятся совместно с кафедрой
«Теоретическая информатика» Ярославского
государственного университета им. П.Г.
Демидова
Материалы – на сайте http://is.ifmo.ru (раздел
«Верификация»)
А.А. Шалыто
Автоматное программирование
33
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ

NASA (Открытые системы #03/2004)




Повышение качества
программного обеспечения
Использование состояний
Генерация программ с помощью
инструментального средства Stateflow
Верификатор SPIN
СПбГУ ИТМО http://is.ifmo.ru



Использование состояний
Генерация программ с помощью
инструментального средства UniMod
Верификаторы SPIN и Bogor
А.А. Шалыто
Автоматное программирование
34
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ


Надежда
Есть области, в которых верификация
необходима: авиация, управление
ядерными реакторами
Автор надеется, что в этих областях
заказчики могут заставить
программировать автоматно, если они
поймут, что только такие программы
можно формально верифицировать
А.А. Шалыто
Автоматное программирование
35
ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
Спасибо за внимание!
Спасибо за внимание!
А.А. Шалыто
Автоматное программирование
36
Download