Решение оптимизационных задач
Ознакомление с методами решения оптимизационных задач. Алгоритм метода ломанных. Определение наименьшего значения целевой функции. Описание метода анализа математической модели. Расчет поиска минимума по методу ломаных. Листинг программы, интерфейс.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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