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. Сравнить поведение предложенных методов на примере функции Розенброка («овражной» функции):

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


 

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

57761. Изучение звёздного неба 95 KB
  Цели урока: Создать условия для: изучения созвездий наблюдения интересных объектов в этих созвездиях отработки навыков уверенного нахождения созвездий и самых ярких звёзд северного неба...
57762. Розв’язування нерівностей з однією змінною 114.5 KB
  Мета: відтворити знання про лінійні нерівності з однією змінною; удосконалювати вміння учнів розвязувати нерівності з однією змінною формувати навички самостійної роботи...
57763. Решение иррациональных неравенств 1.41 MB
  Формировать умения и навыки решения иррациональных неравенств различными способами. Формировать социальную компетентность: предоставлять учащимся возможность проявлять инициативу.
57764. Der Gemüsegarten 38.5 KB
  Практична: ввести лексичні одиниці за темою уроку та тренувати їх вживання в усному та писемному мовленні, закріпити вживання сильних дієслів у теперішньому часі на прикладі дієслова essen.
57765. Текст-переклад. Бінарний урок з інформатики та англійської мови 143.5 KB
  А зараз давайте пригадаємо пристрій, який допоможе нам друкувати текст. Називається він?(клавіатура). На клавіатурі знаходиться багато клавіш. Це алфавітно-цифрове поле (демонструється малюнок клавіатури).
57766. Перерізи многогранників. Метод слідів 712 KB
  Многогранники Опуклі многогранники Правильний многогранник Куб Паралелепіпед Піраміда Призма а у другій – нові переріз діагональний переріз січна площина.
57767. Перська держава 73.5 KB
  Мета: ознайомити учнів з особливостями зародження і функціонування держави Персії охарактеризувати діяльність найвідоміших правителів Персії: Кіра ІІ Дарія І розкрити завойовницький характер їх зовнішньої політики...
57768. Теорема Піфагора 271.5 KB
  Мета: сформулювати і довести теорему Піфагора; познайомити учнів з біографією Піфагора; вчити застосовувати теорему до розвязання задачрозвивати логічне мислення; розвивати інтерес до математики...
57769. Союз гіпотенузи та катетів. Теорема Піфагора 1.81 MB
  Тип проекту: Пізнавальний дослідницький творчий За кількістю учасників: груповий За тривалістю підготовки: короткотривалий два тижні Епіграф: Не роби ніколи того що не знаєш але вчись усьому що потрібно знати і тоді будеш вести спокійне життя.