Мультивыраженное программирование
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Программирование с несколькими выражениями (MEP) — это эволюционный алгоритм генерации математических функций, описывающих заданный набор данных. MEP — это вариант генетического программирования, кодирующий несколько решений в одной хромосоме. Представление MEP не является конкретным (было протестировано несколько представлений). В простейшем варианте хромосомы MEP представляют собой линейные строки инструкций. Это представление было вдохновлено Трехадресным кодом . Сила МВП заключается в способности кодировать несколько решений проблемы в одной и той же хромосоме. Таким образом можно исследовать большие зоны пространства поиска. Для большинства задач это преимущество не приводит к увеличению времени выполнения по сравнению с вариантами генетического программирования, кодирующими одно решение в хромосоме. [1] [2] [3]
Представительство [ править ]
Хромосомы MEP представляют собой массивы инструкций, представленных в формате трехадресного кода .
Каждая инструкция содержит переменную, константу или функцию. Если инструкция является функцией, то аргументы (заданные в виде адресов инструкций) также присутствуют.
Пример программы MEP [ править ]
Вот простая MEP-хромосома (метки слева не являются частью хромосомы):
1: a 2: b 3: + 1, 2 4: c 5: d 6: + 4, 5 7: * 3, 5
Расчет фитнеса [ править ]
Когда хромосома оценивается, неясно, какая инструкция обеспечит вывод программы. Во многих случаях получается набор программ, некоторые из которых совершенно не связаны друг с другом (не имеют общих инструкций).
Для приведенной выше хромосомы вот список возможных программ, полученных при декодировании:
E1 = a, E2 = b, E4 = c, E5 = d, E3 = a + b. E6 = c + d. E7 = (a + b) * d.
Каждая инструкция оценивается как возможный результат работы программы.
Соответствие (или ошибка) вычисляется стандартным способом. Например, в случае символической регрессии пригодность представляет собой сумму разностей (по абсолютному значению) между ожидаемым результатом (называемым целевым) и фактическим результатом.
Процесс назначения на фитнес [ править ]
Какое выражение будет представлять хромосому? Какой из них даст приспособленность хромосомы?
В MEP лучший из них (имеющий наименьшую ошибку) будет представлять хромосому. Это отличается от других методов GP: в линейном генетическом программировании результат выдает последняя инструкция. В декартовом генетическом программировании ген, обеспечивающий результат, развивается, как и все другие гены.
Заметим, что для многих задач эта оценка имеет такую же сложность, как и в случае кодирования единственного решения в каждой хромосоме. Таким образом, нет никакого снижения времени выполнения по сравнению с другими методами.
Программное обеспечение [ править ]
МЕПХ [ править ]
MEPX — это кроссплатформенное (Windows, macOS и Linux Ubuntu) бесплатное программное обеспечение для автоматического создания компьютерных программ. Его можно использовать для анализа данных, особенно для решения символьной регрессии , статистической классификации и временных рядов задач .
libmep [ править ]
Libmep — это бесплатная библиотека с открытым исходным кодом, реализующая технику программирования с несколькими выражениями. Он написан на С++.
хмэп [ править ]
hmep — это новая библиотека с открытым исходным кодом, реализующая технику программирования с несколькими выражениями на языке программирования Haskell.
См. также [ править ]
- Генетическое программирование
- Декартово генетическое программирование
- Программирование экспрессии генов
- Грамматическая эволюция
- Линейное генетическое программирование
Примечания [ править ]
- ^ Олтеан М.; Думитреску Д.: « Программирование с несколькими выражениями », Технический отчет, Univ. Бабеш-Бойяи, Клуж-Напока, 2002 г.
- ^ Олтеан М.; Гросан К.: « Развитие эволюционных алгоритмов с использованием множественного выраженного программирования », 7-я Европейская конференция по искусственной жизни, 14–17 сентября 2003 г., Дортмунд, под редакцией В. Банцхафа (и др.), LNAI 2801, стр. 651-658, Шпрингер-Верлаг, Берлин, 2003 г.
- ^ Олтеан М.; Гросан К.: « Развитие цифровых схем с использованием множественного программирования », Конференция НАСА/Министерства обороны по развиваемому оборудованию, 24–26 июня, Сиэтл, под редакцией Р. Зебулума (и др.), Страницы 87–90, IEEE Press, Нью-Джерси, 2004 г.