Это программное средство для решения задач безусловной однокритериальной оптимизации, в котором в одном приложении объединены три стохастических метода: генетический алгоритм, метод роя частиц и дифференциальная эволюция, благодаря чему пользователь может и искать экстремум функции, и сравнивать поведение алгоритмов на одинаковых задачах.
Программа реализована на Python, в работе использовался Visual Studio Code как среда разработки, Python 3.12 как основная версия языка, а также библиотеки NumPy, PyQt5, Plotly и inspect, каждая из которых отвечает соответственно за вычисления, интерфейс, графики и анализ передаваемых функций.
Архитектурным центром системы является класс MetaOptimizer, который принимает имя выбранного алгоритма, оптимизируемую функцию, границы поиска и дополнительные параметры, после чего единообразно запускает нужный метод и возвращает результат в формате, пригодном для визуализации и анализа.
Вокруг этого ядра построен интерфейсный слой: класс OptimizerApp отвечает за окно, ввод параметров, запуск вычислений и вывод результата, StreamHandler перенаправляет сообщения о ходе итераций в интерфейс, HelpDialog и AboutDialog дают справочную информацию, а CustomTitleBar реализует собственный заголовок окна с функциями перемещения, сворачивания и закрытия.
С пользовательской точки зрения программа устроена достаточно наглядно: слева выбирается алгоритм и режим поиска минимума или максимума, затем задаются функция, диапазон поиска, размер популяции, число итераций и специальные коэффициенты, а в центральной части показываются график функции, текущее лучшее решение и журнал выполнения оптимизации.
Внутренняя реализация алгоритмов сделана модульно: GA построен через классы Individual, Population, Mutation, Crossover, Selection и GeneticAlgorithm с бинарным кодированием и эволюционными операциями, PSO использует классы Particle и Swarm с обновлением скоростей и позиций частиц по личному и глобальному лучшему опыту, а DE основан на инициализации популяции, разностной мутации, кроссовере и замене особей более удачными кандидатами.
Отдельно стоит отметить визуальную сторону проекта, потому что он поддерживает как одномерные, так и двумерные функции, строит для них двумерные и трехмерные графики через Plotly и позволяет наблюдать сам процесс поиска оптимума, а не только получать финальный числовой ответ.
При этом у программы есть и жесткие ограничения на ввод: аргументы функции должны называться только x и y, выражения обязаны быть совместимы с синтаксисом NumPy, а один из критериев остановки срабатывает тогда, когда значение функции не меняется на десяти повторяющихся итерациях подряд.
В целом это программное средство одновременно решает практические задачи оптимизации, демонстрирует различия между популярными метаэвристиками и помогает понять сильные и слабые стороны каждого алгоритма через единый интерфейс, наглядную визуализацию и экспериментальную проверку на тестовых функциях.