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




Согласно методу наискорейшего спуска, поиск оптимального решения начинается с допустимого решения и продолжается в направлении век­тор -градиента целевой функции до тех пор, пока не будет достигнута точка границы допустимой области. В этой точке направление поиска меняется в соответствии с определенными правилами. Исходное движение в направлении век­тор - градиента F обосновано тем, что в этом направлении увеличение F происходит в наибольшей степени.

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

F(x1, x2,…, xn) = c1x1 + c2x2 +…+ cnxn (101)

при линейных ограничениях

а11х1 + а12х2 + … + а1nхn = b1,

а21х1 + а22х2 + … + а2nхn = b2,

…………………………………

аm1х1 + аm2х2 + … + аmnхn = bm, (102)

где сj, аij, bi – константы.

Предполагается, что в ограничениях (102) могут быть как ограни­чения- равенства, так и ограничения-неравенства со знаками ≥ или ≤. В этом случае ограничения-неравенства со знаками ≥ необходимо преобразовывают к виду неравенств со знаком ≤, умножая обе части ограничений на —1. Ограни­чения-равенства, если они есть, остаются без изменений.

Предположим, что вектор {x0} = {x1,0, x2,0, …, xn,0} является до­пустимым решением и не лежит на границе области допустимых решений. Лучшее решение { x 1 } при F1 > F0 получается по формуле

{x1} = { x0} + λ {d0}, (103)

где λ — длина шага, 0 ≤ λ ≤ ε.

Вектор столбец {d0} есть вектор, транспонированный к вектору-градиенту f ( x0 ), определяемому выражением

f ( x ) = [∂f/∂x1, ∂f/∂x2, …, ∂f/∂xn] (104)

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

f ( x ) = [c1, c2, …, cn] (105)

и {d0} = { c1, c2, …, cn} (106)

Элементы вектора {x1} лучше всего выбрать при максимально воз­можном значении λ так, чтобы вектор {x1} остался внутри допустимой области. Таким образом, выбранная величина ограничена двумя фак­торами.

Во-первых, с увеличением λ одна или несколько переменных xj ,1могут уменьшиться до нуля. Далее, поскольку условие неотрица­тельности xj ,1задано неравенством xj,1 = xj ,0 + λdj ,00, то для каждого dj ,0 < 0 значение λ ограничено величиной — xj ,0 / dj,0. Для dj ,0 = 0 значение λ становится бесконечно большой величиной, тогда как для положительных dj,0 λ становится отрицательным и потому неприемлемо. По этой причине значение λ ограничено сверху величи­ной λ1 заданной соотношением

λ1 = min [– xj,0 / dj,0], (107)

в котором рассматриваются лишь положительные xj,0 и отрицатель­ные d j,0. Уравнение (107) дает наибольшее значение λ, при котором ни одно из положительных xj не превращается в отрицательное.

Во-вторых, при увеличении λ можно достигнуть одной или нес­кольких границ допустимой области. Каждое некритическое огра­ничение получается умножением 1-й строки [ a i] матрицы A на век­тор нового решения { x i}. Это решение допустимо, если [ai] ( {x0} + λ {d0} ) ≤ bi. Отсюда следует, что для каждого некритического ограничения значение λ ограничено величиной ( bi[ ai] {x0} ) / ([ ai] {d0} ) при условии, что [ a i] { d0 } есть положительное число.

Таким обра­зом, λ ограничено также величиной λ2, которая задана соотношением

λ2 = min (bi[ ai] { x0} ) / ([ ai] {d0} ) , (108)

в котором рассмотрены лишь положительные [ a i] { d0 } и некрити­ческие неравенства.

Если λ > λ1, то некоторые переменные станут отрицательными, а если

λ > λ2, то перестанут выполняться некоторые ограничения. Поэтому за длину шага принимают наименьшее из двух чисел λ1 и λ2. В случае линейной целевой функции λ равна верхнему пределу ε.

По достижении границы значение Fможно улучшить, лишь изме­нив направление поиска. Если двигаться от точки {xv} в направле­нии {r}, то скорость изменения F равна f(x {r}, где { r } имеет длину, равную единице, т. е. [r] {r} = 1. Так как при достижении границы одна из переменных xjv обращается в нуль, то, для того чтобы не вый­ти из допустимой области, rj и λ следует выбрать таким образом, чтобы новые значения xj удовлетворяли условиям

xj = xjv + λ rj0, (109)

но поскольку xjv = 0 и λ > 0, то отсюда следует, что rj ≥ 0.

С другой стороны, в случае, когда при {x} = {xv} достигается граница, определяемая i-м ограничением, то [ai] {xv} = bi. Чтобы не выйти из допустимой области, {r} и λ следует выбрать так, чтобы новое значение {x} удовлетворяло условию

[ai] {x} = [ ai] ({ xv} + λ {r} )bi (110)

Но так как [ai] ({ xv} = bi,то для λ > 0 [ai] {r} ≤ 0. В случае ограничения-равенства [ai] {r} = 0.

Наилучшее направление, удовлетворяющее вышеприведенным ус­ловиям, есть направление, в котором максимальна скорость изменения F, т. е. его можно получить, решая следующую задачу линейного программирования, если выбрать {r} так, чтобы для переменных xjv = 0 выполнялось условие 0 ≤ r j 1, а для других, отличных от нуля переменных r j0, принимало значение -1 ≤ r j 1.

Необходимо максимизировать скорость изменения F при {x} = {xv}

= f ( x v) { r} (111)

при ограничениях

[ai] {r} {≤, =} 0,

0 ≤ r j 1 для xjv = 0

-1 ≤ r j 1 для xjv > 0 (112)

В результате выбираем не самый лучший, но допустимый вектор {r}.
Найдя {r}, по наименьшему из λ1 и λ2, заданным формулами (107)
и (108), снова получаем значение λ. Когда f( x v) { r} отрицательно,
процесс завершается, это означает, что найдено оптимальное значение­
Необходимо отметить, что в случае линейных ограничений вектор { r } выбирается таким образом, чтобы поиск продолжался вдоль гра­ницы критического ограничения.

Этот метод можно проиллюст­рировать следующей диаграммой (рис. 10). Поиск решения можно начать с допустимой точки, например a, в направлении вектор - градиента ab, ортогонального к линии постоянного значе-

ния целевой функции F 0 в точке а. Точка b является границей допустимой области, в которой целевая функция F имеет значение F 1большее, чем F 0 Легко видеть, что любое движение в том же направлений от точки а неосуществимо, и потому выбираем новое направление поиска. Это направление выби­рается вдоль линии bc на одной из границ, определяе -

мой ограничениями допустимой области. Это направление снова меняется на направление cd, пока, наконец, в точке d достигается максимальное значение целевой функции.

Рис. 10. Метод наискорейшего спуска




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: