Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные методы решения задач строительства на ЭВМ..pdf
Скачиваний:
45
Добавлен:
15.11.2022
Размер:
16.27 Mб
Скачать

Из табл. 8.5 получаем х* » 1,59 и Zm « Z(l,59) = -6,04.

Заметим, что если воспользоваться формулой (8.98), то число шагов можно определить заранее. В нашем случае п >4,8, т.е. и=5 и отпадает необходимость в 4-м столбце таблицы.

Метод квадратичной интерполяции

В данном методе используется аппроксимация функции. Сущность этого метода проще показать в виде алгоритма.

Алгоритм квадратичной интерполяции.

Этап 1. Вычисление Z(x)в начальной точке х0.

Этап 2. Назначение шага h. Если Z(xQ+h) < Z(x0), то осуществляется переход к этапу 3. В противном случае принимается h=-h и выполняется этап 3. Этапы 1 и 2 следует рассматривать в качестве предварительных для выбора направления поиска. Следующие этапы выполняются многократно.

Этап 3. Вычисление xk+i = хк+ h и Z(**+L).

Этап 4. Если Z(xk+у) <Z(x0, то шаг h удваивается и выполняется этап 3. Если Z(xk+i)> ZfxQ, то JC*+I обозначается через хт, хк - через хт.\ и т. д., уменьшается h наполовину и этап 3 выполняется последний раз.

Этап 5. Исключение из полученных четырех равноотстоящих значений xnl+h хт, xm.i , хт_2 либо x„l+i, либо хт_2 >в зависимости от того, какая из этих точек находится дальше от точки х*, в которой функция Z(x) имеет наименьшее значение. Пусть ха, хь , хс - оставшиеся три точки, где

хс - центральная, 2Lxa = xc- h w x b =xc+h.

Этап 6. Проведение квадратичной интерполяции для определения координат точки

*h[Z(xa) - Z ( x b)]

х = х г + --------

L-

------

(8.99)

с2[Z (xa) - 2 Z ( x c) + Z (xb)]

8.4.4.Безусловная минимизация функций многих

переменных

Среди прямых методов многомерного поиска особое место занимает симплекс-метод, предназначенный для решения задач

линейного программирования, который был рассмотрен в подразделе 8.3.4. Метод сканирования (метод сеток), описанный выше, также можно отнести к методам решения многомерных задач оптимизации, однако чаще всего его применяют для задач с

двумя или тремя переменными. Кроме того, эти методы используют информацию об ограничениях задачи, т.е. относятся к методам решения задач математического программирования.

Рассмотрим методы, в которых выражения ограничений не используются непосредственно, т.е. речь идет о методах безусловной минимизации. Но эти методы, как мы увидим далее, могут применяться и для решения задач с ограничениями.

Метод покоординатного спуска

Этот метод [3, 19] относится к методам нулевого порядка, т.е. он позволяет получать решение задачи на основе использования только значений целевой функции.

Метод состоит в том, что выбирается какая-либо начальная точка из допустимого множества значений переменных и осуществляется изменение только одной переменной (например, х х)

в сторону уменьшения (увеличения) Z ( X ) , пока это возможно, затем переходят к этой же процедуре по другой переменной (х2) и т.д. Такие действия приводят обычно к локальному экстремуму. Для нахождения глобального экстремума часто применяют метод случайного поиска, т. е, случайно выбирают новую начальную точку и осуществляют покоординатный спуск, затем сравнивают полученные решения; если новое решение совпадает с полученным ранее, то считают, что получено приближенное решение задачи; если новое решение не совпадает с полученным ранее, то снова случайным образом выбирают начальную точку и применяют покоординатный спуск. Затем сравнивают полученные решения. Так поступают несколько раз: если лучшее решение повторяется, то процесс заканчивается, и лучшее повторяющееся решение

принимается за решение задачи.

ёЗамечание! Для минимизации по каждой переменной могут использоваться любые известные методы одномерного поиска.

Обозначим через Q область ограничений (8.2) - (8.3) и опишем по шагам этот алгоритм, предполагая, что отыскивается

минимум Z( X) при J GQ.

Н Алгоритм метода покоординатного спуска

1- й шаг. Из области Q выбирают некоторую точку М0 (х]0, ...,хпо) вычисляют Z(xI0, ...,хпо)= Z0 и переходят ко 2-му шагу.

2- й шаг. Выбирают к-ю координату, по которой буде осуществляться спуск, и задают шаг hj. Обычно для определенности берут 1-ю координату, т. е. полагают к = 1 и задают шаг hi для продвижения вдоль этой координаты. Переходят к 3-му шагу.

3-

й шаг. Вычисляют х\ = хк0 + hk и проверяют, принадлежит ли

х\ области Q. Если х\ е Q , то переходят к 4-му шагу. Если х\ gQ, то

переходят к 5-му шагу.

 

4-й

шаг.

Вычисляют

2 1{х10,---,хк0, х \ , х к^ 0,---,хм )к

сравнивают это значение с Z0. Есл и Z\ < Z о, то переходят к 3-му шагу.

Если Zi>Z0, то переходят к 5-му шагу.

 

5-

й шаг. Вычисляют х\

= хк0 —hk и проверяют, принадлежит л

х\ области Q. При зацикливании, т. е. при возвращении к прежней точке, переходят к 6-му шагу. Если х\ е £2 и нет зацикливания, то переходят к 4-му шагу при отрицательном шаге hk. Если х\ не принадлежит области

£2, то переходят к 6-му шагу.

6- й шаг. Переходят ко 2-му шагу, изменив к. Если при любом продвижение невозможно, т. е. при любом к действия приводят к 6-му шагу, то покоординатный спуск заканчивается, и последнее значение координатX,, хъ ...Хп Даетминимум (локальный или глобальный).

С помощью метода покоординатного спуска обычно решение получается быстрее, чем с помощью метода сканирования.

Известны и другие методы прямого многомерного поиска. Среди них можно выделить метод деформируемого многогранника Нелдера и Мида [3,20], который является модификацией симплекс-метода; метод Пауэлла, являющегося развитием метода покоординатного спуска, а также методы случайного поиска [3]. Указанные методы наиболее полно отражают различные подходы к построению алгоритмов прямых методов. Важность методов нулевого порядка несомненна, поскольку в ряде практических задач оптимизации информация о значениях целевой функции является единственной надежной

информацией, которой располагает исследователь. С другой стороны, при использовании даже самых эффективных методов нулевого порядка, для получения решения иногда требуется чрезвычайно большое количество вычислений значений функции. Это обстоятельство, наряду с совершенно естественным стремлением реализовать возможности нахождения стационарных точек (то есть точек, удовлетворяющих необходимому условию экстремума), приводит к необходимости рассмотрения методов, основанных на использовании градиента функции.

Метод градиентного спуска

Напомним, что градиент скалярной функции направлен в сторону наискорейшего увеличения функции (т.е. наискорейшего

подъема), а вектор, противоположный этому градиенту (отрицательный градиент или антиградиент), направлен в сторону

наискорейшего уменьшения функции (наискорейшего спуска).

Далее везде предполагаем, что целевая функция и ее первые и вторые производные по всем переменным существуют и непрерывны, и что компоненты градиента могут быть записаны в аналитическом виде или с достаточно высокой точностью вычислены при помощи численных методов.

В основе простейшего градиентного метода [2, 3, 19]лежит формула

Х ш = X k + h V Z ( X k),

(8.100)

где h - величина шага; VZ(X*) - единичный вектор направления

поиска на к -м шаге.

При поиске максимума целевой функции следует двигаться в направлении градиента функции (формула 8.100), а при поиске минимума - в направлении, противоположном градиенту (антиградиента), т.е.

Х ш = Х к - К Ч г ( Х к ) .

(8.101)

Если функция Z ( X) дважды дифференцируема, имеет ограниченный экстремум, то для нее градиентный метод сходится.

Способ выбора шага, направления поиска или того и другого одновременно определяет сущность метода.

В случае, если шаг h принимается постоянным, но малым, сходимость градиентного метода будет медленной. Если шаг выбрать большим, то сходимости может не быть.

Поэтому иногда выбирают шаг, регулярно уменьшающийся и

стремящийся к нулю, например К или величину шага hk = — :

к

вычисляют путем решения задачи одномерной минимизации целевой функции по h вдоль антиградиентного направления. Такой градиентный метод носит название метода наискорейшего спуска (метод Коши).

■ Пример 8.10. Найти минимум функции Z (X) = 2xf + 5х\ + Ъх] с помощью градиентного метода.

Выбираем в качестве исходной точку Хо = (3; 1; 1), шаг Л^О, 16 и

проведем первую итерацию.

 

Вычислим

функцию Z (X о) = 26,

градиент

VZ(X ) = (4х, ;10х2;6JC3 ).

 

Вточке X о направление V Z ( X о)=(4*3; 10-1; 6-1)=(12; 10; 6).

Тогда

Х\ =Хо —AVZ(^o) =(3;1;1)-0,16*(12;10;6),

т.е.

х', = 3 -12 0,16 = 1,08; х\ =1 -10• 0,16 = -0,6; xj =1-6-0,16 = 0,04;

Z(Xi) = 4,15.

Для второй итерации имеем

V Z ( X I) =(4-1,08; 10-(—0,6); 6-0,04)=(4,32; -Х>\ 0,24), h2 = ^ = 0,08.

Тогда

Х 2 = Х, - 0,08(4,32;-6;0,24) = (1,08;-0,6;0,04) - (0,36;-0,48;0,019).