Основной язык/среда: Python 3, Jupyter Notebook, Google Colab
(Можно использовать Julia, Mojo, C++ и т.д.)
Работа выполняется индивидуально или в группе 2–4 человека.
По результатам необходимо подготовить отчёт с:
- постановкой задачи,
- описанием используемых методов,
- реализацией (или ссылкой на неё),
- результатами исследования: графики, таблицы, анализ,
- сравнением методов, преимуществами и ограничениями.
- Метод Ньютона с выбором шага и одномерным поиском (любой метод).
- Методы из
scipy.optimize
: Newton-CG и один-два квазиньютоновских.
Используемые гиперпараметры должны быть вынесены в интерфейс метода.
Желательно предусмотреть ограничение числа итераций и другие предохранители.
Функции со сложным поведением (можно из 1-й лабораторной).
Сравнение эффективности реализованных и библиотечных методов.
Критерии сравнения:
- количество итераций;
- число вычислений функции, градиента, гессиана;
- достижение критерия остановки.
Допускаются ситуации, где продвинутые методы работают хуже.
Можно добавить метод Нелдера-Мида (scipy.optimize
).
- Реализовать самостоятельно или разобрать стороннюю реализацию.
- Проанализировать и доработать.
- Интегрировать в проект и сравнить по эффективности.
- Использовать
optuna
на функциях из 1-й и 2-й лабораторных. - Найти более удачные значения гиперпараметров.
- Указать: собственный/библиотечный метод.
- Источник библиотеки, если используется.
- Алгоритмические особенности: гиперпараметры и т.д.
- Технические особенности: например, мемоизация.
- Линии уровня и траектории методов.
- 2D-графики (или 3D).
Для каждого метода указать:
- исследуемую функцию и начальную точку;
- стратегию выбора шага, параметры, критерий остановки;
- результат: число итераций, вызовов функции и её производных.
- Работоспособность и качество кода
- Полнота отчёта
- Знание теории
- Доп. задание 1
- Доп. задание 2
Максимум: 25 баллов