- •РАЗДЕЛ I. МЕТОДЫ ОПТИМИЗАЦИИ
- •1. ПОСТАНОВКА ЗАДАЧ ОПТИМИЗАЦИИ И ИХ КЛАССИФИКАЦИЯ.
- •1.1. Постановка задачи
- •1.2. Методы нахождения минимума функции одной переменной
- •Метод деления отрезка пополам
- •Метод золотого сечения
- •Метод последовательного перебора
- •Метод квадратичной параболы
- •Метод кубической параболы
- •1.3. Рельеф функции
- •1.4. Представление функции в окрестности минимума
- •1.5. Классификация методов оптимизации
- •2.МЕТОДЫ НУЛЕВОГО ПОРЯДКА
- •2.1. Описание общего алгоритма методов покоординатного спуска.
- •2.2 Метод ГАУССА-ЗЕЙДЕЛЯ
- •2.3. Метод ПАУЭЛЛА
- •2.4. Метод ДСК
- •2.5. Метод РОЗЕНБРОКА
- •2.6. Метод покоординатного последовательного перебора
- •2.7. Метод ХУКА-ДЖИВСА
- •2.8. Метод НЕЛДЕРА-МИДА
- •3. МЕТОДЫ ПЕРВОГО ПОРЯДКА И МЕТОДЫ С ПЕРЕМЕННОЙ МЕТРИКОЙ
- •3.1. Метод спуска по градиенту
- •3.3. Метод Давидона-Флетчера-Пауэлла
- •3.4. Метод проективного градиента
- •3.5. Метод Мак-Кормика 1
- •3.6. Метод Мак-Кормика 2
- •3.7. Метод Гольдфарба
- •3.8. Метод Гринстадта
- •4. МЕТОДЫ УСЛОВНОЙ ОПТИМИЗАЦИИ ФУНКЦИИ N ПЕРЕМЕННЫХ.
- •4.1. Метод штрафных функций
- •РАЗДЕЛ II. ЧИСЛЕННЫЕ МЕТОДЫ УРАВНЕНИЙ МАТЕМАТИЧЕСКОЙ ФИЗИКИ
- •1. МАТЕМАТИЧЕСКИЕ МОДЕЛИ И ЧИСЛЕННЫЕ МЕТОДЫ
- •1.1. Как исследуются физические явления и решаются задачи
- •1.2. Как оценивается погрешность вычислений?
- •1.3. Откуда возникают погрешности расчетов?
- •1.4. Итерационные методы решения задач
- •2. КЛАССИФИКИЦИЯ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
- •2.1. Определение дифференциальных уравнений
- •2.2. Постановка задач для обыкновенных ДУ
- •2.4. Как получают дифференциальные уравнения
- •2.5. Подобие физических явлений, безразмерные переменные
- •3. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ МЕТОДА СЕТОК
- •3.1. Теоретические основы метода сеток
- •3.2 Решение систем обыкновенных дифференциальных уравнений
- •4. РЕШЕНИЕ КРАЕВОЙ ЗАДАЧИ ДЛЯ ДИФФЕРЕНЦАЛЬНЫХ УРАВНЕНИЙ 2-ГО ПОРЯДКА МЕТОДОМ ПРОГОНКИ
- •5. РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ В ЧАСТНЫХ ПРОИЗВОДНЫХ
- •5.1. Одномерное нестационарное уравнение теплопроводности
- •5.2. Задача Дирихле для двухмерного уравнения Пуассона
2.МЕТОДЫ НУЛЕВОГО ПОРЯДКА
2.1. Описание общего алгоритма методов покоординатного спуска.
Среди методов нулевого порядка можно выделить группу методов покоординатного спуска: методы Гаусса-Зейделя, Пауэлла, Дэвиса-Свена-Кемпи (ДСК), Розенброка.Алгоритм этих методов в общем одинаков и описывается следующим образом:
Задается начальная точка x0 и начальный шаг одномерного спуска h .
1. Выбирается n линейно независимых направлений dr1 ... drn . Обычно это единичные координатные орты e1 ... ern (вообще их можно выбрать исходя из
знания свойств целевой функции).
2. По каждому i -направлению (i =1,n) поочередно делается спуск, т.е.
находится zmi , доставляющий minϕ(xr0 + zdi ), и пересчитывается точка xr0 = xr0 + zmidri . z
При нахождении точки zmi используется либо метод последовательного
перебора, если функция не гладкая, либо метод квадратичной параболы для гладких функций.
В результате выполнения этих n спусков, называемых циклом, точка x0 сдвинулась на вектор zr = ∑zmidi .
3.Проверяется условие = ∑ zi < ε , если да, то процесс спуска заканчивается, и xrm = xr0 , Fm = f (xr0 ) .
4.В зависимости от полученного вектора z , несущего информацию о
функции, делается некоторое преобразование выбранных направлений: di = Π(zr,dr1 ... drn ), i =1,n .
5. Изменяется начальный шаг h в методах М13 или М14: h = / 4 . 6. Процесс вычислений повторяется с п.2.
Особенности программной реализации.
При программной реализации следует описать отдельно подпрограммувычисления минимизируемой функции. После этого пишется подпрограмма метода оптимизации, внутри которой удобно ввести: направленийr массив для коор-
динат векторов D, где помещается k -я координата вектора di ; массивы z,x,a,b для zi ; рабочий массив x, а также массивы a и b в методе Розенброка, ДСК, Пауэлла. Затем пишется подпрограмма для функции ϕ (z) вдоль направления
dri , подпрограмма метода одномерного поиска минимума функции Fi (обычно
используется метод последовательного перебора или метод квадратичной параболы) и подпрограмма преобразования векторов направлений, т.е. преобразования матрицы D.
14
Во всех указанных методах вначале di = eri и, следовательно, матрица D
представляет собой единичную матрицу, в п. 1 следует вычислить dik = 0 если i ≠ k, drik =1, если i = k ).
Отличаются методы видом оператора преобразования этих направлений после каждого цикла спуска.
2.2 Метод ГАУССА-ЗЕЙДЕЛЯ
Этот метод не требует преобразования направлений, т.е. п.4 отсутствует, и спуск все время производится вдоль осей координат.
2.3. Метод ПАУЭЛЛА
Пересчет направлений осуществляется следующим образом:
r |
n |
r |
r r |
r |
r |
r |
r |
|
r |
|
; |
|
|
||||||||||
a |
= ∑zidi ; |
dn = dn−1; ... |
d2 |
= d1; |
d1 |
= a / |
|
a |
|
||
i=1
2.4. Метод ДСК
Пересчет направлений осуществляется по следующим формулам:
r |
n |
r |
|
|
|
|
|
|
|
r |
r |
r r |
|
r |
|
; |
||
|
|
|
||||||||||||||||
ai |
= ∑z jd j ; |
i =1...n −1; dn = dn−1; |
di = ai / |
|
ai |
|
||||||||||||
|
j=i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.5. Метод РОЗЕНБРОКА |
|
|||||||||
Формулы пересчета направлений: |
|
|
|
|
|
|||||||||||||
r n |
r |
r |
r |
/ |
|
r |
|
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
ai = ∑z jd j ; |
d1 |
= a1 |
|
a1 |
|
|
|
|
|
|
|
|
|
|
|
|||
j=i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i−1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cri = ari − ∑(aridrj )drj ; |
|
|
dri = cri / |
|
cri |
|
; |
i = 2,n. |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||||||||||
j=1
Другая группа методов, нулевого порядка, представителями которых являются методы последовательного покоординатного перебора, Хука-Дживса и Нелдера-Мида, иллюстрируют широкие возможности для творческого поиска разнообразных способов выбора направлений.
2.6. Метод покоординатного последовательного перебора
Задается исходная точка x0 и начальный шаг h .
1.Вычисляется F0 = f (x0 ) .
2.Вычислить M = 0.
Для каждого i =1..n |
повторить следующий цикл спуска: |
|
вычислить xrT = xr0 + erih, |
FT = f (xrT ) |
|
если FT ≥ F0 |
, тогда |
|
вычислить xrT = xr0 −erih, FT = f (xrT ) |
||
если FT ≥ F0 |
, тогда M = M +1 и перейти к следующему i ; |
|
15
если FT < F0 , тогда xr0 = xrT , F0 = FT и перейти к следующему i ;
3. если M = n , т.е. уменьшения не было достигнуто ни по одному направлению, тогда если h ≤ε , то xrm = xr0, Fm = F0 конец
если h >ε , то h = h / 2 перейти к п. 2. 4. если M ≠ n , то повторить с п.2.
2.7. Метод ХУКА-ДЖИВСА
Данный метод представляет модификацию предыдущего. Алгоритм метода
прост в реализации и метод довольно эффективен. |
|
||||||||
Задается исходная точка x0 и начальный шаг h . |
|
||||||||
1. Вычисляется xr1 = xr0, |
F1 = f (xr1); |
|
|
|
|||||
2. Вычислить M = 0. |
|
|
|
|
|
|
|||
Для каждой переменной i, i =1,n |
повторяется следующая операция: |
||||||||
а) вычисляется xrT = xr1 + erih, |
FT |
= f (xrT ) ; |
|
|
|||||
б) если FT ≥ F1 тогда xrT |
= xr1 − erih, |
FT = f (xrT ) |
перейти к п. в, |
||||||
|
|
|
иначе перейти к п. г; |
|
|
|
|
||
в) если F |
≥ F тогда M = M +1 перейти к следующему i , иначе п. г. |
||||||||
r |
r |
T |
1 |
|
|
|
|
|
|
г) x1 = xT |
, |
F1 = FT ; |
|
|
|
|
|
|
|
т.е. по каждой переменной делается спуск на шаг h , если возможно. |
|||||||||
3. Если M = n (т.е. уменьшения не было достигнуто ни в одном направле- |
|||||||||
нии), тогда проверяется h <ε . Если да, то xm = xr1, |
Fm = F1 конец. Если нет, то |
||||||||
h = h / 2 |
и повторить с п. 2. |
|
|
|
|
|
|
||
4. Если M ≠ n , (т.е. мы спустились в точку x1, где F1 < f (xr0 ) . |
|||||||||
|
|
|
|
|
|
|
r |
r |
и получаем в этом направ- |
Тогда выбираем направление спуска d = x1 |
− x0 |
||||||||
лении новую точку xr2 = xr1 + 2d и вычисляем F2 = f (x2 ) . |
|||||||||
5 Если rF2 <rF1 тогда xr0 = xr2; |
xr1 = xr2; |
F1 = F2 перейти к п. 2. |
|||||||
Иначе x0 = x1 , перейти к п. 2. |
|
|
|
|
|
||||
Обычно не следует задавать ε <10−4 , начальный шаг нужно выбрать из условия h xr0 − xrm / 2 .
2.8. Метод НЕЛДЕРА-МИДА
Метод деформируемого многогранника - Нелдера-Мида (развитие симплексного метода Спендли, Хекста и Химсворта) является одним из самых эффективных методов нулевого порядка.
Симплекс - это фигура в n -мерном пространстве, имеющая n +1 вершину и n +1 грань. На плоскости - это треугольник, в n -мерном пространстве - тетраэдр.
Идея метода состоит в том, что на основе анализа значений функции в вершинах симплекса выбирается очередное направление спуска, после спуска симплекс перемешается в направлении получаемой точки с меньшим значением функции по определенным правилам.
16
Алгоритм метода описывается следующим образом. Заданы xr0 |
и началь- |
||
ный размер симплекса h . |
|
|
|
1. Строятся вершины начального симплекса: |
|
|
|
xri = xr0 + erih; i =1,n xrn+1 = xr0. |
|
|
|
Вычисляются значения функции Fi = f (xi ) в этих вершинах. |
|
|
|
2. Найдем вершину xrp с наибольшим значением Fp = max Fi , вершину xq |
|||
со значением Fq , |
следующим за наибольшим Fq < Fp , и вершину |
xm |
с наи- |
меньшим среди Fi |
значением Fm = min Fi и запоминаются m,q, p . |
|
|
3. Найдем центр тяжести x0 всех точек за исключением точки xp |
по фор- |
||
муле |
|
|
|
xr0 = 1 ∑n xri
n i≠p
4. Произведем теперь спуск в направлении d = xr0 − xrp и получим новую
точку по формуле
xrr = xr0 +α(xr0 − xrp )
α - коэффициент отражения, вычисляем Fr = f (xr ) ;
5. Если Fr < Fm , т.е. направление оказалось удачным, тогда продвинемся еще в этом направлении и получим точку xe = xr0 +γ (xrr − xr0 ) , γ - коэффициент растяжения, вычислим Fe = f (xe ) .
5.1. Если Fe < Fm , то заменяем точку xp на точку xre ( xrp = xre , Fp = Fe ) и переходим к п.10.
5. 2. Если Fe > Fm то отбрасываем точку xe . (Очевидно, мы переместились слишком далеко от xr0 ). Заменяем точку xp на xr ( xp = xrr ,
Fp = Fr ) и переходим к п. 10.
6.Если Fm ≤ Fr ≤ Fq , тогда xp = xrr , Fp = Fr (точка xrr лучше, чем q и p ) и переходим к п. 10.
7.Если Fr > Fq тогда произведем сжатие:
7.1. Если Fr > Fq , тогда
xre = xr0 + β(xrp − xr0 ) , перейти к п. 7.3.
7.2. Если Fr < Fq , тогда xp = xrr , Fp = Fr ,
xre = xr0 + β(xrr − xr0 ) , перейти к п. 7.3. 7.3. Fe = f (xe ) ; ( β - коэффициент сжатия).
8. Сравним Fe и Fp .
8.1.Если Fe < Fp то xrp = xre , Fp = Fe , переходим на п. 10.
8.2.Если Fe < Fp , то очевидно, все наши попытки найти точкусо значением < Fp сказались неудачными. Следовательно, надо уменьшить начальный симплекс.
17
9.Редукция. Здесь возле точки xm строим новый симплекс, уменьшенный
в2 раза. Каждая вершина его вычисляется по формуле
xr |
= |
1 (xr |
+ xr |
), i =1...n +1, i ≠ m . |
|
i |
|
2 |
i |
m |
|
вычисляются Fi = f (xri ) . |
|||||
10. Проверяется условие сходимости:
n+1 |
Fi |
|
n+1 |
(Fi − Fs ) |
2 |
|
Fs = ∑ |
; |
σ = ∑ |
. |
|||
|
n +1 |
|||||
i=1 n +1 |
i=1 |
|
||||
11. Если σ >ε , тогда перейти к п. 2.
Если σ ≤ε , тогда процесс заканчивается и Fm , xm - искомые значения.
Рекомендуется выбирать следующие коэффициенты отражения α =1 , сжатия β = 0,5, растяжения γ = 2 .
18
