Решение оптимизационных задач

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

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

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

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

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

7

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

Введение

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

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

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

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

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

1. Цель, задачи и этапы выполнения курсовой работы

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

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

1. Знакомство с методами оптимизации и вычислительной геометрии;

2. Овладение навыками построения и анализа алгоритмической модели метода;

3. Закрепление навыков программирования.

2. Основная часть

2.1 Постановка задачи задание 1

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

Отыскать наименьшее значение целевой функции f(x) на интервале [a,b], используя метод, соответствующий варианту студента.

1. , [7;11], ?=0,01

2.1.1 Математическая модель задачи

Алгоритм метода ломанных

1. Выбираем произвольно точку и строим функцию ;

2. Следующая точка выбирается из условия (очевидно, что, или );

3. Строится функция ;

4. Очередная точка находится как ;

5. Рассмотрим шаг , т. - известны, т.е. , а определяем из условия и строим ;

Процесс останавливается по достижении точности: (тип 1) или

Блок -схема

2.1.2 Описание метода анализа математической модели

Программа написана на языке программирования VBA в среде Microsoft Office Excel.

Программа имеет понятный интуитивный графический интерфейс (рис. 1.1).

Рисунок 1.1 Главное окно программы

После запуска необходимо ввести требуемую точность вычислений и границы отрезка (рис. 1.2).

Рисунок 1.2 Ввод входных значений

Затем программа рассчитывает точки приближения и находит для данных ограничений точку минимума (рис. 1.3).

Рисунок 1.3 Вывод результатов расчета

Таблица расчетов приведена в таблице 1.1.

Таблица 1.1 Расчет поиска минимума по методу ломаных

8,920247

9,902179

-0,011

-0,00906

9,359152

10,20743

-0,01139

-0,00681

9,660416

10,42042

-0,01042

-0,00501

9,895489

10,57502

-0,0091

-0,00365

10,08922

10,68873

-0,00773

-0,00264

10,25261

10,77255

-0,00644

-0,00191

10,39123

10,83424

-0,00526

-0,00137

10,50841

10,87947

-0,00424

-0,00098

10,60659

10,91254

-0,00337

-0,0007

10,68791

10,93663

-0,00265

-0,00049

10,75444

10,95414

-0,00206

-0,00035

10,80823

10,96684

-0,00159

-0,00024

10,85122

10,97604

-0,00122

-0,00016

10,88524

10,9827

-0,00093

-0,00011

10,91193

10,98751

-0,0007

-6,7E-05

10,93271

10,99098

-0,00053

-3,8E-05

10,94879

10,99349

-0,00039

-1,7E-05

10,96115

10,99531

-0,00029

-2,2E-06

10,97061

10,99661

-0,00021

8,6E-06

10,97783

10,99756

-0,00015

1,64E-05

10,98331

10,99824

-0,0001

2,2E-05

10,98746

10,99873

-6,7E-05

2,61E-05

10,99059

10,99908

-4,1E-05

2,9E-05

2.1.3 Решение задачи

Листинг программы

математический программа интерфейс

Private Sub CommandButton1_Click()

Dim a, b, e, L, x1, x2, fx1, fx2

a = Val(TextBox1.Value)

b = Val(TextBox2.Value)

e = Val(TextBox3.Value)

L = Abs((a * Sin(a) + 2 * Cos(a)) / (a * a * a))

For i = a To b Step 0.01

If Abs((i * Sin(i) + 2 * Cos(i)) / (i * i * i)) > L Then

L = Abs((i * Sin(i) + 2 * Cos(i)) / (i * i * i))

End If

Next i

Cells(5, 11) = L

x0 = (a + b) / 2 + (Cos(a) / (a * a) - Cos(b) / (b * b)) / (2 * L)

Cells(2, 11) = x0

k = 0

For i = 0 To 100

Cells(2 + i, 12) = ""

Cells(2 + i, 13) = ""

Cells(2 + i, 14) = ""

Cells(2 + i, 15) = ""

Next i

Do While Abs(a - b) >= e

x1 = (a + x0) / 2 + (Cos(a) / (a * a) - Cos(x0) / (x0 * x0)) / (2 * L)

x2 = (x0 + b) / 2 + (Cos(x0) / (x0 * x0) - Cos(b) / (b * b)) / (2 * L)

fx1 = Cos(x1) / (x1 * x1)

fx2 = Cos(x2) / (x2 * x2)

Cells(2 + k, 12) = x1

Cells(2 + k, 13) = x2

Cells(2 + k, 14) = fx1

Cells(2 + k, 15) = fx2

If fx1 < fx2 Then

a = x1

x0 = x2

Else

b = x2

x0 = x1

End If

k = k + 1

Loop

If (Cos(x1) / (x1 * x1)) < (Cos(x2) / (x2 * x2)) Then

TextBox5.Value = Round(x1, 4)

TextBox4.Value = Round(Cos(x1) / (x1 * x1), 5)

Else

TextBox5.Value = Round(x2, 4)

TextBox4.Value = Round(Cos(x2) / (x2 * x2), 5)

End If

Cells(18, 7) = TextBox5.Value

Cells(18, 8) = TextBox4.Value

End Sub

2.1.4 Интерпретация результатов

2.2 Постановка задачи задание 2

Задание 2. Найти наименьшее (наибольшее) значение функции при методом наискорейшего спуска.

.

Метод наискорейшего пуска

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

Описание программы

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

В программе реализован один из методов спуска - градиентный метод спуска с выбором шага. Изменение шага осуществляется по схеме:

если если

Вычисление градиента происходит по методу с парными пробами, это улучшает поиск за счёт более точного вычисления градиента.

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

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

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

В качестве условия окончания поиска задаётся требуемая малость модуля градиента функции, т.е. должно выполнятся условие (в области оптимума градиент равен 0, но достичь этого значения практически не возможно, поэтому задаётся требуемая малость близкая к 0).

2.2.1 Математическая модель задачи

Блок схема

2.2.2 Описание метода анализа математической модели

Программа написана на языке программирования VBA в среде Microsoft Office Excel.

Программа имеет понятный интуитивный графический интерфейс (рис. 2.1).

Рисунок 2.1 Главное окно программы

После запуска необходимо ввести требуемую точность вычислений (рис. 2.2).

Рисунок 2.2 Ввод входных значений

Затем программа рассчитывает точки приближения и находит для данных ограничений точку минимума (рис. 2.3).

Рисунок 2.3 Вывод результатов расчета

Таблица расчетов приведена в таблице 2.1.

Таблица 2.1 Расчет поиска минимума по методу наискорейшего спуска

0,013868

-0,29863

0,660911

0,072739

-0,30816

0,611609

0,116095

-0,31354

0,585191

0,147855

-0,31632

0,571146

0,170995

-0,31758

0,563737

0,187777

-0,31797

0,559853

0,199903

-0,31792

0,557829

0,208643

-0,31768

0,556777

0,214929

-0,31738

0,556232

0,219445

-0,31708

0,555951

0,222686

-0,31682

0,555805

0,225011

-0,31661

0,55573

0,226678

-0,31643

0,555692

0,227873

-0,3163

0,555672

0,22873

-0,3162

0,555662

0,229344

-0,31612

0,555656

0,229784

-0,31606

0,555654

0,230099

-0,31602

0,555652

0,230326

-0,31599

0,555652

0,230488

-0,31597

0,555651

0,230604

-0,31595

0,555651

0,230687

-0,31594

0,555651

2.2.3 Решение задачи

Private Sub CommandButton1_Click()

Dim e, L, x(1000), y(1000), f(1000) As Double, modgrad

e = Val(TextBox3.Value)

x(0) = 1

y(0) = 1

h = 1

f(0) = x(0) ^ 2 + 2 * y(0) ^ 2 + Exp(x(0) ^ 2 + y(0) ^ 2) - x(0) + 2 * y(0)

For i = 0 To 100

Cells(2 + i, 12) = ""

Cells(2 + i, 13) = ""

Cells(2 + i, 14) = ""

Next i

i = 1

1: x(i) = x(i - 1) - h * (2 * x(i - 1) + 2 * x(i - 1) * Exp(x(i - 1) ^ 2 + y(i - 1) ^ 2) - 1)

y(i) = y(i - 1) - h * (4 * y(i - 1) + 2 * y(i - 1) * Exp(x(i - 1) ^ 2 + y(i - 1) ^ 2) + 2)

f(i) = x(i) ^ 2 + 2 * y(i) ^ 2 + Exp(x(i) ^ 2 + y(i) ^ 2) - x(i) + 2 * y(i)

Cells(1 + i, 12) = x(i)

Cells(1 + i, 13) = y(i)

Cells(1 + i, 14) = f(i)

R = f(i) - f(i - 1)

If R > 0 Then

h = h / 2

GoTo 1

End If

modgrad = Sqr((2 * x(i) + 2 * x(i) * Exp(x(i) ^ 2 + y(i) ^ 2) - 1) ^ 2 + (4 * y(i) + 2 * y(i) * Exp(x(i) ^ 2 + y(i) ^ 2) + 2) ^ 2)

If modgrad > e Then

i = i + 1

GoTo 1

End If

TextBox5.Value = Round(x(i), 4)

TextBox6.Value = Round(y(i), 4)

TextBox4.Value = Round(f(i), 4)

Cells(18, 7) = TextBox5.Value

Cells(18, 8) = TextBox6.Value

Cells(18, 9) = TextBox4.Value

End Sub

2.2.4 Интерпретация результатов

Заключение

В ходе выполнения данного курсового проекта было составлено две программы по двум заданиям.

Составлены программы в VBA в среде Microsoft Office Excel. Подробное описание программ представлено основной части КП.

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

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

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

Список использованных источников

Нормативно-технические документы

1 ГОСТ 19402-78. Описание программы

2 ГОСТ 19404-79. Пояснительная записка. Требования к содержанию и оформлению.

3 Метод ломаных - http://studopedia.net/7_22267_metod-lomanih.html

4 Метод наискорейшего спуска - http://matlab.exponenta.ru/optimiz/book_2/2_2.php

5 Метод наискорейшего спуска http://otherreferats.allbest.ru/mathematics/00188334_0.html

6 Метод наискорейшего спуска - http://dit.isuct.ru/ivt/sitanov/Literatura/M171/Pages/Glava2_3_2_1.htm

7 Программирование на VBA в Microsoft Office - http://excelvba.ru/books/3

8 Метод ломаных - http://examhack.narod.ru/2_1.htm

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


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

  • Анализ метода линейного программирования для решения оптимизационных управленческих задач. Графический метод решения задачи линейного программирования. Проверка оптимального решения в среде MS Excel с использованием программной надстройки "Поиск решения".

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

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

    контрольная работа [191,1 K], добавлен 05.04.2016

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

    лабораторная работа [4,5 M], добавлен 03.08.2011

  • Построение и использование математических и алгоритмических моделей для решения линейных оптимизационных задач. Освоение основных приемов работы с инструментом "Поиск решения" среды Microsoft Excel. Ввод системы ограничений и условий оптимизации.

    лабораторная работа [354,7 K], добавлен 21.07.2012

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

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

  • Классы задач P и NP, их сводимость. Примеры NP-полных и NP-трудных задач. Сущность метода поиска с возвратом. Алгоритмы решения классических задач комбинаторного поиска. Решение задачи о восьми ферзях. Поиск оптимального решения методом ветвей и границ.

    презентация [441,5 K], добавлен 19.10.2014

  • Математическое описание численных методов решения уравнения, построение графика функции. Cтруктурная схема алгоритма с использованием метода дихотомии. Использование численных методов решения дифференциальных уравнений, составление листинга программы.

    курсовая работа [984,2 K], добавлен 19.12.2009

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

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

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

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

  • Подбор параметров линейной функции. Вычисление значения функции в заданных промежуточных точках с использованием математических пакетов. Исследование математической модели решения задачи. Составление программы для вычисления коэффициента корреляции.

    курсовая работа [2,3 M], добавлен 21.10.2014

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