12250

Методы минимизации функции многих переменной

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа 3. Методы минимизации функции многих переменной. Постановка задачи: Требуется найти безусловный минимум функции от n переменных fx1 x2 xn т.е. такую точку что . Значение точки минимума вычислить приближенно с заданной точностью ε. Метод пр

Русский

2013-04-24

255.93 KB

56 чел.

Лабораторная работа 3.

Методы минимизации функции многих переменной.

Постановка задачи: Требуется найти безусловный минимум функции от n переменных f(x1, x2, …, xn), т.е. такую точку , что . Значение точки минимума вычислить приближенно с заданной точностью ε.

Метод правильного симплекса.

Стратегия поиска: Симплексом в Rn называется выпуклая оболочка (n+1) точек
x1, x2, …, xn+1, не принадлежащих ни к какому (n-1)-мерному подпространству Rn. Правильным симплексом называется множество из (n+1) равноудаленной точки. На плоскости (в двухмерном пространстве) правильный симплекс является правильным треугольником, в трехмерном пространстве правильный симплекс – правильный тетраэдр.

На первой итерации данного метода выбирается некоторый правильный симплекс в пространстве Rn . На каждой итерации сравниваются значения f(x) в вершинах симплекса. Затем преобразуется та вершина симплекса, в которой достигается максимальное значение. Преобразование происходит путем отражения  данной вершины симметрично относительно центра тяжести xC  остальных вершин. Если значение функции в полученной точке меньше, чем в исходной, то переходят к новому симплексу. Иначе пытаются осуществить процедуру отражения для остальных вершин исходного симплекса. Если все попытки неудачны, повторяют процедуру с уменьшенной длиной ребра до тех пор, пока данная длина не станет меньше заданной точности.

Алгоритм:

  1. Задать точность вычислений , выбрать начальное приближение , ребро a.
  2. Построить начальный правильный симплекс по заданному ребру a и точке .
  3. Вычислить значения f(x) в вершинах симплекса.
  4. Упорядочить вершины симплекса в порядке возрастания значений f(x).
  5. Найти и выполнить отражение вершины xn: . Если , то положить и перейти к шагу 3. Иначе перейти к шагу 6.
  6. По формулам, аналогичным формулам пункта 5, вычислить отражения вершин с номерами j = n-1, …, k. Где k выбирается из условия , либо
    k =1.
  7. Если k > 1, то положить и перейти к шагу 3. Иначе перейти к шагу 8.
  8. Выбрать новый размер ребра a = a / 2. Если a > перейти к пункту 2. Иначе остановка расчета и выбор в качестве точки минимума точки x0.

Метод деформируемого симплекса

(Метод Нелдера-Мида)

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

На практике хорошо себя зарекомендовал следующий выбор параметров для нахождения пробных точек: .

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

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

(Метод Хука-Дживса).

Стратегия поиска: Алгоритм на каждом шаге содержит две основные процедуры:

а) исследующий покоординатный поиск  в окрестности данной точки x, предназначенный для определения направления убывания функции f(x) – точка ;

б) перемещение в направлении убывания (-x).

Если после шага а) = x, то происходит уменьшение шага исследующего спуска.

Если шаг становится меньше заданной точности, то прекращение поиска.

Алгоритм исследующего покоординатного спуска:

  1. Положить j = 1.
  2. Сделать пробный шаг . - заданный шаг в направлении j. Если f(y) < f(x), перейти к шагу 6, иначе к шагу 3.
  3. Сделать пробный шаг . - заданный шаг в направлении j. Если f(y) < f(x), перейти к шагу 6, иначе к шагу 4.
  4. Если j < n, положить j = j +1 и перейти к шагу 2. Иначе перейти к шагу 5.
  5. Положить = x и завершить поиск.
  6. Положить = y и завершить поиск.

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

Также очень часто в литературе под названием покоординатный спуск (поиск) фигурируют альтернативные методы в основе которых лежит идея чередования направлений соответствующих отдельным координатам.

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

Стратегия поиска: Предполагается, что целевая функция f(x) - дифференцируема в и возможно вычисление ее производных в произвольной точке .

Рассмотрим итерационные процедуры минимизации вида

  (1)

где направление убывания pk определяется тем или иным способом с учетом информации о частных производных функции f(x), а величина шага > 0 такова, что

  (2)

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

Алгоритм:

  1. Задать точность вычислений , , выбрать начальное приближение .
  2. Выбрать начальное значение шага .
  3. Положить k = 0 (k – номер итерации).
  4. Вычислить значение .
  5. Вычислить точку .
  6. Проверить выполнение критерия окончания поиска:

, .

Если критерий выполнен переход к шагу 10, иначе к шагу 7.

  1. Положить k = k+1.
  2. Проверка условия (2). Если условие не выполнено, положить =/2.
  3. Переход к новой итерации (шаг 4).
  4. Выбираем приближенно , . Поиск завершен.

Вопросы и задания

  1. Написать в среде MATLAB функции, реализующие следующие три метода: метод правильного симплекса (либо метод Нелдера-Мида), метод покоординатного спуска Хука-Дживса, метод градиентного спуска с постоянным шагом.
  2. Протестировать работу реализованных методов на примере функции:

,

выбрав несколько значений a в диапазоне от 1  до 100 (3-5 значений), при одинаковом начальном приближении (10, 10). Сравнить скорость работы методов при различных значениях параметра a, заполнив таблицу следующего вида:

Таблица 1. Число итераций N для различных значений a.

Метод

a = 1

a = 10

a = 100

a=…

ε = 0.01

ε = 0.001

ε = 0.01

ε = 0.001

ε = 0.01

ε = 0.001

Правильного симплекса

Хука-Дживса

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

Для точности также выбирается 3-5 значений, соответствующих степеням десяти.

  1. Изучить зависимость работы методов от начального приближения при фиксированном значении a для функции задания 2. Результаты представить в виде таблицы, аналогичной заданию 1. Например, сравнить выбор начального приближения на осях (точки (0, 10) и (10, 0)) и на прямой x=y (точка (10, 10)). 
  2. На примере функции Химмельблау

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

  1. Сравнить поведение предложенных методов на примере функции Розенброка («овражной» функции):

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


 

А также другие работы, которые могут Вас заинтересовать

58434. ПРОБЛЕМЫ ПРАВОВОГО РЕГУЛИРОВАНИЯ ОТНОШЕНИЙ УЧАСТИЯ В ДОГОВОРЕ ДОЛЕВОГО СТРОИТЕЛЬСТВА ЖИЛЫХ ПОМЕЩЕНИЙ 353.5 KB
  Появление и дальнейшее развитие договора участия в долевом строительстве в российском законодательстве имеют огромное значение для решения жилищной проблемы, поскольку надежное правовое регулирование отношений долевого строительства - гарантия успешного развития данных отношений
58435. Чудесная любовь Иисуса. Пасха 156 KB
  Побудить детей своими поступками не огорчать Иисуса но быть всегда послушными исполнительными дружелюбными. И спросил правитель Иисуса: Ты Царь Иудейский Иисус отвечал: Ты говоришь. В чем же он заключался Бог – Отец послал Сына Иисуса на землю сказать людям чтобы они перестали делать злые дела поверили в Бога и исполняли Его заповеди.
58436. Религия 47.5 KB
  Религия как форма мировоззрения; Структура и функции религии; Виды религий; Веротерпимость и свобода совести. Другие определения религии: одна из форм общественного сознания; совокупность духовных представлений основывающихся на вере в сверхъестественные силы и существа богов...
58437. ООН и международные организации в области народонаселении 360 KB
  Международная конференция по народонаселению и развитию (МКНР), состоявшаяся в Каире, Египет, в 1994 году, позволила Фонду ООН в области народонаселения (ЮНФПА)
58438. Религия древних греков 67 KB
  Прочитайте или расскажите миф о Геракле стр. Сам же Зевс по греческой мифологии стал править небом и владеть Олимпом горой обиталищем богов гора Олимп находится в Северной Греции; расположенным под землей царством мертвых стал править Аид а Посейдону досталась власть над морями. Задание: прочитайте в учебнике миф о Деметре и ее дочери Персефоне. Какое природное явление отражено в этом мифе стр.
58439. Добрый Пастырь 225 KB
  Пояснить им что как пастух любит и заботится о своих овцах так Иисус любит нас даже знает каждого из нас по имени. Словарная работа: Пастырь – пастух овец Ход урока: 1. Мотивация Необходимые материалы: картинка с изображением пастуха и овечки иллюстрации снаряжения пастуха. Вниманию детей предлагаем картинку с изображением пастуха.
58440. Все починається з мами 45.5 KB
  Мета. Удосконалювати навички виразного читання, збагачувати активний словниковий запас; виховувати любов і повагу до матері красою художнього слова.
58441. Повторення теми «Одяг» 32 KB
  Мета. Повторити ЛО теми. Навчати діалогічного мовлення за темою. Практикувати у відповіді на запитання Whose is this? Увести та активізувати присвійні займенники в абсолютному відмінку