- •Содержание
- •Тема 1. Задачи одномерной безусловной минимизации
- •Тема 2. Задачи многомерной безусловной минимизации
- •Тема 3. Задачи многомерной оптимизации при наличии ограничений. Линейное программирование
- •Введение
- •Тема 1. Задачи одномерной безусловной минимизации
- •1.1. Постановка задачи
- •1.2. Метод перебора
- •1.3. Метод поразрядного поиска
- •1.4. Метод деления отрезка пополам (метод дихотомии)
- •1.5. Метод Фибоначчи
- •1.6. Метод золотого сечения
- •1.7. Метод средней точки.
- •1.8. Метод Ньютона.
- •Тема 2. Задачи многомерной безусловной минимизации
- •2.1. Необходимые сведения из курса линейной алгебры
- •2.2. Постановка задачи многомерной оптимизации
- •2.3. Необходимые сведения из курса математического анализа
- •2.4. Методы спуска
- •2.5. Метод градиентного спуска с дроблением шага
- •2.6. Метод наискорейшего спуска
- •2.7. Метод сопряженных градиентов
- •2.8. Метод покоординатного спуска
- •2.9. Метод Ньютона
1.2. Метод перебора
Этот метод является простейшим из прямых методов минимизации.
Пусть
f(x)
– унимодальная
на отрезке [a,
b]
функция.
Разобьем отрезок [a,
b]
на
n
равных
частей точками x0,
x1,
x2,
…, xn,
так,
что xi
= a
+
ih,
i
= 0,
1,
…
,
n,
h
=
.
Вычислим
значения функции f(x)
в
точках xi
и
сравнив их, найдем точку xm,
для
которой f(xm)
=
f(xi).
За приближение x* примем xm.
Оценим погрешность метода перебора.
В силу выбора точки xm справедливы неравенства
f(xm–1) f(xm), т.е. x* [xm–1, b];
f(xm) f(xm+1), т.е. x* [a, xm+1].
Следовательно,
x*
[xm–1,
b]
[a,
xm+1]
= [xm–1,
xm+1].
Длина
отрезка [xm–1,
xm+1]
равна
,
и
точка xm
является
его серединой. Поэтому
xm
– x*
= n.
Итак, чтобы обеспечить требуемую точность определения минимума функции f(x) методом перебора, нужно число отрезков разбиения n выбрать из условия , т.е.
n
.
(1.4)
Пример 1.1.
Найдем минимум функции f(x) = x4 + e –x, x [0, 1] с точностью до = 0.1.
Число отрезков разбиения найдем из условия (1.4):
n
= 10.
Определим величину шага h:
h
=
=
= 0.1.
Вычислим значения функции f(x) в точках xi = a + ih = 0.1 i, i = 0, 1, … , 10. Эти значения представлены в таблице 1.1.
Таблица 1.1
xi |
0.0 |
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
0.6 |
0.7 |
0.8 |
0.9 |
1.0 |
f(xi) |
1.00 |
0.90 |
0.82 |
0.75 |
0.70 |
0.67 |
0.68 |
0.74 |
0.86 |
1.06 |
1.37 |
Из таблицы 1.1 видно, что минимальное из вычисленных значений есть f(0.5) = 0.67. Таким образом, x* 0.5 и f(x*) 0.67.
1.3. Метод поразрядного поиска
Этот метод представляет собой усовершенствование метода перебора. Поиск точки минимума функции осуществляется с переменным шагом. Вначале шаг полагается достаточно большим и грубо находится отрезок, содержащий точку минимума. Затем с более высокой точностью на этом отрезке находится искомая точка минимума.
Изложенная идея реализуется в методе поразрядного поиска следующим образом. Перебор точек отрезка происходит сначала с шагом = xi+1– xi > до тех пор, пока функция не начнет увеличиваться, т. е. не выполнится условие f(xi+1) f(xi) или пока очередная точка не совпадет с правым концом отрезка [a, b], на котором ищется минимум функции f(x). После этого шаг уменьшается (обычно в четыре раза) и перебор точек производится в обратном направлении, справа налево, пока значения функции f(x) снова не станут увеличиваться или очередная точка не совпадет с левым концом отрезка и т. д. Процесс завершается, когда перебор в данном направлении закончен, и величина шага не превосходит заданной точности .
Алгоритм 1.1 (Алгоритм метода поразрядного поиска).
Шаг 1. Ввести исходные данные: a, b, .
Шаг
2. Выбрать
начальный шаг
=
.
Положить
x0
= a.
Вычислить
f(x0).
Шаг 3. Положить x1 = x0 + . Вычислить f(x1).
Шаг 4. Сравнить f(x0) и f(x1). Если f(x0) > f(x1), то перейти к шагу 5, иначе – к шагу 6.
Шаг 5. Положить x0 = x1 и f(x0) = f(x1). Проверить условие x0 (a, b), т. е. a < x0 < b. Если условие выполнено, перейти к шагу 3, иначе – к шагу 6.
Шаг 6. Проверка на окончание поиска. Если , то вычисления завершить, положив x* x0, f(x* ) f(x0), иначе – перейти к шагу 7.
Шаг
7.
Изменение
направления и шага поиска. Положить x0
= x1
и
f(x0)
= f(x1),
= –
. Перейти
к шагу 3.
Пример 1.2.
Методом поразрядного поиска решим задачу, рассмотренную в примере 1.1: f(x) = x4 + e –x min, x [0, 1], = 0.1.
Положим,
что начальный шаг
=
=
0.25.
Вычисляем последовательно f(xi) в точках xi с шагом в направлении слева направо (от 0 к 1). Результаты вычислений представлены в таблице 1.2.
Таблица 1.2
xi |
0.00 |
0.25 |
0.50 |
0.75 |
f(xi) |
1.000 |
0.783 |
0.669 |
0.789 |
Вычисления в данном направлении прекращаются, потому что f(0.50) < f(0.75), причем > . Продолжаем поиск в противоположном направлении, справа налево (от 0.75 к 0). Величину шага уменьшаем в 4 раза, положив = –0.0625. Результаты вычислений представлены в таблице 1.3.
Таблица 1.3
xi |
0.7500 |
0.6875 |
0.6250 |
0.5625 |
0.5000 |
0.4375 |
f(xi) |
0.789 |
0.726 |
0.688 |
0.670 |
0.669 |
0.682 |
Так как f(0.5000) < f(0.4375) и = 0.0625 < , вычисления прекращаются. Таким образом, x* 0.5 и f(x*) 0.669.
