- •О.К. Мурга
- •Оглавление
- •1. Методы одномерной оптимизации 6
- •2. Методы безусловной оптимизации 13
- •3. Методы оптимизации при наличии ограничений 35
- •4. Приближённое решение задачи оптимального управления 53
- •Введение
- •1. Методы одномерной оптимизации
- •1.1. Методы перебора
- •1.1.1. Метод равномерного поиска
- •1.1.2. Метод поразрядного поиска
- •1.2. Методы исключения отрезков
- •1.2.1. Метод дихотомии
- •1.2.2. Метод золотого сечения
- •1.3. Сравнительный анализ методов одномерного поиска
- •1.4. Порядок выполнения лабораторной работы
- •1.5. Задания для лабораторной работы.
- •2. Методы безусловной оптимизации
- •2.1. Прямые методы безусловной оптимизации
- •2.1.1. Поиск по правильному симплексу
- •2.1.2. Поиск по деформируемому многограннику
- •Влияние параметров алгоритма на эффективность поиска
- •2.1.3. Типовой пример.
- •2.1.4. Порядок выполнения лабораторной работы
- •2.1.5. Задания для лабораторной работы
- •2.2 Методы покоординатного спуска
- •2.2.1 Метод циклического покоординатного спуска
- •2.2.2. Метод Зейделя.
- •2.2.3. Метод Хука-Дживса
- •2.2.4. Метод Пауэлла.
- •2.2.5. Типовые примеры
- •2.2.6. Порядок выполнения лабораторной работы
- •2.2.7. Задания для лабораторной работы
- •2.3. Градиентные методы
- •2.3.1. Метод градиентного спуска
- •2.3.2. Метод наискорейшего спуска
- •2.3.3. Типовой пример
- •2.3.4. Порядок выполнения лабораторной работы
- •2.3.5. Задания для лабораторной работы
- •3. Методы оптимизации при наличии ограничений
- •3.1. Методы последовательной безусловной оптимизации
- •3.1.1. Метод штрафных функций
- •3.1.2. Метод барьерных функций
- •3.1.3. Комбинированный метод штрафных функций
- •3.1.4. Типовой пример
- •3.1.5. Задание для лабораторной работы
- •3.2. Метод возможных направлений
- •3.2.1. Постановка задачи выпуклого программирования
- •3.2.2. Описание метода возможных направлений
- •3.2.3. Построение начального приближения
- •3.2.4. Выбор наилучшего подходящего направления
- •3.2.5. Определение длины шага
- •3.2.6. Типовой пример
- •3.2.7. Задания для лабораторной работы
- •3.3. Метод случайного поиска
- •3.3.1. Поиск с возвратом при неудачном шаге
- •3.3.2. Алгоритм наилучшей пробы
- •3.3.3. Алгоритм статистичекого градиента
- •3.3.4. Порядок выполнения работы
- •3.3.5. Задания для лабораторной работы
- •4. Приближённое решение задачи оптимального управления
- •4.1. Постановка задачи оптимального управления
- •4.2. Градиентный метод решения задачи оптимального управления
- •4.2.1. Описание градиентного метода в функциональном пространстве.
- •4.2.2. Алгоритм метода.
- •4.2.3. Порядок выполнения лабораторной работы.
- •4.2.4. Задания для лабораторной работы.
- •Список литературы
2.2.2. Метод Зейделя.
Этот метод заключается в последовательной минимизации функции f(X) по направлению каждого из координатных векторов ej, j=1,…,n всегда начиная из самой последней точки построенной последовательности. После завершения минимизации по направлению последнего координатного вектора en цикл, называемый внешней итерацией, повторяется до тех пор, пока не выполнится одно из возможных условий окончания поиска:
|f(Xk) f(Xkn)| или || Xk Xk-n||, (2.19)
где 0 заданный параметр точности.
Для приближенного решения вспомогательной задачи минимизации
min{f(Xk Sk) |R} (2.20)
на каждом внутреннем шаге внешней итерации целесообразно использовать изученный ранее метод поразрядного поиска. Опишем алгоритм метода Зейделя.
Шаг 0. Задать параметр точности 0, выбрать точку начального приближения X0ÎEn, вычислить значение функции f(X0), положить k=0.
Шаг 1. Положить j=kn +1, Sk=ej, где –целая часть числа k/n.
Решить задачу одномерного поиска (2.20), т.е. определить оптимальную величину шага k=arg min{f(Xk+Sk)|R}. Найти новую точку последовательности Xk+1= Xk+kSk и вычислить значение функции f(Xk+1).
Шаг 2. Если jn , то положить k=k+1 и перейти к шагу 1, иначе – перейти к шагу 3.
Шаг 3. Проверить условие достижения заданной точности (2.19). Если оно выполняется, то перейти к шагу 4, иначе – к шагу 1, положив k=k+1.
Шаг 4. Завершить вычисления, положив X* Xk+1, f*f(Xk+1).
Эффективность метода Зейделя существенно зависит от свойств целевой функции f(X). Так, если линиями уровня целевой функции двух переменных являются концентрические окружности, то очевидно, что два шага исчерпывающего спуска приведут в точку минимума из любой начальной точки, т.е минимум такой функции удается с помощью описанного алгоритма найти точно за конечное число шагов.
2.2.3. Метод Хука-Дживса
Эффективность решения задачи (2.1) рассмотренными методами покоординатного спуска можно повысить, если дополнить описанные алгоритмы периодически повторяющимся поиском точки минимума в направлении вектора XkXk-n из точек Xk, k=sn, где s – количество выполненных внешних итераций. Такой подход и лежит в основе метода ХукаДживса.
Алгоритм метода ХукаДживса содержит две основные процедуры:
1) Исследующий покоординатный поиск в окрестности данной точки с целью определения направления убывания функции f(X);
2) Перемещение в направлении убывания.
Опишем вначале алгоритм исследующего покоординатного поиска из заданной точки X с приращениями по каждой координате j, j=1,…,n.
Шаг 1. Положить =X, j=1.
Шаг 2. Сделать пробный шаг Y= jej,где ej j-й координатный вектор. Если f(Y)f( ), то перейти к шагу 3, иначе – к шагу 4.
Шаг 3. Сделать пробный шаг Y= +jej. Если f(Y)f( ), то перейти к шагу 5, иначе – к шагу 4.
Шаг 4. Положить =Y.
Шаг 5. Положить j=j+1. Если jn, то перейти к шагу 2. В противном случае исследующий поиск окончен, т.е. получена точка , для которой f( )f(X), если X.
В результате исследующего поиска может оказаться, что =X. Тогда исследующий поиск считается неудачным. Если при этом |||| , где – заданная точность, то полагают X*=X. Если же заданная точность не достигнута, то полагают j=j, где (0;1)–коэффициент уменьшения шага и повторяют исследующий поиск.
Опишем теперь полный алгоритм ХукаДживса.
Шаг 0. Выбрать начальную точку X0ÎEn, вектор приращений =(1,…, n), коэффициент уменьшения (0;1), параметр точности 0, положить k=0.
Шаг 1. Провести исследующий покоординатный поиск из точки Xk и найти точку k. Если k Xk, то перейти к шагу 3, иначе – к шагу 2.
Шаг 2. Проверить условие достижения заданной точности ||||. Если оно выполняется , то перейти к шагу 5, иначе положить j=j и перейти к шагу 1.
Шаг 3. Сделать “диагональный ” шаг из точки k в направлении вектора kXk в точку X= k+( kXk )=2 kXk.
Шаг 4. Провести исследующий поиск в точке X и найти точку . Если f( )f( k), то положить Xk= k, k =X и перейти к шагу 3. Иначе положить k=k+1, Xk=X и перейти к шагу 1.
Шаг 5. Завершить вычисления, положив X*=Xk, f *=f(Xk).