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

Название метода можно было бы понимать буквально, если бы речь шла о минимизации целевой функции. Тем не менее по тра­диции такое название используется и при решении задачи на максимум.

Пусть f(x)=f(x 1 ,x 1 ,...xn) —дифференцируемая функция, заданная на Rn, а х ( q ) = (x 1( q ) ,x 2( q ) ,...,xn ( q )) — некоторая текущая точка. Оговоримся, что каких-либо общих рекомендаций, каса­ющихся выбора исходной точки (или, как еще говорят, началь­ного приближения) х (0), не существует, однако по возможно­сти она должна находиться близко от искомого оптимального плана х *. Как уже говорилось выше, если х ( q )— нестационарная точка (т. е. | f (x ( q ))|>0), то при движении в направлении f (x ( q )) функция f(х) на некотором промежутке обязательно будет возрастать. Отсюда возникает естественная идея такого выбора шага, чтобы движение в указанном направлении продол­жалось до тех пор, пока возрастание не прекратится. Для этого выразим зависимость значения f(x) от шагового множителя λ > 0. полагая х = х( q ) + λ f (x ( q ))

 

 

или, в координатной форме,

 

 

Чтобы добиться наибольшего из возможных значений f при движении по направлению f (x (q)), нужно выбрать такое значе­ние , которое максимизирует функцию φ(λ) (φ( )= max(φ(λ)). Для вычисления , используется необходимое условие экстре­мума d φ(λ)/ d λ = 0. Заметим, что если для любого λ>0 d φ( )/ d λ> 0, то функция f(х) не ограничена сверху (т. е. не име­ет максимума). В противном случае, на основе (2.10) получаем

 

 

что, в свою очередь, дает

 

 

Если считать, что следующая точка х ( q+ 1) соответствует оп­тимальному значению λ= , то в ней должно выполняться условие d φ( )/ d λ = 0, и следует находить из условия f (x ( q +1)) f (x ( q ))=0 или

 

 

Условие (2.13) означает равенство нулю скалярного про­изведения градиентов функции f точках x ( q +1) и x ( q ). Гео­метрически оно может быть интерпретировано как перпенди­кулярность векторов градиентов функции f в указанных точ­ках, что и показано на рис. 2.2. Продолжая геометрическую интерпретацию метода наискорейшего спуска, отметим, что в точке x ( q +1) вектор f (x ( q +1)), будучи градиентом, перпендику­лярен линии уровня, проходящей через данную точку. Стало быть, вектор f (x ( q )) является касательным к этой линии. Итак, движение в направлении градиента f (x ( q )) следует продолжать до тех пор, пока он пересекает линии уровня оп­тимизируемой функции.

После того как точка x ( q +1) найдена, она становится текущей для очередной итерации. На практике признаком достижения стационарной точки служит достаточно малое изменение коор­динат точек, рассматриваемых на последовательных итераци­ях. Одновременно с этим координаты вектора Δ f (x ( q )) должны быть близки к нулю.

Метод дробления шага

Для нахождения шага λ в методе наискорейшего спуска требу­ется решить уравнение (2.13), которое может оказаться доста­точно сложным. Поэтому часто ограничиваются «подбором» такого значения λ, что φ(λ) > φ(0). Для этого задаются некото­рым начальным значением λ1, (например, λ1=l) и проверяют условие φ(λ1) >φ(0). Если оно не выполняется, то полагают

 

λ2 = 1/2 λ1

 

и т. д. до тех пор, пока не удается найти подходящий шаг, с кото­рым переходят к следующей точке x ( q +1). Критерий завершения алгоритма, очевидно, будет таким же, как и в методе наискорей­шего спуска.

2.1.4. Оптимизационные задачи для выпуклых функ­ций. Общим недостатком рассмотренных выше методов безус­ловной оптимизации было, с одной стороны, то, что они позволя­ют отыскивать только точки, подозрительные на локальный экстремум, а с другой — то, что найденные решения могут суще­ственно зависеть от начального приближения. Поиск глобально­го оптимума подразумевает перебор найденных точек, который,

 

в случае градиентных методов, может быть осуществлен за счет подбора соответствующих начальных приближений х (0).

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

 

F Функция f(x) = f (x 1, x 2, …, xn) называется выпуклой в области D, если для любых двух точек х (1),

х (2) Î D и любо­го λ Î [0,1] выполняется неравенство

 

если же

то функция называется вогнутой.

 

Геометрический смысл понятий выпуклости и вогнуто­сти для случая функции одной переменной представлен на рис. 2.3. Из него, в частности, видно, что график выпуклой функ­ции лежит ниже отрезка, соединяющего точки (х (1), f (x (1))) и (х (2), f (x (2))), а график вогнутой — выше.

 

 

Можно доказать, что достаточным условием выпуклости функции f (x 1, x 2, …, xn) является положительная определен­ность матрицы

 

 

называемой также матрицей Гессе, во всех точках х Î D. Со­ответственно, достаточным условием вогнутости являет­ся отрицательная определенность матрицы Гессе. В част­ности, для функций одной переменной достаточным условием выпуклости (вогнутости) является выполнение неравенства f n (x)≥0 (f n (x)≤0).

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

 

Теорема 2.2. Если f(x) выпуклая (вогнутая) на Rn функция и f (x *) = 0, то х* — точка глобального мини­мума (максимума).

 

Доказательство.

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

Пусть х — произвольная точка, отличная от точки х *. Тогда, для любого λ Î [0,1], в силу вогнутости функции f(x) будет вы­полняться

 

 

из чего следует

 

 

Если ввести вектор l = х - х * и обозначить Δ х = λ(xх*) = λ l, то длина вектора Δ х будет равна ||Δ x ||=λ|| l ||. Следовательно,

 

 

Устремив λ → 0 и учитывая, что вектор l сонаправлен с Δ х, получим

 

 

По условию теоремы f (x *)=0. Это означает, что для любо­го вектора l (а, стало быть, для любой точки х) согласно формуле, выражающей производную по направлению через градиент,

 

 

Следовательно, для любой точки х, не равной х *, справедли­во неравенство f(x)-f(x)≤ 0 <=> f(x)≤ f(x * ), т.е. х * — точка гло­бального максимума. A

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

2.1.5. Метод допустимых направлений. Данный метод также называется методом возможных направлений или же по имени автора—методом Зойтендейка, см. [16]. Его основную идею будет удобно продемонстрировать на примере ЗНП с огра­ничениями в форме неравенств:

 

 

В указанном методе так же, как и в градиентных методах, на­ходится последовательность точек х (0) х (1),..., х ( q )..., таких, что f (х ( q +1)) ≥ f (x ( q )) *. При этом переход от точки x (q)) к точке х (q +1)) происходит по некоторому выбранному направлению s (q) с ша­говым множителем λ q:

 

 

* Так как в данных методах при переходе к очередной рассматривае­мой точке происходит улучшение значения целевой функции (в частно­сти, для задачи минимизации — уменьшение), их также называют ре­лаксационными методами.

 

По отношению к векторам, задающим направления переме­щения, вводятся два фундаментальных понятия.

 

F Направление s называется допустимым (возможным) в точке x ( q ) Î D, если существует такое

λ > 0, что x ( q +1) = x ( q ) + λ s Î D.

 

F Направление s называется прогрессивным в точке x ( q ) Î D, если существует такое λ >0, что

f (x ( q ) + λ s)> > f (x ( q )) для задачи максимизации и f (x ( q ) + λ s) < f (x ( q )) для задачи минимизации.

 

На основе данных определений достаточно просто сформу­лировать критерий проверки оптимальности точки (так назы­ваемый критерий оптимальности в терминах допустимых и про­грессивных направлений):

 

F точка х* является оптимальным планом задачи (2.16), если в ней ни одно допустимое

направление не является прогрессивным.

 

В алгоритме метода допустимых направлений правила выбо­ра точки х ( q +1), к которой происходит очередной переход, раз­личаются в зависимости от того, где находится текущая точка х ( q ). Принципиально возможны две ситуации.

1°. Точка х ( q ) лежит внутри области D, т. е. для всех i Î 1: m gi (х ( q )) < 0 (см. рис. 2.4). Очевидно, что для внутренней точки любое направление будет допустимым (при выборе достаточно малого шага), поэтому естественным представляется движение в сторону «гарантированного» возрастания значения функции, а именно в направлении градиента. Значит, для внутренней точ­ки х ( q ) целесообразно выбрать s ( q ) = f (х ( q )).

Шаговый множитель λ q выбирается так, чтобы, с одной сто­роны, новая точка х ( q +1) принадлежала D, а с другой — значе­ние целевой функции в ней f (х ( q +1)) было как можно большим.

 

 

С этой целью сначала найдем промежуток [0, ] из условия для чего необходимо решить систе­му неравенств:

 

 

Зная промежуток [0, ], определяем значение шагового множителя λ q из условия максимизации значения функции в направлении s(q):

 

 

Вновь найденная точка x ( q +1) может находиться или внутри области D, или на ее границе. В первом случае (на рис. 2.4 ему соответствует точка ( q +1) переходим к началу данного пункта и повторяем вышеописанные действия, а во втором (точка ( q +1) на рис. 2.4) — действуем по рассматриваемой далее схеме.

2°. Точка x (q) находится на границе области (см. рис. 2.5). Это означает, что одно или несколько неравенств из системы ог­раничений задачи (2.16) выполняются как строгие равенства: gi (x ( q )) = 0. Например, на рис. 2.5 и g 1(x ( q )) = 0 и g 3(x ( q )) = 0.

Ограничение, которое в текущей точке выполняется как ра­венство, называют активным. Множество номеров активных ограничений в точке x ( q ) будем обозначать как I (x ( q )). В приме­ре, изображенном на рис. 2.5, I (x ( q )) = {1, 3}. Также из рисунка видно, что все допустимые направления, исходящие из точки x ( q ), должны образовывать тупые углы с векторами градиентов фун­кций, задающих активные ограничения в данной точке. По­следнее условие может быть выражено через задание ограниче­ний на значения скалярных произведений вектора направления s на градиенты функции ограничений:

 

 

где Iл — множество номеров индексов линейных ограничений, Iн — множество номеров индексов нелинейных ограничений. Со­ответственно, I (x ( q ))◠ Iл —номера линейных активных ограни­чений, а I (x ( q ))◠ Iн — номера нелинейных активных ограниче­ний. Отличие условий (2.20) от условий (2.21) заключается в том, что в случае линейного ограничения направление, образу­ющее прямой угол с градиентом ограничивающей функции (т. е. их скалярное произведение равно нулю), будет заведомо допустимым, а в случае нелинейного ограничения — возможно, нет.

Все возможные направления в точке x ( q ) образуют так назы­ваемый конус допустимых направлений, и из них для следующего перехода, очевидно, нужно выбрать прогрессивное. Если такового не существует, то согласно сформулированному выше критерию точка x ( q ) является оптимальной! Для ускорения мак­симизации функции желательно, чтобы угол между искомым допустимым прогрессивным направлением s ( q ) и градиентом це­левой функции ∇ f (x ( q )) был как можно меньше или, что то же самое, как можно большей была бы проекция s на ∇ f (x ( q )) (при условиях нормировки вектора s ( q )). Иными словами, желатель­но, чтобы неравенство s ( q )f (x ( q ))+σ≥0 выполнялось при ми­нимально возможном σ ∈ R. Тогда задачу отыскания наилучше­го допустимого прогрессивного направления s ( q ) можно свести к задаче минимизации параметра σ:

 

 

при условиях

 

 

где s 12 +s 22 +...+sn 2, ≤ l —условие нормировки, обеспечивающее ограниченность решения;

τ — некоторое достаточно малое число, характеризую­щее «строгость» выполнения неравенств.

В отличие от всех остальных, последнее условие в системе (2.23) является нелинейным, что существенно усложняет про­цесс решения задачи (2.22)-(2.23). Поэтому на практике для определения направления s ( q ) (возможно, не лучшего) перехо­дят от данной задачи к задаче линейного программирования пу­тем замены указанных выше условий нормировки на ограниче­ния вида –l ≤ sj, ≤ 1:

 

 

После того как прогрессивное направление s ( q ) найдено, ша­говый множитель определяется по методу, описанному в п. 1°.

В заключение отметим, что при практических расчетах алго­ритм завершается при достижении такой точки х *, в которой |∇ f (x *)|<ε, где ε —достаточно малое число.

Представляется полезным обратить внимание читателя и на то, что применяемый для решения задач линейного програм­мирования симплекс-метод может быть рассмотрен как част­ный случай метода допустимых направлений. В частности, этап выбора столбца, вводимого в очередной базис, соответ­ствует определению допустимого прогрессивного направле­ния. Более подробно о такой концепции симплекс-метода можно прочесть в [1].

2.1.6. Пример решения ЗНП методом допустимых на­правлений. Рассмотрим процесс применения метода допусти­мых направлений на конкретном примере. Пусть дана ЗНП:

 

 

Итерация 1. В качестве начального приближения возьмем точку х (1) = (0,0). Нетрудно заметить, что она удовлетворяет системе неравенств (2.27), т. е. х (1)D. Для х (1) все неравенства выполняются как строгие, т. е. множество индексов активных ограничений I (х (1)) = ∅. Следовательно, в х (1) любое направле­ние является допустимым, и нам остается определить, с каким шагом λ1 можно двигаться вдоль градиента целевой функции s (1) = ∇ f (x (1))=(1, 1). Система неравенств типа (2.18), из решения которых определяется интервал допустимых значений для λ, для данной задачи примет вид:

 

Тогда

 

достигается при λ1 = 3. Отсюда получаем следующую точку

 

 

Итерация 2. Путем подстановки координат точки x (2) в (2.27) определим множество активных ограничений в точке x (2): I (x (2))={2}. Соответственно, задача (2.24) - (2.25), кото­рую требуется решить для определения допустимого прогрес­сивного направления s (2) с учетом того, что ∇ f (x (2))=(1, 1) и ∇ g 2(x (2))= (0, 1) примет вид:

 

В данном случае оптимальный план ЗЛП находится доволь­но просто и равен (σ, s 1, s 2)* =(-1, 1, 0). Отбросив дополнитель­ную переменную σ, получаем вектор s (2) = (1,0), т. е. очередная точка будет определяться как

 

 

Действуя по аналогии с предыдущей итерацией, для опреде­ления промежутка допустимых значений шагового множителя λ составляем систему неравенств (2.18):

 

 

Окончательно имеем λ ∈ [0; 1].

Тогда

 

 

достигается при λ2=1. Отсюда получаем следующую точку x (3) = (3,4).

Итерация 3. В точке x (3) множество активных ограничений будет иметь вид I (x (3))={1,2}. Найдем значения градиентов: ∇ f (x (3)) = (1, 1), ∇ g 1(x (3)) = (2 x 1(3), 2 x 2(3)) = (8, 6) и ∇ g 2(x (2)) = (0,1).

Задача определения допустимого прогрессивного направле­ния (2.24)-(2.25) будет иметь вид:

 

 

Значение τ из практических соображении следует брать до­статочно малым, например τ = 0,001. Опуская решение данной задачи, приведем интересующие нас компоненты ее оптималь­ного плана: s (3) = (0,0). Итак, не существует прогрессивного на­правления, исходящего из точки х (3) Таким образом, оптималь­ный план рассматриваемой задачи (2.26)-(2.27) х * = (4,3), а максимальное значение целевой функции f * = х 1(3) + х 2(3) = 7.

Графическая иллюстрация проведенного процесса решения представлена графически на рис. 2.6.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: