ЛАБОРАТОРНАЯ РАБОТА №3 МЕТОДОВ БЕЗУСЛОВНОЙ ОПТИМИЗАЦИИ
Автор: drug | Категория: Прочее | Просмотров: | Комментирии: 0 | 27-08-2013 21:49

ЛАБОРАТОРНАЯ РАБОТА №3

МЕТОДОВ БЕЗУСЛОВНОЙ ОПТИМИЗАЦИИ

Цель работы: изучение методов безусловной оптимизации

 

1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

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

du/dX1 = 0,

du/dX2 = 0,

....................

du/dXn = 0.

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

Здесь мы рассмотрим численные методы оптимизации, основанные на идее целенаправленного поиска минимума. Эти методы различаются прежде всего по характеру изменения целевой функции: если нет никаких ограничений ни на изменение независимых переменных, ни на значения целевой функции, то это - методы безусловной оптимизации. При наличии каких-либо ограничений  используются методы условной оптимизации.

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

5.1. Безусловная оптимизация: метод покоординатного спуска

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

а) формулу целевой функции f(X1,X2, ... , Xn),

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

в) начальные приближения X10,X20 ... , Xn0.

Зафиксируем все значения Х-ов в виде начальных приближений, кроме первого. Тогда f(X1, X20 ... , Xn0) - функция одной переменной X1. Решая задачу одномерной оптимизации, найдем минимум этой функции по координате X1 при фиксированных остальных координатах - X11. В этом состоит первый шаг процесса оптимизации, заключающийся в спуске по координате X1.

Зафиксируем теперь все координаты, кроме X2. Снова решая одномерную задачу оптимизации, находим минимум функции по координате X2. Далее процедура повторяется до Xn. На этом заканчивается первая итерация.

Таким образом, метод покоординатного спуска сводит многомерную задачу оптимизации к многократному решению одномерных задач по каждой независимой пременной.

После каждой итерации вычисляется

D = Х1i+1 - X1i + Х2i+1 - X2i + .... +Хni+1 - Xni

и если D<=E , то вычисления прекращаются и последний набор Х-ов считается решением. В противном случае проводится следующая итерация.

 

5.2. Безусловная оптимизация: метод наискорейшего спуска

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

а) формулу целевой функции f(X1,X2, ... , Xn),

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

в) начальные приближения X10,X20 ... , Xn0,

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

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

Множество точек, для которых целевая функция имеет постоянное значение, называется линией уровня. Направление градиента перпендикулярно к любой точке линии уровня. Под градиентом понимается вектор-столбец из первых частных производных целевой функции, если она непрерывна и дифференцируема.

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

Например, для  функции двух переменных формулы первой итерации будут иметь вид

u = f(X1нов,X2нов)  min,

где X1нов = X10- h(du/dX1)X10 и X2нов = X20 -h(du/dX2) X20,  а h - длина отрезка от точки нулевого приближения до точки минимума по выбранному направлению. Эта длина определяется методом одномерной оптимизации. На этом кончается первая итерация.

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

2 ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 Пример. Безусловная оптимизация: метод покоординатного спуска

Число независимых переменных равняется двум. Ограничения отсутствуют. Требуется найти минимум функции

u = (X2-X12)2 + (1-X1)2

из начальной точки ( 0,5;0,5) c точностью 0,0001. Проанализировав функцию, заметим, что она будет иметь минимум, равный нулю. Для чего и первое, и второе слагаемое тоже должны быть равны нулю. Откуда координаты точки минимума (1;1).

Решим эту задачу на EXCEL. Откроем новый рабочий лист. Выделим столбец А под значения X1, столбец В - под значения X2, в столбец С будем заносить значения целевой функции и, наконец, в столбец D - значения погрешности D.

Занесем в ячейки А3 и В3 значения начальных приближений, равных 0,5 и в ячейку С3 формулу =(В3-А3^2)^2+(1-A3)^2. Скопируем эту формулу в блок ячеек С4:С17. На этом заканчивается подготовительный этап.

1 итерация.

1 шаг. Скопируем содержимое ячейки В3 в ячейку В4. Сделаем текущей ячейку С4. Процесс одномерной оптимизации для нахождения X1 выполним с помощью подпрограммы EXCEL Поиск решения. Вызовем эту подпрограмму командой меню Сервис- Поиск решения. В открывшемся диалоге в поле Установить целевую ячейку занесем адрес С4, а в поле Изменяя ячейки - адрес А4. Щелкнем по кнопке Выполнить и, во вновь открывшемся диалоге Результаты поиска решения щелкнем по кнопке ОК. В результате в ячейке А4 получим числовое значение, при котором целевая функция достигает минимального  значения в ячейке С4 по координате X1.

2 шаг. Скопируем содержимое ячейки А4 в ячейку А5. Сделаем текущей ячейку С5. Дадим команду меню Сервис- Поиск решения. В открывшемся диалоге в поле Установить целевую ячейку занесем адрес С5, а в поле Изменяя ячейки - адрес В5. Щелкнем по кнопке Выполнить и, во вновь открывшемся диалоге Результаты поиска решения щелкнем по кнопке ОК. В результате в ячейке В5 получим числовое значение, при котором целевая функция достигает минимального  значения в ячейке С5 по координате X2.

3 шаг. Занесем в ячейку D5 формулу =ABS(A3-A5)+ABS(B3-B5) для вычисления погрешности решения на первом шаге. На этом заканчивается первая итерация.

Вторая и все последующие итерации проводятся аналогично, но с учетом соответствующих адресов ячеек. Например, во второй итерации будут участвовать адреса ячеек в 6 и 7 строках. Результаты проведения первых семи итераций представлены в таблице. Как видно, значения целевой функции уменьшаются от шага к шагу, но метод сходится чрезвычайно медленно.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 Пример. Безусловная оптимизация: метод наискорейшего спуска.

Решим задачу примера 5.1 методом наискорейшего спуска. Для этого прежде всего найдем частные производные целевой функции

u = (X2-X12)2 + (1-X1)2,

du/dX1 = - 4(X2-X12) X1-2(1-X1),

du/dX2 = 2(X2-X12).

Составляющие антиградиента должны быть взяты с обратным знаком

antigrad u = {- du/dX1, -du/d X2 }.

Будем решать задачу на том же рабочем листе, где мы исследовали метод покоординатного спуска. Выделим столбец А под переменную h, столбцы В и С - под X1,X2, столбцы D и Е - под составляющие антиградиента, столбцы F и G - под X1нов,X2нов , столбец Н - под целевую функцию u, столбец I - под переменную D. Приведем таблицу формул в соответствующих ячейках для первых двух итераций в строках 21 и 22. Заметим, что числовые значения в столбце А появляются в результате выполнения подпрограммы EXCEL Поиск решения для решения задачи одномерной оптимизации. Формулы блока В23:I28 получаются путем копирования в них формул блока В22:I22.

ячейка

формула

B21

0,5

C21

0,5

D21

=4*(C21-B21^2)*B21+2*(1-B21)

E21

=-2*(C21-B21^2)

F21

=B21+A21*D21

G21

=C21+A21*E21

H21

=(G21-F21^2)^2+(1-F21)^2

I21

=КОРЕНЬ(D21^2+E21^2)

B22

=F21

C22

=G21

D22

=4*(C22-B22^2)*B22+2*(1-B22)

E22

=-2*(C22-B22^2)

F22

=B22+A22*D22

G22

=C22+A22*E22

H22

=(G22-F22^2)^2+(1-F22)^2

 

После подготовки формул в блоке А21:I28, проведем первую итерацию. Для этого сделаем текущей ячейку Н21. Дадим команду меню Сервис- Поиск решения. В появившемся диалоге занесем в поле Установить целевую ячейку адрес Н21, а в поле Изменяя ячейки - адрес А21. Щелкнув по кнопке Выполнить, получим новый диалог, в котором щелкнем по кнопке ОК. В результате в ячейке А21 получим значение h, а ячейках F21 и В22 - новое значение Х1, в ячейках G21 и С22 - новое значение Х2.

 

Теперь можно приступить ко второй итерации, сделав текущей ячейку Н22. Снова используя подпрограмму Поиск решения так же, как и в первой итерации, получим очередные новые значения шага и независимых переменных. Продолжая итерации, как видно из таблицы, можно получить решение с заданной точностью за семь итераций. Точность решения контролируется по столбцу I.

Выделяя блок В20:С28, можно построить диаграмму, аналогично примеру 5.1. На ней изображены перпендикулярные ломаные линии, причем в отличие от примера 5.1 их направление не совпадает с направлениями координатных осей.

 

 

 

2.3. Безусловная оптимизация: подпрограмма EXCEL “Поиск решения”

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

Продемонстрируем применение этой подпрограммы для решения задачи примера 5.1 на том же рабочем листе. Выделим ячейки А31 и В31 под независимые переменные Х1 и Х2, а ячейку С31 - под целевую функцию u.

Занесем в ячейку С31 формулу =(В31- A31^2)^2+(1-A31)^2. Cделав ячейку С31 текущей, вызовем подпрограмму командой меню Сервис- Поиск решения. В появившемся диалоге занесем в поле Установить целевую ячейку адрес С31, а в поле Изменяя ячейки - адреса A31:B31.

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

Щелкнув по кнопке Выполнить, получим новый диалог, в котором щелкнем по кнопке ОК. В результате в ячейке А31 получим минимальное значение Х1, а в ячейке В31 - минимальное значение Х2. Легко убедиться, что оба они очень близки к 1.

При желании можно повторить вычисления, выбрав другие значения переключателей и сравнив результаты вычислений.

 

3. ВАРИАНТЫ ЗАДАНИЙ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать:

  1. титульный лист;
  2. постановку задачи (согласно варианту);
  3. краткое описание методов расчета нелинейных уравнений;
  4. программную реализацию данных методов;
  5. выводы о проделанной работе.

 

5 КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАНИЯ

  1. Какие методы решения систем нелинейных уравнений вы знаете?
  2. Какой из методов решения систем нелинейных уравнений, в вашем случае, оказался наиболее быстрым и медленным?

 

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Бурляев В.В. Численные методы в примерах на EXCEL. Методическое пособие по дисциплине “Применение информационных технологий в химии и химической технологии”, 2 изд., испр. и доп., МИТХТ, 1999, с.63.
  2. Антонов А.В. Системный анализ: учебник. – М.: Высш. шк., 2008. – 454 с.
  3. Рапопорт Э.Я. Оптимальное управление системами с распределенными параметрами: учебное пособие. – М.: Высш. Шк., 2009. – 677 с.

 

Сочинения курсовыеСочинения курсовые