Оптимизация одномерных функций Авторы: Ашмарина Татьяна, Блохин Олег, Кутлаев Максим, Юданов Вячеслав Руководитель: Сысоев Александр Владимирович ITLab, 2009 1 Содержание Постановка задачи Предметная область Архитектура Реализация Демонстрация ITLab, 2009 2 Постановка задачи ITLab, 2009 3 Постановка задачи Есть функция f(x) заданная на отрезке [a ; b] Найти минимальное значение функции на заданной области ITLab, 2009 4 Постановка задачи Разработать программный комплекс для численного решения задач одномерной оптимизации ◦ Локальные методы оптимизации: Ньютона Золотое сечение ◦ Глобальные: Стронгина Пиявского ◦ Построение графика и отображение результатов ITLab, 2009 5 Локальные методы ITLab, 2009 6 Локальные методы Метод Ньютона Принцип работы: Находит ближайший корень производной f '(x0) = 0 f ' ( xi ) xi 1 xi f " ( xi ) ITLab, 2009 7 Локальные методы Золотое сечение [ a c ] b d x | AC | | CB | 1 5 | CB | | AB | 2 ITLab, 2009 8 Глобальные методы ITLab, 2009 9 Глобальные методы Характеристически представимые [ a ] b x R – характеристика интервала 1. Выбирается интервал с максимальной характеристикой 2. Выбирается точка на этом интервале 3. Проводится следующее испытание Оценка минимума – это наименьшее значение из всех найденных ITLab, 2009 10 Глобальные методы Метод полного перебора x a R(i ) xi xi 1 b - характеристика – длина интервала xk 1 0.5 * ( xt 1 xt ) – следующая точка – середина интервала ITLab, 2009 11 Глобальные методы Метод ломаных z1 z2 x x1 M – оценка константы Липшица x2 | F ( x) F ( y ) | L | x y | Характеристика интервала – оценка минимально возможного значения на нём Правило выбора точки: 0.5 * ( zt zt 1) xk 1 0.5 * ( xt 1 xt ) M ITLab, 2009 12 Глобальные методы Метод Стронгина zb za x a b r – множитель для оценки константы Липшица ( zi zi 1) M r ( xi xi 1) Если M 0 то M 1 Характеристика интервала – величина, пропорциональная вероятности, расположения минимума на нём ITLab, 2009 13 Разработанное ПО ITLab, 2009 14 Архитектура комплекса UI Part DLL Data Solver Function +GetEstimation() +Begin() +End() +Initialize(*Function, *Data) +Optimize() +operation(double x) ITLab, 2009 15 Function ITLab, 2009 16 Реализация Функция Function +operation(double x) FormulFunction TableFunction ITLab, 2009 17 Реализация Class FormulFunction Функция задается строкой Функция может быть параметрической Для разбора используется обратная польская нотация http://en.wikipedia.org/wiki/Reverse_Polish_notation ITLab, 2009 18 Реализация Class TableFunction Таблица задается из файла специального вида Для интерполяции функции по таблице значений используется кубический сплайн http://mathworld.wolfram.com/CubicSpline.html ITLab, 2009 19 Solver ITLab, 2009 20 Реализация Решатель Solver +Initialize(*Function, *Data) +Optimize() Newton +Optimize() BruteForce GoldSection +Optimize() CharacterSolver +Optimize() #R() #NextPoint() #ForEachInterval() Pyavsky Strongin ITLab, 2009 21 GUI ITLab, 2009 22 Реализация GUI ITLab, 2009 23 Реализация GUI Для построения графиков функций используется библиотека ZedGraph, написанная на С#. Демонстрация http://zedgraph.org ITLab, 2009 24 Заключение Разработан программный комплекс одномерной оптимизации Получен опыт работы в команде ITLab, 2009 25 Вопросы ??? ITLab, 2009 26 Контакты Ашмарина Татьяна [email protected] Блохин Олег [email protected] Кутлаев Максим [email protected] Юданов Вячеслав [email protected] ITLab, 2009 27