Методы неиспользующие производные



Цель работы – изучение вопросов решения задач нелинейного программирования с помощью градиентных методом.

Содержание работы

Методы оптимизации, не использующие производные обычно называются методами поиска. В типичном методе поиска направление оптимизации полностью определяется на основании последовательных вычислений целевой функции f(x).

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

Релаксационный метод (метод Гаусса-Зейделя)

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

Первый шаг делаем вдоль координатной оси X1, тогда новая точка имеет координаты

Величина шага выбирается такой, чтобы в новой точке X01 можно было найти экстремум функции f(X) вдоль выбранного направления. С этой целью может быть использован как постоянный шаг, так и шаг, определяемый с помощью методов одномерного поиска.

Следующий шаг делается вдоль координатной оси X2. Координаты новой точки

Аналогично осуществляется n шагов, где n - число переменных в исследуемой функции. На этом заканчивается первый цикл, после чего описанная процедура повторяется начиная с координатного направления X1. В общем случае координаты новой точки определяются по формуле

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

½f(Xk,n)-f(Xk-1,n)½ £ e.

Если исследуемая функция является сепарабельной, т. е.

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

Рассмотрим процесс поиска максимума функции f(X)=1–2X12–X22 согласно описанному алгоритму. В качестве начальной точки выберем X=[–3;–3]Т. Тогда

Подставим эту точку в исследуемую функцию:

f(X)=1–2(–3+t)2–(–3)=j(t).

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

отсюда t=3. Следовательно, координаты новой точки X01=[0;–3]Т.

Аналогично на координатной оси X2

В данном случае

f(X) = 1- 02 - (-3+t)2 = j(t).

Отсюда

т.е. t=3. Таким образом, координаты новой точки X02=[0;0]Т.

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

Прямой поиск

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

Данный алгоритм прямого поиска состоит из следующих операций.

Задается начальная точка X0 и начальное приращение DX. Величина шага может быть различной для разных координатных направлений. Чтобы начать исследующий поиск, следует вычислить значение функции f(X) в базисной точке, в качестве которой в первом цикле выбрана начальная точка. Затем каждая переменная (каждый раз только одна) изменяется в циклическом порядке на выбранные величины до тех пор, пока все параметры не будут изменены.

Эти изменения осуществляются следующим образом. Сначала дается приращение переменной X1, в результате получаем точку

X11=X10+DX10.

Если приращение приводит к улучшению функции f(X), переходим в данную точку, в противном случае X10 изменяем на DX10 и вычисляем значение функции в точке X10–DX10.

При улучшении значения функции в точке X10–DX10 выбирается эта точка, в противном случае X10 остается без изменений.

Затем изменяем X20 на величину DX20. И так до тех пор, пока не будут изменены все не зависимые переменные, что завершает исследующий поиск. На каждом шаге или сдвиге по независимой переменной значение целевой функции сравнивается с ее значением в предыдущей точке. При улучшении значения функции на данном шаге старое ее значение в последующих значениях заменяется на новое. Однако если произведенное возмущение по Х неудачно, сохраняется прежнее значение f(X).

После проведения одного (или более) исследующего поиска применяется стратегия поиска по образцу. Удачные изменения в исследующем поиске определяют в En вектор, указывающий некоторое направление поиска экстремума, которое может привести к успеху. Новая точка образца рассчитывается по формуле

X2 = 2X1 – XB,

где XB=X0 – координаты старой базисной точки.

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

Для определения успеха или неудачи по образцу проводят исследующий поиск, который будет называться исследующим поиском типа II. Процедура поиска полностью совпадает с описанной выше. В результате приходим в новую точку X3. Если функция f(X) не улучшилась в процессе исследующего поиска типа II по сравнению со значением функции в базисной точке (в нашем случае XB=X1), возвращаемся в базисную точку. В данном случае поиск по образцу считается неудачным, и проводим новый исследующий поиск типа I. Если и он неудачен, последовательно уменьшаем DX до тех пор, пока можно будет определить новое удачное направление или пока DX не станет меньше некоторой заранее установленной допустимой величины.

Рассмотрим решение следующей задачи:

минимизировать f(X)=(X1+1)2+X22, начиная из точки X0=[2;2,8]Т с начальным DX=[0,6;0,84]Т. Исходное значение функции f(X0)=16,84.

Проводим последующий поиск типа I:

X11 = 2 + 0,6 = 2,6,    f(X) = 20,80 (неудача),

X11 = 2 – 0,6 = 1,4,     f(X) = 13,60 (успех),

X21 = 2,8 + 0,84 = 3,64, f(X) = 19,00 (неудача),

X21 = 2,8 – 0,84 = 1,96, f(X) = 9,50 (успех).

Исследующий поиск оказался удачным, новым базисным вектором будет точка X1=[1,4;1,96]Т.

Далее проводится поиск по образцу:

X12 = 2×(1,40) – 2 =0,8,

X22 = 2×(1,96) – 2,8 = 1,12,

f(X2) = 4,49.

Наконец, проводится исследующий поиск типа II; неудача или успех его оценивается путем сравнения исходных функций с f(X2).

X13 = 0,8 + 0,6 = 1,4,     f(X) = 7,0l (неудача),

X13 = 0,8 – 0,6 = 0,2,      f(X) = 2,69 (успех),

X23 = 1,12 + 0,84 = 1,96, f(X) = 5,28 (неудача),

X23 = 1,12 – 0,84 = 0,28, f(X) = 1,52 (успех).

Чтобы определить, оказался ли поиск по образцу успешным сравниваем функции f(X3) и f(X1). Поиск по образцу является успешным f(X3)<f(X1), значит, новой базисной точкой будет X3=[0,2;0,28]Т. При этом старая базисная точка представлена вектором X1=[1,4;1,96]Т.

Затем вновь проводится поиск по образцу. Дальнейшая траектория поиска показана на рис. 3.1, из которого видно, что поиск по образцу из точки оказывается удачным и приводит в точку X5. Последующий поиск по образцу оказывается неудачным (f(X7)>f(X5)), хотя исследующий поиск типа II удачен. Следовательно, из точки X5 начинаем исследующий поиск типа I.

Порядок выполнения работы

1. Изучить метод решения задачи и составить информационную блок-схему метода.

2. Сформулировать математическую постановку задачи.

3. Выполнить ручной просчет задачи.

4. Составить программу решения задачи.

5. Запустить программу на выполнение и получить результаты.

6. Проанализировать результаты.

Содержание отчета

1. Привести математическую постановку задачи.

2. Привести результаты ручного просчета задачи.

3. Привести алгоритм метода и информационную блок-схему,

4. Привести таблицы результатов.

Варианты работ

1. Варианты методов:

1) метод Гаусса-Зейделя;

2) метод прямого поиска;

2. Варианты заданий из лабораторной работы №6.


Дата добавления: 2019-02-26; просмотров: 117; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!