
Информатика 2 сессия / Численные методы решения задач строительства на ЭВМ
.pdf
Численные методы оптимизации
Этот расчет выполнен с использованием электронных таблиц Excel.
Метод золотого сечения
Этот метод также является последовательным (итерационным) методом оптимизации. Опираясь на свойства золотого сечения отрезка, этот метод использует найденные значения Z(x) более рационально, чем метод дихотомии, что
позволяет переходить к очередному суженому интервалу неопределенности после вычисления одного, а не двух значений
Z(x).
Деление отрезка на две неравные части так, что отношение всего
отрезка к длине его большей части равно отношению длины большей части к длине меньшей части, называется золотым сечением этого отрезка.
Каждый отрезок [a,b] содержит два золотых сечения,
которые располагаются в точках
x |
= a + |
3 − |
5 |
|
(b − a) a + 0,382(b − a) ; |
(8.93) |
||
|
|
|
|
|
||||
1 |
|
2 |
|
|
|
|
||
|
|
|
|
|
|
|||
x2 |
= a + |
|
|
5 −1 |
|
(b − a) a + 0,628(b − a) . |
(8.94) |
|
2 |
|
|
||||||
|
|
|
|
|
|
|||
Зная одну из точек золотого сечения отрезка [a,b] , другую |
||||||||
можно найти по одной из формул: |
|
|||||||
x1=a+b-x2, |
x2=a+b-x1 |
(8.95) |
Общая идея метода состоит в следующем:
1)На каждом шаге n=1,2,… точки x1 и x2, располагаются
симметрично относительно центра интервала неопределенности
в золотых сечениях отрезка.
2)Затем в этих точках вычисляются значения целевой функции Z(x); при этом только на первом шаге (n=1) целевая функция вычисляется в двух точках. На всех последующих шагах (n=2,3,…) Z(x) вычисляется только в одной вновь найденной точке суженого интервала неопределенности (значение в другой
323

Численные методы оптимизации
точке отрезка оказывается вычисленным на одном из предыдущих шагов).
3)Сравниваются значения Z(x1 ) и Z(x2 ) и находятся значения an, bn, xn (n=2,3,…) по формулам:
an= a n-1, |
|
bn=x2(n-1), |
xn=x1(n-1), |
если Z(x(n−1) ) £ Z(x(n−1) ) ; |
(8.96) |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
an= x1(n-1), |
|
bn= b n-1, |
xn=x2(n-1), |
если Z(x(n−1) ) > Z(x(n−1) ) . |
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
4) Процесс поиска заканчивается, если en<e, |
|
|
||||||||||||||||
|
|
|
|
æ |
|
|
-1 |
ö |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
||||
где |
e |
n |
= |
ç |
|
|
|
÷(b |
n |
- a |
n |
) » 0,628(b |
n |
- a |
n |
) , |
(8.97) |
|
|
|
|
||||||||||||||||
|
|
|
ç |
2 |
÷ |
|
|
|
|
|
|
|||||||
|
|
|
|
è |
ø |
|
|
|
|
|
|
|
|
|
|
e>0 –- заданная погрешность определения точки х*.
Число n |
шагов метода золотого сечения, |
заданную |
точность e нахождения точки х*, |
заранее, оно должно удовлетворять неравенству:
n ³ 2,1ln |
e |
|
|
(b - a) |
обеспечивающее можно посчитать
(8.98)
nПример 8.9. Решить пример 8.8 методом золотого сечения.
Вычисления проводим по формулам (8.93)-(8.96), представив
результаты в табл. 8.5.
|
|
|
|
|
|
|
Таблица 8.5 |
|
n |
an |
bn |
n |
x1(n) |
x2(n) |
Z(x1(n)) |
Z(x2(n)) |
|
=0,628(b n |
Примеча- |
|||||||
|
|
|
|
|
|
|
ние |
|
|
|
|
)/2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ε –a |
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1,500 |
2,000 |
0,309 |
1,691 |
1,809 |
-5,936 |
-5,489 |
Z(x1)<Z(x2) |
|
|
|
|
|
|
|
|
b2=x2 |
2 |
1,500 |
1,809 |
0,191 |
1,618 |
1,691 |
-6,038 |
-5,936 |
Z(x1)<Z(x2) |
|
|
|
|
|
|
|
|
b3=x2 |
3 |
1,500 |
1,691 |
0,118 |
1,573 |
1,618 |
-6,042 |
-6,038 |
Z(x1)<Z(x2) |
|
|
|
|
|
|
|
|
b4=x2 |
4 |
1,500 |
1,618 |
0,073 |
1,545 |
1,573 |
-6,024 |
-6,042 |
Z(x1)>Z(x2) |
|
|
|
|
|
|
|
|
a5=x1 |
5 |
1,545 |
1,618 |
0,045 |
1,573 |
1,590 |
-6,042 |
-6,045 |
ε3<ε, |
|
|
|
|
|
|
|
|
точность |
|
|
|
|
|
|
|
|
достигнута |
324

Численные методы оптимизации
Из табл. 8.5 получаем х* ≈ 1,59 и Zmin ≈ Z(1,59) = -6,04.
Заметим, что если воспользоваться формулой (8.98), то число шагов можно определить заранее. В нашем случае n ³ 4,8 , т.е. n=5 и отпадает необходимость в 4-м столбце таблицы.
Метод квадратичной интерполяции
В данном методе используется аппроксимация функции.
Сущность этого метода проще показать в виде алгоритма. Алгоритм квадратичной интерполяции.
Этап 1. Вычисление Z(x)в начальной точке хо.
Этап 2. Назначение шага h. Если Z(xo+h) < Z(xo), то осуществляется переход к этапу 3. В противном случае принимается h= –h и выполняется этап 3. Этапы 1 и 2 следует рассматривать в качестве предварительных для выбора направления поиска. Следующие этапы выполняются многократно.
Этап 3. Вычисление хk+1 = xk + h и Z(xk+1).
Этап 4. Если Z(xk+1) ≤ Z(xk), то шаг h удваивается и выполняется этап 3. Если Z(xk+1)> Z(xk), то хk+1 обозначается через xт, xk – через xm-1 и т. д., уменьшается h наполовину и этап 3 выполняется последний раз.
Этап 5. Исключение из полученных четырех равноотстоящих
значений xm+1, хт , xm-1 , xm-2 либо xm+1, либо xm-2 , в зависимости от того, какая из этих точек находится дальше от точки х*, в которой функция Z(x)
имеет наименьшее значение. Пусть ха , хb , xс – оставшиеся три точки, где xс – центральная, а xа = xс – h и хb = xс + h.
Этап 6. Проведение квадратичной интерполяции для определения
координат точки |
h[Z(xa ) − Z(xb )] |
|
|
|
|
x* = xc + |
|
. |
(8.99) |
||
2[Z(xa ) − 2Z(xc ) + Z(xb )] |
|||||
|
|
|
8.4.4. Безусловная минимизация функций многих переменных
Среди прямых методов многомерного поиска особое место занимает симплекс-метод, предназначенный для решения задач
линейного программирования, который был рассмотрен в подразделе 8.3.4. Метод сканирования (метод сеток), описанный выше, также можно отнести к методам решения многомерных задач оптимизации, однако чаще всего его применяют для задач с
325

Численные методы оптимизации
двумя или тремя переменными. Кроме того, эти методы используют информацию об ограничениях задачи, т.е. относятся к методам решения задач математического программирования.
Рассмотрим методы, в которых выражения ограничений не используются непосредственно, т.е. речь идет о методах безусловной минимизации. Но эти методы, как мы увидим далее, могут применяться и для решения задач с ограничениями.
Метод покоординатного спуска
Этот метод [3, 19] относится к методам нулевого порядка, т.е.
он позволяет получать решение задачи на основе использования только значений целевой функции.
Метод состоит в том, что выбирается какая-либо начальная
точка из допустимого множества значений переменных и осуществляется изменение только одной переменной (например, х1)
в сторону уменьшения (увеличения) Z(X ) , пока это возможно,
затем переходят к этой же процедуре по другой переменной (х2) и т.д. Такие действия приводят обычно к локальному экстремуму.
Для нахождения глобального экстремума часто применяют метод случайного поиска, т. е, случайно выбирают новую начальную точку и осуществляют покоординатный спуск, затем сравнивают полученные решения; если новое решение совпадает с полученным ранее, то считают, что получено приближенное решение задачи;
если новое решение не совпадает с полученным ранее, то снова
случайным образом выбирают начальную точку и применяют покоординатный спуск. Затем сравнивают полученные решения. Так поступают несколько раз: если лучшее решение повторяется,
то процесс заканчивается, и лучшее повторяющееся решение
принимается за решение задачи.
GЗамечание! Для минимизации по каждой переменной могут
использоваться любые известные методы одномерного поиска.
Обозначим через Ω область ограничений (8.2) – (8.3) и опишем по шагам этот алгоритм, предполагая, что отыскивается
минимум Z(X ) при Х Ω.
326

Численные методы оптимизации
: Алгоритм метода покоординатного спуска
1-й шаг. Из области Ω выбирают некоторую точку М0 (х10, …,xпо), вычисляют Z(х10, …,xпо)= Z0 и переходят ко 2-му шагу.
2-й шаг. Выбирают k-ю координату, по которой будет осуществляться спуск, и задают шаг h1. Обычно для определенности берут 1-ю координату, т. е. полагают k = 1 и задают шаг h1 для продвижения вдоль этой координаты. Переходят к 3-му шагу.
3-й шаг. Вычисляют xk1 |
= xk 0 |
+ hk |
и проверяют, принадлежит ли |
|||||||||||
x1k области Ω. Если xk1 Ω , |
то переходят к 4-му шагу. Если |
x1k Ω, то |
||||||||||||
переходят к 5-му шагу. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4-й |
шаг. |
Вычисляют |
Z |
1 |
(x |
,L, x |
k 0 |
, x1 |
, x |
k +10 |
,L, x |
n0 |
) и |
|
|
|
|
|
|
10 |
|
k |
|
|
|
||||
сравнивают это значение с Z0. Если Z1 ≤ Z0, |
тo переходят к 3-му шагу. |
|||||||||||||
Если Z1>Z0 , то переходят к 5-му шагу. |
|
|
|
|
|
|
|
|
|
|
||||
5-й шаг. Вычисляют xk1 = xk 0 |
− hk |
и проверяют, принадлежит ли |
x1k области Ω. При зацикливании, т. е. при возвращении к прежней точке,
переходят к 6-му шагу. Если x1k Ω и нет зацикливания, то переходят к
4-му шагу при отрицательном шаге hk. Если x1k не принадлежит области
Ω, то переходят к 6-му шагу.
6-й шаг. Переходят ко 2-му шагу, изменив k. Если при любом k продвижение невозможно, т. е. при любом k действия приводят к 6-му шагу, то покоординатный спуск заканчивается, и последнее значение координат x1, x2,…,xn дает минимум (локальный или глобальный).
С помощью метода покоординатного спуска обычно решение получается быстрее, чем с помощью метода сканирования.
Известны и другие методы прямого многомерного поиска.
Среди них можно выделить метод деформируемого многогранника Нелдера и Мида [3,20], который является модификацией симплекс-метода; метод Пауэлла, являющегося развитием метода покоординатного спуска, а также методы случайного поиска [3]. Указанные методы наиболее полно
отражают различные подходы к построению алгоритмов прямых методов. Важность методов нулевого порядка несомненна,
поскольку в ряде практических задач оптимизации информация о значениях целевой функции является единственной надежной
327

Численные методы оптимизации
информацией, которой располагает исследователь. С другой стороны, при использовании даже самых эффективных методов нулевого порядка, для получения решения иногда требуется чрезвычайно большое количество вычислений значений функции. Это обстоятельство, наряду с совершенно естественным
стремлением реализовать возможности нахождения стационарных точек (то есть точек, удовлетворяющих необходимому условию экстремума), приводит к необходимости рассмотрения методов, основанных на использовании градиента функции.
Метод градиентного спуска
Напомним, что градиент скалярной функции направлен в сторону наискорейшего увеличения функции (т.е. наискорейшего
подъема), а вектор, противоположный этому градиенту (отрицательный градиент или антиградиент), направлен в сторону
наискорейшего уменьшения функции (наискорейшего спуска).
Далее везде предполагаем, что целевая функция и ее первые
и вторые производные по всем переменным существуют и непрерывны, и что компоненты градиента могут быть записаны в
аналитическом виде или с достаточно высокой точностью вычислены при помощи численных методов.
В основе простейшего градиентного метода [2, 3, 19]лежит
формула
X k+1 = X k + hÑZ(X k ) , |
(8.100) |
где h – величина шага; ÑZ(X k ) – единичный вектор направления поиска на k -м шаге.
При поиске максимума целевой функции следует двигаться в направлении градиента функции (формула 8.100), а при поиске минимума – в направлении, противоположном градиенту
(антиградиента), т.е.
X k+1 = X k - hÑZ(X k ) . |
(8.101) |
328

Численные методы оптимизации
Если функция Z(X ) дважды дифференцируема, имеет ограниченный экстремум, то для нее градиентный метод сходится.
Способ выбора шага, направления поиска или того и другого одновременно определяет сущность метода.
В случае, если шаг h принимается постоянным, но малым, сходимость градиентного метода будет медленной. Если шаг выбрать большим, то сходимости может не быть.
Поэтому иногда выбирают шаг, регулярно уменьшающийся и стремящийся к нулю, например hk = hk0 ; или величину шага
вычисляют путем решения задачи одномерной минимизации целевой функции по h вдоль антиградиентного направления. Такой
градиентный метод носит название метода наискорейшего спуска
(метод Коши).
nПример 8.10. Найти минимум функции Z(X ) = 2x12 + 5x22 + 3x32 c помощью градиентного метода.
|
Выбираем в качестве исходной точку |
X 0 = (3; 1; 1), шаг h1=0,16 и |
||
проведем первую итерацию. |
|
|
||
|
Вычислим |
функцию Z(X 0 ) = 26, |
градиент |
|
ÑZ(Х ) = (4x1;10x2 ;6x3 ). |
|
|
||
|
В точке X 0 направление ÑZ(X 0 ) =(4×3; 10×1; 6×1)=(12; 10; 6). |
|||
|
Тогда |
X 1 = X 0 - hÑZ(X 0 ) =(3;1;1)–0,16×(12;10;6), |
т.е. |
|
х1 |
= 3 -12 × 0,16 =1,08; х1 =1 -10 × 0,16 = -0,6; х1 =1 - 6 × 0,16 = 0,04; |
|||
1 |
|
2 |
3 |
|
Z(X 1 ) = 4,15.
Для второй итерации имеем
ÑZ(X 1 ) =(4×1,08; 10×(–0,6); 6×0,04)=(4,32; –6; 0,24), h2 = h21 = 0,08.
Тогда
X 2 = X 1 - 0,08(4,32;-6;0,24) = (1,08;-0,6;0,04) - (0,36;-0,48;0,019).
329

Численные методы оптимизации
Отсюда X 2 = (0,72;-0,12;0,021), Z(X 2 ) =1,11.
Заметим, что глобальный минимум достигается при X = (0,0,0) и
равен 0, т.е. после второй итерации получили значительное улучшение исходного значения. Процесс можно продолжать до тех пор, пока не получится решение с требуемой точностью.
Метод наискорейшего спуска
:Алгоритм метода наискорейшего спуска [3, 19] содержит следующие этапы:
Этап 1. Вычисление всех частных производных Z(x) по управляемым параметрам в исходной или промежуточных точках.
Этап 2. Нахождение одним из методов одномерного поиска оптимального шага вдоль антиградиентного направления. Величина шага h определяется из условия минимума функции Z[Xk — hÑZ(Xk)] по h, т. е. dZ(h)/dh.
Этап 3. Вычисление координат новой точки Xk+1 по (8.101).
Этап 4. Если условия прекращения поиска не выполняются, то происходит возврат к этапу 1.
Метод сопряженных градиентов
В методе сопряженных градиентов [20] строится
последовательность направлений поиска S k , которые |
являются |
|||||
линейными |
комбинациями антиградиента (-ÑZ(X k )) |
целевой |
||||
функции |
и |
предыдущих |
направлений поиска (S 0 ,...,S k −1 ) . |
Итак, |
||
если S 0 |
= -ÑZ(X 0 ) , то |
X 1 = X 0 |
+ h0 S 0 . Нужно найти |
новое |
||
направление |
S1 = -ÑZ(X 1 ) + b1 S 0 , |
подобрав коэффициент b1 так, |
||||
чтобы векторы S1 и S 0 были сопряженными. |
|
|
G Примечания:
1)Векторы S 0 и S1 размерности п называют сопряженными по отношению к любой квадратной матрице Q того же порядка (или
330

Численные методы оптимизации
Q-сопряженными), если скалярное произведение векторов S 0 и QS1 равно нулю.
2)Q–сопряженность векторов S 0 и S1 означает их ортогональность.
3)В [14] показано, что коэффициент β1 будет удовлетворять условию сопряженности векторов S 0 и S1 , если его вычислять по формуле
b1 = ÑT Z(X1 )ÑZ(X 1 ) .
ÑT Z(X 0 )ÑZ(X 0 )
: В общем виде алгоритм метода сопряженных градиентов
состоит из следующих этапов:
Этап 1. Вычисление в точке Х 0 вектора S 0 = -ÑZ(X 0 ) .
Этап 2. Нахождение минимума Z(X ) одним из методов одномерного
поиска в направлении S k (начальное значение k = 0), что |
сразу |
|||||
определяет точку Х k+1 , значение Z(X k +1 ) и ÑZ(X k +1 ) . |
|
|||||
Этап 3. Определение нового направления S k +1 |
из соотношения |
|
||||
Sk +1 = -ÑZ(X k +1 ) + Sk |
ÑT Z( X k +1 )ÑZ(X k +1 ) |
|
. |
|
||
ÑT Z(X k )ÑZ(X k ) |
|
|||||
|
|
|
|
|
||
После (n+1)-го шага (при k = п) вычисления циклически повторяются. |
||||||
Этап 4. Если |
|
< e , где ε – константа точности вычислений, |
поиск |
|||
S k |
||||||
|
|
|
|
|
|
|
прекращается. |
|
|
|
|
Метод Ньютона
Описанный выше метод наискорейшего спуска основывается на последовательной линейной аппроксимации целевой функции и ее первых производных на каждой итерации. Для того чтобы построить более общую стратегию поиска, следует привлечь
331

Численные методы оптимизации
информацию о вторых производных целевой функции. Такая стратегия применяется в методе Ньютона [20], использующем
кроме градиента функции и матрицу ее вторых производных Н
(8.6) – матрицу Гессе.
В алгоритме метода Ньютона в качестве шага при движении по направлению антиградиента используется обратная матрица вторых производных.. При этом каждое следующее приближение в
итерационном процессе определяется по формуле
X k +1 = X k - H−1 (x)ÑZ(X k ) . |
(8.102) |
8.4.5.Методы нелинейного программирования (задачи
сограничениями)
В большинстве случаев задачи оптимизации технических объектов сводятся к поиску экстремума нелинейной целевой функции при наличии ограничений в виде равенств и неравенств.
Рассмотрим общую задачу нелинейного программирования:
минимизировать Z(X ) ® min |
X = (x1, x2 ,K, xn ) |
(8.103) |
при ограничениях gi (X ) ³ 0 , |
j=1,2,…,m, |
(8.104) |
hk (X ) = 0 , k=1,2,…l. |
(8.105) |
GОграничение в виде неравенства gi (X ) ³ 0 называется активным,
или связывающим в точке Х , если gi (X ) = 0 , и неактивным, или
несвязывающим, если gi (X ) > 0 .
Решение этих задач можно выполнить с помощью одного из двух подходов.
В первом подходе учитывается, что большинство развитых
методов оптимизации ориентировано на поиск безусловного экстремума. Поэтому их применение к решению задачи условной оптимизации требует, чтобы эта задача была предварительно сведена к задаче безусловной оптимизации.
332