
- •Содержание
- •Лабораторная работа №1 вычисление значения функции sin(X), разложенной в ряд
- •Теоретические основы
- •Сортировка массива методом прямого выбора
- •Сортировка массива методом прямого обмена (пузырьковым методом)
- •Сортировка массива методом прямого включения
- •Шейкерная сортировка
- •Сортировка массива с помощью включений с уменьшающимися расстояниями (метод Шелла)
- •Сортировка разделением (быстрая сортировка)
- •Метод Горнера
- •Задание
- •Контрольные вопросы
- •Теоретические основы
- •Метод деления отрезка пополам (метод бисекции)
- •Метод простой итерации
- •Метод Ньютона
- •Многомерная минимизация Метод градиентного спуска
- •Метод Хука–Дживса
- •Задание
- •Контрольные вопросы Приложение 1 условные обозначения элементов блок–схем алгоритмов
- •Литература
Многомерная минимизация Метод градиентного спуска
Общая
задача нелинейного программирования
без ограничений состоит в минимизации
функции
,
заданной во всем n–мерном
евклидовом пространстве. Функция
называется целевой функцией.
Как
правило, численные методы нахождения
экстремума состоят в построении
последовательности векторов
,
удовлетворяющих условию:
.
Методы построения таких последовательностей
называются методами спуска. В этих
методах элементы последовательности
вычисляются по формуле:
где
– направление спуска;
– длина шага в
этом направлении.
Как
известно, градиент функции в некоторой
точке
направлен в сторону наискорейшего
локального возрастания функции.
Следовательно, спускаться нужно в
направлении, противоположном градиенту.
Вектор, противоположный градиенту,
называется антиградиентом. Выбирая
антиградиент в качестве направления
спуска, приходят к итерационному
процессу вида:
,
(2)
где
Все методы спуска, в которых вектор совпадает с антиградиентом, называются градиентными методами. Они отличаются друг от друга только способом выбора шага. Наиболее употребительны метод наискорейшего спуска и метод дробления шага.
В методе наискорейшего спуска величина определяется из условия
,
т.е. на каждом шаге решается одномерная задача минимизации. Геометрическая интерпретация этого метода достаточно проста (рис. 3). Заметим, что на двух последовательных шагах направления спуска ортогональны.
Если
– ограниченная снизу, непрерывно
дифференцируемая функция и для некоторой
начальной точки
множество
также ограничено, то для метода
наискорейшего спуска последовательность
либо сходится к точке минимума при
,
либо достигает точки минимума за
конечное число шагов.
Процесс
(2) с дроблением шага протекает следующим
образом. Выбираем некоторое начальное
значение
.
Общих правил выбора
нет: если есть информация о расположении
точки минимума, то точку
выбираем в этой области. Затем выбираем
некоторое
и на каждом шаге процесса (2) проверяем
условие монотонности
.
Если это условие нарушается, то
дробим до тех пор, пока монотонность
не восстановится. Для окончания счета
используем критерий:
В
этом случае полагаем
.
Здесь
Рисунок 3 – Метод градиентного спуска
Метод Хука–Дживса
Процедура Хука–Дживса представляет собой комбинацию исследующего поиска с циклическим изменением переменных и ускоряющего поиска по образцу.
Исследующий поиск. Для проведения исследующего поиска необходимо знать величину шага, которая может быть различной для разных координатных направлений и изменяться в процессе поиска. Исследующий поиск начинается в некоторой исходной точке. Если значение целевой функции в пробной точке не превышает значение в исходной точке, то шаг поиска рассматривается как успешный. В противном случае надо вернуться в предыдущую точку и сделать шаг в противоположном направлении с последующей проверкой значения целевой функции. После перебора всех n– координат исследующий поиск завершается. Полученную в результате точку называют базовой точкой.
Поиск по образцу. Поиск по образцу заключается в реализации единственного шага из полученной базовой точки вдоль прямой, соединяющей эту точку с предыдущей базовой точкой. Новая точка образца определяется в соответствии с формулой:
Как
только движение по образцу не приводит
к уменьшению целевой функции, точка
фиксируется в качестве временной
базовой точки и вновь проводится
исследующий поиск. Если в результате
получается точка с меньшим значением
целевой функции, чем в точке
,
то она рассматривается как новая базовая
точка
.
С другой стороны, если исследующий
поиск неудачен, необходимо вернуться
в точку
и провести исследующий поиск с целью
выявления нового направления минимизации.
В конечном итоге возникает ситуация,
когда такой поиск не приводит к успеху.
В этом случае требуется уменьшить
величину шага путем введения некоторого
множителя и возобновить исследующий
поиск. Поиск завершается, когда величина
шага становится достаточно малой.
Последовательность точек, получаемую
в процессе реализации метода, можно
записать в следующем виде:
– текущая базовая точка,
– предыдущая
базовая точка,
– точка, построенная при движении по образцу,
– следующая (новая) базовая точка.
Приведенная последовательность характеризует логическую структуру поиска по методу Хука–Дживса.
Алгоритм метода:
1.
Выбрать начальную базисную точку b1
и шаг длиной h1
для каждой переменной
2. Вычислить f(х) в базисной точке b1 с целью получения сведений о локальном поведении функции f(х). Эти сведения будут использоваться для нахождения подходящего направления поиска по образцу, с помощью которого можно надеяться достичь большего убывания значения функции. Функция f(х) в базисной точке b1, находится следующим образом:
а) Вычисляется значение функции f(b1) в базисной точке b1.
б)
Каждая переменная по очереди изменяется
прибавлением длины шага. Таким образом,
мы вычисляем значение функции
,
где
единичный вектор в направлении оси x1.
Если это приводит к уменьшению значения
функции, то b1
заменяется на
.
В противном случае вычисляется значение
функции
,
и если ее значение уменьшилось, то b1
заменяем на
.
Если ни один из проделанных шагов не
приводит к уменьшению значения функции,
то точка b1
остается неизменной и рассматриваются
изменения в направлении оси х2,
т. е. находится значение функции
и т. д. Когда будут рассмотрены все n
переменных, мы будем иметь новую базисную
точку b2.
в)
Если
,
т. е. уменьшение функции не было
достигнуто, то исследование повторяется
вокруг той же базисной точки b1,
но с уменьшенной длиной шага. На практике
удовлетворительным является уменьшение
шага (шагов) в десять раз от начальной
длины.
г)
Если
,
то производится поиск по образцу.
3. При поиске по образцу используется информация, полученная в процессе исследования, и минимизация функции завершается поиском в направлении, заданном образцом. Эта процедура производится следующим образом:
а)
Разумно двигаться из базисной точки
b2
в направлении
,
поскольку поиск в этом направлении уже
привел к уменьшению значения функции.
Поэтому вычислим функцию в точке
образца:
В общем случае:
б)
Затем исследование следует продолжать
вокруг точки
.
в) Если наименьшее значение на шаге 3б) меньше значения в базисной точке b2 (в общем случае bi+1), то получают новую базисную точку b3 (bi+2), после чего следует повторить шаг 3а). В противном случае, не производить поиск по образцу из точки b2 (bi+1), а продолжить исследования в точке b2 (bi+1).
4. Завершить этот процесс, когда длина шага (длины шагов) будет уменьшена до заданного малого значения.