Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Численные методы решения задач оптимизации. Учебное пособие

.pdf
Скачиваний:
4
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Пример выполнения лабораторной работы 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 1for
x
i1
xi
Ft()

i0nfor
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

i0nfor
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 1000for
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 1000for
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 100000for
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]