Исследование операций безусловная оптимизация. Курс лекций
.pdf
a1 + a2 x − a2 x2 + a2 x − a2 x1 = 0; a1 + 2a2 x = a2 (x1 + x 2 );
2a2 x = a2 (x1 + x2 ) − a1; x = a2 (x1 + x2 ) − a1 ;
|
2a2 |
|
2a2 |
|
x = |
x1 + x2 |
− |
a1 |
. |
|
|
|||
2 |
|
2a2 |
||
Поскольку функция f(x) на рассматриваемом интервале обладает свойством унимодальности, а аппроксимирующий квадратичный по- лином также является унимодальной функцией, то можно ожидать, что величина х окажется приемлемой оценкой координаты точки ис- тинного оптимума х*. Критерием окончания поиска являются сле- дующие условия:
│f(xk + 1) – f(xk)│ ≤ ε1 и (или) │xk + 1 – xk│ ≤ ε2.
Пауэлл разработал алгоритм поиска оптимума функции, основан- ный на использовании квадратичной аппроксимации, получивший название метода Пауэлла.
Пусть х1 – начальная точка, х – выбранная величина шага по оси х. Алгоритм при поиске минимума функции выглядит следующим образом:
1) |
вычисление х2 = х1 + х; |
2) |
вычисление f(x1), f(x2); |
3) |
если f(x1) > f(x2) , то х3 = х1 +2 х; если f(x1) ≤ f(x2) , то х3 = х1 – х; |
4)вычисление f(x3) и нахождение Fmin = min {f1, f2, f3} , тогда Xmin будет точкой, которая соответствует Fmin;
5)вычисление х по трем точкам х1, х2, х3 с использованием форму- лы для оценивания с помощью квадратичной аппроксимации;
6)проверка условия окончания поиска. Если условие выполняет- ся, то закончить поиск, в противном случае перейти к пункту 7;
7)выбор наилучшей точки (Xmin или х) и двух точек по обе сторо- ны от нее. Расстановка этих точек в естественном порядке и переход
кпункту 4.
Заметим, что при первой реализации пункта 5 полученная точка х может находиться за точкой х3. В этом случае необходимо заменить х точкой, координата которой вычисляется с учетом длины шага. К полиномиальной аппроксимации относится также метод кубической аппроксимации, но для его реализации требуется производная иссле- дуемой функции, поэтому данный метод будет рассмотрен в разд. 2.
21
Рассмотрим пример решения задачи оптимизации методом Пауэлла. Пример 1.2. Найти точку минимума функции
F(x) = (10x3 + 3x2 + x + 5)2.
Заданы: начальная точка х1 = 2, длина шага х = 0,5 и ε = 1,1. Решение. Найдем значение функции в начальной точке: F(х1) = 9801.
х2 = х1 + х = 2,5 и F(х2) = 33306,25. Так как значение функции в сле- дующей точке больше, чем в начальной, то «шагнем» от начальной точ- ки в противоположную сторону: х2 = х1 – х = 1,5 и F(х2) = 2209. Это направление правильное, так как функция уменьшилась. Найдем третью точку: х3 = х2 ± х = 1,5 – 0,5 = 1 и F(х3) = 361. Fmin = 361; xmin = х3.
х4 = х3 – х = 1,0 –0,5 = 0,5 и F(х4) = 56,25. х5 = х4 – х = 0,5 –0,5 = |
0 и |
F(х5) = 25. х6 = х5 – х = 0 – 0,5 = –0,5 и F(х6) = 16. х7 = х6 – х = –0,5 – |
|
– 0,5 = –1 и F(х7) = 9. х8 = х7 – х = –1 – 0,5 = – 1,5 и F(х8) = 552. |
По |
последним трем точкам: х8 = х3 = – 1,5; х7 = х2 = – 1 и х6 = х1 = – 0,5 найдем аппроксимирующую точку x .
a |
= |
|
9 − 16 |
= 14; |
|
|
|
|
|
|
||||
|
|
|
|
|
||||||||||
1 |
|
|
−1 |
+ 0,5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
a |
= |
|
|
1 |
|
|
552 − 16 |
− |
9 − 16 |
= −2(−536 − 18) |
= 1108; |
|||
|
|
|
|
|
|
|
|
|||||||
2 |
|
|
−1,5 + 1 |
|
|
|
|
|
|
|||||
|
|
|
|
−1,5 + 0,5 |
−1+ 0,5 |
|
|
|||||||
|
|
= |
−1 |
− 0,5 |
− |
14 |
= −0,75 − 0,006 = −0,756. |
|
||||||
x |
|
|||||||||||||
|
|
|
|
|
||||||||||
1 |
|
|
|
2 |
|
|
2 1108 |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||||
Далее вычисляем F( x ) = 2,68.
Выбираем x1 как лучшую точку, а х6 и х7 как точки, которые ее
окружают. Расставляем эти точки в естественном порядке и перехо- дим к следующей итерации:
х6 = х1 = – 0,5; x1 = х2 = – 0,76х7 = х2 = – 1;
a = |
|
2,68 − 16 |
|
= 53,28; |
|
|
||
|
|
|
|
|
|
|||
1 |
−0,75 + 0,5 |
|
|
|
|
|
||
|
|
|
|
|
|
|||
a = |
1 |
|
|
9 − 16 |
− 53,28 |
|
= −4(14 − 53,28) = 157,12; |
|
|
|
|
|
|
|
|||
2 |
|
|
−1+ 0,5 |
|
||||
|
|
−1+ 0,75 |
|
|
||||
|
= −0,75 − 0,5 |
− |
53,28 |
= −0,625 − 0,17 = −0,795. |
||
x |
||||||
|
||||||
2 |
2 |
|
2 157,12 |
|||
|
|
|
||||
22
Теперь F( x ) = 1,16.
Выбираем x2 как лучшую точку, а x1 и х7 как точки, которые ее
окружают. Расставляем эти точки в естественном порядке и перехо- дим к следующей итерации:
|
|
|
|
|
|
|
= х1 = –0,76; |
|
2 |
= х2 = –0,795х7 = х2 = –1; |
|||||
|
|
|
|
|
x1 |
x |
|||||||||
a = |
|
|
1,16 − 2,68 |
|
= 43,43; |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||||
1 |
|
−0,795 + 0,76 |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|||||||
a = |
1 |
|
|
|
|
9 − 2,68 |
− 43,43 = −4,88(−26,33 − 43,43) = 340,43; |
||||||||
|
|
|
|
|
|
|
|||||||||
2 |
|
|
|
|
|
|
−1+ 0,76 |
|
|||||||
|
|
|
|
−1+ 0,705 |
|
||||||||||
|
= |
−0,795 − 0,76 |
− |
43,43 |
|
= −0,78 − 0,063 = −0,843; |
|||||||||
x |
|
|
|
|
|
|
|
|
|
||||||
|
2 |
|
|
|
|
2 340,86 |
|||||||||
F( x ) = 0,09.
Так как |0,09 – 1,16 | = 1,07 < 1,1, то поиск завершен. Итак: Fmin = 0,09 и xmin = – 0,843.
1.2. Методы с использованием производных
Все ранее рассмотренные методы накладывали требования уни- модальности и непрерывности к исследуемой функции. Далее рас- смотрим методы, которые налагают дополнительные требования к функции, а именно требование дифференцируемости функции. Если вычисление производных функции F(x) затруднено, то можно вос- пользоваться приблизительными оценками производных с помощью разностных схем:
F′(x) = F ; F′′(x) = F′ ,
h |
h |
где |
|
F = F(xk +1) − F(xk ) , |
F′ = F′(xk +1) − F′(xk ) |
и так далее.
Рассмотрим метод второго порядка, разработанный Ньютоном и позднее уточненный Рафсоном.
1.2.1. Метод Ньютона – Рафсона
Для реализации данного метода необходимо, чтобы функция была дважды дифференцируема. Пусть х1 – начальная точка, которая
23
представляет начальное приближение (или начальную оценку) коор- динаты стационарной точки, или корня уравнения f'(x) = 0. Затем строится линейная аппроксимация функции f'(x) в точке х1, и точка, в которой аппроксимирующая линейная функция обращается в нуль, принимается в качестве следующего приближения. Если точка хk принята в качестве текущего приближения к стационарной точке, то линейная функция, аппроксимирующая функцию f'(x) в точке хk, за- писывается в виде
f ′(x, xk ) = f ′(xk ) + f ′′(xk )(x − xk ). |
(1.1) |
Приравняв правую часть уравнения (1.1) к нулю, получим сле- дующее приближение:
x |
= x − |
f ′(xk ) |
. |
|
|||
k +1 |
k |
f ′′(xk ) |
|
|
|
||
Итерации продолжаются до тех пор, пока не будет выполняться неравенство |f'(x)| ≤ ε, где ε – заранее установленная величина допус- тимого отклонения. На рис. 1.3 показана иллюстрация основных ша- гов реализации метода Ньютона – Рафсона.
Рис. 1.3. Метод Ньютона – Рафсона. Приближение к точке оптимума
К сожалению, в зависимости от выбора начальной точки и вида функции алгоритм может как сходиться к истинной стационарной
24
точке, так и дать расхождение. Такой случай рассмотрен в [2] и пока- зан на рис. 1.4.
f’(x)
0 x* |
x0 |
xk+1 |
x |
Рис. 1.4. Удаления от точки оптимума х* в методе Ньютона – Рафсона
Если начальная точка х0 расположена правее стационарной точки х*, то получаемые в результате последовательных приближений точ- ки удаляются от точки х*.
Рассмотрим пример.
Пример 1.3. Найти минимум функции
f (x) = 300 − 10x2 − 4x5 − 3x6 .
Решение. Пусть х1 = –2 и ε = 5·10–4.
Для того чтобы определить стационарную точку функции f(x), возьмем первую и вторую производные:
f ′(x) = 20x − 20x4 − 18x5 ; f ′′(x) = 20 − 80x3 − 90x4 .
Рассмотрим данные, представленные в табл. 1.2.
Таблица 1.2
Данные к примеру 1.3 для точки х1 = –2
Точка |
F(x) |
F′(x) |
–2 |
196 |
216 |
–1,72 |
252,55 |
62,64 |
–1,55 |
270,08 |
14,81 |
–1,48 |
275,1 |
1,93 |
–1,47 |
275,86 |
0,05 |
–1,46 |
275,88 |
0,00004 |
25
Из табл. 1.2 видно, что при х = –1,46 условие │f′(xk)│ < ε выпол- няется, т.е. 0,00004 < 5·10–4, поэтому поиск завершен и х6 = –1,46 – является стационарной точкой.
Теперь возьмем другую точку х1 = 2. Данные поиска из этой точки представлены в табл. 1.3.
Таблица 1.3
Данные к примеру 1.3 для точки х1 = 2
Точка |
F(x) |
F′(x) |
2 |
–60 |
–856 |
1,58 |
187,5 |
–274 |
1,27 |
258,4 |
–85 |
1,04 |
280,5 |
–24 |
0,9 |
287,9 |
–6 |
0,84 |
290,2 |
–0,7 |
0,831 |
290,53 |
–0,02 |
0,83 |
290,54 |
–0,00001 |
Из табл. 1.3 видно, что при х = +0,83 условие │f′(xk)│ < ε также вы- полняется, т.е. 0,00001 < 5·10–4, поэтому поиск завершен и х8 = 0,83 яв- ляется стационарной точкой.
Из рис. 1.5, на котором представлен график зависимости произ- водной функции от аргумента, видно, что максимум функции нахо- дится в нулевой точке, а точки –1,46 и 0,83 являются точками пере- гиба. На рис. 1.6, на котором представлен график зависимости уже самой функции от аргумента, это также хорошо видно.
Рис. 1.5. Три стационарные точки х = –1,46, х = 0 и х = 0,83
26
Рис. 1.6. Точки перегиба х = –1,46 и точка максимума х = 0
1.2.2. Метод средней точки
Метод средней точки (иногда его называют поиском Больцано) является эффективным алгоритмом исключения интервалов. Для ис- пользования данного метода необходимы следующие условия: функ- ция f(x) унимодальна и дифференцируема. Суть алгоритма заключа- ется в следующих нескольких итерациях:
1.Определить две точки L и R таким образом, что f'(L) < 0 и f'(R) > 0. Стационарная точка расположена между L и R, так как f'(x*) = 0.
2.Вычислить значение производной функции в средней точке рас- сматриваемого интервала z = (L + R)/2. Если f'(z) > 0, то интервал (z, R) можно исключить из интервала поиска по условию унимодальности функции. В то же время, если f'(z) < 0, то можно исключить интервал
(L, z).
3. Если |f'(z)| ≤ ε, то можно закончить поиск, в противном случае, ес- ли f'(z) < 0, положить L = z и перейти к шагу 2. Если f' (z) > 0, поло- жить R = z и перейти к шагу 2.
Заметим, что в этом методе исследуется только знак первой про- изводной функции, а не ее значение.
27
1.2.3. Метод секущих
Данный метод основан на комбинации двух вышеизложенных ме- тодов и называется методом секущих или методом хорд.
На первой итерации этого метода так же, как в методе средней точки, находятся две точки, в которых знаки первых производных различны. Далее функция f'(x) аппроксимируется «секущей прямой» (прямой, соединяющей две точки) и находится точка, в которой секу- щая графика зависимости f'(x) от x пересекает ось абсцисс (рис. 1.7). Таким образом, следующее приближение к стационарной точке x* определяется по формуле
z = R − f ′(R)(R − L) . f ′(R) − f ′(L)
Рис. 1.7. Метод секущих
Если |f'(z)| ≤ ε, то поиск закончен. В противном случае необходи- мо выбрать одну из точек L или R таким образом, чтобы знаки про- изводной в этой точке и точке z были различны, а затем повторить основные шаги алгоритма. Этот метод более эффективен, чем метод средней точки, так как в некоторых случаях удается исключить более половины интервала поиска, что невозможно в методе средней точки.
1.2.4.Метод поиска с использованием кубической аппроксимации
Всоответствии с рассматриваемым методом подлежащая мини- мизации функция f(x) аппроксимируется полиномом третьего поряд- ка. Логическая схема метода аналогична логической схеме методов с
28
использованием квадратичной аппроксимации. Однако в данном случае построение аппроксимирующего полинома проводится на основе меньшего числа точек, поскольку в каждой точке можно вы- числять значения как функции, так и ее производной.
Алгоритм поиска:
1. Найти две такие точки x1 и x, чтобы производные f'(x1) и f'(x2) имели различные знаки. Аппроксимирующую кубическую функцию записать в следующем виде:
f(x) = a0 + a1(x – x1) + a2(x – x1)(x – x2) + a3(x – x1)2(x – x2). |
(1.2) |
Параметры уравнения (1.2) подбираются таким образом, чтобы значения f(x) и ее производной в точках x1 и x2 совпадали со значе- ниями f(x) и f'(x) в этих точках.
2. Вычислить первую производную функции f(x):
df (x) |
= a + a |
|
(x − x ) + a |
|
(x − x |
) |
+ a |
(x − x )2 |
+ |
|
2 |
2 |
|||||||
dx |
1 |
1 |
|
2 |
3 |
1 |
|
||
|
+2a3 (x − x1)(x − x2 ). |
|
|
|
|||||
|
|
|
|
(1.3) |
|||||
Коэффициенты a0, a1, a2 и a3 уравнения (1.2) определяются по из- вестным значениям f(x1), f(x2) и f(x3) путем решения следующей сис- темы линейных уравнений:
f1 = f (x1) = a0 ; |
|
f2 (x) = f (x2 ) = a0 + a1(x2 − x1); |
(1.4) |
f1′ = f ′(x1 ) = a1 + a2 (x1 − x2 ); |
(1.5) |
f ′ = f ′(x ) = a |
+ a (x |
− x ) + a (x |
− x )2. |
(1.6) |
|||||
2 |
2 |
1 |
2 |
2 |
1 |
3 |
2 |
1 |
|
Итак, если a0 = f1, то из уравнения (1.4) следует: f2 = f1 + a1(x2 – x1) или f2 – f1 = a1(x2 – x1), тогда
|
|
a |
= |
f 2 − f 1 |
. |
|
|
|
|
|
|
|
|
|
|||
|
|
1 |
|
x2 − x1 |
|
|
||
|
|
|
|
|
|
|||
Из (1.5) следует |
|
|
|
|
|
|
|
|
f ' |
= |
f2 − f 1 |
+ a (x |
1 |
− x ) |
|||
|
||||||||
1 |
x2 |
2 |
|
2 |
||||
|
|
− x1 |
|
|
||||
или
a = f '1(x2 − x1) − ( f2 − f1) . |
||
2 |
(x2 |
− x1)(x1 − x2 ) |
|
||
29
И из уравнения (1.6) следует |
|
|
|
|
|
|
|
|
|
|
||||||||||||
f ' = |
f2 − f1 |
+ |
|
f '1(x2 − x1) − ( f2 − f1) |
(x − x ) + a (x − x )2 |
|||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||
2 |
|
x2 |
− x1 |
|
|
|
(x2 − x1)(x1 − x2 ) |
|
|
2 |
|
1 |
|
3 |
2 |
1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
или |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f ' − |
f2 − f1 |
− |
f '1(x2 − x1) − ( f2 − f1) |
= a (x − x )2 |
, |
||||||||||||||||
|
|
|
|
|
||||||||||||||||||
|
2 |
|
|
x2 − x1 |
|
|
x1 − x2 |
|
|
|
|
3 |
2 |
|
1 |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
тогда |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a = |
f '2 (x2 − x1) − ( f2 − f1) |
− |
f '1(x2 − x1) − ( f1 − f2 ) |
. |
||||||||||||||||||
|
3 |
|
|
|
|
(x − x )3 |
(x − x |
)(x − x )2 |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
2 |
1 |
|
|
1 |
2 |
|
2 |
1 |
|
|
|
|||
3. Оценить координату стационарной точки функции с помощью аппроксимирующего полинома (1.2). Приравнять к нулю производ- ную (1.3) и получить квадратное уравнение
d |
|
|
|
= |
f2 − f1 |
+ |
f '1(x2 − x1) − ( f2 − f1) |
(x |
|
|
|
|
|
|
|
|
|||||||||||||||||||||
f |
− x ) + |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
dx x2 − x1 |
|
(x2 − x1)(x1 − x2 ) |
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
+ |
f '1(x2 − x1) − ( f2 − f1) |
(x |
− x |
|
) + |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
(x2 − x1)(x1 − x2 ) |
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
f '2 (x2 − x1) − ( f2 |
− f1) |
|
|
f ' (x − x ) |
− ( f − f |
2 |
) |
|
(x − x )2 + |
|
||||||||||||||||||||||||||
+ |
|
|
|
|
|
|
|
|
|
− |
|
|
1 |
|
|
2 |
|
|
1 |
|
|
1 |
|
|
(1.7) |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
(x − x )3 |
|
|
|
|
|
|
|
(x − x )(x − x )2 |
|
|
|
1 |
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
2 |
1 |
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
2 |
|
2 |
1 |
|
|
|
|
|
||||||||||||
|
|
|
f '2 (x2 − x1) − ( f2 − f1) |
|
|
f ' (x − x |
) − |
( f − f |
2 |
) |
|
|
|
|
|||||||||||||||||||||||
+2 |
|
|
|
|
|
|
|
|
|
− |
|
|
1 2 |
|
1 |
|
|
1 |
|
|
|
(x − x |
) = 0. |
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
(x |
− x )3 |
|
|
|
|
|
|
|
|
|
(x − x )(x − x )2 |
|
|
|
|
2 |
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
2 |
1 |
|
|
|
|
|
|
|
|
|
|
1 |
|
|
2 |
|
2 |
1 |
|
|
|
|
|
|
||||||||||
Пусть |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
z = |
3( f1 − f2 ) |
+ f1′+ f2′. |
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 − x1 |
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Для упрощения формулы введем переменную w: |
|
|
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(z |
2 |
− f |
′f ′)2 , |
|
x |
|
< x ; |
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
|
|
1 |
|
2 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
w = |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
−(z |
|
− |
f |
′f |
′) |
|
, |
|
x |
> x . |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
2 |
2 |
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
2 |
|
|
|
|
|
1 |
2 |
|
|
|
|
|
|
|
||||
30
