Многомерная оптимизация методом Хука-Дживса

 

Министерство образования и науки РФ Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования "Сибирский государственный индустриальный университет"

Кафедра информационных технологий в металлургии.







Курсовая работа

по дисциплине: «Оптимизация в технике и технологиях»

Многомерная оптимизация методом Хука-Дживса





Выполнил:

ст. гр. ИС-10

Хлыстов Д.С.

Проверил:

к.т.н., доцент

Рыбенко И.А.





Новокузнецк2013


Оглавление


1.Теоретические основы метода оптимизации

1.1.Постановка задачи

1.2 Математические основы метода

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

1.2.2 Метод квадратичной аппроксимации

1.3 Разработка алгоритма численной реализации

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

1.3.2 Метод квадратичной аппроксимации

1.4 Составление и реализация контрольных примеров средствами Excel

1.5 Анализ результатов расчета

2.Программная реализация системы на ЭВМ средствами Delphi

2.1 Описание структуры программы и ее компонентов

2.2 Результаты отладки программы на контрольных примерах

2.3 Составление инструкции по использованию программы

3. Исследование эффективности работы метода оптимизации на тестовых задачах

3.1 Выбор и описание тестовых задач

3.2 Исследование влияния параметров задачи (начальное приближение, точность, параметры алгоритма) на количество

расчетов целевой функции

3.3 Исследование работоспособности метода путем решения задач различной размерности и сложности

3.4 Обработка результатов исследований визуальными и формальными средствами Excel

Заключение

Список литературы

Приложение 1


1.Теоритические основ метода оптимизации.


1.1Постановка задачи


Многомерная оптимизация заключается в нахождении для функции n действительных переменных


f(x1, x2, x3, …, xn) = f(X), xÎEn


компонентов вектора X*, которые дают условие


f(X*) = min(max)f(X).


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


f(X) ³ f(X*).


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

Для многомерной Хука-Дживса.

Для одномерной квадратичной аппроксимации.



1.2Математические основы метода


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

Метод включает два этапа: исследующий поиск вокруг базисной точки и поиск по образцу в направлении, выбранном для минимизации. В исследующем поиске задается начальное приближение X(1) и приращения по координатам DX. Рассчитывается значение f(X(1)) в базисной точке. Затем в циклическом порядке совершаются пробные шаги. Если приращение улучшает целевую функцию, то шаг считается удачным. По этой переменной значение изменяется на величину шага и дается приращение по другой переменной Иначе - неудачным и делается шаг в противоположном направлении. И если он тоже оказался неудачным, то значение этой переменной оставляют без изменения, и дается приращение по другой переменой и т.д. пока не будут изменены все независимые переменные. На этом завершается первый исследующий поиск, найдена точка X(2). Поиск по образцу осуществляется вдоль направления, соединяющего X(2) иX(1). Совершается один или несколько шагов до тех пор, пока шаги являются удачными.

Применяют две модификации метода прямого поиска:

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

.2.2 Метод квадратичной аппроксимации.

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


= (x2 + x1)/2 - (a1/2a2).


Предполагается, что заданы x1, x2, x3, и известны значения функции в этих точках f1, f2, f3, а аппроксимирующая функция


g(x) = a0 + a1(x - x1) + a2(x - x1)(x - x2)


совпадает с f(x) в трех указанных точках.

Коэффициенты полинома определяются уравнениями


a0 = f1; a1 = (f2 - f1)/(x2 - x1); a2 = 1/(x3 - x2)×[(f3 - f1)/(x3 - x1) - (f2 - f1)(x2 - x1)].


Для унимодальных функций оказывается приемлемой для оценки оптимума x*.


.3 Разработка алгоритма численной реализации


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

Начальный этап. Выбрать начальную точку X(1), и e> 0 - скаляр, используемый в критерии остановки. Пусть единичные координатные направления, ? - коэффициент сжатия шага. Положить Y(1) = X(1), k = j = 1 и перейти к основному этапу.

Основной этап.Шаг 1. Любым методом одномерной оптимизации найти lj* - оптимальное решение задачи минимизации функции f(Y(j) + lj) при условии l Î eи положить Y(j+1) = Y(j) + lj*. Если j < n, то заменить j на j + 1 и вернуться к шагу 1. Если j=n, то перейти к шагу 2.

Шаг 2. Положить X(k+1) = Y(n). Если ||X(k+1) - X(k)|| < e, то остановиться; в противном случае вычислить шаг а=||X(k+1) - X(k)|| ??, Y(1) = X(k), заменить k на k + 1, положить j = 1 и перейти к шагу 3.

Шаг 3. Вычислить Y(j+1) = Y(j)+a и f(Y(j) ), f(Y(j+1) ). Если f(Y(j+1) )<f(Y(j) ), то j=j+1 и вернуться к шагу 3. Иначе положить X(k)=Y(j) ,j=1, Y(1) = X(k), и вернуться к шагу 1.


.3.2 Метод квадратичной аппроксимации

Шаг 1. Задать x1, x2, x3, и вычислить значения функции в этих точках f(х1), f(х2), f(х3).

Шаг 2. Рассчитать a0 = f(х1); a1 = (f(х2) - f(х1))/(x2 - x1); a2 = 1/(x3 - x2)×[(f(х3) - f(х1))/(x3 - x1) - (f(х2) - f(х1))(x2 - x1)].

Шаг 2. Вычислить оптимальное решение: = (x2 + x1)/2 - (a1/2a2).


1.4 Составление и реализация контрольных примеров средствами Excel


Рассмотрим функцию f(x)=(х1+х2)^2+(х2-1)^2 с точностью e=0,01 и начальными значениями х1=5, х2=6. Результаты расчетов приведены в таблице 1.


Таблица 1 - Расчет экстремума функции f(x)=(х1+х2)^2+(х2-1)^2методом Хука-Дживса.

№x1x2f(x)S1S2h1h2156146-11-2,5-1,1-0,25-63,512,5По образцу№x1x2f(x)h1h2|x(k+1)-xk|Критерий156146-1,1-0,2511,2805142Не достигнут23,95,75115,68532,85,589,1441,75,2566,36550,6547,366-0,54,7532,1257-1,64,520,668-2,74,2512,9659-3,849,0410-4,93,758,88511-63,512,5№x1x2f(x)S1S2h1h21-4,93,758,8851,15-1,3750,115-0,1375-3,752,3753,78125По образцу№x1x2f(x)h1h2|x(k+1)-xk|Критерий1-4,93,758,8850,115-0,13753,40578644Не достигнут2-4,7853,61258,1999133-4,673,4757,553654-4,5553,33756,9462135-4,443,26,37766-4,3253,06255,8478137-4,212,9255,356858-4,0952,78754,9047139-3,982,654,491410-3,8652,51254,11691311-3,752,3753,7812512-3,6352,23753,48441313-3,522,13,226414-3,4051,96253,00721215-3,291,8252,8268516-3,1751,68752,68531217-3,061,552,582618-2,9451,41252,51871219-2,831,2752,4936520-2,7151,13752,507412№x1x2f(x)S1S2h1h21-2,831,2752,493651,555-0,13750,1555-0,01375-1,2751,13750,037812По образцу№x1x2f(x)h1h2|x(k+1)-xk|Критерий1-2,831,2752,493650,1555-0,013751,87328081Не достигнут2-2,67451,261252,0655273-2,5191,24751,6779684-2,36351,233751,3309745-2,2081,221,0245446-2,05251,206250,7586787-1,8971,19250,5333768-1,74151,178750,3486399-1,5861,1650,20446610-1,43051,151250,10085711-1,2751,13750,03781212-1,11951,123750,01533213-0,9641,110,033416№x1x2f(x)S1S2h1h21-1,11951,123750,015332-0,00425-0,06187-0,000425-0,0061875-1,123751,0618750,007657По образцу№x1x2f(x)h1h2|x(k+1)-xk|Критерий1-1,11951,123750,015332-0,00043-0,006190,06822287Не достигнут2-1,119931,1175630,0138273-1,120351,1113750,0124854-1,120781,1051880,0113075-1,12121,0990,0102946-1,121631,0928130,0094447-1,122051,0866250,0087598-1,122481,0804380,0082379-1,12291,074250,0078810-1,123331,0680630,00768611-1,123751,0618750,00765712-1,124181,0556880,007792№x1x2f(x)S1S2h1h21-1,123751,0618750,0076570,061875-0,030940,0061875-0,00309375-1,061881,0309380,001914По образцу№x1x2f(x)h1h2|x(k+1)-xk|Критерий1-1,123751,0618750,0076570,006187-0,003090,14527454Не достигнут2-1,117561,0587810,006913-1,111381,0556880,0062024-1,105191,0525940,0055325-1,0991,04950,00496-1,092811,0464060,0043077-1,086631,0433130,0037528-1,080441,0402190,0032359-1,074251,0371250,00275710-1,068061,0340310,00231611-1,061881,0309380,00191412-1,055691,0278440,00155113-1,04951,024750,00122514-1,043311,0216560,00093815-1,037131,0185630,00068916-1,030941,0154690,00047917-1,024751,0123750,00030618-1,018561,0092810,00017219-1,012381,0061887,66E-0520-1,006191,0030941,91E-0521-119,77E-3022-0,993810,9969061,91E-05№x1x2f(x)S1S2h1h21-119,77E-30-3E-150-2,998E-160-113,94E-31По образцу№x1x2f(x)h1h2|x(k+1)-xk|Критерий1-119,77E-30-3E-1603,2196E-15Достигнут2-117,89E-303-116,22E-304-114,78E-305-113,56E-306-112,56E-307-111,79E-308-111,23E-309-119,86E-3110-118,38E-3111-117,89E-3112-118,38E-31

Таким образом экстремум в точке [-1;1] найден за шесть итерации с точностью e =0,01.


.5 Анализ результатов расчета


При подсчете функции f(x)=(х1+х2)^2+(х2-1)^2с точностью e =0,01, был найден экстремум в точке [-1;1]за 6 итераций.

Достоинства метода:

Простая стратегия поиска, вычисление только значений функции, небольшой объём требуемой памяти.

Недостатки:

Алгоритм основан на циклическом движении по координатам. Это может привести к вырождению алгоритма в бесконечную последовательность исследующих поисков без поиска по образцу.


2.Программная реализация системы на ЭВМ средствами Delphi


2.1Описание структуры программы и ее компонентов


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

-Поле для ввода начальных координат

-Поле для ввода точности поиска

-Выбор функции.

-Поле для вывода всех шагов и итераций.

-Поля для вывода экстремума в точках.

-Вывод конечного числа итераций.

Программа реализованная в среде Delphiи имеет следующий вид (рис.1).


Рисунок 1 - интерфейс программы Хука-Дживса

Ознакомится с листингом программы на примере одной функции можно в приложении 1.


2.2Результаты отладки программы на контрольных примерах


В программной реализации использовались функции различной сложности:


f(x) = (x1+x2)2+(x2-1)2(x)= (x1+x2)2+(x2+4)2(x)= (x1-3x2)2+(x2+1)2(x)= (x1-6x2)2+(x2+1)2(x)= (x1-2x2)2+(x2-3)2(x)= (x1+2x2)2+(x2-4)2


Мною была выбрана функция для отладки программы f(x) = (x1+x2)2+(x2-1)2, с начальным интервалом [5;6] и точность поиска равную e=0,01.

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


2.3Составление инструкции по использованию программы


)Запустить программу - после открытия программы перед вами появится окно интерфейса программы (Рис.2).


Рисунок 2- Интерфейс программы.


)Вводим точность и начальныезначения интервала (Рис.3)


Рисунок 3-Поля для ввода точности и начального значения интервала.

оптимизация программа хук дживс

3)Выбираем функцию и нажимаем кнопку «Рассчитать» (Рис.4).


Рисунок 4- Окно для выбора функций.


) После нажатия кнопки «Рассчитать», в нижнихполях «Количество итераций», «Координаты х» и «Значение функции» будут выведены ответы (Рис.5).


Рисунок 5-Поля вывода.


)После нажатия кнопки «Рассчитать», в правой области программы появятся подробные расчеты выбранной функции. (Рис.6).

Рисунок 6 - Подробные расчеты выбранной функции.

3.Исследование эффективности работы метода оптимизации на тестовых задачах


.1 Выбор и описание тестовых задач


Для тестов выбралфункцию f(x)= (x1-6x2)2+(x2+1)2 с начальными координатами[-5; -3] и точность e=0,015

Сначала делаем исследующий поиск с помощью квадратичной аппроксимации f(x)= (x1-6x2)2+(x2+1)2 при х1=-5,х2=-3 и получаем х`1=-18. После для х1=-18 и х2=-3 и получаем х`2=-2,945. Вычисляем S1=-13и S2=0,054,а также h1=-1,2 и h2=0,0054.

Далее переходим к поиску по образцу. Первое действие подставляем в функцию f(x)= (x1-6x2)2+(x2+1)2 наши значения х1=-5,х2=-3 получая f(x)=173. Второе действие меняем х1=х1+h1 а х2=x2+h2 и снова считаем значение функции получая f(x)=140,11. Повторяем второе действие пока функция убывает , как только она начинает возрастать прекращаем поиск по образцу. Мне потребовалось 12 итераций на 11 итерации значения былих1=-18, х2=-2,94595,f(x)=3,891891892 на 12 итерации стали такими былих1=-19,3, х2=-2,94054,f(x)=6,510540541.

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

И так выполняем исследующий поиск и поиск по образцу пока критерий точности не станет меньше заданной точности.



3.2 Исследование влияния параметров задачи (начальное приближение, точность, параметры алгоритма) на количество расчетов целевой функции


Проведя исследования заданных мной функций выяснилось:

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

2.Для некоторых функций точность влияет на количество итераций.


3.3 Исследование работоспособности метода путем решения задач различной размерности и сложности.


Алгоритм Хука-Дживса показал себя как быстро работающий. Если e=<0,9 то количество итерация не возрастает, но если точность будет больше e>0,9 то количество итераций уменьшится.

При исследовании сложных функций было выявленочто не у всех функций можно найти точный экстремум.


3.4 Обработка результатов исследований визуальными и формальными средствами Excel


В качестве показателей будут выступать начальное приближение, точность и количество итераций.

Рассмотрим первую функциюf(x)= (x1-6x2)2+(x2+1)2при х1=-5,х2=-3 получаем таблицу 2, а также график 1.


Таблица 2-зависимость итераций от точности и начального приближения

x1x2точность итерации-5-30,13-5-30,013-5-30,0013-5-30,00013-5-30,000013

График 1-зависимость итераций и начального приближения


Поменяем начальное приближение,но точность оставим прежней e=0.015, так как при изменении точности количество итераций в данной функции не меняется, и тогда получим таблицу 3 и график 2.


Таблица 2 - зависимость итерации от начального приближения

x1x2итерации458314489-13453-7633143

График 2 - зависимость итерации от начального приближения



Заключение


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


Список литературы.


1.Р.Хук ,Т.А.Дживс Прямой поиск решения для числовых и статических проблем , 212-219 с., 1961.

2.Алгоритмы и примеры решения задач одномерной оптимизации: Метод.указ./ Сост.: С.П Мочалов, И.А. Рыбенко.: СибГИУ.- Новокузнецк, 2004.- 18с., ил.

.Мочалов С.П. Методы оптимизации металлургических процессов: Учебное пособие / КузПИ. -Кемерово, 1989.- 81с.



Приложение 1

//описание глобальных переменных,x2:double;:integer;:double;ExplSearch(x1,x2:double;check:integer):Double; //Функция для расчета метода квадратичной аппроксимации она же исследующий поиск:double;,f2,f3:double;,a1,a2:double;,tx2,tx3:double;=1 then //для расчета первого х:=x1;:=tx1+1;:=tx2+1;:=sqr(tx1+x2)+sqr(x2-1);

f2:=sqr(tx2+x2)+sqr(x2-1);:=sqr(tx3+x2)+sqr(x2-1);

a0:=f1;:=(f2-f1)/(tx2-tx1);:=1/(tx3-tx2)*((f3-f1)/(tx3-tx1)-(f2-f1)/(tx2-tx1));:=(tx2+tx1)/2-a1/2/a2;=2 then //для расчета второго х:=x2;:=tx1+1;:=tx2+1;:=sqr(tx1+x1)+sqr(tx1-1);:=sqr(tx2+x1)+sqr(tx2-1);:=sqr(tx3+x1)+sqr(tx3-1);:=f1;:=(f2-f1)/(tx2-tx1);:=1/(tx3-tx2)*((f3-f1)/(tx3-tx1)-(f2-f1)/(tx2-tx1));:=(tx2+tx1)/2-a1/2/a2;;:=xopt;;


procedure TForm1.RezClick(Sender: TObject); //основная процедура

varopt,x2opt:double;,sx2:double;,h2:double;:double;,tx2:double;:single; //погрешность:double;:integer;:=0;

ListBox1.Items.Clear;.Text:='';

EXopt2.Text:='';.Text:='';:=0;:=StrToFloat(Ex1.text);:=1;:=StrToFloat(Ex2.text);:=2;:=strtofloat(Eerror.Text);

.Checkedthen //проверка на выбор функции и запуск метода Хука-Дживса:=x1;:=x2;opt:=RB1ExplSearch(x1,x2,1); //Передача значений в функцию квадратичной аппроксимации для первого хopt:=RB1ExplSearch(x1opt,x2,2); // Передача значений в функцию квадратичной аппроксимации для второго х.Items.Add('Исследующий поиск');.Items.Add('x1 = '+FloatToStr(x1opt)+' x2 = '+FloatToStr(x2opt));:=(x1opt-x1)*0.1;:=(x2opt-x2)*0.1;

F:=sqr(x1+x2)+sqr(x2-1);

dF:=0;<Fdo //запуск цикла поиска по образцу

F:=sqr(x1+x2)+sqr(x2-1);

tx1:=x1;:=x2;:=x1+h1;:=x2+h2;.Items.Add('Поискпообразцу');.Items.Add('x1 = '+FloatToStr(x1)+' x2 = '+FloatToStr(x2));:=sqr(x1+x2)+sqr(x2-1);;:=sqrt(sqr(x1-sx1)+sqr(x2-sx2)); // расчет критерий для окончание поиска:=tx1;:=tx2;:=iteration+1; //подсчет количества итераций;<=error //проверка критерий с заданной точность .Create('Выбиритефункцию');;

.Items.Add('');.Items.Add('Количество итераций '+inttostr(iteration));.Text:=IntToStr(iteration); //вывод результатов итерации.Text:=FloatToStr(x1); //вывод результатов для х первого.Text:=FloatToStr(x2); //вывод результатов для ч второго.Text:=FloatToStr(F); //вывод результатов для функции в точках х1 х2//блок обработки ошибокdon=0 then.SetFocus;('х1 должен быть числом или вместо точки должна быть запятая');;n=1 then.SetFocus;('х2 должен быть числом или вместо точки должна быть запятая');;n=2 then.SetFocus;('Точность должна быть числом или вместо точки должна быть запятая');;;;;


Министерство образования и науки РФ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Сибирский го

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ