
- •Введение в теорию принятия решений
- •Классы и методы решения задач теории принятия решений
- •Основные понятия и этапы моделирования
- •Функции многих переменных. Понятие о квадратичной форме. Свойства квадратичных форм
- •Приведение квадратичной формы к диагональному виду с помощью выделения полного квадрата
- •Положительная (отрицательная) определенность квадратичных форм. Критерий сильвестра
- •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).