Метод тяжелого шарика excel
Название работы | Кол-во страниц | Размер |
Введение литературный обзор | 1 | 169.23kb. |
Введение. 2 Литературный обзор. 4 Центрифугировани | 13 | 1828.83kb. |
1. Литературный обзор Введение | 1 | 312.79kb. |
ФронтЛайн дает общий обзор и введение в вопросы, о которых должны. | 1 | 70.62kb. |
1 Литературный обзор 5 | 6 | 327.49kb. |
3 Литературный язык – основа культуры речи Литературный язык | 3 | 512.53kb. |
1 Литературный обзор. Краткая история развития искусственного интеллекта | 3 | 421.94kb. |
Введение глава обзор литературы | 1 | 162.29kb. |
Гости фестиваля | 1 | 193.36kb. |
Введение „3 обзор литературы | 1 | 174.07kb. |
Литературный ринг | 1 | 85.66kb. |
Применение коммерческой scada и осрв qnx в Автоматизированной системе. | 1 | 76.59kb. |
Направления изучения представлений о справедливости | 1 | 202.17kb. |
2. Литературный обзор 5
2.1. Плохообусловленные задачи оптимизации и численные методы 5
2.1.1. Регуляризация модуля 8
2.1.2. Метод тяжелого шарика 9
3. Постановка задачи и методы исследования 11
3.1. Вариационно-разностный метод оценки пробойной прочности диэлектриков 11
4. Вычислительные эксперименты 14
4.2. Разработка программного обеспечения 19
4.2.1. Стратегия разработки 19
4.2.2. Определение требований к программному продукту 21
4.2.3. Разработка структуры программного продукта 22
4.2.4. Кодирование модулей 25
4.2.5. Тестирование и отладка 30
4.2.6. Требования к эксплуатации 32
4.3. Проведение тестовых расчетов 32
4.3.1. Цель тестирования 32
4.3.2. Порядок выполнения работы 35
4.4. Основные выводы по результатам вычислительных экспериментов 46
5. Оценка экономических затрат 47
5.1. Анализ существующих разработок и обоснование необходимости данной темы 47
5.2. Расчет сметы капитальных расходов на создание программного продукта и оптовой цены 51
5.2.1. Расчет времени на создание программного продукта 52
5.2.2. Заработная плата 56
5.2.3. Расчет отчислений ЕСН 56
5.2.4. Затраты на материалы и различные виды энергии 57
5.2.5. Амортизация основных средств 58
5.2.6. Косвенные и полные расходы 59
5.3. Расчет оптовой цены 60
5.4. Конкурентоспособность 61
6. Безопасность жизнедеятельности 63
6.1. Анализ потенциально опасных и вредных факторов на рабочем месте разработчика ПО 64
6.1.1. Электромагнитные излучения 64
6.1.2. Костно-мышечные заболевания 66
6.1.3. Заболевания органов зрения 68
6.1.4. Переутомления и стрессы 69
6.2. Разработка мероприятий производственной санитарии и безопасности жизнедеятельности разработчика ПО 70
6.2.1. Требования к помещениям и размещению рабочих мест 71
6.2.2. Освещение помещений и рабочих мест разработчика ПО 72
6.2.3. Защита от электромагнитных излучений 74
6.2.4. Рекомендации по уменьшению степени воздействия на костно-мышечный аппарат 74
6.2.5. Защита от шума и вибрации 77
6.2.6. Рекомендации по микроклимату и вентиляции 78
6.2.7. Рекомендации по рациональному режиму труда и отдыха 78
6.2.8. Рекомендации по снятию переутомления, стрессов 79
6.2.9. Рекомендации по уменьшению вредного влияния монотонии и мышечного перенапряжения 80
6.2.10. Рекомендации по уменьшению зрительного перенапряжения 80
6.3. Расчет освещенности рабочего места разработчика ПО 83
6.3.1. Расчет естественной освещенности 85
6.3.2. Расчет искусственного освещения 87
6.4. Разработка мероприятий противопожарной безопасности 89
7. Литература 92
Введение.
Оценка электрической прочности диэлектриков имеет огромное значение как для техники высоких напряжений, так и для микроэлектроники. Для диэлектриков в сильных электрических полях проявляется эффект потери электростатического равновесия между внешним источником поля и диэлектриком (т.е. пробой).
При помощи вариационно-разностного метода, основанного на конечно-элементной (кусочно-линейной) аппроксимации искомого решения, исходная континуальная (вариационная) задача сводится к следующей конечномерной задаче минимизации негладкой функции вида
Для применения стандартных методов минимизации необходимо сгладить эту функцию, т.е. осуществить ее регуляризацию. В результате конечномерная задача принимает вид: найти минимум функции
где р = 1+ , а – малый положительный параметр (1 6 -10 9 ).
Функция называется овражной, если ее гессиан в окрестности экстремальной точки является плохо обусловленной матрицей.
Рассмотрим функцию Розенброка , график которой изображен на рисунке 1.
Рис. 1. График функции Рознеброка.
Для нее в единственной точке глобального минимума х*=(1,1) гессиан равен с числом обусловленности cond()2504, т.е. функция Розенброка является овражной. Поэтому ее используют в качестве тестовой функции при исследовании сходимости различных численных методов.
Рассматриваемая нами функция с показателем р = 1+ , где – малый положительный параметр (0 m → R, можно интерпретировать в терминах обыкновенных дифференциальных уравнений следующим образом. Рассмотрим дифференциальное уравнение
(здесь точка над x обозначает производную по независимой переменной t, а f ′(x) как обычно обозначает градиент отображения f: R m → R; предполагается, что p > 0). Простейший разностный аналог уравнения (3) имеет вид явной схемы Эйлера
а градиентный метод для задачи (1) записывается в следующем виде:
Рассмотрим теперь вместо уравнения (3) уравнение
описывающее движение шарика массы m в потенциальном поле f ′ при наличии силы трения. Потери энергии на трение вынудят шарик спуститься в точку минимума потенциала f, а силы инерции не дадут ему осциллировать так, как это изображено на рисунке. Это позволяет надеяться, что изменение уравнения (3) введением в него инерционного члена улучшит сходимость градиентного метода (4). Конечно-разностный аналог уравнения, описывающего движение шарика — это, например, уравнение вида:
.
После простых преобразований и очевидных обозначений мы получаем следующую итерационную схему:
которая описывает метод тяжелого шарика для решения задачи безусловной оптимизации овражных функций.
Рис. 3. Градиентный метод.
Рис. 4. Метод тяжелого шарика.
Фанфары грянут в конце похоронного марша. Доминик Опольский
ещё >>
В этой статье речь пойдет о методах решения задач математической оптимизации, основанных на использовании градиента функции. Основная цель — собрать в статье все наиболее важные идеи, которые так или иначе связаны с этим методом и его всевозможными модификациями.
Примечание от автора
На момент написания я защитил диссертацию, задача которой требовала от меня глубокое понимание теоретических основно методов математической оптимизации. Тем не менее, у меня до сих пор (как и у всех) расплываются глаза от страшных длинных формул, поэтому я потратил немалое время, чтобы вычленить ключевые идеи, которые бы характеризовали разные вариации градиентных методов. Моя личная цель — написать статью, содержащую минимальное количество информации, необходимое для более менее подробного понимания тематики. Но будьте готовы, без формул так или иначе не обойтись.
Постановка задачи
Прежде чем описывать метод, следует сначала описать задачу, а именно: «Даны множество и функция , требуется найти точку , такую что для всех », что обычно записывается например вот так
В теории обычно предполагается, что — дифференцируемая и выпуклая функция, а — выпуклое множество (а еще лучше, если вообще ), это позволяет дать какие-то гарантии успешности применения градиентного спуска. На практике градиентный спуск успешно применяется даже когда у задачи нет ни одного из вышеперечисленных свойств (пример дальше в статье).
Немного математики
Еще в 17 веке Пьером Ферма был придуман критерий, который позволял решать простые задачи оптимизации, а именно, еcли — точка минимума , то
где — производная . Этот критерий основан на линейном приближении
Чем ближе к , чем точнее это приближение. В правой части — выражение, которое при может быть как больше так и меньше — это основная суть критерия. В многомерном случае аналогично из линейного приближения (здесь и далее — стандартное скалярное произведение, форма записи обусловлена тем, что скалярное произведение — это то же самое, что матричное произведение вектор-строки на вектор-столбец) получается критерий
Величина — градиент функции в точке . Также равенство градиента нулю означает равенство всех частных производных нулю, поэтому в многомерном случае можно получить этот критерий просто последовательно применив одномерный критерий по каждой переменной в отдельности.
Стоит отметить, что указанные условия являются необходимыми, но не достаточными, самый простой пример — 0 для и
Этот критерий является достаточным в случае выпуклой функции, во многом из-за этого для выпуклых функций удалось получить так много результатов.
Квадратичные функции
Для экономии места (да и чтобы меньше возиться с индексами) такую функцию обычно записывают в матричной форме:
где , , — матрица, у которой на пересечении строки и столбца стоит величина
( при этом получается симметричной — это важно). Далее. при упомянании квадратичной функции я буду иметь указанную выше функцию.
Зачем я об этом рассказываю? Дело в том, что квадратичные функции важны в оптимизации по двум причинам:
- Они тоже встречаются на практике, например при построении линейной регрессии методом наименьших квадратов
- Градиент квадратичной функции — линейная функция, в частности для функции выше
Или в матричной форме
Полезные свойства градиента
Хорошо, мы вроде бы выяснили, что если функция дифференцируема (у нее существуют производные по всем переменным), то в точке минимума градиент должен быть равен нулю. А вот несет ли градиент какую-нибудь полезную информацию в случае, когда он отличен от нуля?
Попробуем пока решить более простую задачу: дана точка , найти точку такую, что . Давайте возьмем точку рядом с , опять же используя линейное приближение . Если взять , то мы получим
Аналогично, если , то будет больше (здесь и далее ). Опять же, так как мы использовали приближение, то эти соображения будут верны только для малых . Подытоживая вышесказанное, если , то градиент указывает направление наибольшего локального увеличения функции.
Вот два примера для двумерных функций. Такого рода картинки можно часто увидеть в демонстрациях градиентного спуска. Цветные линии — так называемые линии уровня, это множество точек, для которых функция принимает фиксированное значений, в моем случае это круги и эллипсы. Я обозначил синими линии уровня с более низким значением, красными — с более высоким.
Обратите внимание, что для поверхности, заданной уравнением вида , задает нормаль (в простонародии — перпендикуляр) к этой поверхности. Также обратите внимание, что хоть градиент и показывает в направлении наибольшего увеличения функции, нет никакой гарантии, что по направлению, обратному к градиенту, можно найти минимум (пример — левая картинка).
Градиентный спуск
До базового метода градиентного спуска остался лишь малый шажок: мы научились по точке получать точку с меньшим значением функции . Что мешает нам повторить это несколько раз? По сути, это и есть градиентный спуск: строим последовательность
Величина называется размером шага (в машинном обучении — скорость обучения). Пару слов по поводу выбора : если — очень маленькие, то последовательность медленно меняется, что делает алгоритм не очень эффективным; если же очень большие, то линейное приближение становится плохим, а может даже и неверным. На практике размер шага часта подбирают эмпирически, в теории обычно предполагается липшицевость градиента, а именно, если
для всех , то гарантирует убывание .
Анализ для квадратичных функций
Если — симметричная обратимая матрица, , то для квадратичной функции точка является точкой минимума (UPD. при условии, что этот минимум вообще существует — не принимает сколько угодно близкие к значения только если положительно определена), а для метода градиентного спуска можно получить следующее
где — единичная матрица, т.е. для всех . Если же , то получится
Выражение слева — расстояние от приближения, полученного на шаге градиентного спуска до точки минимума, справа — выражение вида , которое сходится к нулю, если (условие, которое я писал на в предыдущем пункте как раз это гарантирует). Эта базовая оценка гарантирует, что градиентный спуск сходится.
Модификации градиентного спуска
Теперь хотелось бы рассказать немного про часто используемые модификации градиентного спуска, в первую очередь так называемые
Инерционные или ускоренные градиентные методы
Последнее слагаемое характеризует эту самую «инерционность», алгоритм на каждом шаге старается двигаться против градиента, но при этом по инерции частично двигается в том же направлении, что и на предыдущей итерации. Такие методы обладают двумя важными свойствами:
- Они практически не усложняют обычный градиентный спуск в вычислительном плане.
- При аккуратном подборе такие методы на порядок быстрее, чем обычный градиентный спуск даже с оптимально подобранным шагом.
Метод тяжелого шарика — самый простой инерционный метод, но не самый первый. При этом, на мой взгляд, самый первый метод довольно важен для понимания сути этих методов.
Метод Чебышева
Да да, первый метод такого типа был придуман еще Чебышевым для решения систем линейных уравнений. В какой-то момент при анализе градиентного спуска было получено следующее равенство
где — некоторый многочлен степени . Почему бы не попробовать подобрать таким образом, чтобы было поменьше? Один уз универсальных многочленов, которые меньше всего отклоняются от нуля — многочлен Чебышева. Метод Чебышева по сути заключается в том, чтобы подобрать параметры спуска так, чтобы был многочленом Чебышева. Есть правда одна небольшая проблема: для обычного градиентного спуска это просто невозможно. Однако для инерционных методов это оказывается возможным. В основном это происходит из-за того, что многочлены Чебышева удовлетворяют рекуррентному соотношению второго порядка
поэтому их невозможно построить для градиентного спуска, который вычисляет новое значение лишь по одному предыдущему, а для инерционных становится возможным за счет того, что используется два предыдущих значения. При этом оказывается, что сложность вычисления не зависит ни от , ни от размера пространства .
Метод сопряженных градиентов
Еще один очень интересный и важный факт (следствие теоремы Гамильтона-Кэли): для любой квадратной матрицы размера существует многочлен степени не больше , для которого . Чем это интересно? Все дело в том же равенстве
Если бы мы могли подбирать размер шага в градиентном спуске так, чтобы получать именно этот обнуляющий многочлен, то градиентный спуск сходился бы за фиксированное число итерации не большее размерности . Как уже выяснили — для градиентного спуска мы так делать не можем. К счастью, для инерционных методов — можем. Описание и обоснование метода довольно техническое, я ограничусь сутью:на каждой итерации выбираются параметры, дающие наилучший многочлен, который можно построить учитывая все сделанные до текущего шага измерения градиента. При этом
- Одна итерация градиентного спуска (без учета вычислений параметров) содежит одно умножение матрицы на вектор и 2-3 сложения векторов
- Вычисление параметров также требует 1-2 умножение матрицы на вектор, 2-3 скалярных умножения вектор на вектор и несколько сложений векторов.
Метод сопряженных градиентов хорошо работает и в случае, если не является квадратичной функцией, но при этом уже не сходится за конечное число шагов и часто требует небольших дополнительных модификаций
Метод Нестерова
Для сообществ математической оптимизации и машинного обучения фамилия «Нестеров» уже давно стало нарицательной. В 80х годах прошлого века Ю.Е. Нестеров придумал интересный вариант инерционного метода, который имеет вид
при этом не предполагается какого-то сложного подсчета как в методе сопряженных градиентов, в целом поведение метода похоже на метод тяжелого шарика, но при этом его сходимость обычно гораздо надежнее как в теории, так и на практике.
Стохастический градиентный спуск
Единственное формальное отличие от обычного градиентного спуска — использование вместо градиента функции такой, что ( — математическое ожидание по случайной величине ), таким образом стохастический градиентный спуск имеет вид
— это некоторый случайный параметр, на который мы не влияем, но при этом в среднем мы идем против градиента. В качестве примера рассмотрим функции
Если принимает значения равновероятно, то как раз в среднем — это градиент . Этот пример показателен еще и следующим: сложность вычисления градиента в раз больше, чем сложность вычисления . Это позволяет стохастическому градиентному спуску делать за одно и то же время в раз больше итераций. Несмотря на то, что стохастический градиентный спуск обычно сходится медленней обычного, за счет такого большого увеличения числа итераций получается улучшить скорость сходимости на единицу времени. Насколько мне известно — на данный момент стохастический градиентный спуск является базовым методом обучения большинства нейронных сетей, реализован во всех основных библиотеках по ML: tensorflow, torch, caffe, CNTK, и т.д.
Стоит отметить, что идеи иннерционных методов применяются для стохастического градиентного спуска и на практике часто дают прирост, в теории же обычно считается, что асимптотическая скорость сходимости не меняется из-за того, что основная погрешность в стохастическом градиентном спуске обусловлена дисперсией .
Субградиентный спуск
Эта вариация позволяет работать с недифференцируемыми функциями, её я опишу более подробно. Придется опять вспомнить линейное приближение — дело в том, что есть простая характеристика выпуклости через градиент, дифференцируемая функция выпукла тогда и только тогда, когда выполняется для всех . Оказывается, что выпуклая функция не обязаны быть дифференцируемой, но для любой точки обязательно найдется такой вектор , что для всех . Такой вектор принято называть субградиентом в точке , множество всех субградиентов в точки называют субдифференциалом и обозначают (несмотря на обозначение — не имеет ничего общего с частными производными). В одномерном случае — это число, а вышеуказанное свойство просто означает, что график лежит выше прямой, проходящей через и имеющей тангенс угла наклона (смотрите рисунки ниже). Отмечу, что субградиентов для одной точки может быть несколько, даже бесконечное число.
Вычислить хотя бы один субградиент для точки обычно не очень сложно, субградиентный спуск по сути использует субградиент вместо градиента. Оказывается — этого достаточно, в теории скорость сходимости при этом падает, однако например в нейронных сетях недифференцируемую функцию любят использовать как раз из-за того, что с ней обучение проходит быстрее (это кстати пример невыпуклой недифференцируемой функции, в которой успешно применяется (суб)градиентный спуск. Сама по себе функция выпукла, но многослойная нейронная сеть, содержащая , невыпукла и недифференцируема). В качестве примера, для функции субдифференциал вычисляется очень просто
Пожалуй, последняя важная вещь, которую стоит знать, — это то, что субградиентный спуск не сходится при постоянном размере шага. Это проще всего увидеть для указанной выше функции . Даже отсутствие производной в одной точке ломает сходимость:
- Допустим мы начали из точки .
- Шаг субградиентного спуска:
Где обычно или . На практике я часто видел успешное применение шагов , хоть и для таких шагов вообще говоря не будет сходимости.
Proximal методы
К сожалению я не знаю хорошего перевода для «proximal» в контексте оптимизации, поэтому просто так и буду называть этот метод. Proximal-методы появились как обобщение проективных градиентных методов. Идея очень простая: если есть функция , представимая в виде суммы , где — дифференцируемая выпуклая функция, а — выпуклая, для которой существует специальный proximal-оператор (в этой статье ограничусь лишь примерами, описывать в общем виде не буду), то свойства сходимости градиентного спуска для остаются и для градиентного спуска для , если после каждой итерации применять этот proximal-оператор для текущей точки , другими словами общий вид proximal-метода выглядит так:
-
— индикатор-функция выпуклого множества , то есть
В этом случае — это проекция на множество , то есть «ближайшая к точка множества ». Таким образом, мы ограничиваем градиентный спуск только на множество , что позволяет решать задачи с ограничениями. К сожалению, вычисление проекции в общем случае может быть еще более сложной задачей, поэтому обычно такой метод применяется, если ограничения имеют простой вид, например так называемые box-ограничения: по каждой координате
Заключение
На этом заканчиваются основные известные мне вариации градиентного метода. Пожалуй под конец я бы отметил, что все указанные модификации (кроме разве что метода сопряженных градиентов) могут легко взаимодействовать друг с другом. Я специально не стал включать в эту перечень метод Ньютона и квазиньютоновские методы (BFGS и прочие): они хоть и используют градиент, но при этом являются более сложными методами, требуют специфических дополнительных вычислений, которые обычно более вычислительно затратны, нежели вычисление градиента. Тем не менее, если этот текст будет востребован, я с удовольствием сделаю подобный обзор и по ним.
Найти интервалы унимодальности заданной функции на интервале [-1 ; 3] с точностью 0,2.
Минимизировать заданную функцию с точностью =0,0001 методом «тяжелого шарика».
Используя окно диалога "Поиск решения", уточнить координаты всех экстремумов (минимумов и максимумов) заданной функции на заданном интервале.
Варианты
1. f(x) = x3-2x2-5arctg(2,5x)
2. f(x) = x3-2,5x2-1,5arctg(10x)
3. f(x) = x3-2x2-0,7arctg(3x)
4. f(x) = x3-2,1x2-0,8arctg(4x)
5. f(x) = x3-2,8x2-0,2arctg(5x)
6. f(x) = x3-2,9x2-0,7arctg(2x)
7. f(x) = x3-2,2x2-1,7arctg(0,8x)
8. f(x) = x3-1,8x2-0,7arctg(0,2x)
9. f(x) = x3-1,5x2-1,5arctg(5x)
10. f(x) = x3-2,1x2-5arctg(1,5x)
11. f(x) = x3-2,3x2-3arctg(1,8x)
12. f(x) = x3-1,4x2-4arctg(1,9x)
Отчет о выполнении работы в лабораторном журнале
Отчет о выполнении работы в лабораторном журнале должен содержать следующие численные результаты:
Результаты поиска интервалов унимодальности и график функции;
Уточненный методом «тяжелого шарика» минимум функции и достигнутую точность;
Уточненные поиском решения значения всех экстремумов функции на заданном интервале.
Пример выполнения лабораторной работы в MS Excel
Этапы выполнения работы
1. Создать электронную таблицу для поиска экстремумов функции одной переменной.
Поиск экстремумов функции состоит из двух этапов. Нахождение интервалов унимодальности (интервалов, на которых функция имеет один экстремум и не имеет точек перегиба) выполняется табулированием функции и графически. Уточнение экстремумов выполняется двумя способами: А) методом тяжелого шарика (минимум функции в соответствии с заданием); Б) при помощи окна диалога MS "Поиск решения" (уточняются все экстремумы).
В первой строке таблицы расположить название работы. Во вторую строку ввести уравнение в соответствии с номером варианта. Обе строки текста выделить жирным шрифтом и выровнять по ширине 5-ти столбцов.
2. Поиск интервалов унимодальности.
Для поиска интервалов унимодальности функции необходимо построить таблицу значений заданной функции на заданном отрезке [xнач;xкон]. В третью строку ввести название таблицы – «Поиск интервалов унимодальности». Названия столбцов X и f(X) выделить жирным шрифтом. Для расчета значения аргумента X от xнач до xкон с заданным шагом использовать формулу. Значения аргумента X должны иметь 1 знак после запятой. Значения функции f(X) должны иметь 2 знака после запятой. Интервалы унимодальности должны быть обведены рамкой.
Построить график функции на заданном отрезке. Диаграмму расположить справа от таблицы значений функции. Название диаграммы должно содержать исследуемую функцию. Шкалы осей должны содержать целые числа. Область построения диаграммы должна быть белого цвета.
Выписать результаты поиска интервалов унимодальности. Под диаграммой ввести текст – «Интервалы унимодальности» и выделить его жирным шрифтом. В следующих строках ввести тексты – найденные отрезки, содержащие ровно один экстремум с точностью до 0,2.
3. Построить таблицу для уточнения заданного экстремума функции. Ниже результатов отделения поиска интервалов унимодальности ввести текст – «Уточнение минимума методом "Тяжелого шарика"» и выделить его жирным шрифтом. Ввести названия столбцов таблицы жирным шрифтом и заполнить расчетную таблицу формулами.
Значения в столбце
Номер итерации (0 для начального приближения)
Левая граница интервала унимодальности на текущем шаге вычислений xнов=x+h
Метод базируется на аналогии с движением "тяжелого" материального шарика по наклонной поверхности. Скорость шарика при движении вниз будет возрастать, и он будет стремиться занять нижнее положение, т.е. точку минимума. При выводе дифференциального уравнения движения шарика учитывается его масса и вязкость среды, которые влияют на характер его движения, т.е. поиска min R(x).
В дискретном варианте траектория поиска описывается следующим алгоритмом:
x i +1 = x i – α (x i – x i –1 ) – h grad R(x i )
При α =0 метод превращается в обыкновенный градиентный. При α = 1 поиск не затухает, следовательно, при 0 < α < 1 можно получать различную эффективность метода, которая будет зависеть и от h.
Вдали от оптимума поиск будет ускоряться, а вблизи возможны колебания около точки min R(x).
К недостаткам метода относится необходимость задания сразу двух неформальных параметров, определяющих эффективность поиска. К достоинствам метода, помимо ускорения движения вдали от оптимума, относится возможность "проскока" мелких локальных "ямок" (минимумов) за счет "инерционности шарика", т.е. можно решать и задачу глобальной оптимизации для функции R(x) с одним явно выраженным минимумом и многими "мелкими".
Одна из возможных траекторий поиска минимума двумерной функции методом тяжелого шарика приведена на рис. 1.
Алгоритм метода тяжёлого шарика для поиска минимума.
Начальный этап. Выполнение градиентного метода.
Задаём начальное приближение x1 0 , х2 0 . Определяем значение критерия R(x1 0 , х2 0 ). Положить k = 0 и перейти к шагу 1 начального этапа.
Шаг 1. Вычислить R(x1 k + g, x2 k ), R(x1 k – g, x2 k ), R(x1 k , x2 k + g), R(x1 k , x2 k ). В соответствии с алгоритмом с центральной или парной пробы вычислить значение частных производных и . Вычислить значение модуля градиента .
Шаг 2. Если модуль градиента , то расчёт остановить, а точкой оптимума считать точку (x1 k , x2 k ). В противном случае перейти к шагу 3.
Шаг 3. Выполнить рабочий шаг, рассчитав по формуле
x k+1 = x k – h grad R(x k )).
Шаг 4. Определить значение критерия R(x1 k +1 , х2 k +1 ). Если R(x1 k +1 , х2 k +1 ) < R(x1 k , х2 k ), то положить k = k+1 и перейти к шагу 3. Если R(x1 k +1 , х2 k +1 ) ≥ R(x1 k , х2 k ), то перейти к основному этапу.
Шаг 1. Вычислить R(x1 k + g, x2 k ), R(x1 k – g, x2 k ), R(x1 k , x2 k + g), R(x1 k , x2 k ). В соответствии с алгоритмом с центральной или парной пробы вычислить значение частных производных и . Вычислить значение модуля градиента .
Шаг 2. Если модуль градиента , то расчёт остановить, а точкой оптимума считать точку (x1 k , x2 k ). В противном случае перейти к шагу 3.
Шаг 3. Выполнить рабочий шаг, рассчитав по формуле
x k +1 = x k – α (x k – x k –1 ) – h grad R(x k )
Шаг 4. Определить значение критерия R(x1 k +1 , х2 k +1 ). Положить k = k+1 и перейти к шагу 1.
Пример.
Для сравнения методов рассмотрим решение предыдущего примера. Результаты вычислений при α =0,5 и h =0,1 приведены ниже в кратком изложении, так как никаких принципиально новых элементов здесь нет, кроме формулы для вычисления рабочего шага. Обратим внимание на то, что первый шаг делается обычным методом градиента (результаты полностью совпадают с результатами метода градиента), так как мы еще не имеем предыдущей точки (табл. 7).
Во многих оптимизационных задачах используют целевые функции f 0 ( x ) (где х принадлежит области допустимых значений D ) степень выпуклости которых заранее неизвестна. Такие функции могут иметь произвольное число точек минимума, либо быть невыпуклыми и обладать произвольным числом стационарных точек, среди них есть и точки минимума, максимума, перегиба.
Поиск безусловного минимума невыпуклой функции имеет ряд особенностей, так как для такой функции уравнение f 0 '( х ) всегда имеет несколько, в том числе и. бесконечно много решений х с , что затрудняет выбор из них точек минимума.
Наличие нескольких локальных минимумов делает фактически невозможным применение ряда итерационных методов поиска экстремумов, так как при этом возникает проблема подбора "хороших" началь86
ных приближений х 0 , расположенных близко к каждой μ -й точке мини-
мума x μ * , μ =1,2. .
Стратегия поиска локального и глобального минимумов невыпуклой функции f 0 ( x ):
1. Методом сканирования осуществляется грубый анализ тополо-
гии функции f 0 ( x ); по ординатам f 0 ( x k ) выявляются локальные максимумы f 0 + ( x j ), j = 1,2,… и минимумы f 0 − ( x μ ), μ = 1,2,… .
Множество D разбивается на ряд соприкасающихся подмножеств D j , j = 1,2,… граничными (разделяющими) точками которых служат x j , j = 1,2,… .
2. Для каждого подмножества D j задается два начальных прибли-
жения 1 x 0 j и 2 x 0 j , j = 1,2. .
3. Для каждого начального приближения 1 x 0 j и 2 x 0 j методом одномерного градиента находятся точки локального минимумов
и 2 x * j . Если эти точки совпадают, т. е. 1 x * j = 2 x 0 j , то считают
что на D j имеется один локальный минимум
f 0 ( x * j ) в точке
= 1 x * j . Если 1 x * j ≠ 2 x * j , то следует задать на D j
начальных приближений 3 x 0 j , 4 x 0 j и более детально исследовать методом одномерного градиента расположение локального минимума
4. Непосредственным сравнением ординат f 0 ( k x * j ), k = 1,2,3,4. j = 1,2,3. находится глобальный минимум
f 0 ( x * ) = min f 0 ( k x * j )
и соответствующая ему точка x * , принадлежащая множеству D .
7.15. Метод тяжелого шарика
Для поиска глобального минимума невыпуклой функции, которая имеет "неглубокие" локальные минимумы, находят применение многошаговые методы, использующие на k -й итерации значения f 0 ( x ).
Идея использования метода "тяжелого шарика" и его названия основаны на физической интерпретации процесса качения шарика по наклонной поверхности. Если шарик тяжелый, то он будет проскакивать мелкие впадины по инерции. Чем больше масса шарика, тем глубже будет впадина, в которой он остановится.
Двухшаговая итерационная процедура поиска глобального минимума f 0 ( x ) методом "тяжелого шарика" имеет следующий вид
x k + 1 = x k − h f 0 '( x k ) + β ( x k − x k − 1 ) ,
где k – номер итерации ( k =1,2. ). h , β параметры, которые подбираются в процессе решения задачи.
Скорость приближения < x k >к х * зависит не только от "крутизны" функции в точке x k , х арактеризуемой величиной f 0 '( x k ) , но и от "инерции" последовательности < x k >, которая пропорциональна слагаемому
β ( x k − x k − 1 ) . При попадании точки x k в локальный минимум x € произ-
водная f 0 ' ( x ) = 0,
( x k = x ) , но инерционная составляющая при этом
должна отличатся от нуля, поэтому
x k + 1 = x k + β ( x k − x k − 1 )
и последовательность < x k >продолжит движение к х * . Подобная особенность итерационного метода "тяжелого шарика" позволяет "проскакивать" по инерции мелкие, неглубокие локальные минимумы и останавливаться в точках глобального экстремума. Окончание процесса итерации
Алгоритм поиска минимума методом тяжелого шарика:
1. Вводим два приближения х 0 и х 1 , вычисляем значения критерия f 0 = f ( х 0 ) и f 1 = f ( x 1 ).
2. Вычисляем значение производной R = f '( x 1 ).
3. Вычисляем предполагаемую точку минимума х по формуле
x = x 1 − h R + β ( x 1 − x 0 ) .
4. Вычисляем f = f ( x ). Проверяем условие улучшаемости f < f 1 ?
"Да" – проверяем условие x − x 1 ≤ ε , , если выполняется, то пе-
реходим на п.6, иначе − на п.5; нет – за точку минимума принимаем точку х 1 , то есть х = х 1 и переходим на п.6, либо можно изменить параметры h или β и продолжить поиск минимума в окрестности точки х 1 .
5. Переопределяем точки х 0 = х 1 ; х 1 = х и переходим на п.2.
6. Печать "х * ft29">х , оптимального значения критерия f 0 ( x ), для кон-
троля правильности полученных данных – f 0 '( x ).
Блок-схема рассмотренного метода приведена на рисунке 14(а,б). В алгоритме предусмотрен выбор параметров в процессе решения задачи на ЭВМ. При величине шага меньшей заданной точности выполняется переход на п.6. Критерий цели и f '( x ) заданы функциями пользователя f и pr соответственно.
Читайте также: