Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОДЫ ОПТИМИЗАЦИИ.doc
Скачиваний:
67
Добавлен:
01.05.2014
Размер:
2 Мб
Скачать

Приложение 5. Метод кубической интерполяции для одномерной минимизации

Суть алгоритма заключается в том, что на каждой итерации функция f(x) аппроксимируется кубическим полиномом F(x), точка минимума x(*) которого берётся в качестве текущего приближения к искомому минимуму х*. Алгоритм предполагает вычисления в каждой очередной точке значений функции f(x) и её производной f '(x).

Начальный этап. Задать , х1, h1 - параметры метода, имеющие общепринятый смысл. Методом Свенна установить начальный интервал [a, b]:

(1) Изменить направление поиска h1 = -h1, если f '(x1) > 0.

(2) Вычислять fk в точках xk+1 = xk + hk при hk = 2hk-1, k=2,3,...m-1 до тех пор, пока не продвинемся в точку xm , такую, что f '(xm)f '(xm-1) < 0.

(3) Если x m-1< xm , то положить a = xm-1, b = xm, иначе - a = xm, b = xm-1.

Основной этап ..

Шаг 1. Найти аппроксимирующий минимум:

(1) Вычислить параметр  = (z + w - f '(a))/(f '(b) - f '(a) + 2w),

где z = f '(a) + f '(b) + 3(f(a) - f(b)) / ( b - a), w = (z2 - f '(a)f '(b))1/2 .

a + (b - a), если 0≤  < 1,

(2) Принять аппроксимирующий минимум

x(*)  = a, если  < 0, и

x(*)  = b, если  > 1.

Шаг 2. Проверить критерий окончания поиска:

Если f '(x) <  или x = a, или x = b, поиск окончить. Иначе вернуться на шаг 1, используя новый интервал [a, x], если f '(x) > 0, либо интервал [x, b], если f '(x) < 0.

Приложение 6. Метод Фибоначчи

Метод Фибоначчи является процедурой линейного поиска минимума унимодальной функции f(x) на замкнутом интервале [a, b], отличающейся от процедуры золотого сечения тем, что очередная пробная точка делит интервал локализации в отношении двух последовательных чисел Фибоначчи. Последовательность чисел Фибоначчи задаётся условиями F0 = F1 = 1, Fk+1 = Fk + Fk-1, k = 1,2,... Начальными членами последовательности будут 1, 1, 2, 3, 5, 8, 13,... Стратегия поиска Фибоначчи требует заранее указать n - число вычислений минимизируемой функции и  - константу различимости двух значений f(x). Рассмотрим один из возможных вариантов метода.

Начальный этап

(1) Задать начальный интервал [a1, b1], длину конечного интервала Ln и определить число n так, чтобы выполнялось условие Fn > (b1 - a1)/Ln. Вычислить  ≤ L1/Fn+1.

(2) Взять две пробные точки 1 = a1 + (Fn-2/Fn)(b1 - a1) и 1 = a1 + (Fn-1/Fn)(b1-a1). Положить k = 1.

Основной этап

Шаг 1. Сократить текущий интервал локализации:

(1) Если f(k) < f(k), то положить ak+1 = ak, bk+1 = k,k+1 =k и вычислить новую точку k+1 = ak+1 + (Fn-k-2/Fn-k)Lk+1, где Lk+1 = bk+1 - ak+1; перейти на шаг 2.

(2) Если f(k)≥ f(k),то положить ak+1 =k, bk+1 = bk, k+1 = k и вычислить k+1 = ak+1 + (Fn-k-1/Fn-k) Lk+1.

Шаг 2. Проверить критерий окончания поиска:

(1) Заменить k на k+1. (2) Если k = n - 1, перейти на шаг 3, иначе - на шаг 1.

Шаг 3. Найти аппроксимирующий минимум х(*):

(1) Положить k = k + .

(2) Если f(k) > f(k), то x(*) = (k + bk)/2. В противном случае - x(*) = (ak + k)/2.

Приложение 7. Метод Зангвилла

Основная стратегия метода базируется на свойстве квадратичных функций, называется свойством параллельного подпространства. Если xk+1 - точка минимума квадратичной функции, полученная в результате серии одномерных поисков из начальной точки x1 по всем направлениям системы k = {pi}, i = 1,2,...,k, а zk+1 - точка минимума этой же функции вдоль тех же направлений k, но из другой начальной точки z1, то вектор pk+1 = zk+1 - xk+1 сопряжен со всеми направлениями системы k.

Начальный этап. Задать начальную точку x1, константу . Положить p1 = - grad y(x1), k = 1.

Основной этап. Шаг 1. Оптимальный поиск точки xk+1 = xk + kpk. Если k = n, то перейти к шагу 4.

Шаг 2 Перейти в другую начальную точку z1 = xk+1 + *d, где d = -grad y(xk+1) - новое поисковое направление, * - оптимальное решение задачи минимизации y(xk+1 + d). Положить i = 1.

Шаг 3. Проверить критерий окончания поиска и, если он не выполняется, выполнить спуск вдоль направлений k в точку zk+1:

(1) Если grad y (zi) ≤ , то остановиться: x* = zi - искомый минимум.

(2)Найти оптимальный шаг i в точку zi+1 = zi + pi.

(3)Если i < n, то заменить i на i+1 и вернуться к операции (2); иначе - построить новое сопряженное направление pk+1 = zk+1 - xk+1, заменить k на k+1 и перейти к шагу 1.

Шаг 4. Установить новые начальные условия для очередной итерации:

(1) взять xn+1 за новую начальную точку x1 = xn+1, принять p1 = - grad y(x1);

(2) заменить k на k+1 и перейти к шагу 1.