Смекни!
smekni.com

«Методы оптимизации» (стр. 1 из 4)

МетодЫ решения оптимизационной задачи.. 2

Методы одномерной минимизации. 2

Метод Свенна. 2

Метод золотого сечения. 2

Метод Фибоначчи. 4

Метод линейной интерполяции (метод секущих) 5

Метод средней точки (метод Больцано) 6

Метод квадратичной интерполяции – экстраполяции. 6

Метод Пауэлла. 7

Метод Давидона. 8

Методы многомерной минимизации. 9

Метод Коши. 9

Метод Циклического покоординатного спуска. 9

Метод параллельных касательных. 10

Метод Гаусса-Зейделя. 11

Метод комплексов Бокса. 11

Метод Хука-Дживса (конфигураций) 13

Метод Хука-Дживса с одномерной минимизацией. 15

Метод Ньютона. 16

Метод Зангвилла. 16

Метод Флетчера-Ривса. 17

Метод Пауэлла. 18


МетодЫ решения оптимизационной задачи

Курсовая работа включает в себя подавляющее большинство методов оптимизации, прочитанных в курсах «Методы оптимизации» и «Теория принятия решений». Каждый метод представлен в виде отдельной функции-члена класса. Все однотипные методы (в плане необходимых сведений для поиска) имеют одинаковое число аргументов. В большинстве своём - это начальная точка, погрешность максимальное количество шагов.

В этом разделе представлены краткие описание методов оптимизации и применяемых математических формул. Сначала идут описания одномерных методов поиска, а затем многомерных.

Методы одномерной минимизации

Метод Свенна

Метод Свенна организует начальную локализацию минимума унимодальной функции, т.е. простой одномерный поиск с удвоением шага, критерием окончания которого является появление признака возрастания функции.

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

(1) задать произвольную начальную точку x0ÎRn

(2) выбрать начальный шаг h=Dx=0,01

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

Шаг 1. Установить направление убывания функции. Для этого взять x2=x1+h. Если f(x1) <f(x2), то поменять направление движения: h1=-h1 и взять x2=x1+h1.

Шаг 2. Вычислить fk в точках xk+1=xk+hk, где k=2,3,4,…,m-1; hk=2hk-1 – движение с удвоением шага, до тех пор, пока не придём в точку xm такую, что f(xm)<f(xm-1).

Шаг 3. Установить начальный интервал локализации минимума

a1=xm-2

b1=xm

Метод золотого сечения

Метод золотого сечения – это процедура одномерного поиска минимума на интервале [a1,b1] или [0,1]. На каждом шаге пробная точка lk или mk внутри текущего интервала локализации [ak,bk] делит его в отношении, постоянном для всех интервалов

- золотое сечение. Можно показать, что
, откуда
, следовательно
, значит
. Одним из корней этого уравнения является t1=0,618 – первое золотое число. Отметим, что t12=0,6182=0,382 – второе золотое число. Следует отметить, что в методе золотого сечения имеет место правило симметрии (эквидистантности) точек относительно концов интервала, а также правило одного вычисления, т.е. на каждой итерации требуется одно и только одно новое вычисление (кроме первой итерации), т.к. точки на соседних итерациях совпадают.

Алгоритм ЗС-1

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

(1) Выбрать погрешность расчёта e=10-3¸10-7. Получить начальный интервал методом Свенна.

(2) Вычислить стартовые точки l1=a1+0,382L1, m1=a1+0,618L1 (следует отметить, что золотые числа следует вычислять точно)

(3) Принять k=1 – счётчик числа итераций

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

Шаг 1.Сократить ТИЛ рассмотрением 2-х ситуаций:

(1) Если f(l)<f(m),то

ak+1=ak

bk+1=mk

mk+1=lk

lk=ak+1+0,382Lk+1

иначе

ak+1=lk

bk+1=bk

lk+1=mk

mk=ak+1+0,618Lk+1

(2) Положить k=k+1, Lk+1=|bk+1-ak+1|

Шаг 2. Проверить критерий окончания поиска: если |ak+1-bk+1|£e - остановиться – минимум найден. Точнее фиксируем аппроксимирующий минимум как

. Иначе вернуться на шаг 1.

Алгоритм ЗС-2

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

(4) Выбрать погрешность расчёта e=10-3¸10-7. Получить начальный интервал методом Свенна.

(5) Вычислить стартовые точки l1=a1+0,382L1, m1=a1+0,618L1 (следует отметить, что золотые числа следует вычислять точно)

(6) Принять k=1 – счётчик числа итераций

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

Шаг 1. Взять очередную пробную точку x2=ak+bk-x1, симметричную исходной и сократить ТИЛ рассмотрением 4-х возможных ситуаций:

(1) Если (x1<x2) и (f(x1)<f(x2)) то b=x2;

(2) Если (x1<x2) и (f(x1)>=f(x2)) то a=x1;

(3) Если (x1>x2) и (f(x1)<f(x2)) a=x2;

(4) Если (x1>x2) и (f(x1)>=f(x2)) b=x1;

Увеличить счётчик числа итераций k=k+1

Шаг 2. Проверить критерий окончания поиска: если |ak+1-bk+1|£e - остановиться – минимум найден. Точнее фиксируем аппроксимирующий минимум как

. Иначе вернуться на шаг 1.

Метод Фибоначчи

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

Алгоритм Фибоначчи-1

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

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

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

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

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

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

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

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

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

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

(1) Положить mk = lk + e.

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

Алгоритм Фибоначчи-2

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

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

(2) Выбрать одну пробную точку

. Положить

k = 1.

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

Шаг 1. Проверить критерий окончания поиска: если k=n, то остановиться и положить x*=x2.

Шаг 2. Сократить текущий интервал локализации рассмотрением 4-х ситуаций, аналогично методу золотого сечения-2.

Метод линейной интерполяции (метод секущих)

Метод секущих предлагает заменить вторую производную f ''(xk) в ньютоновской формуле её линейной аппроксимацией (f '(xk)-f '(xk-1))/(xk-xk-1).

Тем самым очередное приближение хk+1 к стационарной точке х* задаётся формулой вида

xk+1 = xk - f '(xk) * (xk - xk-1) / ( f '(xk) - f '(xk-1)).

Легко видеть, что хk+1 - точка пересечения с осью абсцисс секущей прямой, проходящей через точки хk и хk-1.

В отличие от метода Ньютона метод секущих гарантирует сходимость точек {xk} к стационарной точке х*, однако, сходимость метода достигается ценой потери быстродейсвия. Как правило, метод дихотомии оказывается эффективнее метода секущих, хотя последний и получен из более быстродействующей схемы.

Начальный этап. Пусть методом Свенна получен интервал неопределённости [a1,b1], границы которого удовлетворяют неравенству f'(a1)f '(b1) < 0. Задать e - погрешность вычисления минимума и принять k=1.