Решение задач безусловной оптимизации

Изучение аналитических и численных методов поиска одномерного и многомерного безусловного экстремума. Решение поставленной задачи с помощью Mathcad и Excel. Реализация стандартных алгоритмов безусловной оптимизации средствами языка программирования С++.

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

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

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

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

Оглавление

Введение

Теоретическая часть

Аналитический способ

Численные методы

Решение поставленной задачи в МCAD

Решение задачи с помощью табличного редактора Ms Excel

Решение задачи с помощью языка С++

Заключение

Введение

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

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

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

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

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

Цель курсовой работы:

· изучить необходимые программные конструкции языка программирования;

· освоить стандартные алгоритмы безусловной оптимизации;

· реализовать их средствами языка программирования С++;

· научиться использовать программы MCAD и MS Excel для решения поставленных задач и сверить полученные результаты.

Задачи данной курсовой работы:

1. Рассмотреть аналитические методы поиска одномерного и многомерного безусловного экстремума.

2. Изучить численные методы поиска одномерного и многомерного безусловного экстремума.

Теоретическая часть

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

1. Сформулировать задачу;

2. Построить математическую модель (определить множество переменных);

3. Определить ограничения на возможные решения;

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

2 способа:

· Аналитический

· Численный

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

Аналитический способ

1. Для одной переменной

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

Определение 2: Если выполняется равенство , то точку будем называть стационарной точкой.

Достаточное условие существования экстремума:

Пусть функция y=f(x) :

1. непрерывна в точке ;

2. дифференцируема в этой точке ;

3. - точка возможного экстремума;

4. при переходе через точку производная меняет знак.

Тогда, если меняет знак с плюса на минус, то - точка максимума, а если с минуса на плюс, то - точка минимума.

1) Найти производную функции .

2) Найти стационарные точки (точки, подозрительные на экстремум), решив уравнение .

3) Выяснить, меняет ли производная свой знак в точках, подозрительных на экстремум. Если она меняет знак с минуса на плюс, то в этой точке функция имеет свой минимум. Если с плюса на минус, то максимум, а если знак производной не меняется, то экстремума в этой точке нет.

4) Найти значение функции в точках минимума (максимума).

2. Для двух переменных

Необходимое условие локального экстремума дифференцируемой функции

Если - точка экстремума функции f, то

и или

Достаточные условия локального экстремума дважды дифференцируемой функции

Обозначим

Если D > 0, A > 0, то - точка минимума.

Если D > 0, A < 0, то - точка максимума.

Если D < 0, экстремума в точке нет.

Если D = 0, необходимы дополнительные исследования.

Численные методы

Метод «золотого сечения»

Метод "золотого сечения" почти столь же эффективен, как и метод Фибоначчи, однако при этом не требуется знать n - количество вычислений функции, определяемое вначале. После того как выполнено j вычислений, записываем

Lj-1=Lj+Lj+1

Однако если n не известно, то мы не можем использовать условие Ln-1 =Ln - е. Если отношение последующих интервалов будет постоянным, т.е.

то

т. е. ф=1+1/ ф.

Таким образом, ф2-ф-1=0, откуда . Тогда

и т.д.

Следовательно,

, т.е. .

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

Поскольку , то становится видно, что поиск методом "золотого сечения" является предельной формой поиска методом Фибоначчи. Название "золотое сечение" произошло от названия отношения в уравнении . Видно, что Lj-1 делится на две части так, что отношение целого к большей части равно отношению большей части к меньшей, т.е. равно так называемому "золотому отношению".

Таким образом, если ищется интервал (х0, х3) и имеются два значения функции f1 и f2 в точках x1 и x2, то следует рассмотреть два случая (рис. 1).

Рисунок 1

Метод гарантирует нахождение минимума в самых неблагоприятных условиях, однако он обладает медленной сходимостью. Схема алгоритма метода «золотого сечения» представлена на рис. 2.

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

Рисунок 2. Схема алгоритма метода «золотого сечения»

Здесь С - константа,

1 (поиск минимума функции F(x)),

С=

-1 (поиск минимума функции F(x)),

При выводе x - координата точки, в которой функция F(x) имеет минимум (или максимум), FM - значение функции F(x) в этой точке.

Метод градиентного спуска с постоянным шагом.

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

Пусть дана функция f(x), ограниченная снизу на множестве Rn и имеющая непрерывные частные производные первого порядка во всех его точках.

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

Стратегия поиска

Стратегия решения задачи состоит в построении последовательности точек {xk}, k=0,1,…, таких, что . Точки последовательности {xk} вычисляются по правилу

,

где точка x0 задается пользователем; - градиент функции f(x), вычисленный в точке xk; величина шага tk задается пользователем и остается постоянной до тех пор, пока функция убывает в точках последовательности, что контролируется путем проверки выполнения условия

или

Построение последовательности {xk} заканчивается в точке xk, для которой

где - заданное малое положительное число, или , где - предельное число итераций, или при двукратном одновременном выполнении двух неравенств

где - малое положительное число. Вопрос о том, может ли точка xk рассматриваться как найденное приближение искомой точки минимума, решается путем проведения дополнительного исследования.

Геометрическая интерпретация метода

Геометрическая интерпретация метода для функции двух переменных f(x1,x2):

Алгоритм

Шаг 1. Задать - предельное число итераций. Найти градиент функции в произвольной точке

Шаг 2. Положить k=0.

Шаг 3. Вычислить .

Шаг 4. Проверить выполнение критерия окончания :

· если критерий выполнен, расчет закончен: ;

· если критерий не выполнен, то перейти к шагу 5.

Шаг 5. Проверить выполнение неравенства :

· если неравенство выполнено, то расчет окончен: ;

· если нет, то перейти к шагу 6.

Шаг 6. Задать величину шага tk.

Шаг 7. Вычислить .

Шаг 8. Проверить выполнение условия

(или ):

· если условие выполнено, то перейти к шагу 9;

· если условие не выполнено, положить и перейти к шагу 7.

Шаг 9. Проверить выполнение условий

· если оба условия выполнены при текущем значении k и k=k-1, то расчет окончен,

· если хотя бы одно из условий не выполнено, положить и перейти к шагу 3.

Процедура решения задачи

1. Используя алгоритм градиентного спуска с постоянным шагом, найти точку xk, в которой выполнен по крайней мере один из критериев окончания расчетов.

2. Провести анализ точки xk с целью установить, является ли точка xk найденным приближением решения задачи. Процедура анализа определяется наличием у функции f(x) непрерывных вторых производных. Если , то следует провести проверку выполнения достаточных условий минимума: . Если , то точка есть найденное приближение искомой точки . Если , то следует провести проверку функции f(x) на выпуклость в Q-окрестности точки , используя критерий выпуклости для функций : функция f(x) выпукла (строго выпукла) в том и только в том случае, если . Если функция f(x) выпукла (строго выпукла), то есть найденное приближение точки .

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

Схема алгоритма метода градиентного спуска

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

Решение поставленной задачи в МCAD

1 задача

Минимизация функции с одной переменной.

1 способ

2 способ

2 задача

Определение какого рода функция и нахождение минимума(максимума) этой функции.

1 способ

2 способ

Вывод

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

Решение задачи с помощью табличного редактора Ms Excel

1 задача:

0,000

1,000

0,100

1,330

0,200

1,518

0,300

1,563

0,400

1,465

0,500

1,224

0,600

0,840

0,700

0,316

0,800

-0,348

0,900

-1,149

1,000

-2,083

1,100

-3,148

1,200

-4,338

1,300

-5,648

1,400

-7,074

1,500

-8,609

1,600

-10,247

1,700

-11,980

1,800

-13,800

1,900

-15,698

2,000

-17,667

2,100

-19,695

2,200

-21,773

2,300

-23,890

2,400

-26,034

2,500

-28,193

2,600

-30,354

2,700

-32,505

2,800

-34,631

2,900

-36,718

3,000

-38,750

3,100

-40,712

3,200

-42,588

3,300

-44,361

3,400

-46,013

3,500

-47,526

3,600

-48,882

3,700

-50,060

3,800

-51,042

3,900

-51,807

4,000

-52,333

4,100

-52,600

4,200

-52,584

4,300

-52,262

4,400

-51,612

4,500

-50,609

4,600

-49,229

4,700

-47,446

4,800

-45,234

4,900

-42,566

5,000

-39,417

5,100

-35,757

5,200

-31,559

5,300

-26,794

5,400

-21,432

5,500

-15,443

5,600

-8,796

5,700

-1,461

5,800

6,595

5,900

15,404

6,000

25,000

6,100

35,416

6,200

46,686

6,300

58,845

6,400

71,929

6,500

85,974

6,600

101,016

6,700

117,094

6,800

134,244

6,900

152,505

7,000

171,917

Поиск решений

4,145

-52,629

Ход решения в Ms Excel

Итак, вначале в соответствии с поставленной задачей протабулируем функцию (найти минимум при х>0). Затем по полученным данным построим график, по которому находим примерное приближение значений минимума. Записываем приближенное значение в отдельную ячейку, в соседнюю ячейку записываем формулу зависящую от приближенного значения и воспользуемся инструментом «Поиск решения». В качестве целевой ячейки указываем функцию, ставим галочку «Минимальное значение», в поле «Изменяя ячейки» ставим ячейку с приближение. Жмем «Выполнить» и получаем искомое значение минимума.

2 задача:

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0

0

0,05

0,2

0,45

0,8

1,25

1,8

2,45

3,2

4,05

5

0,1

-0,28

-0,26

-0,14

0,08

0,4

0,82

1,34

1,96

2,68

3,5

4,42

0,2

-0,52

-0,53

-0,44

-0,25

0,04

0,43

0,92

1,51

2,2

2,99

3,88

0,3

-0,72

-0,76

-0,7

-0,54

-0,28

0,08

0,54

1,1

1,76

2,52

3,38

0,4

-0,88

-0,95

-0,92

-0,79

-0,56

-0,23

0,2

0,73

1,36

2,09

2,92

0,5

-1

-1,1

-1,1

-1

-0,8

-0,5

-0,1

0,4

1

1,7

2,5

0,6

-1,08

-1,21

-1,24

-1,17

-1

-0,73

-0,36

0,11

0,68

1,35

2,12

0,7

-1,12

-1,28

-1,34

-1,3

-1,16

-0,92

-0,58

-0,14

0,4

1,04

1,78

0,8

-1,12

-1,31

-1,4

-1,39

-1,28

-1,07

-0,76

-0,35

0,16

0,77

1,48

0,9

-1,08

-1,3

-1,42

-1,44

-1,36

-1,18

-0,9

-0,52

-0,04

0,54

1,22

1

-1

-1,25

-1,4

-1,45

-1,4

-1,25

-1

-0,65

-0,2

0,35

1

1,1

-0,88

-1,16

-1,34

-1,42

-1,4

-1,28

-1,06

-0,74

-0,32

0,2

0,82

1,2

-0,72

-1,03

-1,24

-1,35

-1,36

-1,27

-1,08

-0,79

-0,4

0,09

0,68

1,3

-0,52

-0,86

-1,1

-1,24

-1,28

-1,22

-1,06

-0,8

-0,44

0,02

0,58

1,4

-0,28

-0,65

-0,92

-1,09

-1,16

-1,13

-1

-0,77

-0,44

-0,01

0,52

1,5

0

-0,4

-0,7

-0,9

-1

-1

-0,9

-0,7

-0,4

0

0,5

1,6

0,32

-0,11

-0,44

-0,67

-0,8

-0,83

-0,76

-0,59

-0,32

0,05

0,52

1,7

0,68

0,22

-0,14

-0,4

-0,56

-0,62

-0,58

-0,44

-0,2

0,14

0,58

1,8

1,08

0,59

0,2

-0,09

-0,28

-0,37

-0,36

-0,25

-0,04

0,27

0,68

1,9

1,52

1

0,58

0,26

0,04

-0,08

-0,1

-0,02

0,16

0,44

0,82

2

2

1,45

1

0,65

0,4

0,25

0,2

0,25

0,4

0,65

1

-1,12

-1,31

-1,42

-1,45

-1,4

-1,28

-1,08

-0,8

-0,44

-0,01

0,5

Поиск решений

0,968

0,290

-1,452

Ход решения в Ms Excel

Табулируем функцию. По полученным данным построим график поверхности, по которому видим, что нужно найти минимум этой функции. С помощью встроенной функции МИН() найдем наименьшее приближенное значение функции. Далее в отдельную ячейку скопируем значения х, у и z для полученного максимума, и воспользуемся инструментом «Поиск решения». В качестве целевой ячейки указываем скопированное выше значение z, ставим галочку «Минимальное значение», в поле «Изменяя ячейки» ставим ячейку со значением х и у. Жмем «Выполнить» и получаем искомое значение максимума.

Решение задачи с помощью языка С++

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

1 задача:

#include <iostream>

#include <math.h>

#include <stdio.h>

#include <conio.h>

#include <windows.h>

using namespace std;

const double epsilon = 0.001;//точность

double fun(double x)

{

return pow(x,4)/4-pow(x,3)/3-7*pow(x,2)+4*x+1;//заданная функция

}

//Метод золотого сечения

double GoldenSection(double a, double b)

{

double x1,x2;//объявляем

double y1, y2;//переменные

x1 = a + 0.382*(b-a);//два отрезка на которые

x2 = a + 0.618*(b-a);//делится промежуток

y1 = fun(x1);//вычисляется значение функции в точке х1

y2 = fun(x2);//вычисляется значение функции в точке х2

while((b-a) > epsilon)

{

if(y1 >= y2)

{

a = x1;//к началу отрезка присваевается значение первого отрезка

x1 = x2;//

y1 = fun(x1);//вычисляется значение функции в точке х1

x2 = a + 0.618*(b-a);

y2 = fun(x2);//вычисляется значение функции в точке х2

}

else

{

b = x2;//к концу отрезка присваивается значение х2

x2 = x1;

y2 = fun(x2);//вычисляется значение функции в х2

x1 = a + 0.382*(b-a);

y1 = fun(x1);//вычисляется значение функции в х1

}

}

return (a+b)/2;//отрезок делится на две части

}

int main()

{

setlocale(LC_CTYPE, "Russian");

double a, b, min, max;//объявление переменных

cout << "\t Вычисление минимума функции F(x) = x^4/4-x^3/3-7*x^2)+4*x+1 \n\t метадом золотого сечения " << endl << endl;

cout << "Входной интервал для поиска экстремальных функций (например 0 15):\n";

cin >> a;//Ввод начала отрезка

cin >> b;//ввод конца отрезка

min = GoldenSection(a, b);//Значение минимума в золотом сечении

printf("\n Значение точки минимум MIN=%3.3f",min);//Вывод минимума

printf("\n значение функции F(min)=%3.3f",fun(min));//Вывод функции от точки минимума

_getch();

return 0;

}

Результат программы:

2 Задача:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include<iostream>

#define N 2// количество переменных

double x_k[N];//неизвестные

double x_k_1[N];//значение последвательного приближения

double lambda_k;//шаг

double y(double *x, int n)

{

return (2*pow(x[0],2) -3*x[1]*x[0] + 5*x[1]*x[1]-3*x[0]); //функция

}

double dy_dx0(double *x, int n) // первая частная производная по Х

{

return (4*x[0]-3*x[1]-3);

}

double dy_dx1(double *x, int n) // первая частная производная по Y

{

return (-3*x[0]+10*x[1]);

}

double dy2_dx0(double *x, int n)// 2-я частная производная по X

{

return (4);

}

double dy2_dx1(double *x, int n)// 2-я частная производная по Y

{

return (10);

}

int main(void)

{ setlocale(LC_CTYPE, "Russian");

lambda_k = 0.001;//шаг

x_k[0] = 0;//начальное

x_k[1] = 5;//приближение

while(1)//будет длится до конца интервала

{

x_k_1[0] = x_k[0]- lambda_k*dy_dx0(x_k, N) ;//последвательное

x_k_1[1] = x_k[1] - lambda_k*dy_dx1(x_k, N);//приближение

if(fabs(dy_dx0(x_k_1, N))<lambda_k && fabs(dy_dx1(x_k_1, N))<lambda_k) break;//условие при котором меняются значения меняется начальное и конечное значение промежутка

x_k[0] = x_k_1[0];//присвоение начальному значению

x_k[1] = x_k_1[1];//значение приближения

}

x_k[0] = x_k_1[0];

x_k[1] = x_k_1[1];

printf("\tГрадиентный метод:\n");

printf("\tМинимум найден на x1 =%.3lf, x2 =%.3lf, Y(X1,X2) =%3.3f\n", x_k[0], x_k[1], y(x_k, N));//Вывод минимальных точек и значения функции в этой точке

getch();

return 0;

}

Результат программы:

Заключение

Путем сложных вычислений курсовая работа выполнена в математическом редакторе Mathcad, табличном редакторе Excel и языке программирования С++. Все ответы сходятся, для проверки построены графики, на которых видна приблизительная цель вычислений. Всё выполнено согласно правилам. Таким образом, можно сделать вывод, что данная курсовая работа по теме «Решение задач безусловной оптимизации» выполнена.

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


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

  • Математические основы оптимизации. Постановка задачи оптимизации. Методы оптимизации. Решение задачи классическим симплекс методом. Графический метод. Решение задач с помощью Excel. Коэффициенты целевой функции. Линейное программирование, метод, задачи.

    реферат [157,5 K], добавлен 21.08.2008

  • Общее понятие и характеристика задачи линейного программирования. Решение транспортной задачи с помощью программы MS Excel. Рекомендации по решению задач оптимизации с помощью надстройки "Поиск решения". Двойственная задача линейного программирования.

    дипломная работа [2,4 M], добавлен 20.11.2010

  • Программирование численных методов одномерной оптимизации. Решение одномерных задач оптимизации методами последовательного поиска. Градиентные методы и их применение для оптимизации на ЭВМ математических моделей объектов. Методы нулевого порядка.

    контрольная работа [257,9 K], добавлен 15.01.2009

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

    курсовая работа [1,8 M], добавлен 06.04.2009

  • Расчеты по таблице перевозок грузов между отдельными регионами. Решение задачи управления процессами перевозок в среде Pascal. Решение задачи средствами MS Excel. Исходные данные и итоги по строкам и столбцам. Решение задачи средствами MATHCAD.

    курсовая работа [1,8 M], добавлен 25.03.2015

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

    презентация [405,0 K], добавлен 30.10.2013

  • Решение задачи расчета структуры и объема товарооборота методом линейного программирования. Формулы ограничений, транспортная задача оптимизации доставки товаров. Решение задачи о назначениях на основе матрицы стоимостей в электронной таблице Excel.

    контрольная работа [1023,6 K], добавлен 27.05.2013

  • Использование таблиц Excel и математической программы Mathcad при решении инженерных задач. Сравнение принципов работы этих пакетов программ при решении одних и тех же задач, их достоинства и недостатки. Обоснование преимуществ Mathcad над Excel.

    курсовая работа [507,0 K], добавлен 15.12.2014

  • Описание генетических алгоритмов. Применение генетического алгоритма для решения задачи коммивояжера. Постановка задачи безусловной оптимизации. Изучение распространения генетических алгоритмов на модель с несколькими взаимодействующими популяциями.

    дипломная работа [979,1 K], добавлен 30.05.2015

  • Краткие сведения об электронных таблицах MS Excel. Решение задачи линейного программирования. Решение с помощью средств Microsoft Excel экономической оптимизационной задачи, на примере "транспортной задачи". Особенности оформления документа MS Word.

    курсовая работа [1,1 M], добавлен 27.08.2012

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