Взгляните на Грамматическую Эволюцию. Вы предоставляете список переменных, доступных функций и функции оценки пригодности. Программа будет использовать генетические алгоритмы для создания геномов, которые сопоставляются с различными программами для оценки. Используя функцию пригодности, чтобы минимизировать ошибку, она разработает программу для решения проблемы.
Одна из возможных реализаций - это GEVA , которая реализована в JAVA.
Если вы не знаете, сколько уравнений задействовано в сложном наборе данных, вы, вероятно, захотите изучить использование метаграмматик для определения доступных функций и переменных. Мне нужно знать больше о конкретной проблеме, чтобы дать лучший совет.