Fedorenko-RP-Vvedenie-v-vychislitelnuyu-fiziku (810773), страница 91
Текст из файла (страница 91)
0 1 2 3 4 9 !О !! !9 20 21 24 25 26 30 3! 32 ЗЗ 41 42 43 51 52 6! 65 2400. 2380. 2384. 2371. 2355. ! 757.6 !67!.2 1602. 3 829.3 704.0 557.48 ! 08.90 Зб. 29522 35.51306 32,62674 32. 4241 6 32.07438 32.45504 32.36572 32.36345 32.35725 32.349! 6 32.34894 32.34879 32.34869 48 43 44 32 35 7.2 3 З.з 7.4 5 2.4 5 1.2 3.4 0.06 0.6 0.9 О. Гг 0.01 6Š— 3 4Š— 4 2Š— 5 4Š— 5 1Е-6 !Š— 7 ! 0.19 0.14 О.! 7 0.2! 24.0 !.7 0.99 1.1 1.3 1.5 ! !.2 0.3 0.18 0.15 0.15 0.6 0.07 0.0! 7 0.017 5Š— 3 4Š— 3 9Š— 4 6Š— 4 0.7 0.4 0.14 0.19 0.13 0 0 0 0 0 0 0 0 О 0 0 0 0 0 0 0 0 0 0 0 — Э!.3 — 3.3 — !5,8 — 17.5 — 25.5 — 86.6 — 74.1 — 98,З вЂ” 135.7 — !50.6 — 186.7 — 74.5 — гл — 2.73 — 0.36 — 0.39 0.35 — 0.084 — 0.0!! — 6.9Š— 3 — 3.8Е-З вЂ” 1.9Е-5 — 83Š— 5 — 6Е-6 — 20.2 4.6 — 1 3.4 — 16.5 — 23.2 — 864 — 68.5 — 92.7 — 125.3 — 146.5 — 180.6 — 72.6 — 2.8 — 1.72 — 0.20 — 0.35 0.38 — 0.044 — 0.002 — 6.2Š— 3 — 3.1Š— 3 — 12Š— 2 — 70Š— 5 — 5Š— б 18 24 30 36 42 96 108 114 168 174 !80 204 2!6 222 246 252 264 282 366 372 378 426 432 5!О 430 игивлвквииые методы вычислительной физики 1ч.
и Задачи негладкой оптимизации. Выше были рассмотрены алгоритмы, ориентированные на гладкие задачи в том смысле, что все функции Ув предполагались достаточно простымн, гладкими. Кстати, что это значит? Ответ не так прост, как может показаться. Мы используем аппроксимацию функций /в(х) линейными илн квадратичными выражениями. ЭФфективность алгоритмов существенно зависит от того, как соотносятся между собой два числа: 5 — расстояние, на котором используемая аппроксимация описывает изменение функций с некоторой (1О /„-ной, допустим) погрешностью, и 4. — расстояние от начального приближения хв до искомой точки минимума х'.
Грубо говоря, число шагов можно ориентировочно оценивать величиной Е/5. Это отношение есть естественная мера гладкости функции. Читателю не должно казаться странным, что эта характеристика функцйи зависит от начального приближения, т.е. от априорной информации о расположении искомой точки х'. Если говорить просто о классе негладких функций, то он включает в себя необозримое множество слишком разных функций. Универсальные алгоритмы поиска минимума таких функций строить можно, но они крайне неэффективны и особого интереса для практики не представляют. К счастью, обычно в практической работе возникают негладкие функции специфического типа, для которых можно разрабатывать специальные достаточно эффективные алгоритмы минимизации.
В частности, одним из наиболее важных источников задач негладкой оптимизации является задача следующего типа (ииогда ее называют чебышевской задачей): шш /в(х), где Ув(х) = — пшх ~'1(х), х Е Ф". (12) х / В задачу могут входить условия (2), н каждая из функций /'(х) может иметь форму (12). Важно подчеркнуть, что каждую из функций /цт мы будем предполагать гладкой в том смысле, который выше мы придали этому термину. Функция ~" (х) вида (12) принадлежит важному классу функций, дифференцируемык лишь по направлениям. О п р е д е л е и и е 2. Функция ~(х) называется диффереици русмой в точке х по направлениям, если для любого направления е ()1е11 = 1) существует предел р( ) у Д*, 3-,~Я2 1 ьв (Здесь в — скалярный параметр, всегда положительный!) Величина .0(х, е) называется производной г в точке х по направлению е. При гладких Ук1 функция (12) почти во всех точках является просто дифференцируемой.
Вычисляегся эта производная очень просто. Пусть |(х) — тот, пока единственный индекс, на котором достигается максимум в (12), т.е. Ув(х) = /в д">(х), н это соотношение (в си- й зб! поиск минимгмл лу непрерывности) остается справедливым в некоторой окрестности точки х. тогда уо(х) дифферснцируема и Р(х, е) = (У~"!ю(х), е). Осложнения возникают в том случае, когда максимум в (12) достигается при двух (и более) индексах. Обозначим множество таких индексов у(х) = агя шах у~'У(х). Вэтом случае у Р(х, е) = шах(уо у(х), е). зеу(х! Конечно, множество точек х, в которых в у(х) входит больше одного индекса, имеет «нулевую меру», но при решении задач минимизации таких функций приходится иметь дело именно с точками из этого множества.
Более того, если у больше размерности х, то типичной является ситуация, когда в точке минимума уо(х) в у(х') входит Ф+ 1 индексов. Для построения минимизирующей последовательности точек х важно уметь находить направление е, вдоль которого у'о(х) убывает. Это направление должно быть направлением убывания для всех функций у'~з (у Е у(х)), т.е. речь идет о выпуклом конусе, образованном пересечением подпространств: (уцу(х), е) < О, / Е у(х). (13) По мере роста числа индексов в у(х) конус (!3) становится все уже.
В общем положении (т.е. если нет каких-то случайных совпадений) этот конус не пуст до тех пор, пока число индексов в /(х) не больше М. Но как только это число станет хотя бы на единицу больше, конус (13) оказывается пустым, Сложность задачи негладкой оптимизации связана со следующим обстоятельством. Когда функция уо(х) является гладкой, перемещение точки х по лучу х(з) = х + зе (где е — скалярный параметр, е— почти любой вектор) приводит к убыванию у(х+ зе), если не при росте з, то при его убывании, В случае функции у"о вида (12) ситуация иная.
Для большинства векторов е такое движение получу сопровождается ростом уо: функция у (х+ зе) аналогична )з!, Исключение составляют лишь векторы конуса (13). Обобщение метода линеариззции на задачи с уз типа (12) проходит почти автоматически: несколько изменяется лишь форма задачи линейного программирования для определения вариации Ьх, а именно, вместо (10) имеем, очевидно, пнп ( шах [уц'у(х) + у~ у(х) Ьх!). (14) ьх уедю Замена (!О) на (14) не создает никаких проблем для хороших программ симплекс-метода. В алгоритме следует пользоваться другим определением множества индексов у(х): у' Е у(х), если у'о у(х) > уо(х) — е. Положитель- пгивлижвнные методы вычислительной физики 1ч. и нос число в должно быть'таким, чтобы прн переходе от точки х к х + Ьх не достигался шах уо У(х + Ьх) при значении /, не входив./ шем в у(х).
В противном случае вариация Ьх может быть выбрана такой, что шах уо 7(х+ Ьх) < Уо(х), но /о(х+ Ьх) > уо(х), и алго/еу(ю ритм не обеспечивает монотонного понижения /о(х). Выбор з особых трудностей не содержит, так как значительное увеличение е часто приводит лишь к включению в 7(х) нескольких лишних индексов, что делает задачу линейного программирования несколько сложнее, чем она могла бы быть, Более трудные задачи (так называемые минимаксные задачи) возникают при определении уо(х) формулой у'о(х) = 1пах уо(х у) (15) уву Здесь существенные сложности связаны с тем, что нужно найти все точки множества у(х) = агй шах 7'о(х, у).
(1б) у Стандартная ситуация в задачах такого типа такова. Имеется множество у'(х), состоящее из всех точек локальных максимумов у о(х, у) по у. Это множество состоит из конечного числа точек. Их число обычно того же порядка, что и размерность х. Мы ограничимся случаем, когда У вЂ” какая-то простая область (шар или прямоугольник, например) .. Часть этих точек входит в множество у(х), и производная по направлению е от функции уо(х) вычисляется просто: 17(х, е) = шах (/о(х, у), е). (17) у(м Формула (17) почти очевидна.
Единственное обстоятельство, требующее анализа, связано со следующим. При изменении х на малую величину ее значение уо(х) изменяется не только за счет изменения значений уо(х, у) на е(д(х, у), е) для у е у(х) (эти изменения учтены в (17) ), но н за счет смещения точек множества у(х). Однако эти смещения изменяют величину у'о(х + се) на о(с), поэтому на первую ' производную они не влияют. Причина здесь та же, что и в теореме 2.
Алгоритм поиска минимума функции /о(х) типа (15) отличается от алгоритма решения задачи (12) (когда У есть конечное множество) тем, что требуется достаточно надежно отслеживать множество у'(х), выбирая из него на каждой итерации подмножество у(х) . Оно используется при формировании задачи типа (14). При переходе от точки х к' близкой точке х + Ьх множество у'(х + Ьх) обычно слегка смеща- поиск мннимумл 433 ется относительно множества у'(х). Однако, в принципе, прн этом мо- гут «рождаться» новые точки множества у'(х) и нужно считаться с тем, что до данного этапа процесса программа работала с неполным множеством у" (х) н значение у» вычислялось неверно.
Проиллюстрируем сказанное выше примером решения следующей задачи (она имеет прикладное происхождение, но мы будем рассмат- ривать задачу как пример): уо(х, у) = ~~ <р(х~у — у') р(х~з — уз), где ь ~р(з) = — ~ екр ~~ — — ~~ уй. 0+ >г~ ~й~ ~ г«у ) 3десьу= (у', у ) е Я~,х= (х,', хЯ, Е Л~;область У вЂ” единичный квадрат.
В рассматриваемом ниже примере У = 1б, Ь = 0,1. Кроме то- го, решалась задача шах пйп /е(х, у). В качестве начального приблик у жения брались точки х е яз, расположенные равномерно на окруж- ности радиусом 0.1 с центром в центре единичного квадрата. Расчет начинался с тою, что при фиксированном х генерирова- лись случайные точки у Е У, каждая из которых была стартовой точкой поиска пнп у~(х, у).
Таким образом формировались множеу ства у'(х) и у(х). После каждого перехода от х к х + Ьх уточнялись положения точек у(х + Ьх). Для этого каждая точка'у Е у'(х) бра- лась в качестве стартовой в процессе поиска шах У~(х + Ьх, у), деу лалось небольшое число шагов подъема по градиенту, т.е, корректи- ровалось множество у'(х + Ьх). Однако множество у'(х+ Ьх) может быть принципиально непол- ным. В ием может отсутствовать какая-то еще не обнаруженная точка локального максимума /"(х, у) по у.
Поиск таких точек должен про- должаться. Для этого берется некоторое число случайных точек в У, каждая нз них используется в качестве стартовой при решении задачи шах/в(х+ Ьх, у), Получающиеся после некоторого числа шагов у подъема по градиенту точки анализируются. Некоторые из них могут оказаться близкими к точкзм, уже входящим в у'(х + Ьх), они, есте- ственно, игнорируются. Но некоторые могут оказаться новыми, и тог- да они включаются в у'(х + Ьх), расширяя его. Хотя мы ограничились выше общим описанием, не уточняя де- талей, читатель не ошибется, если сочтет алгоритм не абсолютно надежным.
Это действительно так, и для таких задач практически иеиьлижыи!ые методы еыиислительиои ыгшки 1ч. и 434 неизбежен некоторый риск. Мы можем повышать надежность различных элементов алгоритма, но лишь ценой существенного увеличения вычислительной работы, причем полной надежности никогда не достигнем (прн конечном числе операций). Итак, перейдем к описанию результатов вычислений, представленных в табл. 17. Поясним обозначения: т — номер шага по лд и! — число точек в множестве у(х); г — значение 76 105, К— число вычислений функции /о (число вычислений производных 70 по х или у составляет примерно 0.35К). Заметим, что весь расчет занял 1О минут на БЭСМ-6, Обратим внимание на 45-ю итерацию.