Интеграционный тест для самодельных основ генетического программирования

Я написал свою собственную структуру генетического программирования. У меня действительно хороший уровень охвата модульных тестов, поэтому я уверен, что отдельные компоненты работают правильно.

То, что я ищу, - это достаточно простая проблема, которая хорошо подходит для генетического программирования, которую я могу использовать в качестве теста уровня интеграции, который проверит мои работоспособность фреймворка и найдет решения.

Я не могу использовать исходную проблему, которую я написал для решения, в качестве интеграционного теста, потому что:

  1. Я не знаю, разрешима ли проблема с помощью подхода генетического программирования.
  2. Каждое поколение будет работать около 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).

Другие вопросы по тегам