- •Введение в теорию принятия решений
- •Классы и методы решения задач теории принятия решений
- •Основные понятия и этапы моделирования
- •Функции многих переменных. Понятие о квадратичной форме. Свойства квадратичных форм
- •Приведение квадратичной формы к диагональному виду с помощью выделения полного квадрата
- •Положительная (отрицательная) определенность квадратичных форм. Критерий сильвестра
- •8. Необходимое и достаточное условие положительной(отрицательной) определенности
- •3.2. Частные производные 2-го и высших порядков.
- •10. Необходимые и достаточные условия минимума (максимума) функции многих переменных. Классический метод
- •3.5. Достаточные условия существования экстремума.
- •11.Теоремы о квадратичных формах. Закон инерции квадратичных форм
- •12. Методы минимизации функций одной переменной
- •4.1. Постановка задачи.
- •4.2. Метод золотого сечения.
- •13. Удвоение
- •14. Метод наискорейшего спуска. Вычисление длины шага и методы наискорейшего спуска
- •1 Методы безусловной минимизации. Градиентные методы (метод наискорейшего спуска).
- •15. Методы условной минимизации. Метод проекции градиента.
- •16. Основные понятия проблемы
- •17. Система линейных однородных уравнений для вычисления собственных векторов
- •6.2. Основные определения.
- •Характеристическое уравнение
- •Теоремы гергошина
- •Приведение матрицы к диагональному виду с помощью матрицу с собственными векторами
- •7.2. Принцип оптимальности и уравнения Беллмана.
- •7.3. Уравнения р. Беллмана.
- •Глава 8. Задача о замене оборудования
- •8.1. Постановка задачи.
- •8.2. Построение модели динамического программирования для задачи о замене
- •8.3. Числовой пример
- •9.1. Метод последовательных уступок.
- •9.2. Метод идеальной точки.
4.2. Метод золотого сечения.
Определение 1: Функцию f(x) назовем унимодальной на отрезке [a, b], если она непрерывна на отрезке [a, b] и существуют такие числа , (a ≤ ≤ ≤ b) такие, что
1) f(x) строго монотонно убывает при a ≤ x ≤ (если a < );
2) f(x) строго монотонно возрастает при ≤ x ≤ b (если < b);
3) f(x) = при ≤ x ≤ , так что X* = [, ]
Случаи, когда один или два из отрезков [a, ], [, ], [, b] вырождаются в точку, здесь не исключаются.
В частности, если =, то функцию f(x) называют строго унимодальной на отрезке [a, b].
Перейдём к описанию метода минимизации унимодальной функции на отрезке, основанном на отношении золотого сечения.
Как известно, золотым сечением отрезка называется деление отрезка на две неравные части так, что отношение длины всего отрезка к длине большей части равнялось отношению длины большей части к длине меньшей части отрезка. Если взять за единицу длину всего отрезка, а за t обозначить длину большего отрезка, тогда (1-t) – будет длиной малого отрезка. Тогда это отношение (золотое сечение) находится из следующего уравнения
,
Таким образом, t2 + t - 1 = 0, откуда t1 = (-1 + 5)/2 = 0,618033989. Отрицательный корень t2 = (-1 - 5)/2 этого уравнения не подходит в качестве золотого сечения.
Легко проверить, что золотое сечение отрезка [a, b] производится двумя точками x1 = a+(3-5)*(b-a)/2 = a+(b-a)*0,381966011 и x2 = a+(-1+5)*(b-a)/2 = a+(b-a)*0,61803989, расположенными симметрично относительно середины отрезка, причём a<x1<x2<b.
В результате анализа двух рассмотренных значений функции будет определен тот интервал, который должен исследоваться в дальнейшем. Этот интервал будет содержать одну из предыдущих точек и следующую точку, помещаемую симметрично ей. Первая точка находится на расстоянии (b-a)0,381966011 от одного конца интервала, вторая — на таком же расстоянии от другого. Далее х1 и х2 будем обозначать через u1 и u2, соответственно.
Замечательно здесь то, что точка u1 в свою очередь производит золотое сечение отрезка [а, u2], так как u2 - u1 < u1 - а = b - u2 и (u2 - а)/(u1 - a) = (u1 - а)/(u2 – u1). Аналогично точка u2 производит золотое сечение отрезка [u1, b]. Опираясь на это свойство золотого сечения, можно предложить следующий метод минимизации унимодальной функции f(u) на отрезке [a, b].
Положим a1 = a, b1 = b. На отрезке [а1, b1] возьмем точки u1, u2, производящие золотое сечение, и вычислим значения f(u1), f(u2). Далее, если f(u1)≤f(u2), то примем a2= u1, b2 = u2, = u1; если же f(u1)>f(u2), то примем а2=u1, b2 = b1, = u2. Поскольку функция f(u) унимодальна на [а, b], то отрезок [а2, b2] имеет хотя бы одну общую точку с множеством U* точек минимума f(u) на [a, b]. Кроме того, b2-а2 = (5- 1) (b-а)/2 и весьма важно то, что внутри [a2, b2] содержится точка с вычисленным значением f( ) = min{f(u1); f(u2)}, которая производит золотое сечение отрезка [a2, b2].
Пусть уже определены точки u1, ..., un-1, вычислены значения f(u1), ..., f(un-1), и найден отрезок [аn-1, bn-1] такой, что
[аn-1, bn-1]U* ≠, bn-1-an-1=((5-l)/2)n-2*(b-a), и известна точка , производящая золотое сечение отрезка [аn-1, bn-1] и такая, что f( ) = (n2). Тогда в качестве следующей точки возьмем точку un = аn + bn-1 - , также производящую золотое сечение отрезка [an-1, bn-1], вычислим значение f(un).
Пусть для определенности an-1 <un< < bn-1 (случай < un рассматривается аналогично). Если f(un)f( ), то полагаем an = an-1, bn = , = un, если же f(un) >f( ), то полагаем an = un, bn = bn-1, = . Новый отрезок [an, bn] таков, что [an, bn]U* ≠ , bn-an = ((5 -1)/2)n-1*(b-а), точка производит золотое сечение [an, bn]„| и f( ) = min{f(un); f( )}= .
Если число вычислений значений f(x) заранее не ограничено, то описанный процесс можно продолжать, например, до тех пор, пока не выполнится неравенство bn-аn<, гдо — заданная точность. Если же число вычислений значений функции f(x) заранее жестко задано и равно n, то процесс на этом заканчивается и в качестве решения задачи второго типа можно принять пару (f( ), ), где f( ) является приближением для f* = , а точка служит приближенном для множества U* с некоторой погрешностью.
Алгоритм поиска точки минимума по методу золотого сечения.
Шаг 1. Полагаем k=0, ak = a0 = 0, bk = b0 = 10, = 0,1.
Шаг 2. Полагаем k = bk – ak.
Шаг 3. Если k <, то перейти в шагу 6, иначе перейти к следующему шагу 4.
Шаг 4. Положим
u1 = ak + (bk - ak)0,381966011,
u2 = ak + (bk - ak)0,61803989.
Вычислим f(u1) и f(u2).
Шаг 5. Если f(u1)<f(u2), то полагаем
ak+1 = ak, bk+1 = u2, а также полагаем k:=k+1 и перейдем к шагу 2,
в противном случае (иначе) полагаем
ak+1 = u1, bk+1 = bk,
а также полагаем k:=k+1 и переходим к шагу 2.
Примечание 1. Отметим, что k = bk – ak.= (0,61803989)k0.
Шаг 6. Положим f(x*) = min{f(u1), f(u2)} и x* = arg min{f(u1), f(u2)}.
Примечание 2. Можно показать, что в случае если f(u1)<f(u2) величина u2 на следующем (k+1)-ом шаге совпадет с u1 на данном k-ом шаге, а в противном случае наоборот величина u1 на следующем (k+1)-ом шаге совпадет с u2 на данном k-ом шаге. Это означает, что на каждой итерации метода золотого сечения нам достаточно вычислять одно, а не два значения f(u).