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

Теоретические основы метода оптимизации. Разработка компьютерной системы для решения задач многомерной безусловной оптимизации методом Хука-Дживса с минимизацией по направлению. Описание структуры программы и результаты ее отладки на контрольных примерах.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.01.2014
Размер файла 595,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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

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

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

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

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

Выполнил:

ст. гр. ИС-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), xEn

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

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

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

f(X) f(X*).

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

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

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

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

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

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

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

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

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

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*.

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

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

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

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

Шаг 2. Положить X(k+1) = Y(n). Если ||X(k+1) - X(k)|| , то остановиться; в противном случае вычислить шаг а=||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.

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методом Хука--Дживса.

x1

x2

f(x)

S1

S2

h1

h2

1

5

6

146

-11

-2,5

-1,1

-0,25

-6

3,5

12,5

По образцу

x1

x2

f(x)

h1

h2

|x(k+1)-xk|

Критерий

1

5

6

146

-1,1

-0,25

11,2805142

Не достигнут

2

3,9

5,75

115,685

3

2,8

5,5

89,14

4

1,7

5,25

66,365

5

0,6

5

47,36

6

-0,5

4,75

32,125

7

-1,6

4,5

20,66

8

-2,7

4,25

12,965

9

-3,8

4

9,04

10

-4,9

3,75

8,885

11

-6

3,5

12,5

x1

x2

f(x)

S1

S2

h1

h2

1

-4,9

3,75

8,885

1,15

-1,375

0,115

-0,1375

-3,75

2,375

3,78125

По образцу

x1

x2

f(x)

h1

h2

|x(k+1)-xk|

Критерий

1

-4,9

3,75

8,885

0,115

-0,1375

3,40578644

Не достигнут

2

-4,785

3,6125

8,199913

3

-4,67

3,475

7,55365

4

-4,555

3,3375

6,946213

5

-4,44

3,2

6,3776

6

-4,325

3,0625

5,847813

7

-4,21

2,925

5,35685

8

-4,095

2,7875

4,904713

9

-3,98

2,65

4,4914

10

-3,865

2,5125

4,116913

11

-3,75

2,375

3,78125

12

-3,635

2,2375

3,484413

13

-3,52

2,1

3,2264

14

-3,405

1,9625

3,007212

15

-3,29

1,825

2,82685

16

-3,175

1,6875

2,685312

17

-3,06

1,55

2,5826

18

-2,945

1,4125

2,518712

19

-2,83

1,275

2,49365

20

-2,715

1,1375

2,507412

x1

x2

f(x)

S1

S2

h1

h2

1

-2,83

1,275

2,49365

1,555

-0,1375

0,1555

-0,01375

-1,275

1,1375

0,037812

По образцу

x1

x2

f(x)

h1

h2

|x(k+1)-xk|

Критерий

1

-2,83

1,275

2,49365

0,1555

-0,01375

1,87328081

Не достигнут

2

-2,6745

1,26125

2,065527

3

-2,519

1,2475

1,677968

4

-2,3635

1,23375

1,330974

5

-2,208

1,22

1,024544

6

-2,0525

1,20625

0,758678

7

-1,897

1,1925

0,533376

8

-1,7415

1,17875

0,348639

9

-1,586

1,165

0,204466

10

-1,4305

1,15125

0,100857

11

-1,275

1,1375

0,037812

12

-1,1195

1,12375

0,015332

13

-0,964

1,11

0,033416

x1

x2

f(x)

S1

S2

h1

h2

1

-1,1195

1,12375

0,015332

-0,00425

-0,06187

-0,000425

-0,0061875

-1,12375

1,061875

0,007657

По образцу

x1

x2

f(x)

h1

h2

|x(k+1)-xk|

Критерий

1

-1,1195

1,12375

0,015332

-0,00043

-0,00619

0,06822287

Не достигнут

2

-1,11993

1,117563

0,013827

3

-1,12035

1,111375

0,012485

4

-1,12078

1,105188

0,011307

5

-1,1212

1,099

0,010294

6

-1,12163

1,092813

0,009444

7

-1,12205

1,086625

0,008759

8

-1,12248

1,080438

0,008237

9

-1,1229

1,07425

0,00788

10

-1,12333

1,068063

0,007686

11

-1,12375

1,061875

0,007657

12

-1,12418

1,055688

0,007792

x1

x2

f(x)

S1

S2

h1

h2

1

-1,12375

1,061875

0,007657

0,061875

-0,03094

0,0061875

-0,00309375

-1,06188

1,030938

0,001914

По образцу

x1

x2

f(x)

h1

h2

|x(k+1)-xk|

Критерий

1

-1,12375

1,061875

0,007657

0,006187

-0,00309

0,14527454

Не достигнут

2

-1,11756

1,058781

0,00691

3

-1,11138

1,055688

0,006202

4

-1,10519

1,052594

0,005532

5

-1,099

1,0495

0,0049

6

-1,09281

1,046406

0,004307

7

-1,08663

1,043313

0,003752

8

-1,08044

1,040219

0,003235

9

-1,07425

1,037125

0,002757

10

-1,06806

1,034031

0,002316

11

-1,06188

1,030938

0,001914

12

-1,05569

1,027844

0,001551

13

-1,0495

1,02475

0,001225

14

-1,04331

1,021656

0,000938

15

-1,03713

1,018563

0,000689

16

-1,03094

1,015469

0,000479

17

-1,02475

1,012375

0,000306

18

-1,01856

1,009281

0,000172

19

-1,01238

1,006188

7,66E-05

20

-1,00619

1,003094

1,91E-05

21

-1

1

9,77E-30

22

-0,99381

0,996906

1,91E-05

x1

x2

f(x)

S1

S2

h1

h2

1

-1

1

9,77E-30

-3E-15

0

-2,998E-16

0

-1

1

3,94E-31

По образцу

x1

x2

f(x)

h1

h2

|x(k+1)-xk|

Критерий

1

-1

1

9,77E-30

-3E-16

0

3,2196E-15

Достигнут

2

-1

1

7,89E-30

3

-1

1

6,22E-30

4

-1

1

4,78E-30

5

-1

1

3,56E-30

6

-1

1

2,56E-30

7

-1

1

1,79E-30

8

-1

1

1,23E-30

9

-1

1

9,86E-31

10

-1

1

8,38E-31

11

-1

1

7,89E-31

12

-1

1

8,38E-31

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

1.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

f(x)= (x1+x2)2+(x2+4)2

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

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

f(x)= (x1-2x2)2+(x2-3)2

f(x)= (x1+2x2)2+(x2-4)2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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--зависимость итераций от точности и начального приближения

x1

x2

точность

итерации

-5

-3

0,1

3

-5

-3

0,01

3

-5

-3

0,001

3

-5

-3

0,0001

3

-5

-3

0,00001

3

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

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

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

x1

x2

итерации

45

8

31

44

8

9

-13

45

3

-7

6

3

3

14

3

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

Заключение

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

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

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

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

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

Приложение 1

Var //описание глобальных переменных

x1,x2:double;

iteration:integer;

F:double;

functionRB1ExplSearch(x1,x2:double;check:integer):Double; //Функция для расчета метода квадратичной аппроксимации она же исследующий поиск

var

xopt:double;

f1,f2,f3:double;

a0,a1,a2:double;

tx1,tx2,tx3:double;

begin

ifcheck=1 then //для расчета первого х

begin

tx1:=x1;

tx2:=tx1+1;

tx3:=tx2+1;

f1:=sqr(tx1+x2)+sqr(x2-1);

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

f3:=sqr(tx3+x2)+sqr(x2-1);

a0:=f1;

a1:=(f2-f1)/(tx2-tx1);

a2:=1/(tx3-tx2)*((f3-f1)/(tx3-tx1)-(f2-f1)/(tx2-tx1));

xopt:=(tx2+tx1)/2-a1/2/a2;

end

else

ifcheck=2 then //для расчета второго х

begin

tx1:=x2;

tx2:=tx1+1;

tx3:=tx2+1;

f1:=sqr(tx1+x1)+sqr(tx1-1);

f2:=sqr(tx2+x1)+sqr(tx2-1);

f3:=sqr(tx3+x1)+sqr(tx3-1);

a0:=f1;

a1:=(f2-f1)/(tx2-tx1);

a2:=1/(tx3-tx2)*((f3-f1)/(tx3-tx1)-(f2-f1)/(tx2-tx1));

xopt:=(tx2+tx1)/2-a1/2/a2;

end;

result:=xopt;

end;

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

var

x1opt,x2opt:double;

sx1,sx2:double;

h1,h2:double;

dF:double;

tx1,tx2:double;

error:single; //погрешность

test:double;

n:integer;

begin

iteration:=0;

ListBox1.Items.Clear;

EXopt1.Text:='';

EXopt2.Text:='';

EIteration.Text:='';

try

n:=0;

x1:=StrToFloat(Ex1.text);

n:=1;

x2:=StrToFloat(Ex2.text);

n:=2;

error:=strtofloat(Eerror.Text);

ifRB1.Checkedthen //проверка на выбор функции и запуск метода Хука--Дживса

repeat

begin

sx1:=x1;

sx2:=x2;

x1opt:=RB1ExplSearch(x1,x2,1); //Передача значений в функцию квадратичной аппроксимации для первого х

x2opt:=RB1ExplSearch(x1opt,x2,2); // Передача значений в функцию квадратичной аппроксимации для второго х

ListBox1.Items.Add('Исследующий поиск');

ListBox1.Items.Add('x1 = '+FloatToStr(x1opt)+' x2 = '+FloatToStr(x2opt));

h1:=(x1opt-x1)*0.1;

h2:=(x2opt-x2)*0.1;

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

dF:=0;

whiledF<Fdo //запуск цикла поиска по образцу

begin

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

tx1:=x1;

tx2:=x2;

x1:=x1+h1;

x2:=x2+h2;

ListBox1.Items.Add('Поискпообразцу');

ListBox1.Items.Add('x1 = '+FloatToStr(x1)+' x2 = '+FloatToStr(x2));

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

end;

test:=sqrt(sqr(x1-sx1)+sqr(x2-sx2)); // расчет критерий для окончание поиска

x1:=tx1;

x2:=tx2;

iteration:=iteration+1; //подсчет количества итераций

end;

untiltest<=error //проверка критерий с заданной точность

else

begin

raiseException.Create('Выбиритефункцию');

end;

ListBox1.Items.Add('');

ListBox1.Items.Add('Количество итераций '+inttostr(iteration));

EIteration.Text:=IntToStr(iteration); //вывод результатов итерации

EXopt1.Text:=FloatToStr(x1); //вывод результатов для х первого

EXopt2.Text:=FloatToStr(x2); //вывод результатов для ч второго

EFunc.Text:=FloatToStr(F); //вывод результатов для функции в точках х1 х2

Except //блок обработки ошибок

onEConvertError do

begin

if n=0 then

begin

Ex1.SetFocus;

ShowMessage('х1 должен быть числом или вместо точки должна быть запятая');

end;

if n=1 then

begin

Ex2.SetFocus;

ShowMessage('х2 должен быть числом или вместо точки должна быть запятая');

end;

if n=2 then

begin

Eerror.SetFocus;

ShowMessage('Точность должна быть числом или вместо точки должна быть запятая');

end;

end;

end;

end;

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.