Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Лабораторная работа №8 минимизация функции




 

Цель работы: Написать программу для минимизации функции одной переменной методом золотого сечения и функции двух переменных методами Хука–Дживса и градиентного спуска.

Теоретические основы

Одномерная минимизация

Метод золотого сечения

Одним из наиболее эффективных методов, в которых при ограниченном количестве вычислений f(x) достигается наилучшая точность, является метод золотого сечения. Он состоит в построении последовательности отрезков [ а 0, b 0], [ а 1, b 1], …, стягивающихся к точке пересечения графика функции f(x) с осью x. На каждом шаге, за исключением первого, вычисление значения функции f(x) проводится лишь один раз. Эта точка, называемая золотым сечением, выбирается специальным образом.



Рисунок 2 – Метод золотого сечения

Поясним сначала идею метода геометрически, а затем выведем необходимые соотношения. На первом шаге процесса внутри отрезка [ а 0, b 0] (рис. 2а) выбираем две внутренние точки х 1и х 2и вычисляем значения целевой функции f(x 1 ) и f(x 2 ). Поскольку в данном случае , очевидно, что решение расположено на одном из прилегающих к x 1 отрезков [ а 0, x 1] пли [ x 1, x 2]. Поэтому отрезок [ x 2, b 0] можно отбросить, сузив тем самым первоначальный интервал неопределенности.

Второй шаг проводим на отрезке [ а 1, b 1] (рис. 2б), где а 1 = а 0, b 1= х 2. Нужно снова выбрать две внутренние точки, но одна из них (x 1) осталась из предыдущего шага, поэтому достаточно выбрать лишь одну точку х 3, вычислить значение f(х 3 ) и провести сравнение. Поскольку здесь , ясно, что решение находится на отрезке [ х 3, b 1].Обозначим этот отрезок [ а 2, b 2], снова выберем одну внутреннюю точку и повторим процедуру сужения интервала неопределенности. Процесс повторяется до тех пор, пока длина очередного отрезка [ аn, bn ] не станет меньше заданной величины .

Теперь рассмотрим способ размещения внутренних точек на каждом отрезке [ аk, bk ].Пусть длина интервала неопределенности равна l, а точка деления делит его на части l 1, l 2: . Золотое сечение интервала неопределенности выбирается так, чтобы отношение длины большего отрезка к длине всего интервала равнялось отношению длины меньшего отрезка к длине большего отрезка:

Из этого соотношения можно найти точку деления, определив отношение :

Поскольку нас интересует только положительное решение, то

Отсюда:

Поскольку заранее неизвестно, в какой последовательности (l 1и l 2 или l 2 и l 1)делить интервал неопределенности, то рассматриваются внутренние точки, соответствующие двум этим способам деления.

На рис. 3 а точки деления x 1, x 2выбираются с учетом полученных значений для частей отрезка. В данном случае имеем:

После первого шага оптимизации получается новый интервал неопределенности – отрезок [ а 1, b 1](рис. 2). Точка x 1делит этот отрезок в требуемом отношении, при этом

Вторая точка деления х3 выбирается на таком же расстоянии от левой границы отрезка, т. е. . И снова интервал неопределенности уменьшается до размера:

Тогда координаты точек деления у и z отрезка.[ ak, bk ]на k+ 1–м шаге оптимизации < z):

При этом длина интервала неопределенности равна:

Процесс заканчивается при выполнении условия .

 

Многомерная минимизация

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

Общая задача нелинейного программирования без ограничений состоит в минимизации функции , заданной во всем n –мерном евклидовом пространстве. Функция называется целевой функцией.

Как правило, численные методы нахождения экстремума состоят в построении последовательности векторов , удовлетворяющих условию: . Методы построения таких последовательностей называются методами спуска. В этих методах элементы последовательности вычисляются по формуле:

где – направление спуска; – длина шага в этом направлении.

Как известно, градиент функции в некоторой точке направлен в сторону наискорейшего локального возрастания функции. Следовательно, спускаться нужно в направлении, противоположном градиенту. Вектор, противоположный градиенту, называется антиградиентом. Выбирая антиградиент в качестве направления спуска, приходят к итерационному процессу вида:

, (2)

где

Все методы спуска, в которых вектор совпадает с антиградиентом, называются градиентными методами. Они отличаются друг от друга только способом выбора шага. Наиболее употребительны метод наискорейшего спуска и метод дробления шага.

В методе наискорейшего спуска величина определяется из условия

,

т.е. на каждом шаге решается одномерная задача минимизации. Геометрическая интерпретация этого метода достаточно проста (рис. 3). Заметим, что на двух последовательных шагах направления спуска ортогональны.

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

Процесс (2) с дроблением шага протекает следующим образом. Выбираем некоторое начальное значение . Общих правил выбора нет: если есть информация о расположении точки минимума, то точку выбираем в этой области. Затем выбираем некоторое и на каждом шаге процесса (2) проверяем условие монотонности . Если это условие нарушается, то дробим до тех пор, пока монотонность не восстановится. Для окончания счета используем критерий:

В этом случае полагаем .

Здесь

Рисунок 3 – Метод градиентного спуска

Метод Хука–Дживса

Процедура Хука–Дживса представляет собой комбинацию исследующего поиска с циклическим изменением переменных и ускоряющего поиска по образцу.

Исследующий поиск. Для проведения исследующего поиска необходимо знать величину шага, которая может быть различной для разных координатных направлений и изменяться в процессе поиска. Исследующий поиск начинается в некоторой исходной точке. Если значение целевой функции в пробной точке не превышает значение в исходной точке, то шаг поиска рассматривается как успешный. В противном случае надо вернуться в предыдущую точку и сделать шаг в противоположном направлении с последующей проверкой значения целевой функции. После перебора всех n– координат исследующий поиск завершается. Полученную в результате точку называют базовой точкой.

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

Как только движение по образцу не приводит к уменьшению целевой функции, точка фиксируется в качестве временной базовой точки и вновь проводится исследующий поиск. Если в результате получается точка с меньшим значением целевой функции, чем в точке , то она рассматривается как новая базовая точка . С другой стороны, если исследующий поиск неудачен, необходимо вернуться в точку и провести исследующий поиск с целью выявления нового направления минимизации. В конечном итоге возникает ситуация, когда такой поиск не приводит к успеху. В этом случае требуется уменьшить величину шага путем введения некоторого множителя и возобновить исследующий поиск. Поиск завершается, когда величина шага становится достаточно малой. Последовательность точек, получаемую в процессе реализации метода, можно записать в следующем виде:

– текущая базовая точка,

– предыдущая базовая точка,

– точка, построенная при движении по образцу,

– следующая (новая) базовая точка.

Приведенная последовательность характеризует логическую структуру поиска по методу Хука–Дживса.

Алгоритм метода:

1. Выбрать начальную базисную точку b 1 и шаг длиной h 1 для каждой переменной

2. Вычислить f (х) в базисной точке b 1 с целью получения сведений о локальном поведении функции f (х). Эти сведения будут использоваться для нахождения подходящего направления поиска по образцу, с помощью которого можно надеяться достичь большего убывания значения функции. Функция f (х) в базисной точке b 1, находится следующим образом:

а) Вычисляется значение функции f (b 1) в базисной точке b 1.

б) Каждая переменная по очереди изменяется прибавлением длины шага. Таким образом, мы вычисляем значение функции , где единичный вектор в направлении оси x 1. Если это приводит к уменьшению значения функции, то b 1 заменяется на . В противном случае вычисляется значение функции , и если ее значение уменьшилось, то b 1 заменяем на . Если ни один из проделанных шагов не приводит к уменьшению значения функции, то точка b 1 остается неизменной и рассматриваются изменения в направлении оси х 2, т. е. находится значение функции и т. д. Когда будут рассмотрены все n переменных, мы будем иметь новую базисную точку b 2.

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

г) Если , то производится поиск по образцу.

3. При поиске по образцу используется информация, полученная в процессе исследования, и минимизация функции завершается поиском в направлении, заданном образцом. Эта процедура производится следующим образом:

а) Разумно двигаться из базисной точки b 2 в направлении , поскольку поиск в этом направлении уже привел к уменьшению значения функции. Поэтому вычислим функцию в точке образца:

В общем случае:

б) Затем исследование следует продолжать вокруг точки .

в) Если наименьшее значение на шаге 3б) меньше значения в базисной точке b 2 (в общем случае bi +1), то получают новую базисную точку b 3 (bi +2), после чего следует повторить шаг 3а). В противном случае, не производить поиск по образцу из точки b 2 (bi +1), а продолжить исследования в точке b 2 (bi +1).

4. Завершить этот процесс, когда длина шага (длины шагов) будет уменьшена до заданного малого значения.

Задание

1. Написать программу для минимизации функции ¦ (x) методом золотого сечения;

2. Написать программу для минимизации функции ¦ (x1, х2) методами Хука–Дживса и градиентного спуска.

Контрольные вопросы

 






Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 1057 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наглость – это ругаться с преподавателем по поводу четверки, хотя перед экзаменом уверен, что не знаешь даже на два. © Неизвестно
==> читать все изречения...

2648 - | 2219 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.