Если кратко, то нужен следующий софт:
1. Так называемые "солвер" - математическая библиотека (или множество библиотек) для решения задач оптимизации с условиями. В нашем случае - это библиотека решения задач нелинейного программирования.
2. Средство моделирования, скажем, AMPL или GAMS, с подключение нужных солверов
3. Средство для формулирования задач с учетом задания "сложности функции" в критерии, а также для эффективного перебора функций
Решение происходит так. Система (3) по заданной сигнатуре перебирает функции, при этом для подбора констант формулирует задачи на языке (2), который пользуется солвером (1) для их решения. Запоминаются рекорды по каждому количеству закорючек в функции.
Сам я пользуюсь следующими инструментами
1. IPOPT/BONMIN/COUENNE (бесплатные)
2. Quick NP (коммерческая)
3. Самописная (секретная
) библиотека(много кода, год выпуска 2008, не распространяется). Реализованы несколько эвристик и средств сокращения перебора.
Компьютер самый обыкновенный.
А вообще, качественная реализация - задача для целого НИИ с "программной производственной лабораторий", т.к. возникает масса нюансов, без учета которых система работать толком не будет.