Интеграционный тест для самодельных основ генетического программирования
Я написал свою собственную структуру генетического программирования. У меня действительно хороший уровень охвата модульных тестов, поэтому я уверен, что отдельные компоненты работают правильно.
То, что я ищу, - это достаточно простая проблема, которая хорошо подходит для генетического программирования, которую я могу использовать в качестве теста уровня интеграции, который проверит мои работоспособность фреймворка и найдет решения.
Я не могу использовать исходную проблему, которую я написал для решения, в качестве интеграционного теста, потому что:
- Я не знаю, разрешима ли проблема с помощью подхода генетического программирования.
- Каждое поколение будет работать около 5 минут.
Может ли кто-нибудь описать простую, нетривиальную проблему, которая хорошо подходит для генетического программирования? Благодарю.
1 ответ
Генетическое программирование может быть применено к проблемам регрессии и классификации. Символическая регрессия, возможно, самая простая. У вас есть некоторые тренировочные данные, и вы должны найти математическую формулу (компьютерную программу), которая приближается к данным данным.
Например, у вас есть следующие данные (вход, выход), сгенерированные функцией f (x):
0 1
1 5
2 31
3 121
4 341
5 781
6 1555
7 2801
8 4681
9 7381
найти функцию, которая связывает вход с выходом. Ответ: функция f(x) = x^4 + x^3 + x^2 + x + 1
Это определенно не должно занимать 5 минут на поколение... на самом деле это должно занимать менее 1 секунды на поколение, когда у вас население 50 человек.
Редактировать: я только что протестировал проблему с моей реализацией GP (с http://mepx.org/), и она выполняется менее чем за 0,02 секунды за весь прогон (50 человек для 50 поколений и длина кода 50).