Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Численные методы решения задач оптимизации. Учебное пособие
.pdf
Пример выполнения лабораторной работы 4.
()
f
()
f
Одномерная оптимизация
Пример 23
Решить методом перебора, золотого сечения и с помощью системы
Mathcad
задачу минимизации функции
xxxx на
32
0,1 2 10
интервале
10;10
.
Решение.
Метод перебора. Зададим границы интервала, на котором нахо
дится минимум функции
x , точность решения и число отрезков
разбиения интервала.
fx() 0.1x3 2x2 10 x
a10 b10
ba()
0.01 n
Составим массивы значений точек разбиения x значений функции
в этих точках.
Xx0a
i0n 1for
x
i1
xi
Ft()
i0nfor
f
ft
i
f
i
x
T
X
T
fX()
0123456789
0
-10-9.99-9.98-9.97-9.96-9.95-9.94-9.93-9.92-9.91
0
012345
0 -9.99· 1 0 -5-3.992·10 -4-8.973·10 -4-1.594·10 -3-2.488·10
Построим график функции (рис. 13).
-3
101

50
()
f
(3)
f
()
f
43
36
29
22
fx()
10 8.5 7 5.5 4 2.5 10.523.5 5
Рис. 13. График функции
Из графика видно, что минимум функции
15
8
1
6
13
20
x
32
0,1 2 10
xxxx
.
14
Составим программу поиска минимума функции методом
перебора.
Minf() min 0
i0nfor
fiminif
min f
i
imin i
min
c
0
14.815
c
X
1
c
imin
Minf X()()
3.33
В результате выполнения программы вычисляются минимальное
значение функции и соответствующее значение аргумента, при
котором достигается минимум.
Метод золотого сечения. Зададим границы отрезка, на котором
находится минимум функции
fx() 0.1x3 2x2 10 x
a10 b10
x , и точность решения.
0.01
xaa b
Составим программу поиска минимума функции.
102

Waa
bb
i0
x1 b b a()
x2 a b a()
5
1
2
Отношение золотого сечения
Вычисление левой и правой границ
отрезка в отношении золотого се
чения
f1 f x 1()
f2 f x 2()
otherwise
while
f1 f2if
bx2
x2 x1
f2 f1
x1 b b a()
f1 f x 1()
ax1
x1 x2
f1 f2
x2 a b a()
Вычисление значений функции
Выбор точки, наиболее близкой к
точке минимума
c
0
c
1
c
2
c
f2 f x 2()
ii1
break b a()if
ab()
i
fc
0
2
Прекращаем поиск минимума, если
длина отрезка меньше заданной
точности
Точка минимума
Число итераций
Минимум функции
W
3.331822987
16
14.814812533
103

Как видим, результаты вычислений по методу перебора и методу
x
y
золотого сечения практически совпадают.
Пример выполнения лабораторной работы 5.
Многомерная оптимизация
Пример 24
Выполнить минимизацию функции методами нулевого порядка
yz
,, .
fxyz
Начальное приближение взять из интервала
0,,10xyz.
Решить методами покоординатного спуска и градиентного спуска в
системе Mathcad.
Решение.
Метод покоординатного спуска.
e
23
z
x
fxy z()
exp x y z()
z3
xy
2
Для наглядности покажем один шаг итерации.
x0 5 y0 5 z0 5
0.001
fx()
exp x y0 z0()
шаг вычислений
2
z03
xy0
нач альные значения
Найдем минимальное значение функции по координате x, считая y
и z постоянными.
104

X 0.01
100
i0
x0 x0
x1 x0
f0 f x 0()
f1 f x 1()
f1 f0if
x0 x1
x1 x0
f0 f x 0()
f1 f x 1()
ii1
i
otherwise
80
60
fx()
40
20
0 0 .4 0 .8 1 .2 1 .6 2
f1 f0while
x
x1 x0
f1 f x 1()
f1 f0while
x0 x1
x1 x0
f0 f x 0()
f1 f x 1()
ii1
i
x0
c
c
c
i
0
x0
1
X
400
Число итераций
Значение x, доставляющее минимум
1
функции
105

Найдем минимальное значение функции по координате y, считая x
и z постоянными (x берем из предыдущей программы).
y z0
1
15
13
11
fy()
9
7
5
1 1 .6 2 .2 2 .8 3 .4 4
fy()
Y 0.01
i0
y0 y0
y1 y0
f0 f y 0()
f1 f y 1()
f1 f0if
exp X
X1y2 z03
y0 y1
y1 y0
f0 f y 0()
f1 f y 1()
ii1
i
otherwise
y1 y0
f1 f y 1()
y0 y1
y1 y0
f0 f y 0()
f1 f0while
f1 f0while
y
f1 f y 1()
ii1
i
y0
c
c
c
i
0
y0
1
Y
300
2
Число итераций
Значение y, доставляющее минимум функции
106

Найдем минимальное значение функции по координате z, считая x
и y постоянными (x и y найдены в предыдущих программах).
fz()
Z 0.01
exp X
X1Y
i0
z0 z0
z1 z0
f0 f z0()
f1 f z1()
f1 f0if
Y1 z
1
2
z3
1
f1 f0while
z0 z1
z1 z0
f0 f z0()
f1 f z1()
4.7
4.4
fz()
4.1
3.8
3.5
5
2 2 .4 2 .8 3 .2 3 .6 4
z
ii1
i
otherwise
z1 z0
f1 f z1()
z0 z1
z1 z0
f0 f z0()
f1 f z1()
ii1
i
z0
c
i
0
f1 f0while
c
c
z0
1
Z
Число итераций
200
Значение z, доставляющее минимум функции
3
107

В результате выполнения одного шага итерации имеем улуч
шенные координаты:
X1, Y2, Z3 .
11 1
Для того чтобы перейти ко второму шагу вычислений методом
покоординатного спуска, необходимо подставить полученные значения
координат вместо x0, y0, z0.
Метод градиентного спуска.
fxy z()
x5 y5 z5 0.001 h0.1
exp x y z()
z3
xy
2
Sxx
yy
zz
hh
i 1 1000for
d
x
d
fxy z()
g1
g2
g3
dg1
xxh
yyh
zzh
break g1
C
C
C
C
C
C
i
0
fxy z()
1
x
2
y
3
z
4
d
fxy z()
d
y
d
fxy z()
z
d
2
2
g2
g3
g1
d
g2
d
g3
d
S
2
g2
g3
59
3.738
1.035
if
Количество итераций
Минимальное значение функции
Значения x, y, z,
доставляющие минимум
2
3
функции
108

Пример 25
)
Выполнить минимизацию функции
,3,10,02(50
fx x x x
12 1 2
2
методом градиентного спуска и методом Ньютона в системе Mathcad.
Начальное приближение
(0) (0)
1, 4 8xx.
12
Решение.
Метод градиентного спуска.
Sx1x1
x2 x2
hh
i 1 1000for
d
g1
g2
fx1x2()
d
x1
d
fx1x2()
x2
d
Частные пр оизводные
функции f(
x
x
,
1
2
) по
x
1
и
x
2
dg1
x1 x1 h
x2 x2 h
break g1
C
C
C
C
i
0
fx1x2()
1
x1
2
x2
3
C
2
2
g2
g1
d
g2
d
g2
if
560
0.000078
S
0.005
50.002421
Прекращаем поиск минимума,
если градиент достаточно
близок к ну лю
Количество итераций
Минимум функции
x
Значения
доставляющие миниму м
функции
1
и
x
,
2
109

Метод Ньютона.
В системе Mathcad задаем функцию, точку начального прибли
жения и точность вычислений и составляем программу.
fx1x2()3.1x1
x1 1 x2 45 0.01
Sx1x1
x2 x2
i 1 100000for
X1
X1
g1
A
2
0.02 x2 50()
x1
0
x2
1
d
d
x1
d
d
x2
d
d
x1 x1
d
d
x2 x1
fx1x2()
fx1x2()
d
fx1x2()
d
d
fx1x2()
d
2
Гр адиент фу нкции
d
x1 x2
d
d
d
x2 x2
d
fx1x2()
d
d
fx1x2()
d
1
X1 X1 A
x1 X1
x2 X1
break g1
C
C
C
C
C
i
0
fx1x2()
1
x1
2
x2
3
0
1
g1
Прекращаем
g1
0
if
2
0
S
0
50
1
Количество итераций
М инималь ное значение фу нкции
Значения x
миниму м ф у нкции
поиск миниму ма,
если гр адиент
достаточно
близок к нулю
и x
, доставляющие
1
2
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
