9°. Положить
= х2 и закончить процесс.
10°. Сравнить f (x1) и f (x2):
а) если
то перейти к п. 11°;
б) если f (x1) > f (х2), то перейти к п. 14°.
11°. Переобозначить
12°. Вычислить![]()
![]()
13°. Вычислить f (x1) и перейти к п. 6°.
14°. Переобозначить ,
![]()
15°. Вычислить
![]()
16°. Вычислить f(x2) и перейти к п. 6°.
14. Хотя сформулированное описание оптимального плана поисков минимума функции f абсолютно четкое, не оставляющее места какому-либо произволу, и в применении к каждой конкретной функции f, отрезку от х' до х" и числу п предписывает совершенно точную последовательность действий, оно является довольно запутанным и трудно обозримым.
Приведем поэтому для наглядности еще одно описание этого же плана в виде блок-схемы (рис. 9).

Рис. 9
15. Приведем в заключение пример использовании описанного в пп. 13 и 14 плана для нахождения с помощью пяти вычислений на отрезке от 1 до 2 точки
, минимизирующей функцию
![]()
Предварительно сделаем замечание.
Нахождение точки, минимизирующей (или максимизирующей) функцию, которая задана аналитически, обычно удобнее проводить не методами теории поиска, а другими, более приспособленными для этого приемами, которые относятся к дифференциальному исчислению. Поэтому следует иметь в виду, что приводимый далее пример носит чисто иллюстративный характер. Диференциальное исчисление позволяет без труда показать, что в этом случае
Нам же удастся найти значительно более грубое приближение. Однако в тех случаях, когда заранее о функции нам неизвестно ничего (кроме того, что она не может переходить от возрастания к убыванию) или же выражения, которыми она задается, чересчур сложны, методика дифференциальною исчисления неприменима, и теория поиска оказывается полезным инструментом.
1°. Сравнение п=5 и 1 дает нам, что п≠1, поэтому переходим к п. 4°.
4°. Вычисляем:

5°. Вычисляем:

6°. Сравнение п = 5 и 2 дает, что п≠ 2; поэтому Переходим к п. 10°.
10°. Сравнение
![]()
дает нам f(х1)> f (х2); поэтому переходим к п. 14°.
14°. Переобозначаем:

15°. Вычисляем:

16°. Вычисляем:

и переходим к п. 6°.
6°. Сравниваем п = 4 и 2; поскольку п≠2, переходим к п. 10°.
10°. Сравниваем
поскольку
переходим к п. 11°.
11°. Переобозначаем:
![]()
12°. Вычисляем:

13°. Вычисляем:
![]()
и переходим к п. 6°.
6°. Сравниваем п = 3 и 2; поскольку п≠2, переходим к п. 10°.
10°. Сравниваем
![]()
поскольку f (x1) > f (x2), переходим к п. 14°.
14°. Переобозначаем:

15°. Вычисляем:

16°. Вычисляем

и переходим к п. 6°.
6°. Сравнение g и 2 дает нам, что п = 2; переходим к п. 7°.
7°. Сравниваем
![]()
f (x1) ≤ f (x2); поэтому переходим к п. 8.
8°. Полагаем
=1,61538.
На основании теоремы п. 11 найденное нами может отличаться от истинного положения минимизирующей точки не более чем на
![]()
Фактически эта ошибка оказывается меньшей; она равна 0,028. Заметим, что принимаемое нами за наименьшее значение функции f, т. е. f(x), равно 1,89003 и отличается от истинного наименьшего значения f, равного
![]()
лишь, на 0,00015. Это показывает, что значения х можно было в ходе наших вычислений определять с меньшей точностью, чем значения f.
Сам по себе такой вывод не содержит ничего удивительного. В самом деле, значения х мы должны находить с той предельной точностью, с какой мы можем в наших условиях найти минимизирующую точку
(мы знаем, что эта точность равна
![]()
Значения же функции f должны вычисляться с точностью, обеспечивающей сравнение пар значений этой функции и выделение из каждой такой пары наименьшего и наибольшего значения. Поэтому если в действительности какие-нибудь f(а) и f(b) сильно отличаются друг от друга и это отличие заметно уже при грубом определении f(а) и f(b), то мы можем вычислять эти значения с малой точностью. Наоборот, если эти f(а) и f(b) в действительности близки, то для выяснения того, какое из них больше другого, приходится вести вычисление с большой точностью. Так как мы наперед (до фактического выполнения вычислений) не знаем, насколько отличаются друг ог друга сравниваемые значения функции, мы можем «промахнуться» и вычислить их с недостаточной точностью, которая не даст возможности решить, какое из этих значений больше. В этом случае придется произвести повторные, более точные вычисления, затратив на это дополнительные усилия.
А теперь рассмотрим метод Фибоначчи как метод однопараметрической оптимизации.
Предположим, что нужно определить минимум как можно точнее, т. е. с наименьшим возможным интервалом неопределенности, но при этом можно выполнить только n вычислений функции. Как следует выбрать n точек, в которых вычисляется функция? С первого взгляда кажется ясным, что не следует искать решение для всех точек, получаемых в результате эксперимента. Напротив, надо попытаться сделать так, чтобы значения функции, полученные в предыдущих экспериментах, определяли положение последующих точек. Действительно, зная значения функции, мы тем самым имеем информацию о самой функции и положении ее минимума и используем эту информацию в дальнейшем поиске.
Предположим, что имеется интервал неопределенности (x1,x3) и известно значение функции f(x2) внутри этого интервала (см. рис. 10). Если можно вычислить функцию всего один раз в точке х4, то где следует поместить точку х4, для того чтобы получить наименьший возможный интервал неопределенности?

Рис. 10.
Положим х2–х1=L и х3–х2=R, причем L > R, как показано на рис. 10, и эти значения будут фиксированы, если известны x1, x2 и х3. Если х4 находится в интервале (х1; х2), то:
если f(x4) < f(x2), то новым интервалом неопределенности будет (x1,x2) длиной х2–х1=L; если f(х4)>f(x2), то новым интервалом неопределенности будет (х4,х3) длиной х3–х4.Поскольку не известно, какая из этих ситуаций будет иметь место, выберем х4 таким образом, чтобы минимизировать наибольшую из длин х3-х4 и х2-х1. Достигнуть этого можно, сделав длины х3 – х4 и х2 – х1 равными т. е. поместив х4 внутри интервала симметрично относительно точки х2, уже лежащей внутри интервала. Любое другое положение точки х4 может привести к тому, что полученный интервал будет больше L. Помещая х4 симметрично относительно х2, мы ничем не рискуем в любом случае. Если окажется, что можно выполнить еще одно вычисление функции, то следует применить описанную процедуру к интервалу (х1, х2), в котором уже есть значение функции, вычисленное в точке х4, или к интервалу (х4,х3), в котором уже есть значение функции, вычисленное в точке х2.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |


