Многомерная оптимизация методом Хука-Дживса
Теоретические основы метода оптимизации. Разработка компьютерной системы для решения задач многомерной безусловной оптимизации методом Хука-Дживса с минимизацией по направлению. Описание структуры программы и результаты ее отладки на контрольных примерах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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
Подобные документы
Сравнение методов многомерной оптимизации Хука-Дживса и Розенброка по числу вычислений и по числу вызова оптимизируемой функции в процессе оптимизации. Особенности применения алгоритмов ускоряющего шага, в которых используется поиск по направлению.
лабораторная работа [2,8 M], добавлен 14.07.2012Пример расчета экстремума функции методом прямого поиска с дискретным шагом. Результаты отладки программы на контрольных примерах. Составление инструкции по использованию программы. Обработка результатов исследований визуальными средствами Excel.
курсовая работа [1,0 M], добавлен 20.05.2012Программная реализация приложения для вычисления заданных функций. Процедура поиска минимума функции. Применение методов Хука-Дживса и градиентного спуска для решения задачи. Исследование функции в окрестности базисной точки, определение ее координат.
контрольная работа [767,1 K], добавлен 02.02.2014Решения алгебраических уравнений методом выделения корней. Аппроксимация функций методом наименьших квадратов; дихотомия, бисекция. Одномерная оптимизация многоэкстремальных функций; метод золотого сечения. Многомерная оптимизация градиентным методом.
курсовая работа [956,7 K], добавлен 04.03.2013Нахождение стационарной точки. Расчет безусловного экстремума функции методами прямого поиска. Графическое пояснение метода равномерного симплекса. Метод поиска Хука-Дживса. Метод сопряженных направлений Пауэлла. Разработка программного модуля расчетов.
курсовая работа [1,4 M], добавлен 16.09.2012Сущность задач оптимизации и методы их решения с ориентацией на современные средства компьютерной техники. Область допустимых решений. Структура оптимизационной модели. Проверка правильности нахождения точек координат методом половинного деления.
курсовая работа [2,4 M], добавлен 25.04.2015Теоретические основы вариационного исчисления и область применения метода. Практическое решение задач оптимизации методом вариационного исчисления. Нахождение экстремума функционала и частных производных. Составление дифференциального уравнения Эйлера.
лабораторная работа [99,5 K], добавлен 16.12.2014Методы решения задач параметрической оптимизации. Решение однокритериальных задач с параметром в целевой функции и в ограничениях. Решение многокритериальной задачи методом свертки критериев, методом главного критерия, методом последовательных уступок.
курсовая работа [1,5 M], добавлен 14.07.2012Необходимые условия экстремума. Разработка машинного алгоритма и программы многомерной оптимизации для градиентного метода с использованием метода равномерного поиска. Проверка необходимых и достаточных условий экстремума для найденной точки минимума.
курсовая работа [249,8 K], добавлен 25.09.2013Описание и функциональное назначение программы по оптимизации функции, ее логическая структура и используемые технические средства. Практическое применение программы, вызов и загрузка, входные и выходные данные, выполнение контрольного примера и листинг.
курсовая работа [337,4 K], добавлен 26.02.2012