Формулировка математической задачи оптимизации. Описание минимизации функций и ее основных положений. Рассмотрение метода сопряженных градиентов. Оценка способа минимизации функций методом Флетчера-Ривса. Исследование программной реализации метода.
В общем виде математическую задачу оптимизации можно сформулировать следующим образом:[1,2]. Минимизировать (максимизировать) целевую функцию с учетом ограничений на управляемые переменные. Под минимизацией (максимизацией) функции n переменных f(x) = f(x1,...,xn) на заданном множестве U n-мерного векторного пространства En понимается определение хотя бы одной из точек минимума (максимума) этой функции на множестве U, а также, если это необходимо, и минимального (максимального) на U значения f(x). Объектом иерархии является общая задача нелинейного программирования (НЛП): (1.1) i = 1,2,… r, (1.2) i = r 1, r 2,… m, (1.3) где f, gi - произвольные функции параметра x I Rn.Градиентом дифференцируемой функции f(x) в точке х[0] называется n-мерный вектор f(x[0]), компоненты которого являются частными производными функции f(х), вычисленными в точке х[0], т. е. f"(x[0]) = (дf(х[0])/дх1, …, дf(х[0])/дхn)T. Приравнивая функцию различным постоянным величинам С0, С1, ... Рисунок 1 - Градиент.Метод сопряженных градиентов формирует направления поиска, в большей мере соответствующие геометрии минимизируемой функции.[5,6] Это существенно увеличивает скорость их сходимости и позволяет, например, минимизировать квадратичную функцию f(x) = (х, Нх) (b, х) а с симметрической положительно определенной матрицей Н за конечное число шагов п , равное числу переменных функции.Алгоритм метода сопряженных градиентов Флетчера-Ривса состоит в следующем.[6,7]. В точке х[0] вычисляется p[0] = -f’(x[0]). На k-м шаге по приведенным выше формулам определяются шаг ак. и точка х[k 1]. Эта процедура найдет минимум квадратичной функции не более чем за п шагов.Задача 5. Методом Флетчера-Ривса найти минимум целевой функции с учетом ограничений: . Варианты: Минимизируйте функцию . Проверим критерий остановки: x0 = (2;2)T, |?f(X0)| < ?, .На рисунке 5 представлена консольная версия компьютерной программы, написанной в среде программирования Microsoft Visual Studio 2010. int NITER = 0;. double FBESTF;. for (i = 0; i < NNUMVARS; i ) {. Console.WRITELINE("X({0}) = {1}", i 1, FX[i]);.
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы