Информатика, программирование: Исследование методов оптимизации, Курсовая работа

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ХАРЬКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ»

Факультет информатики и управления

Кафедра экономической кибернетики и маркетингового менеджмента

КУРСОВАЯ РАБОТА

По математическому программированию

Исследование методов оптимизации


Харьков 2009


РЕФЕРАТ

Данная курсовая работа содержит : 41 страницу, 16 таблиц, 6 графиков.

В курсовой работе рассмотрены теоретические основы двух методов оптимизации математического программирования :

- метод Нелдера-Мида ;

- градиентный метод с дроблением шага.

Произведена минимизация исследуемой функции указанными методами. Выявлена зависимость числа итераций от заданной точности. Сопоставлена трудоемкость и эффективность оптимизации заданной функции различными методами (градиентным и методом Нелдера-Мида).

Ключевые термины:

Градиент – вектор первых частных производных функции.

Линии уровня – множества точек, в которых функция  принимает постоянные значения, т.е.

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

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


СОДЕРЖАНИЕ

1. Введение

2. Математическое описание методов оптимизации

2.1 Метод Нелдера-Мида

2.2 Градиентный метод с дроблением шага

3. Решение задачи минимизации для каждого из методов

3.1 Метод Нелдера-Мида

3.2 Градиентный метод с дроблением шага

4. Графическая интерпретация решения задачи

5. Аналитическое исследование методов

6. Заключение

7. Приложение

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


СПИСОК УСЛОВНЫХ ОБОЗНАЧЕНИЙ

 - точка

 - длинна шага

- вектор градиент

E - точность

N – количество итераций

Д – матрица координат симплекса

t – длинна ребра симплекса


1. ВВЕДЕНИЕ

Объектом исследования предмета математическое программирование являются задачи оптимизации.

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

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

ПОСТАНОВКА ЗАДАЧИ ( Вариант задания 1)

Исследовать функцию типа :

Используемые методы минимизации  :

1.   Метод: Нелдера-Мида.

2.   Метод: Градиентный с дроблением шага.

Необходимо :

1.   Решить задачу минимизации , начав итерации из выбранной начальной точки x0=(1;1) заданными по варианту методами, необходимая точность решения . Привести таблицу результатов расчета типа: Итерация:  - точка: значение: критерий: .

2.   Рассчитать 3 линии уровня функции и изобразить их на графике.

3.   Отобразить на графиках линий уровня для каждого из заданных методов траекторию движения по итерациям (траекторию спуска).

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

5. Сравнить эффективность рассмотренных в варианте методов по числу итераций N, построить графики N=F(E).


2. МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ МЕТОДОВ ОПТИМИЗАЦИИ

 

2.1 Метод Нелдера-Мида

Вводится симплекс, координаты вершин которого заданы таблицей (одна из вершин в начале координат).

t – некоторое выбранное число.

Если n = 2, то при t = 1 имеем

Расположение симплекса показано на рисунке 2.1


Рисунок 2.1- Начальное расположение симплекса


Легко убедиться в том, что если координаты вершин симплекса задать в соответствии с матрицей Д0 , то расстояние между двумя любыми вершинами симплекса всегда будет равно выбранной константе t независимо от размерности задачи n .

Действительно, расстояние между любой вершиной xj , j= 2,3,.., n+1, и вершиной x1 равно

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

Вычислим значения оптимизируемой функции в точках  и переномеруем точки так, чтобы выполнялись неравенства :

.

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

Осуществим отражение вершины  относительно центра тяжести. Получим точку

.

Если a=1 , то получим зеркальное отражение. В одномерном случае процедура отражения, обеспечивающая получение точки  , симметричной точке  относительно  иллюстрируется рис. 2.2


Рисунок 2.2 - Построение точки

Сравним теперь между собой значения

Возможны следующие варианты

а). В этом случае выполняется растяжение симплекса и отыскивается точка

Параметр  обычно принимается равным 1,5.

Полученная точка  заменяет , если . В противном случае для замены  используется точка .

б) . При этом реализуется отражение. Точка  заменяет .

в) . В этом случае осуществляется сжатие и отыскивается точка

Параметр  обычно принимается равным 0,5. Точка  заменяет .

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

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

Критерий останова J является составным. При этом его компоненты имеют различный вес в зависимости от того, каков характер поведения оптимизируемой функции в окрестности экстремума. Если в районе экстремума оптимизируемая функция изменяется по типу «глубокая впадина», то больший вклад в численное значение критерия J вносит первое слагаемое, а второе при этом быстро уменьшается. Напротив, если оптимизируемая функция изменяется по типу «пологое плато», то первое слагаемое быстро становится малым и поэтому второе слагаемое вносит больший вклад в величину критерия J.

Модификация метода

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

 .

Найдем теперь координаты точки  такой, что центр тяжести симплекса с длиной ребра, равной t , использующего вершину  в качестве начальной, совпадал бы с . Матрица координат указанного симплекса имеет вид

                             (2.1)

Координаты центра тяжести этого симплекса образуют вектор

Теперь координаты точки найдем из равенства =, откуда

где

Подставляя вычисленные значения  в выражение (2.1) , получим требуемый симплекс, используя который продолжим процедуру поиска минимума. С другой стороны, для продолжения процедуры в качестве начальной точки может быть использован центр тяжести «сжавшегося» симплекса. Возникающее при этом смещение нового симплекса относительно сжавшегося (точки предполагаемого останова) во многих случаях может даже оказаться полезным. Эту процедуру считаем законченной, если после очередного сжатия алгоритм приведет в точку, расстояние от которой до точки предыдущего сжатия  не превосходит некоторого достаточно малого .

2.2 Градиентный метод с дроблением шага

 

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

                              (2.2)

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

Выберем произвольным образом точку , направление  и сконструируем луч

.                                            (2.3)

Рассмотрим вопрос о выборе направления , обеспечивающего (2.2). Для этого изучим поведение вдоль луча  . Имеем

Введем

                               (2.4)

Здесь

В соответствии с (2.3)

Тогда

Вычислим                                 (2.5)

Теперь, чтобы для любого  обеспечить отрицательность (2.5), достаточно положить , где  произвольная положительно определенная  матрица. Тогда

При этом                              (2.6)

Выбрав каким-либо образом  , получим Затем аналогично рассчитаем

Общее рекуррентное соотношение имеет вид :

                                (2.7)

Различные варианты градиентных процедур отличаются друг от друга способом выбора .

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

                                  (2.8)

                                          (2.9)

где  и  -некоторые достаточно малые числа .

Понятно, что критерий (2.8) хорош в тех случаях, когда функция  в окрестности минимума, используя ранее введенную классификацию, имеет характер «глубокой» впадины. С другой стороны, если функция  ведет себя как «пологое плато», то более предпочтительным является критерий (2.9). Аналогом критерия (2.8) является другое часто применяемое правило останова :

,                                       (2.10)

использующее необходимое условие экстремума функции. Очевидным недостатком критериев (2.8)-(2.10) является то, что их качество существенно зависит от абсолютных значений величины  и компонентов векторов ,. Более универсальными являются относительные критерии :

                               (2.11)

                                        (2.12)

                 (2.13)

Заметим, что очень часто на практике используются составные критерии, представляющие собой линейную комбинацию критериев (2.11)-(2.13), например,

Иногда применяют другой вариант построения составного критерия :

При реализации градиентного метода с дроблением шага в качестве  выбирают единичную матрицу, то есть

а длину шага определяют путем проверки некоторого неравенства. При этом основное рекуррентное соотношение (2.7) приобретает вид :

Ясно, то если , выбирать достаточно малым, то это обеспечит убывание , но потребуется весьма большое число шагов. Если же неосторожно выбрать  большим , то можно проскочить минимум, а это опасно в связи с возможным осциллированием. Для выбора шага используется правило Голдстейна-Армийо :

а)                 (2.14)

б)                (2.15)

Выполнение условия а) обеспечивает выбор  не слишком большим. Выполнение условия б) не дает возможность выбрать  слишком малым.

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


3.   РЕШЕНИЕ ЗАДАЧИ МИНИМИЗАЦИИ ДЛЯ КАЖДОГО ИЗ МЕТОДОВ

 

3.1Метод Нелдера-Мида

Построим симплекс состоящий из 3-х вершин. Длину ребра t возьмем равной 1 .

Начальные координаты симплекса :

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

Для осуществления оптимизации вычислим новую точку как отражение самой «плохой» вершины относительно центра тяжести симплекса. Формула для вычисления новой точки:

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

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

Замена происходит в случае, если новая точка лучше чем лучшая.

Если выполняется условие , то при этом реализуется отражение. Точка  заменяет .

При выполнении условия  осуществляется сжатие и отыскивается точка  :

Параметр  принимается равным 0,5. Точка  заменяет . Таким образом полученная точка заменяет самую «плохую»

Если новая точка окажется самой «плохой», необходимо осуществить редукцию (уменьшение размера симплекса путем приближения всех его вершин к лучшей вершине)

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

Результат работы метода представлен в таблице 3.1

Таблица 3.1 – Решение задачи минимизации при помощи метода Нелдера-Мида

Номер итерации Х1 Х2 Функция Параметр останова
1 0,4066667 0,4066667 45,631123492267 14,5885289
2 0,4433333 0,2683333 29,870063661634 2,8471538
3 0,3141667 0,2704167 16,456883364840 0,8308005
4 0,2495833 0,2714583 13,667862520021 0,3301516
5 0,2194792 0,2030729 12,662220410942 0,1540974
6 0,1796615 0,1864974 12,281326901893 0,0870517
7 0,1546549 0,1481608 12,136891733007 0,0558708
8 0,1284945 0,1302889 12,072845463097 0,0394655
9 0,1094511 0,1066526 12,044325208099 0,0355389
10 0,0380868 0,0472725 12,032057545239 0,0204381
11 0,0107240 0,0206094 12,021017539213 0,0124410
12 0,0217244 0,0287886 12,011093940034 0,0130068
13 -0,0220008 -0,0163585 12,008732867306 0,0089109
14 -0,0274319 -0,0235556 12,005248404276 0,0053110
15 -0,0178584 -0,0140681 12,003293104515 0,0042019
16 -0,0191470 -0,0189750 12,002069416305 0,0030794
17 -0,0146824 -0,0154579 12,001121615618 0,0025320
18 -0,0132441 -0,0133520 12,000655246493 0,0026725
19 -0,0028766 -0,0042119 12,000504634754 0,0015212
20 0,0004344 -0,0008739 12,000339347268 0,0009248
21 -0,0013297 -0,0023245 12,000183034613 0,0009948
22 0,0035282 0,0029010 12,000137117579 0,0007582
23 0,0038607 0,0034821 12,000078476732 0,0004900
24 0,0027293 0,0023210 12,000050320679 0,0004156
25 0,0022628 0,0023222 12,000031684386 0,0002830
26 0,0015804 0,0017419 12,000017894979 0,0002411
27 0,0015265 0,0015966 12,000009969113 0,0002705
28 0,0001079 0,0002907 12,000008036464 0,0001594
29 -0,0002737 -0,0001084 12,000005403290 0,0000921

В результате решения задачи минимизации с помощью метода Нелдера-Мида получено следующее значение функции :  . Данный оптимум достигается в точке . Этот метод позволяет найти минимум (при начальной точке Х (1 ; 1)) за 29 итераций при точности решения . При этом параметр останова равен 0,0000921.

3.2Градиентный метод с дроблением шага

 

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

В процедуре используется критерий останова, который вычисляется по формуле:

,

где E – заданная точность решения (в данной задаче E=).

Результат работы метода представлен в таблице 3.2

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

Таблица 3.2 – Решение задачи минимизации при помощи градиентного метода

Номер итерации Х1 Х2 Функция Параметр останова
1 0,992187500 0,976562500 14,872248322711100 5,725771436
2 0,972112596 0,966700991 14,755778561425900 5,391343315
3 0,960252606 0,949298075 14,647453457158200 5,170831157
4 0,944120479 0,937143394 14,545808827169400 4,999364954
5 0,931250704 0,922455245 14,450015755630300 4,851038521
6 0,917052669 0,909905567 14,359522419103900 4,715343849
7 0,904265341 0,896648294 14,273894939963900 4,588117156
8 0,891210499 0,884368998 14,192768112137200 4,467486611
9 0,878869537 0,872030350 14,115817843495700 4,352565782
10 0,866628626 0,860230552 14,042753034754000 4,242801681
11 0,854831609 0,848589700 13,973308662686200 4,137814211
12 0,843250897 0,837314037 13,907242987828300 4,037283606
13 0,832001542 0,826261206 13,844334505896600 3,940936337
14 0,820995553 0,815497743 13,784380045189000 3,848521743
15 0,810266979 0,804966957 13,727192808899800 3,759812059
16 0,799778396 0,794686358 13,672600853099300 3,674595835
17 0,789535800 0,784630345 13,620445636362400 3,592677880
18 0,779520366 0,774799711 13,570580790710000 3,513876598
19 0,769728817 0,765180416 13,522870992857600 3,438023378
20 0,760149472 0,755767918 13,477190974079800 3,364961115
21 0,750776352 0,746552749 13,433424623226000 3,294543452
22 0,741600798 0,737528983 13,391464187766000 3,226633778
23 0,732616368 0,728689198 13,351209552529500 3,161104506
24 0,723815911 0,720027406 13,312567592195300 3,097836320

25

0,715193248 0,711537292 13,275451586431100 3,036717546
1239 0,000042461 0,000042461 12,000000003605800 0,000120097
1240 0,000042129 0,000042129 12,000000003549700 0,000119159
1241 0,000041800 0,000041800 12,000000003494500 0,000118228
1242 0,000041473 0,000041473 12,000000003440100 0,000117304
1243 0,000041149 0,000041149 12,000000003386500 0,000116388
1244 0,000040828 0,000040828 12,000000003333800 0,000115479
1245 0,000040509 0,000040509 12,000000003281900 0,000114576
1246 0,000040192 0,000040192 12,000000003230900 0,000113681
1247 0,000039878 0,000039878 12,000000003180600 0,000112793
1248 0,000039567 0,000039567 12,000000003131100 0,000111912
1249 0,000039258 0,000039258 12,000000003082300 0,000111038
1250 0,000038951 0,000038951 12,000000003034400 0,000110170
1251 0,000038647 0,000038647 12,000000002987100 0,000109309
1252 0,000038345 0,000038345 12,000000002940600 0,000108455
1253 0,000038045 0,000038045 12,000000002894900 0,000107608
1254 0,000037748 0,000037748 12,000000002849800 0,000106767
1255 0,000037453 0,000037453 12,000000002805500 0,000105933
1256 0,000037161 0,000037161 12,000000002761800 0,000105106
1257 0,000036870 0,000036870 12,000000002718800 0,000104285
1258 0,000036582 0,000036582 12,000000002676500 0,000103470
1259 0,000036296 0,000036296 12,000000002634800 0,000102662
1260 0,000036013 0,000036013 12,000000002593800 0,000101860
1261 0,000035731 0,000035731 12,000000002553500 0,000101064
1262 0,000035452 0,000035452 12,000000002513700 0,000100274
1263 0,000035175 0,000035175 12,000000002474600 0,000099491

В результате реализации градиентного метода минимальное значение функции составляет . Данный оптимум достигнут в точке . Этот метод позволяет найти минимум (при начальной точке Х(1;1) за 1263 итерации при точности решения . При этом параметр останова равен 0,000099491.


4. ГРАФИЧЕСКАЯ ИНТЕРПРИТАЦИЯ РЕШЕНИЯ ЗАДАЧИ

График исследуемой функции  имеет вид :


Рисунок 4.1 – График исследуемой функции

Изобразим на рисунке (4.2) линии уровня функции


Рисунок 4.2 – Линии уровня исследуемой функции

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



Рисунок 4.3 – траектория спуска (метод Нелдера-Мида)


Рисунок 4.4 – траектория спуска (градиентный метод)


5.   АНАЛИТИЧЕСКОЕ ИССЛЕДОВАНИЕ МЕТОДОВ

Для выявления зависимости числа итераций от заданной точности методы реализованы для каждого значения точности. Результаты представлены в таблицах (5.1-5.6, 5.8-5.13)

Реализация метода Нелдера-Мида :

Таблица 5.1 – Реализация метода Нелдера-Мида при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,4066667 0,4066667 45,631123492267 14,5885289
2 0,4433333 0,2683333 29,870063661634 2,8471538
3 0,3141667 0,2704167 16,456883364840 0,8308005
4 0,2495833 0,2714583 13,667862520021 0,3301516
5 0,2194792 0,2030729 12,662220410942 0,1540974
6 0,1796615 0,1864974 12,281326901893 0,0870517

Таблица 5.2 – Реализация метода Нелдера-Мида при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,4066667 0,4066667 45,631123492267 14,5885289
2 0,4433333 0,2683333 29,870063661634 2,8471538
3 0,3141667 0,2704167 16,456883364840 0,8308005
4 0,2495833 0,2714583 13,667862520021 0,3301516
5 0,2194792 0,2030729 12,662220410942 0,1540974
6 0,1796615 0,1864974 12,281326901893 0,0870517
7 0,1546549 0,1481608 12,136891733007 0,0558708
8 0,1284945 0,1302889 12,072845463097 0,0394655
9 0,1094511 0,1066526 12,044325208099 0,0355389
10 0,0380868 0,0472725 12,032057545239 0,0204381
11 0,0107240 0,0206094 12,021017539213 0,0124410
12 0,0217244 0,0287886 12,011093940034 0,0130068
13 -0,0220008 -0,0163585 12,008732867306 0,0089109

Таблица 5.3 – Реализация метода Нелдера-Мида при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,4066667 0,4066667 45,631123492267 14,5885289
2 0,4433333 0,2683333 29,870063661634 2,8471538
3 0,3141667 0,2704167 16,456883364840 0,8308005
4 0,2495833 0,2714583 13,667862520021 0,3301516
5 0,2194792 0,2030729 12,662220410942 0,1540974
6 0,1796615 0,1864974 12,281326901893 0,0870517
7 0,1546549 0,1481608 12,136891733007 0,0558708
8 0,1284945 0,1302889 12,072845463097 0,0394655
9 0,1094511 0,1066526 12,044325208099 0,0355389
10 0,0380868 0,0472725 12,032057545239 0,0204381
11 0,0107240 0,0206094 12,021017539213 0,0124410
12 0,0217244 0,0287886 12,011093940034 0,0130068
13 -0,0220008 -0,0163585 12,008732867306 0,0089109
14 -0,0274319 -0,0235556 12,005248404276 0,0053110
15 -0,0178584 -0,0140681 12,003293104515 0,0042019
16 -0,0191470 -0,0189750 12,002069416305 0,0030794
17 -0,0146824 -0,0154579 12,001121615618 0,0025320
18 -0,0132441 -0,0133520 12,000655246493 0,0026725
19 -0,0028766 -0,0042119 12,000504634754 0,0015212
20 0,0004344 -0,0008739 12,000339347268 0,0009248

Таблица 5.4 – Реализация метода Нелдера-Мида при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,4066667 0,4066667 45,631123492267 14,5885289
2 0,4433333 0,2683333 29,870063661634 2,8471538
3 0,3141667 0,2704167 16,456883364840 0,8308005
4 0,2495833 0,2714583 13,667862520021 0,3301516
5 0,2194792 0,2030729 12,662220410942 0,1540974
6 0,1796615 0,1864974 12,281326901893 0,0870517
7 0,1546549 0,1481608 12,136891733007 0,0558708
8 0,1284945 0,1302889 12,072845463097 0,0394655
9 0,1094511 0,1066526 12,044325208099 0,0355389
10 0,0380868 0,0472725 12,032057545239 0,0204381
11 0,0107240 0,0206094 12,021017539213 0,0124410
12 0,0217244 0,0287886 12,011093940034 0,0130068
13 -0,0220008 -0,0163585 12,008732867306 0,0089109
14 -0,0274319 -0,0235556 12,005248404276 0,0053110
15 -0,0178584 -0,0140681 12,003293104515 0,0042019
16 -0,0191470 -0,0189750 12,002069416305 0,0030794
17 -0,0146824 -0,0154579 12,001121615618 0,0025320
18 -0,0132441 -0,0133520 12,000655246493 0,0026725
19 -0,0028766 -0,0042119 12,000504634754 0,0015212
20 0,0004344 -0,0008739 12,000339347268 0,0009248
21 -0,0013297 -0,0023245 12,000183034613 0,0009948
22 0,0035282 0,0029010 12,000137117579 0,0007582
23 0,0038607 0,0034821 12,000078476732 0,0004900
24 0,0027293 0,0023210 12,000050320679 0,0004156
25 0,0022628 0,0023222 12,000031684386 0,0002830
26 0,0015804 0,0017419 12,000017894979 0,0002411
27 0,0015265 0,0015966 12,000009969113 0,0002705
28 0,0001079 0,0002907 12,000008036464 0,0001594
29 -0,0002737 -0,0001084 12,000005403290 0,0000921

Таблица 5.5 – Реализация метода Нелдера-Мида при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,4066667 0,4066667 45,631123492267 14,5885289
2 0,4433333 0,2683333 29,870063661634 2,8471538
3 0,3141667 0,2704167 16,456883364840 0,8308005
4 0,2495833 0,2714583 13,667862520021 0,3301516
5 0,2194792 0,2030729 12,662220410942 0,1540974
6 0,1796615 0,1864974 12,281326901893 0,0870517
7 0,1546549 0,1481608 12,136891733007 0,0558708
8 0,1284945 0,1302889 12,072845463097 0,0394655
9 0,1094511 0,1066526 12,044325208099 0,0355389
10 0,0380868 0,0472725 12,032057545239 0,0204381
11 0,0107240 0,0206094 12,021017539213 0,0124410
12 0,0217244 0,0287886 12,011093940034 0,0130068
13 -0,0220008 -0,0163585 12,008732867306 0,0089109
14 -0,0274319 -0,0235556 12,005248404276 0,0053110
15 -0,0178584 -0,0140681 12,003293104515 0,0042019
16 -0,0191470 -0,0189750 12,002069416305 0,0030794
17 -0,0146824 -0,0154579 12,001121615618 0,0025320
18 -0,0132441 -0,0133520 12,000655246493 0,0026725
19 -0,0028766 -0,0042119 12,000504634754 0,0015212
20 0,0004344 -0,0008739 12,000339347268 0,0009248
21 -0,0013297 -0,0023245 12,000183034613 0,0009948
22 0,0035282 0,0029010 12,000137117579 0,0007582
23 0,0038607 0,0034821 12,000078476732 0,0004900
24 0,0027293 0,0023210 12,000050320679 0,0004156
25 0,0022628 0,0023222 12,000031684386 0,0002830
26 0,0015804 0,0017419 12,000017894979 0,0002411
27 0,0015265 0,0015966 12,000009969113 0,0002705
28 0,0001079 0,0002907 12,000008036464 0,0001594
29 -0,0002737 -0,0001084 12,000005403290 0,0000921
30 -0,0000145 0,0001182 12,000003012890 0,0000930
31 -0,0005185 -0,0004534 12,000002135678 0,0000765
32 -0,0005149 -0,0004829 12,000001171711 0,0000537
33 -0,0003880 -0,0003474 12,000000755753 0,0000486
34 -0,0002538 -0,0002710 12,000000487650 0,0000301
35 -0,0001568 -0,0001842 12,000000290103 0,0000249
36 -0,0001661 -0,0001816 12,000000155619 0,0000289
37 0,0000186 -0,0000052 12,000000128281 0,0000180
38 0,0000601 0,0000402 12,000000084592 0,0000102
39 0,0000243 0,0000074 12,000000049029 0,0000094

Таблица 5.6 – Реализация метода Нелдера-Мида при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,4066667 0,4066667 45,631123492267 14,5885289
2 0,4433333 0,2683333 29,870063661634 2,8471538
3 0,3141667 0,2704167 16,456883364840 0,8308005
4 0,2495833 0,2714583 13,667862520021 0,3301516
5 0,2194792 0,2030729 12,662220410942 0,1540974
6 0,1796615 0,1864974 12,281326901893 0,0870517
7 0,1546549 0,1481608 12,136891733007 0,0558708
8 0,1284945 0,1302889 12,072845463097 0,0394655
9 0,1094511 0,1066526 12,044325208099 0,0355389
10 0,0380868 0,0472725 12,032057545239 0,0204381
11 0,0107240 0,0206094 12,021017539213 0,0124410
12 0,0217244 0,0287886 12,011093940034 0,0130068
13 -0,0220008 -0,0163585 12,008732867306 0,0089109
14 -0,0274319 -0,0235556 12,005248404276 0,0053110
15 -0,0178584 -0,0140681 12,003293104515 0,0042019
16 -0,0191470 -0,0189750 12,002069416305 0,0030794
17 -0,0146824 -0,0154579 12,001121615618 0,0025320
18 -0,0132441 -0,0133520 12,000655246493 0,0026725
19 -0,0028766 -0,0042119 12,000504634754 0,0015212
20 0,0004344 -0,0008739 12,000339347268 0,0009248
21 -0,0013297 -0,0023245 12,000183034613 0,0009948
22 0,0035282 0,0029010 12,000137117579 0,0007582
23 0,0038607 0,0034821 12,000078476732 0,0004900
24 0,0027293 0,0023210 12,000050320679 0,0004156
25 0,0022628 0,0023222 12,000031684386 0,0002830
26 0,0015804 0,0017419 12,000017894979 0,0002411
27 0,0015265 0,0015966 12,000009969113 0,0002705
28 0,0001079 0,0002907 12,000008036464 0,0001594
29 -0,0002737 -0,0001084 12,000005403290 0,0000921
30 -0,0000145 0,0001182 12,000003012890 0,0000930
31 -0,0005185 -0,0004534 12,000002135678 0,0000765
32 -0,0005149 -0,0004829 12,000001171711 0,0000537
33 -0,0003880 -0,0003474 12,000000755753 0,0000486
34 -0,0002538 -0,0002710 12,000000487650 0,0000301
35 -0,0001568 -0,0001842 12,000000290103 0,0000249
36 -0,0001661 -0,0001816 12,000000155619 0,0000289
37 0,0000186 -0,0000052 12,000000128281 0,0000180
38 0,0000601 0,0000402 12,000000084592 0,0000102
39 0,0000243 0,0000074 12,000000049029 0,0000094
40 0,0000716 0,0000655 12,000000032997 0,0000081
41 0,0000655 0,0000636 12,000000017601 0,0000061
42 0,0000522 0,0000486 12,000000011215 0,0000059
43 0,0000267 0,0000299 12,000000007565 0,0000034
44 0,0000136 0,0000178 12,000000004741 0,0000026
45 0,0000167 0,0000194 12,000000002493 0,0000031
46 -0,0000062 -0,0000033 12,000000002045 0,0000021
47 -0,0000104 -0,0000081 12,000000001302 0,0000012
48 -0,0000057 -0,0000037 12,000000000784 0,0000010
49 -0,0000094 -0,0000089 12,000000000507 0,0000009

Данные по количеству итераций и заданным точностям для метода Нелдера-Мида сведены в таблицу 5.7

Таблица 5.7 - Зависимость числа итераций от точности

Точность Количество итераций
0,1 6
0,01 13
0,001 20
0,0001 29
0,00001 39
0,000001 49

Рисунок 5.1 – Графическое представление зависимости количества итераций N от точности E для метода Нелдера-Мида.

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

Реализация градиентного метода:

Таблица 5.8 – Реализация градиентного метода при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,992187500 0,976562500 14,872248322711100 5,725771436
2 0,972112596 0,966700991 14,755778561425900 5,391343315
3 0,960252606 0,949298075 14,647453457158200 5,170831157
4 0,944120479 0,937143394 14,545808827169400 4,999364954
5 0,931250704 0,922455245 14,450015755630300 4,851038521
6 0,917052669 0,909905567 14,359522419103900 4,715343849
7 0,904265341 0,896648294 14,273894939963900 4,588117156
8 0,891210499 0,884368998 14,192768112137200 4,467486611
9 0,878869537 0,872030350 14,115817843495700 4,352565782
10 0,866628626 0,860230552 14,042753034754000 4,242801681
11 0,854831609 0,848589700 13,973308662686200 4,137814211
12 0,843250897 0,837314037 13,907242987828300 4,037283606
13 0,832001542 0,826261206 13,844334505896600 3,940936337
14 0,820995553 0,815497743 13,784380045189000 3,848521743
15 0,810266979 0,804966957 13,727192808899800 3,759812059
16 0,799778396 0,794686358 13,672600853099300 3,674595835
17 0,789535800 0,784630345 13,620445636362400 3,592677880
18 0,779520366 0,774799711 13,570580790710000 3,513876598
19 0,769728817 0,765180416 13,522870992857600 3,438023378
20 0,760149472 0,755767918 13,477190974079800 3,364961115
21 0,750776352 0,746552749 13,433424623226000 3,294543452
22 0,741600798 0,737528983 13,391464187766000 3,226633778
23 0,732616368 0,728689198 13,351209552529500 3,161104506
24 0,723815911 0,720027406 13,312567592195300 3,097836320

25

0,715193248 0,711537292 13,275451586431100 3,036717546
358 0,042588763 0,042587983 12,003630828695700 0,120676586
359 0,042255429 0,042254667 12,003574166022100 0,119728711
360 0,041924713 0,041923969 12,003518389968100 0,118788359
361 0,041596595 0,041595868 12,003463486588100 0,117855470
362 0,041271053 0,041270343 12,003409442157800 0,116929982
363 0,040948069 0,040947375 12,003356243171100 0,116011835
364 0,040627620 0,040626943 12,003303876336500 0,115100970
365 0,040309688 0,040309026 12,003252328573200 0,114197326
366 0,039994251 0,039993605 12,003201587008200 0,113300844
367 0,039681292 0,039680660 12,003151638972600 0,112411467
368 0,039370788 0,039370172 12,003102471998700 0,111529137
369 0,039062723 0,039062121 12,003054073816300 0,110653795
370 0,038757075 0,038756487 12,003006432349600 0,109785386
371 0,038453826 0,038453252 12,002959535714300 0,108923853
372 0,038152957 0,038152396 12,002913372214400 0,108069140
373 0,037854448 0,037853901 12,002867930339100 0,107221192
374 0,037558283 0,037557747 12,002823198760000 0,106379954
375 0,037264440 0,037263918 12,002779166327700 0,105545371
376 0,036972904 0,036972393 12,002735822069600 0,104717390
377 0,036683654 0,036683156 12,002693155186500 0,103895956
378 0,036396674 0,036396187 12,002651155050100 0,103081018
379 0,036111944 0,036111468 12,002609811200200 0,102272522
380 0,035829448 0,035828983 12,002569113341800 0,101470417
381 0,035549167 0,035548714 12,002529051343000 0,100674650
382 0,035271085 0,035270642 12,002489615231500 0,099885171

Таблица 5.9 – Реализация градиентного метода при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,992187500 0,976562500 14,872248322711100 5,725771436
2 0,972112596 0,966700991 14,755778561425900 5,391343315
3 0,960252606 0,949298075 14,647453457158200 5,170831157
4 0,944120479 0,937143394 14,545808827169400 4,999364954
5 0,931250704 0,922455245 14,450015755630300 4,851038521
6 0,917052669 0,909905567 14,359522419103900 4,715343849
7 0,904265341 0,896648294 14,273894939963900 4,588117156
8 0,891210499 0,884368998 14,192768112137200 4,467486611
9 0,878869537 0,872030350 14,115817843495700 4,352565782
10 0,866628626 0,860230552 14,042753034754000 4,242801681
11 0,854831609 0,848589700 13,973308662686200 4,137814211
12 0,843250897 0,837314037 13,907242987828300 4,037283606
13 0,832001542 0,826261206 13,844334505896600 3,940936337
14 0,820995553 0,815497743 13,784380045189000 3,848521743
15 0,810266979 0,804966957 13,727192808899800 3,759812059
16 0,799778396 0,794686358 13,672600853099300 3,674595835
17 0,789535800 0,784630345 13,620445636362400 3,592677880
18 0,779520366 0,774799711 13,570580790710000 3,513876598
19 0,769728817 0,765180416 13,522870992857600 3,438023378
20 0,760149472 0,755767918 13,477190974079800 3,364961115
21 0,750776352 0,746552749 13,433424623226000 3,294543452
22 0,741600798 0,737528983 13,391464187766000 3,226633778
23 0,732616368 0,728689198 13,351209552529500 3,161104506
24 0,723815911 0,720027406 13,312567592195300 3,097836320

25

0,715193248 0,711537292 13,275451586431100 3,036717546
652 0,004240917 0,004240916 12,000035971071500 0,011995339
653 0,004207784 0,004207784 12,000035411204000 0,011901621
654 0,004174910 0,004174910 12,000034860050800 0,011808634
655 0,004142293 0,004142293 12,000034317476100 0,011716375
656 0,004109931 0,004109930 12,000033783346400 0,011624836
657 0,004077822 0,004077821 12,000033257530400 0,011534012
658 0,004045963 0,004045963 12,000032739898600 0,011443898
659 0,004014354 0,004014353 12,000032230323500 0,011354489
660 0,003982991 0,003982990 12,000031728679900 0,011265777
661 0,003951873 0,003951873 12,000031234844100 0,011177759
662 0,003920999 0,003920998 12,000030748694800 0,011090429
663 0,003890366 0,003890365 12,000030270112300 0,011003781
664 0,003859972 0,003859971 12,000029798978700 0,010917810
665 0,003829815 0,003829815 12,000029335178200 0,010832511
666 0,003799894 0,003799894 12,000028878596500 0,010747878
667 0,003770207 0,003770207 12,000028429121400 0,010663907
668 0,003740752 0,003740751 12,000027986642200 0,010580592
669 0,003711527 0,003711526 12,000027551050000 0,010497927
670 0,003682530 0,003682530 12,000027122237600 0,010415909
671 0,003653760 0,003653760 12,000026700099600 0,010334531
672 0,003625215 0,003625214 12,000026284531900 0,010253790
673 0,003596892 0,003596892 12,000025875432400 0,010173679
674 0,003568791 0,003568791 12,000025472700300 0,010094194
675 0,003540910 0,003540909 12,000025076236600 0,010015330
676 0,003513246 0,003513246 12,000024685943600 0,009937082

Таблица 5.10 – Реализация градиентного метода при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,992187500 0,976562500 14,872248322711100 5,725771436
2 0,972112596 0,966700991 14,755778561425900 5,391343315
3 0,960252606 0,949298075 14,647453457158200 5,170831157
4 0,944120479 0,937143394 14,545808827169400 4,999364954
5 0,931250704 0,922455245 14,450015755630300 4,851038521
6 0,917052669 0,909905567 14,359522419103900 4,715343849
7 0,904265341 0,896648294 14,273894939963900 4,588117156
8 0,891210499 0,884368998 14,192768112137200 4,467486611
9 0,878869537 0,872030350 14,115817843495700 4,352565782
10 0,866628626 0,860230552 14,042753034754000 4,242801681
11 0,854831609 0,848589700 13,973308662686200 4,137814211
12 0,843250897 0,837314037 13,907242987828300 4,037283606
13 0,832001542 0,826261206 13,844334505896600 3,940936337
14 0,820995553 0,815497743 13,784380045189000 3,848521743
15 0,810266979 0,804966957 13,727192808899800 3,759812059
16 0,799778396 0,794686358 13,672600853099300 3,674595835
17 0,789535800 0,784630345 13,620445636362400 3,592677880
18 0,779520366 0,774799711 13,570580790710000 3,513876598
19 0,769728817 0,765180416 13,522870992857600 3,438023378
20 0,760149472 0,755767918 13,477190974079800 3,364961115
21 0,750776352 0,746552749 13,433424623226000 3,294543452
22 0,741600798 0,737528983 13,391464187766000 3,226633778
23 0,732616368 0,728689198 13,351209552529500 3,161104506
24 0,723815911 0,720027406 13,312567592195300 3,097836320

25

0,715193248 0,711537292 13,275451586431100 3,036717546
945 0,000426015 0,000426015 12,000000362977700 0,001204953
946 0,000422687 0,000422687 12,000000357328300 0,001195539
947 0,000419385 0,000419385 12,000000351766900 0,001186199
948 0,000416108 0,000416108 12,000000346292000 0,001176932
949 0,000412857 0,000412857 12,000000340902300 0,001167737
950 0,000409632 0,000409632 12,000000335596500 0,001158614
951 0,000406432 0,000406432 12,000000330373300 0,001149562
952 0,000403256 0,000403256 12,000000325231400 0,001140581
953 0,000400106 0,000400106 12,000000320169500 0,001131671
954 0,000396980 0,000396980 12,000000315186400 0,001122829
955 0,000393879 0,000393879 12,000000310280800 0,001114057
956 0,000390801 0,000390801 12,000000305451600 0,001105354
957 0,000387748 0,000387748 12,000000300697600 0,001096718
958 0,000384719 0,000384719 12,000000296017600 0,001088150
959 0,000381713 0,000381713 12,000000291410300 0,001079649
960 0,000378731 0,000378731 12,000000286874800 0,001071214
961 0,000375772 0,000375772 12,000000282409900 0,001062845
962 0,000372837 0,000372837 12,000000278014500 0,001054542
963 0,000369924 0,000369924 12,000000273687500 0,001046303
964 0,000367034 0,000367034 12,000000269427800 0,001038129
965 0,000364166 0,000364166 12,000000265234500 0,001030018
966 0,000361321 0,000361321 12,000000261106400 0,001021971
967 0,000358499 0,000358499 12,000000257042500 0,001013987
968 0,000355698 0,000355698 12,000000253041900 0,001006066
969 0,000352919 0,000352919 12,000000249103600 0,000998206

Таблица 5.11 – Реализация градиентного метода при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,992187500 0,976562500 14,872248322711100 5,725771436
2 0,972112596 0,966700991 14,755778561425900 5,391343315
3 0,960252606 0,949298075 14,647453457158200 5,170831157
4 0,944120479 0,937143394 14,545808827169400 4,999364954
5 0,931250704 0,922455245 14,450015755630300 4,851038521
6 0,917052669 0,909905567 14,359522419103900 4,715343849
7 0,904265341 0,896648294 14,273894939963900 4,588117156
8 0,891210499 0,884368998 14,192768112137200 4,467486611
9 0,878869537 0,872030350 14,115817843495700 4,352565782
10 0,866628626 0,860230552 14,042753034754000 4,242801681
11 0,854831609 0,848589700 13,973308662686200 4,137814211
12 0,843250897 0,837314037 13,907242987828300 4,037283606
13 0,832001542 0,826261206 13,844334505896600 3,940936337
14 0,820995553 0,815497743 13,784380045189000 3,848521743
15 0,810266979 0,804966957 13,727192808899800 3,759812059
16 0,799778396 0,794686358 13,672600853099300 3,674595835
17 0,789535800 0,784630345 13,620445636362400 3,592677880
18 0,779520366 0,774799711 13,570580790710000 3,513876598
19 0,769728817 0,765180416 13,522870992857600 3,438023378
20 0,760149472 0,755767918 13,477190974079800 3,364961115
21 0,750776352 0,746552749 13,433424623226000 3,294543452
22 0,741600798 0,737528983 13,391464187766000 3,226633778
23 0,732616368 0,728689198 13,351209552529500 3,161104506
24 0,723815911 0,720027406 13,312567592195300 3,097836320

25

0,715193248 0,711537292 13,275451586431100 3,036717546
1239 0,000042461 0,000042461 12,000000003605800 0,000120097
1240 0,000042129 0,000042129 12,000000003549700 0,000119159
1241 0,000041800 0,000041800 12,000000003494500 0,000118228
1242 0,000041473 0,000041473 12,000000003440100 0,000117304
1243 0,000041149 0,000041149 12,000000003386500 0,000116388
1244 0,000040828 0,000040828 12,000000003333800 0,000115479
1245 0,000040509 0,000040509 12,000000003281900 0,000114576
1246 0,000040192 0,000040192 12,000000003230900 0,000113681
1247 0,000039878 0,000039878 12,000000003180600 0,000112793
1248 0,000039567 0,000039567 12,000000003131100 0,000111912
1249 0,000039258 0,000039258 12,000000003082300 0,000111038
1250 0,000038951 0,000038951 12,000000003034400 0,000110170
1251 0,000038647 0,000038647 12,000000002987100 0,000109309
1252 0,000038345 0,000038345 12,000000002940600 0,000108455
1253 0,000038045 0,000038045 12,000000002894900 0,000107608
1254 0,000037748 0,000037748 12,000000002849800 0,000106767
1255 0,000037453 0,000037453 12,000000002805500 0,000105933
1256 0,000037161 0,000037161 12,000000002761800 0,000105106
1257 0,000036870 0,000036870 12,000000002718800 0,000104285
1258 0,000036582 0,000036582 12,000000002676500 0,000103470
1259 0,000036296 0,000036296 12,000000002634800 0,000102662
1260 0,000036013 0,000036013 12,000000002593800 0,000101860
1261 0,000035731 0,000035731 12,000000002553500 0,000101064
1262 0,000035452 0,000035452 12,000000002513700 0,000100274
1263 0,000035175 0,000035175 12,000000002474600 0,000099491

Таблица 5.12 – Реализация градиентного метода при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,992187500 0,976562500 14,872248322711100 5,725771436
2 0,972112596 0,966700991 14,755778561425900 5,391343315
3 0,960252606 0,949298075 14,647453457158200 5,170831157
4 0,944120479 0,937143394 14,545808827169400 4,999364954
5 0,931250704 0,922455245 14,450015755630300 4,851038521
6 0,917052669 0,909905567 14,359522419103900 4,715343849
7 0,904265341 0,896648294 14,273894939963900 4,588117156
8 0,891210499 0,884368998 14,192768112137200 4,467486611
9 0,878869537 0,872030350 14,115817843495700 4,352565782
10 0,866628626 0,860230552 14,042753034754000 4,242801681
11 0,854831609 0,848589700 13,973308662686200 4,137814211
12 0,843250897 0,837314037 13,907242987828300 4,037283606
13 0,832001542 0,826261206 13,844334505896600 3,940936337
14 0,820995553 0,815497743 13,784380045189000 3,848521743
15 0,810266979 0,804966957 13,727192808899800 3,759812059
16 0,799778396 0,794686358 13,672600853099300 3,674595835
17 0,789535800 0,784630345 13,620445636362400 3,592677880
18 0,779520366 0,774799711 13,570580790710000 3,513876598
19 0,769728817 0,765180416 13,522870992857600 3,438023378
20 0,760149472 0,755767918 13,477190974079800 3,364961115
21 0,750776352 0,746552749 13,433424623226000 3,294543452
22 0,741600798 0,737528983 13,391464187766000 3,226633778
23 0,732616368 0,728689198 13,351209552529500 3,161104506
24 0,723815911 0,720027406 13,312567592195300 3,097836320

25

0,715193248 0,711537292 13,275451586431100 3,036717546
1532 0,000004265 0,000004265 12,000000000036400 0,000012064
1533 0,000004232 0,000004232 12,000000000035800 0,000011970
1534 0,000004199 0,000004199 12,000000000035300 0,000011877
1535 0,000004166 0,000004166 12,000000000034700 0,000011784
1536 0,000004134 0,000004134 12,000000000034200 0,000011692
1537 0,000004101 0,000004101 12,000000000033600 0,000011600
1538 0,000004069 0,000004069 12,000000000033100 0,000011510
1539 0,000004038 0,000004038 12,000000000032600 0,000011420
1540 0,000004006 0,000004006 12,000000000032100 0,000011331
1541 0,000003975 0,000003975 12,000000000031600 0,000011242
1542 0,000003944 0,000003944 12,000000000031100 0,000011154
1543 0,000003913 0,000003913 12,000000000030600 0,000011067
1544 0,000003882 0,000003882 12,000000000030100 0,000010981
1545 0,000003852 0,000003852 12,000000000029700 0,000010895
1546 0,000003822 0,000003822 12,000000000029200 0,000010810
1547 0,000003792 0,000003792 12,000000000028800 0,000010725
1548 0,000003762 0,000003762 12,000000000028300 0,000010641
1549 0,000003733 0,000003733 12,000000000027900 0,000010558
1550 0,000003704 0,000003704 12,000000000027400 0,000010476
1551 0,000003675 0,000003675 12,000000000027000 0,000010394
1552 0,000003646 0,000003646 12,000000000026600 0,000010313
1553 0,000003618 0,000003618 12,000000000026200 0,000010232
1554 0,000003589 0,000003589 12,000000000025800 0,000010152
1555 0,000003561 0,000003561 12,000000000025400 0,000010073
1556 0,000003534 0,000003534 12,000000000025000 0,000009994

Таблица 5.13– Реализация градиентного метода при

Номер итерации Х1 Х2 Функция Параметр останова
1 0,992187500 0,976562500 14,872248322711100 5,725771436
2 0,972112596 0,966700991 14,755778561425900 5,391343315
3 0,960252606 0,949298075 14,647453457158200 5,170831157
4 0,944120479 0,937143394 14,545808827169400 4,999364954
5 0,931250704 0,922455245 14,450015755630300 4,851038521
6 0,917052669 0,909905567 14,359522419103900 4,715343849
7 0,904265341 0,896648294 14,273894939963900 4,588117156
8 0,891210499 0,884368998 14,192768112137200 4,467486611
9 0,878869537 0,872030350 14,115817843495700 4,352565782
10 0,866628626 0,860230552 14,042753034754000 4,242801681
11 0,854831609 0,848589700 13,973308662686200 4,137814211
12 0,843250897 0,837314037 13,907242987828300 4,037283606
13 0,832001542 0,826261206 13,844334505896600 3,940936337
14 0,820995553 0,815497743 13,784380045189000 3,848521743
15 0,810266979 0,804966957 13,727192808899800 3,759812059
16 0,799778396 0,794686358 13,672600853099300 3,674595835
17 0,789535800 0,784630345 13,620445636362400 3,592677880
18 0,779520366 0,774799711 13,570580790710000 3,513876598
19 0,769728817 0,765180416 13,522870992857600 3,438023378
20 0,760149472 0,755767918 13,477190974079800 3,364961115
21 0,750776352 0,746552749 13,433424623226000 3,294543452
22 0,741600798 0,737528983 13,391464187766000 3,226633778
23 0,732616368 0,728689198 13,351209552529500 3,161104506
24 0,723815911 0,720027406 13,312567592195300 3,097836320

25

0,715193248 0,711537292 13,275451586431100 3,036717546
1826 0,000000425 0,000000425 12,000000000000400 0,000001202
1827 0,000000422 0,000000422 12,000000000000400 0,000001193
1828 0,000000419 0,000000419 12,000000000000400 0,000001184
1829 0,000000415 0,000000415 12,000000000000300 0,000001174
1830 0,000000412 0,000000412 12,000000000000300 0,000001165
1831 0,000000409 0,000000409 12,000000000000300 0,000001156
1832 0,000000406 0,000000406 12,000000000000300 0,000001147
1833 0,000000402 0,000000402 12,000000000000300 0,000001138
1834 0,000000399 0,000000399 12,000000000000300 0,000001129
1835 0,000000396 0,000000396 12,000000000000300 0,000001120
1836 0,000000393 0,000000393 12,000000000000300 0,000001112
1837 0,000000390 0,000000390 12,000000000000300 0,000001103
1838 0,000000387 0,000000387 12,000000000000300 0,000001094
1839 0,000000384 0,000000384 12,000000000000300 0,000001086
1840 0,000000381 0,000000381 12,000000000000300 0,000001077
1841 0,000000378 0,000000378 12,000000000000300 0,000001069
1842 0,000000375 0,000000375 12,000000000000300 0,000001061
1843 0,000000372 0,000000372 12,000000000000300 0,000001052
1844 0,000000369 0,000000369 12,000000000000300 0,000001044
1845 0,000000366 0,000000366 12,000000000000300 0,000001036
1846 0,000000363 0,000000363 12,000000000000300 0,000001028
1847 0,000000361 0,000000361 12,000000000000300 0,000001020
1848 0,000000358 0,000000358 12,000000000000300 0,000001012
1849 0,000000355 0,000000355 12,000000000000300 0,000001004
1850 0,000000352 0,000000352 12,000000000000200 0,000000996

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

Таблица 5.14 - Зависимость числа итераций от точности

Точность Количество итераций
0,1 382
0,01 676
0,001 969
0,0001 1263
0,00001 1556
0,000001 1850

Рисунок 5.2 – Графическое представление зависимости количества итераций N от точности E для градиентного метода.


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

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


6. ЗАКЛЮЧЕНИЕ

В курсовой работе произведена минимизации функции  с помощью метода оптимизации нулевого порядка – метода Нелдера-Мида и метода оптимизации первого порядка – градиентного метода с дроблением шага.

В результате решения задачи минимизации с помощью метода Нелдера-Мида получено следующее значение функции: . Данный оптимум достигается в точке . Этот метод позволяет найти минимум (при начальной точке Х (1 ; 1)) за 29 итераций при точности решения . При этом параметр останова равен 0,0000921.

В результате реализации градиентного метода минимальное значение функции составляет . Данный оптимум достигнут в точке . Этот метод позволяет найти минимум (при начальной точке Х(1;1)) за 1263 итерации при точности решения . При этом параметр останова равен 0,000099491.

Для каждого из методов была установлена зависимость числа итераций от заданной точности . Анализируя полученные результаты, можно сделать вывод о том, что по числу итераций более эффективным является метод Нелдера-Мида. Однако следует отметить, что эффективность этих методов может изменяться в зависимости от выбора начального приближения и вида функции. Следует также учесть, что градиентный метод может быть непригоден в тех случаях, если расчет производных вызывает затруднение.


7. ПРИЛОЖЕНИЕ

В таблицах представлены координаты точек, образующих линии уровня



В настоящем приложении представлена реализация программного кода для каждого из методов оптимизации. Используемый язык программирования – Visual Studio C# 2005.

Градиентный метод с дроблением шага

namespace GradientL

{public partial class Form1 : Form

{public Form1()

{InitializeComponent();}

public static string[] str = new string[100000];

struct Tk

{public double x1, x2;

public Tk(double X, double Y)

{x1 = X;

x2 = Y;}

public static Tk operator /(Tk v1, double q)

{return new Tk(v1.x1 / q, v1.x2 / q);}

public static Tk operator *(Tk v, double d)

{return new Tk(v.x1 * d, v.x2 * d);}

public static Tk operator *(Tk v1, Tk v2)

{return new Tk(v1.x1 * v2.x1, v1.x2 * v2.x2);}

public static Tk operator -(Tk v1, Tk v2)

{return new Tk(v1.x1 - v2.x1, v1.x2 - v2.x2);}

public static Tk operator +(Tk v1, Tk v2)

{return new Tk(v1.x1 + v2.x1, v1.x2 + v2.x2);}

public static double Dist(Tk v1, Tk v2)

{return Math.Sqrt((v1.x1 - v2.x1) * (v1.x1 - v2.x1) + (v1.x2 - v2.x2) * (v1.x2 - v2.x2));}

public override string ToString()

{return "(" + this.x1.ToString("f5") + ";" + this.x2.ToString("f5") + ")";}}

class Pr

{public static double f(Tk c)

{return 12 + c.x1 * c.x1 + (1 + c.x2 * c.x2) * c.x2 * c.x2 + (c.x1 * c.x1 * c.x2 * c.x2 + 100) * (c.x1 - c.x2) * (c.x1 - c.x2);}

static Tk gradient(Tk c)

{Tk N = new Tk(2 * c.x1 + 2 * c.x1 * c.x2 * c.x2 *

( c.x1 - c.x2)*(c.x1 - c.x2) + 2 * (c.x1 * c.x1 * c.x2 * c.x2 + 100) * (c.x1 - c.x2),

2 * c.x2*c.x2*c.x2+2*c.x2*(1+c.x2*c.x2)+

2*c.x2*c.x1*c.x1*(c.x1-c.x2)*(c.x1-c.x2)-2*(c.x1-c.x2)*

(c.x1*c.x1*c.x2*c.x2+100));

return N;}

public static double Dl(Tk c)

{return Math.Sqrt(c.x1 * c.x1 + c.x2 * c.x2);}

public static void Tr(double eps, ref Tk ca, out double fn, out int i)

{Tk cb = new Tk(1, 1), st = new Tk(0.5, 0.5);

Tk step = new Tk(1, 1), eq; i = 0;

do

{while (true)

{cb = ca - step * gradient(ca);

eq = st * step * gradient(cb) * gradient(cb);

if (f(cb - step * gradient(cb)) >= (f(cb) - Dl(eq)))

{ step.x1 /= 2;

step.x2 /= 2;}

else break;}

fn = f(ca);

i++;

str[i] = String.Format("{0}" + ") " + "{1}" + "; " +

"{2}" + "; " + "{3}" + ".", i.ToString(), ca.ToString(), fn.ToString("f6"), Dl(gradient(cb)).ToString("f6"));

ca = cb;}

while (Dl(gradient(cb)) >= eps);

fn = f(cb);}}

private void button1_Click(object sender, EventArgs e)

{listBox1.Items.Clear();

double Et = Convert.ToDouble(textBox3.Text);

double fn;

int j;

Tk mas = new Tk(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));

Pr.Tr(Et, ref mas, out fn, out j);

Min.Visible = true;

Min.Text = String.Format("{0}" + "; " + "{1}" + "; " +

"{2}", mas.ToString(), fn.ToString(), j.ToString());

for (int i = 1; i < j; i++)

listBox1.Items.Add(str[i]);}

private void Form1_Load(object sender, EventArgs e){}}}

Метод Нелдера-Мида

namespace Nelder_Method

{public partial class Form1 : Form

{public Form1()

{InitializeComponent();}

static double Al = 1.0;

static double Bt = 0.5;

static double Gm = 2.0;

static int n=0;

static string[] op = new string[1000];

const int cap = 2;

struct Tk

{public double x1, x2;

public Tk(double X, double Y)

{x1 = X;

x2 = Y;}

public static Tk operator /(Tk v1, double q)

{return new Tk(v1.x1 / q, v1.x2 / q);}

public static Tk operator *(Tk v, double d)

{return new Tk(v.x1 * d, v.x2 * d);}

public static Tk operator *(Tk v1, Tk v2)

{return new Tk(v1.x1 * v2.x1, v1.x2 * v2.x2);}

public static Tk operator -(Tk v1, Tk v2)

{return new Tk(v1.x1 - v2.x1, v1.x2 - v2.x2);}

public static Tk operator +(Tk v1, Tk v2)

{return new Tk(v1.x1 + v2.x1, v1.x2 + v2.x2);}

public static double Dist(Tk v1, Tk v2)

{return Math.Sqrt((v1.x1 - v2.x1) * (v1.x1 - v2.x1) + (v1.x2 - v2.x2) * (v1.x2 - v2.x2));}

public override string ToString()

{return "(" + this.x1.ToString("f5") + ";" + this.x2.ToString("f5") + ")";}}

class Cnt

{public static double function(Tk c)

{return 12 + c.x1*c.x1 + (1+c.x2*c.x2)*c.x2*c.x2 + (c.x1*c.x1*c.x2*c.x2+100)*(c.x1-c.x2)*(c.x1-c.x2);}

public static void Pr(ref Tk[] c, ref double[] ot)

{double fir; Tk tk;

for (int k = 1; k <= cap; k++)

for (int l = k; l >= 1; l--)

if (ot[l - 1] > ot[l])

{fir = ot[l];

tk = c[l];

ot[l] = ot[l - 1];

c[l] = c[l - 1];

ot[l - 1] = fir;

c[l - 1] = tk;}

else break;}

public static bool Ostanov(Tk[] w, double E, double n, Tk c, out double Ost)

{double Lp;

double d = 0.5;

double p1 = 0;

Tk p2 = new Tk(0, 0);

for (int i = 0; i <= cap; i++)

{p1 += (function(w[i]) - function(c)) * (function(w[i]) - function(c));

p2 += (w[i] - c) * (w[i] - c);}

Lp = Math.Sqrt(p2.x1 * p2.x1 + p2.x2 * p2.x2);

Ost = d * (Math.Sqrt((1 / (n + 1)) * p1)) + (1 - d) * (Math.Sqrt((1 / (n + 1)) * Lp));

if (Ost < E)

return true;

else return false;}

public static double Met(Tk[] c, double tchn)

{double[] f = new double[cap + 1];

double val1=0, val2=0, val3 = 0, val4, val5, val6, val7;

Tk sim1, sim2, sim3, sim4, sim5, sim6, sim_cen, sim7;

sim_cen.x1 = sim_cen.x2 = 0;

int i;

double J1;

bool flag;

for (i = 0; i <= cap; i++) // Вычисление значений функции на начальном симплексе

f[i] = function(c[i]);

while (!Ostanov(c, tchn, n, sim_cen, out J1))// Проверка на условие выхода

{n++;

// Шаг 1. Сортировка

Pr(ref c, ref f);

sim1 = c[cap]; val1 = f[cap];

sim2 = c[cap - 1]; val2 = f[cap - 1];

sim3 = c[0]; val3 = f[0];

// Шаг 2. Вычисление центра тяжести симплекса

sim_cen.x1 = sim_cen.x2 = 0;

for (i = 0; i < cap; i++)

sim_cen = sim_cen + c[i];

sim_cen = sim_cen / cap;

// 3Шаг . Отражение

sim4 = sim_cen * (1 + Al) - sim1 * Al; val4 = function(sim4);

// Шаг 4.

if (val4 <= val3)

{   // Шаг 4a.

sim5 = sim_cen * (1 - Gm) + sim4 * Gm;

val5 = function(sim5);

if (val5 < val3)

{c[cap] = sim5;

f[cap] = val5;}

else

{c[cap] = sim4;

f[cap] = val4;}}

if ((val3 < val4) && (val4 <= val2))

{ // Шаг 4.b

c[cap] = sim4;

f[cap] = val4;}

flag = false;

if ((val1 >= val4) && (val4 > val2))

{ // Шаг 4c.

flag = true;

val7 = val1;

sim7 = sim1;

c[cap] = sim4;

f[cap] = val4;

sim4 = sim7;

val4 = val7;}

// Шаг 4d.

if (val4 > val1) flag = true;

if (flag)

{ // Шаг 5. Сжатие

sim6 = sim1 * Bt + sim_cen * (1 - Bt);

val6 = function(sim6);

if (val6 < val1)

{ // Шаг 6.

val7 = val1;

sim7 = sim1;

c[cap] = sim6;

f[cap] = val6;

sim6 = sim7;

val6 = val7;}

else

{ // Шаг 7. Глобальное сжатие

for (i = 0; i <= cap; i++)

c[i] = sim3 + (c[i] - sim3) / 2;}}

op[n - 1] = Convert.ToString(n) + "; " + sim1.ToString() +

"; " + sim2.ToString() + "; " + sim3.ToString();}

return (val3 + val1 + val2) / 3;}}

private void button1_Click(object sender, EventArgs e)

{Tk ta = new Tk(0, 0);

Tk tb = new Tk(0.26, 0.96);

Tk tc = new Tk(0.96, 0.26);

Tk[] t = new Tk[3] { ta, tb, tc };

listBox1.Items.Clear();

n = 0;

op = new string[200];

double eps1 = Convert.ToDouble(textBox2.Text);

label4.Text = Cnt.Met(t, eps1).ToString("f5") + "; " + Convert.ToString(n) + ".";

for (int i = 0; i < n; i++)

listBox1.Items.Add(op[i]);}

private void Form1_Load(object sender, EventArgs e){}}


8. СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

1.   Агуров П.В. C# в подлиннике (программирование на языке С#) – Петербург, 2006

2.   Агуров П.В. Сборник рецептов по C# - Петербург,2006

3.   Банди Б. Методы оптимизации – Москва, 1988

4.   Базара М, Шетти К. Нелинейное программироваине. Теория и алгоритмы – М.:Мир, 1988

5.   Поляк Б.Т. Введение в оптимизацию. - М.: Наука, 1983

6.   Раскин Л.Г. Математическое программирование: Учебное пособие – Харьков: НТУ «ХПИ» , 2002

7.   Рихтер Д. Программирование на платформе Microsoft. NET Freamework для профессионалов – М.Microsoft Press, 2003

8.   Серая О.В. Методические указания для проведения лабораторных работ по курсу «Математическое программирование» - Харьков: НТУ «ХПИ» , 2003

9.   Сухарев А.Г., Тимохов А.В Курс методов оптимизации – М.: Наука, 1986

10.       Химмельблау Д. Прикладное нелинейное программирование М.:Мир, 1989


Еще из раздела Информатика, программирование:


 Это интересно
 Реклама
 Поиск рефератов
 
 Афоризм
Второй брак – победа надежды над жизненным опытом.
 Гороскоп
Гороскопы
 Счётчики
bigmir)net TOP 100