Программирование с несколькими выражениями (MEP) — это эволюционный алгоритм генерации математических функций, описывающих заданный набор данных. MEP — это вариант генетического программирования , кодирующий несколько решений в одной хромосоме. Представление MEP не является конкретным (было протестировано несколько представлений). В простейшем варианте MEP-хромосомы представляют собой линейные строки инструкций. Это представление было вдохновлено Трехадресным кодом . Сила МВП заключается в способности кодировать несколько решений проблемы в одной и той же хромосоме. Таким образом можно исследовать большие зоны пространства поиска. Для большинства задач это преимущество не приводит к увеличению времени выполнения по сравнению с вариантами генетического программирования , кодирующими одно решение в хромосоме. [1] [2] [3]
Хромосомы MEP представляют собой массивы инструкций, представленных в формате трехадресного кода .
Каждая инструкция содержит переменную, константу или функцию. Если инструкция является функцией, то аргументы (заданные в виде адресов инструкций) также присутствуют.
Вот простая MEP-хромосома (метки слева не являются частью хромосомы):
1: а2: б3: + 1, 24: с5:д6: + 4, 57: *3, 5
Когда хромосома оценивается, неясно, какая инструкция обеспечит вывод программы. Во многих случаях получается набор программ, некоторые из которых совершенно не связаны друг с другом (не имеют общих инструкций).
Для приведенной выше хромосомы вот список возможных программ, полученных при декодировании:
Е1 = а,Е2 = б,Е4 = с,Е5 = д,Е3 = а + б.Е6 = с + d.Е7 = (а + б)*д.
Каждая инструкция оценивается как возможный результат работы программы.
Соответствие (или ошибка) вычисляется стандартным способом. Например, в случае символической регрессии пригодность представляет собой сумму разностей (по абсолютному значению) между ожидаемым результатом (называемым целевым) и фактическим результатом.
Какое выражение будет представлять хромосому? Какой из них даст приспособленность хромосомы?
В MEP лучший из них (имеющий наименьшую ошибку) будет представлять хромосому. Это отличается от других методов GP: в линейном генетическом программировании результат выдает последняя инструкция. В декартовом генетическом программировании ген, обеспечивающий результат, развивается, как и все другие гены.
Заметим, что для многих задач эта оценка имеет такую же сложность, как и в случае кодирования единственного решения в каждой хромосоме. Таким образом, нет никакого снижения времени выполнения по сравнению с другими методами.
MEPX — это кроссплатформенное (Windows, macOS и Linux Ubuntu) бесплатное программное обеспечение для автоматического создания компьютерных программ. Его можно использовать для анализа данных, особенно для решения символьной регрессии , статистической классификации и задач временных рядов .
Libmep — это бесплатная библиотека с открытым исходным кодом, реализующая технику программирования с несколькими выражениями. Он написан на С++.
hmep — это новая библиотека с открытым исходным кодом, реализующая технику программирования с несколькими выражениями на языке программирования Haskell.