Серия «Математика»
2011. Т. 4, № 2. С. 91-101
Онлайн-доступ к журналу: http://isu.ru/izvestia
УДК 519.85
__ о о
некоторых алгоритмах погружении - отсечении для задачи математического программирования
И. Я. Заботин
Казанский (Приволжский) федеральный университет
Аннотация. Предлагается общая процедура условной минимизации непрерывных функций, использующая операцию частичного погружения допустимого множества. Доказывается ее сходимость. Описываются реализации процедуры, допускающие возможность параллельных вычислений.
Ключевые слова: нелинейное программирование, алгоритм, сходимость, погружение, отсечение, параллельные вычисления.
Предлагается общая процедура решения задачи математического программирования, которая использует идею, заложенную в некоторых методах погружений - отсечений В. П. Булатова [1] для задачи выпуклого программирования. Указанная идея заключается в последовательной замене допустимого множества исходной задачи некоторыми аппроксимирующими его выпуклыми множествами более простой структуры, каждое из которых строится на основе предыдущего путем отсечения от него некоторого подмножества.
Предлагаемая процедура отличается от упомянутых методов тем, что применима для более общих задач, имеет более широкие возможности при построении как начального, так и последующих аппроксимирующих множеств, допускает значительный произвол в выборе итерационных точек и др. Кроме того, процедура позволяет строить алгоритмы, в которых на каждом шаге допускается распараллеливание процесса отыскания очередного приближения. Показано, что в частном случае эта процедура дает возможность оценивать близость значения целевой функции в каждой итерационной точке к оптимальному значению, и это делает ее удобной при решении вспомогательных задач построения
1. Введение
направлений спуска в некоторых методах нелинейного программирования.
где G = G' р| G", G' = П Gj, множества Gj, j € J = {1, ...,m}, и G"
из n-мерного евклидова пространства Rn выпуклы и замкнуты, внутренность int Gj множества Gj для каждого j € J непуста, а g(x) -непрерывная достигающая на G своего минимального значения функция. Сразу подчеркнем, что внутренность множества G может быть пустой, причем как за счет пустоты int G", так и за счет пустоты int G'.
Пусть д* = шш{д(х) | х € G}, У * = {х € С : д(х) = д*}, Ш (х, Gj) = (а € Еп : (а, г — х) < 0 Уг € Gj•} - конус обобщенно-опорных векторов для множества Gj в точке х € Яп, Ш 1(х, Gj) = (а € Кп : а € Ш(х, Gj•), ||а|| = 1}, Е(д, 7) = (х € Яп : д(х) < 7}, 7 € Яь I = (0,1,...}.
Предлагаемая для решения задачи (2.1) процедура вырабатывает последовательность приближений yi, i € I, и заключается в следующем.
Процедура п = n(g(x), G). Строится выпуклое замкнутое множество Mo С Rn, содержащее хотя бы одну точку множества Y*. Выбираются точки yj € int Gj для всех j € J, задается число q € [1, +го), находится точка y0 € M0 fl G'' f| E(g,g*), полагается i = 0.
1. Формируется множество
2. Постановка задачи
Решается задача
min {g(x) | x Є G},
(2.1)
jeJ
3. Общая процедура решения задачи
Ji — {j Є J : ^ Gj}.
Если
Ji — 0,
(3.1)
то процесс заканчивается.
2. Для каждого j € Ji в интервале (yj ,yi) выбирается точка zj / int Gj так, чтобы существовала точка yj € Gj, удовлетворяющая неравенству
(3.2)
Для всех ,?' € 3 \ 3% полагается = У = у%.
3. Отыскивается номер ^ € 3%, удовлетворяющий условию
(3.3)
4. Выбирается подмножество Н% С 3% так, чтобы выполнялось включение
]г € Н%.
Для каждого ] € Н% выбирается конечное множество а' С Ш , Gj)
и полагается
М%+1 = М% П (х € Дп : (а, х — г/) < 0 Уа € А'}. (3.4)
j^Hi
5. Отыскивается очередное приближение
у%+1 €М%+1 П G// П Е (д,д*), (3.5)
и следует переход к п. 1 при г, увеличенном на единицу.
Покажем, что выбор точки уо и точек у%+1, г € I, из условия (3.5)
возможен. Действительно, по условию множество Мо содержит хотя бы одну точку у* € У *. Тогда согласно (3.4) у* € М% Уг € I .В то же время у* € G, а значит, у* € G//, и, кроме того, у* € Е(д,д*). Следовательно,
М% П ^ П Е(д,д*) = 0 Уг € I,
и утверждение доказано.
Если при некотором г € I выполняется (3.1), то уг € G/ р| G// р| Е(д, д*), а значит, уг € У*, и процесс завершается.
Отметим, что в множество Н% кроме номера можно включать любые другие номера ] € 3% или не включать более ни одного. В частности, для всех г € I можно положить
Н% = 3%. (3.6)
В таком случае нет необходимости в шаге 3 процедуры, где отыскивается номер согласно (3.3). Близкая к п процедура с выбором Н% в виде (3.6) была предложена автором в [3] для задачи (2.1) с условием, что G" = Дп. Ниже будет описана реализация процедуры, в которой
Н% = Ш (3.7)
для всех г € I.
Если в (2.1) G// = Дп, G1 = ... = Gm = G' = G, гП G = 0, а
функция д(х) выпукла, то для такой задачи процедура п, в которой
у1 = ... = ут = у и у € гП G, близка к методу опорных множеств,
построенному в [1] для задачи выпуклого программирования.
В процедуре п можно положить, например, М0 = П Gj, где 3' С
jeJ'
3, в частности, М0 = G1, если 3' = (1}, 1 € 3. Такой способ выбора
множества Mo удобен, например, когда р| Gj - выпуклый многогран-
jeJ'
ник, а множество G задано системой линейных равенств или неравенств. Так как yi € Mi С Mo Vi € I, то в множествах Ji при всех i € I будут отсутствовать индексы из J', и точки yj € int Gj, j € J', ни на одной итерации процедуры не понадобятся. В этом случае нет необходимости в задании точек yj, j € J'. Кроме того, отметим, что при достижении функцией g(x) в Rn своего минимального значения можно положить
Mo = Rn, yo = arg min {g(x) | x € Rn}.
Если int G = 0 и известна точка y € int G, то в п удобно задать yj = y Vj J.
Сделаем также замечание относительно выбора в процедуре точек zj, на основе которых строятся отсекающие множества. Точка zj, j € Ji, находится из довольно общего условия (3.2), согласно которому нет необходимости искать zj как точку пересечения отрезка [yj, yi] с границей множества Gj. Для проверки условия (3.2) не требуется находить и точку yj. Выполнение этого условия для zj можно проверить, например, следующим образом. Если yi + q(zj — yi) € Gj, или, если yi + q(zj — yi) / Gj, но ||yi — yjУ < q||yi — zj||, то неравенство (3.2) для zj выполняется.
Если точки yi, i € I, выбирать из условия
g(yi) = min {g(x) | x € Mi Q G''}, (3.8)
то требуемое в процедуре включение
yi € Mi П G'' П E(g,g*) (3.9)
выполняется при всех i € I. Условие (3.9) позволяет, во-первых, решать задачу минимизации g(x) на множестве Mi G приближенно. Во-вторых, как будет показано ниже, оно дает возможность на каждой итерации процедуры распараллелить процесс отыскания очередного приближения yi+i.
4. Реализации общей процедуры
В качестве одной из реализаций процедуры п, допускающих распараллеливание вычислительного процесса, предлагается следующая
Процедура ni = ni(g(x), G). Согласно процедуре п выбирается множество Mo, число q и точки yj, j € J, и yo. Полагается i = 0.
1. Формируется множество Ji = {j € J : yi / Gj}. Если выполняется (3.1), то процесс заканчивается.
2. Для каждого і Є 3 в интервале (у7, уі) выбирается точка г/ / ті С/ так, чтобы существовала точка у/ Є С/, удовлетворяющая неравенству (3.2), а для всех і Є 3 \ 3 считается, что ¿7 = у/ = у^
3. Для каждого і Є Зі выбирается конечное множество
А7 с Ш 1(г7, С7-), полагается 07 = (жЄЙп : (а, ж — ) < 0 Уа Є А7},
м/ = Мі П 07',
и находится точка
и/ ЄМ/П а"Г№я*). (4.1)
4. Отыскивается номер і Є Зі из условия (3.3) и полагается
Мг+1 = М/.
5. Определяется множество
3 = {і Є Зі : «7 Є Мі+1},
и произвольно выбирается номер 1і Є Зі. Полагается
к
Уі+1 = «і*,
значение і увеличивается на единицу, и следует переход к п. 1.
Сразу отметим, что Зі = 0 для всех і Є /, т. к. согласно включению и/4 Є М/ в множестве 3 содержится, по крайней мере, номер і.
Покажем теперь, что процедура п1 является реализацией процедуры п с условием (3.7). Действительно, пусть в п для всех і Є I множество Н выбирается в виде (3.7). Так как в процедуре п1
Мі+1 = Мі П{ж Є Ли : (а, ж — 7) < 0 Уа Є А7},
то для Мі+1 выполняется равенство (3.4). Далее, и^ Є Мі+1, и, кроме того, согласно (4.1) справедливо включение и^ Є С/;ПЕ($,$*). Следовательно, для точки уі+1 = и^ выполняется условие (3.5), и утверждение доказано.
Подчеркнем, что в п. 5 процедуры п1 не конкретизирован способ выбора номера и Є 3|. Выбирать этот номер, а значит, и точку уі+1 допустимо разными способами. Например, можно положить
Ь = іі,
тем самым 1і совпадет с номером "самого глубокого"отсечения. Можно выбрать 1і удовлетворяющим условию
£(иІ) > £(и/)
или условию
НУ* - У II = тах НУ - у||. (4.2)
,?е^
Заметим, что задачи отыскания точек 27 на шаге 2, а затем и точек У приближенного минимума функции д(ж) на шаге 3 процедуры п можно решать для всех ] € 3 одновременно. Таким образом, процедура П1 действительно допускает возможность распараллеливания вычислительного процесса.
Приведем еще одну реализацию процедуры п, также позволяющую за счет условия (3.9) распараллеливать процесс решения задачи на этапе отыскания точки У+1.
Процедура п2 = п2(§(х), С). Согласно процедуре п выбирается множество Мо, число д и точки у7, ] € 3, и уо. Полагается г = 0.
Пункты 1-4 данной процедуры совпадают, соответственно, с пунктами 1-4 исходной процедуры п.
5. Находится точка
"0 €Мг+1 П О" П Е(д,д*).
6. Для каждого ] € \ Н выбирается конечное множество А7 С
Ш 1(2;7, О), полагается О = {ж € : (а, ж — ) < 0 Уа € А7} и
находится точка
" €Мг+1 П 07 П О п Е (д,д*).
7. Выбирается номер € (3г \ Нг) и{0}, полагается уг+1 = , значение г увеличивается на единицу, и следует переход к п. 1.
Нетрудно видеть, что приближение Уг+1 находится здесь согласно требованию (3.5), а значит, процедура п2 действительно является реализацией процедуры п.
Отметим, что если в П2 множество Н выбирается в виде (3.6), то \ Н = 0 и ^¿+1 = и0. Если же \= 0, то номер в п2 можно выбирать разными способами, например, из условия (4.2), где = (3г \ Н) и{0}.
Наряду с алгоритмами п1 , п2 можно привести примеры и других реализаций процедуры п, позволяющих за счет условия (3.9) распараллеливать процесс решения задачи.
5. Исследование сходимости процедур
Исследуем теперь сходимость процедуры п. Тем самым будет исследована сходимость и ее алгоритмов п1, п2.
Пусть и С Д^. Обозначим через ^гш и размерность множества и, а через а// и и гг и, соответственно - его аффинную оболочку и относительную внутренность.
Лемма 1. Пусть множество U С R, выпукло, dim U = и', 1 < и' <
и, L - несущее подпространство множества U. Пусть u € ri U, множество Q С а// U ограничено, Q С ri U. Тогда найдется такое число ö > 0, что для всех z € Q \ ri U и всех а € Lp| W 1(z, U) выполняется неравенство (а, u — z) < —ö.
Доказательство. Допустим, что утверждение леммы неверно. Выберем такую числовую последовательность {ö^},1 € I, что öi > 0 VZ € I, и öi ^ 0,1 ^ то. Тогда по предположению для каждого числа öi найдутся такие Zi € Q \ ri U и а^ € Lp| W 1(z1, U), что
(ai, u — zi) > —öi.
Выделим из ограниченных последовательностей {z^} и {а^} сходящиеся подпоследовательности {z^fc} и {a^fc}, k € I. Пусть, соответственно, z и a - их предельные точки. Так как (a^fc, ж — z^) < 0 Vx € U, то, переходя в этом неравенстве к пределу по k ^ то, получим
(а, ж — z) < 0 Vx € U. (5.1)
Перейдем теперь в неравенствах 0 > (а^к ,u — z^) > —ö^fc к пределу по k ^ то. Тогда (а, u — z) = 0, причем, ||а|| = 0. Заметим, что в несущем подпространстве L найдется хотя бы одна точка ж, для которой (а, ж) = 0, поскольку в противном случае вектор а принадлежал бы ортогональному дополнению подпространства L , что невозможно в силу выбора векторов а^ € L V1 € I. Таким образом, с учетом равенства а// U = u + L и включения u € ri U можно выбрать вектор s € L так, что (а, s) = 0 и при этом u + s € U и u — s € U. Тогда согласно (5.1) (а, u + s) < (ä,z) и (а, u — s) < (а, z). Отсюда с учетом, что (а, u) = (ä,z), следует равенство (а, s) = 0, противоречащее выбору вектора s. Лемма доказана. □
Лемма 2. Пусть последовательность {у»}, i € I, построена процедурой п, и {у»}, i € I С I, - ее сходящаяся подпоследовательность. Пусть номер 1 € J таков, что множество
I = {i € / : 1 € Я»}
состоит из бесконечного числа элементов. Тогда справедливо равенство
lim ||z» — у»|| = 0. (5.2)
ieii
Доказательство. Отметим, что для всех i € I и j € J
zj = У» + Yj (yj — У»), (5.3)
где € [0,1), причем Y» > 0 Vi € Ii согласно выбору множеств Я» в
процедуре.
Для произвольного i € / зафиксируем номер pi € / такой, что pi > i. Поскольку Mpi С Mi, ypi € Mpi, а любой элемент множества Ai является обобщенно-опорным для множества Mpi в точке zi, то (а, ypi — zi) < 0 Va € Ai. Отсюда с учетом равенства (5.3) при j = l для всех a € Ai имеем
(a,yi — Ур4) > Yi(a,yi — У1).
По лемме 1 найдется такое число ¿г > 0, что (a, yi — у1) > ¿г Vi € /г, а € Ai. Следовательно, (a, yi — ypi) > Yi ¿г Va € Ai, а поскольку ||a|| = 1 Va € Ai, то
||у* — ypi || > Yi¿1 Vi,pi €/i, Pi >i. (5.4)
Так как по условию последовательность {yi}, i € /г, является сходящейся, то согласно (5.4) Yi ^ 0, i ^ то, i € /г. Поэтому из (5.3) при j = l с учетом ограниченности величин Ну1 — yi||, i € /г, следует (5.2). Лемма доказана. □
Лемма 3. Пусть последовательность {yi}, i € /, построенная процедурой п, ограничена. Тогда любая предельная точка этой последовательности принадлежит множеству G.
Доказательство. Пусть {yi}, i € /; С /, - любая сходящаяся подпоследовательность последовательности {yi}, i € /, и y - ее предельная точка. Покажем, что
y € G, (5.5)
тогда утверждение леммы будет доказано.
Пусть индекс l € J такой, что номер ji, вычисляющийся на шаге 3 процедуры п, совпадает с l для бесконечного числа номеров i € /;. Положим
/г = {i € /' : ji = l}.
Отметим, что последовательности {yi}, i € /г, при каждом j € J соответствуют последовательности {zj}, {yj}, i € /г, причем, по предыдущей лемме для {zi}, i € /г, справедливо (5.2). В силу условия (3.3) выбора номера ji = l при каждом i /l выполняется неравенство
||zi — yi|| > ||zj — yi| Vj € J.
Отсюда с учетом (5.2)
lim ||zj — yi| =0 Vj € J. (5.6)
i€l;
Согласно п. 2 процедуры п для каждого i € / и j € J точка yj либо совпадает с yi, либо удовлетворяет неравенству (3.2). Так как последовательность {yi}, i € /г, ограничена, то отсюда с учетом (5.3) следует
ограниченность последовательностей {yj}, i € /г, для всех j € J. Выделим теперь для каждого j € J из последовательности {yj}, i € /, сходящуюся подпоследовательность {yj}, i € /j С /г, и пусть Uj - ее предельная точка. Заметим, что
Uj € G j V j € J
в силу замкнутости множеств Gj. Положим для каждого j € J
Pj = {i€/j : j€ Ji}, Pj = /j \ Pj.
Хотя бы одно из множеств Pj или Pj для каждого j € J состоит из бесконечного числа номеров. Перейдем теперь при каждом фиксированном j € J к пределу в неравенствах (3.2) по i ^ то, i € Pj, с учетом (5.6), если множество Pj бесконечно, или в равенствах yj = yi по i ^ то, i € P2, если P| бесконечно. Тогда получим равенства y = Uj Vj € J, из которых следует включение (5.5). Лемма доказана. □
Теорема 1. Пусть последовательность {yi}, i € /, построена процедурой п и является ограниченной. Тогда любая ее предельная точка принадлежит множеству Y*, а если при этом для всех i € / выполняется (3.8), то вся последовательность {yi}, i € /, сходится к множеству Y*.
Доказательство. Пусть {yi}, i € /1 С /, - любая сходящаяся подпоследовательность последовательности {yi}, i € /, и y - ее предельная точка. По лемме 3 справедливо включение (5.5), а значит, g(y) > g*. С другой стороны, по построению g(yi) < g* для всех i € /, и потому
limg(yi) = g(y) < g*. Таким образом, g(y) = g*, и первое утверждение ie/i
теоремы доказано.
Пусть теперь для всех i € / точки yi удовлетворяют условию (3.8). Поскольку Mi+1 С Mi, i € /, то g(yi+1) > g(yi), i € /. Поэтому с учетом ограниченности {yi}, i € /, последовательность {g(yi)}, i € /, сходится. Тогда в силу уже доказанного первого утверждения последовательность {g(yi)}, i € /, является минимизирующей, и по теореме ([2], с. 74) второе утверждение теоремы тоже доказано. □
6. Применение процедур
Покажем сначала, что процедуру п можно использовать в частном случае для минимизации функции д(х) на множестве С с заданной точностью.
Пусть в (2.1) множество ■] состоит только из одного индекса, например, 2, и при построении последовательности приближений уг, г € I,
на всех итерациях отыскиваются точки yj € Gj. Поскольку g(yi) < g* < g(yj), i € /, то из леммы 2 и неравенства (3.2) легко следует существование номера i = io, для которого выполнится соотношение
g(yj0) — g(yio) < е (6.1)
а значит, и неравенство g(yjo) < g* + в при некотором заданном е > 0. Отметим, что при этом неравенство (6.1) может служить критерием остановки работы алгоритма.
Сделанное замечание полезно при использовании процедуры в практических расчетах. В частности, оно позволяет использовать процедуру n(g(x), G), а значит, и ее реализации п1, п2 для приближенного решения вспомогательных задач вида (2.1) построения направлений итерационного перехода в некоторых методах условной минимизации с линейными и выпуклыми квадратичными вспомогательными функциями g(x). Подтвердим сказанное на следующем примере.
Пусть решается задача
min {/(ж) | ж € D}, (6.2)
где /(ж) - выпуклая непрерывно дифференцируемая в Rn функция, D = D'p|D'', множества D',D'' С R, выпуклы и замкнуты, причем множество D' задано нелинейными неравенствами, является ограниченным и int D' = 0, а множество D'' задано линейными неравенствами или равенствами.
Пусть для решения задачи (6.2) применяется метод условного градиента, и на к - ом шаге метода направление спуска Sfc = xfc — ж^ в точке Xfc € D находится из условия ([2], сс. 291, 292)
(/'(xfc),Xfc) = min (/'(xfc), ж) + efc,
где /'(xfc) - градиент функции /(ж) в точке ж^, а е^ > 0.
Для отыскания точки xfc € D, как для решения задачи (2.1) с фиксированной точностью е = е^, можно применить процедуру п((/'(ж&),ж),
D) или любую из ее реализаций п1 ((/'(xk), ж), D), п2((/'(xk), ж), D). При этом следует считать, что G = D , множество J состоит из одного индекса j, G' = Gj = D', g(x) = (/'(xk),ж), yj = y € int D'. Множество Mo удобно выбрать выпуклым многогранником, содержащем D , а точки yi искать путем решения задач линейного программирования в виде (3.8), где G'' = D''. Как уже показано выше, на некотором шаге i = io процедурой будет получена точка yj € D, удовлетворяющая неравенству (6.1), где g(x) = (/'(xfc),ж), е = efc. Тогда ее можно принять за искомую точку xfc.
Аналогичные замечания по применению предложенных процедур можно сделать и относительно других методов математического программирования, в которых при отыскании направлений перехода Sfc
приближенно решаются задачи условной минимизации некоторых вспомогательных функций (см, напр., [2], сс. 277 - 279, или [4]).
Список литературы
1. Булатов В. П. Методы погружения в задачах оптимизации / В. П. Булатов. -Новосибирск : Наука, 1977. - 158 с.
2. Васильев Ф. П. Численные методы решения экстремальных задач / Ф. П. Васильев. - М. : Наука, 1988. - 552 с.
3. Заботин И. Я. Одна общая схема решения задачи математического программирования и ее использование в алгоритмах минимизации псевдовыпуклых функций / И. Я. Заботин // Сеточные методы для краевых задач и приложения : материалы Шестого всерос. семинара. - Казань : Казан. гос. ун-т, 2005.
- С. 83-86.
4. Заботин И. Я. Релаксационные алгоритмы условной минимизации негладких строго псевдовыпуклых функций / И. Я. Заботин // Изв. вузов. Математика.
- 2003. - № 12. - С. 62-70.
I. Ya. Zabotin
On the several algorithms of immersion - severances for the problem of mathematical programming
Abstract. General procedure of conditional minimization of continuous functions using operation of partial immersion of feasible set is proposed. Its convergence is proved. Realizations of procedure, assuming the probability of parallel calculations are described.
Keywords: nonlinear programming, algorithm, convergence, immersion, severance, parallel calculations
Заботин Игорь Ярославич, доктор физико-математических наук, доцент, кафедра экономической кибернетики, Казанский (Приволжский) федеральный университет, 420008, Казань, ул. Кремлевская, 18, тел.: (843) 2315453 ([email protected])
Igor Zabotin, Kazan (Volga region) federal university, 18, Kremlyovskaya St., Kazan, 420008, associate professor, phone: (843) 2315453 ([email protected] )