ВВЕДЕНИЕ 3
ГЛАВА 1 ОБЩИЕ ПОДХОДЫ ИСПОЛЬЗОВАНИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ В ПРИКЛАДНЫХ ЗАДАЧАХ 5
1.1 Обоснование необходимости методов динамического
программирования в прикладных задачах 5
1.2 Достаточность методов динамического программирования в
прикладных задачах 8
ГЛАВА 2 КОНКРЕТНЫЕ РЕАЛИЗАЦИИ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ В ПРИКЛАДНЫХ ЗАДАЧАХ 15
2.1 Методы динамического программирования в непрерывном случае 15
2.2 Методы динамического программирования в дискретном случае 28
2.2.1 Математическая модель задачи о рюкзаке 28
2.2.2 Методы решения задачи о рюкзаке 30
ГЛАВА 3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ 38
3.1 Решение задачи о рюкзаке 38
3.2 Описание интерфейса 38
ЗАКЛЮЧЕНИЕ 45
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 46
ПРИЛОЖЕНИЕ
Динамическое программирование в математике и теории вычислительных систем — метод решения задач с оптимальной подструктурой и перекрывающимися подзадачами, который намного эффективнее, чем решение «в лоб». Словосочетание «динамическое программирование» впервые было использовано в 1940-х годах Р. Беллманом для описания процесса нахождения решения задачи, где ответ на одну задачу может быть получен только после решения задачи, «предшествующей» ей. В 1953 г. он уточнил это определение до современного.
Впервые сформулированная американским математиком Д.Б. Данцигом задача о рюкзаке (ранце) (англ. Knapsack problem) - одна из NP-полных задач комбинаторной оптимизации, популярность которой вызвана большим количеством её приложений, поскольку многие из реально возникающих задач описываются в рамках данной модели. Основные сферы применения находятся в областях планирования и управления производственными и транспортными системами. Название своё получила от максимизационной задачи укладки как можно большего числа ценных вещей в рюкзак при условии, что общий объём (или вес) всех предметов, способных поместиться в рюкзак, ограничен. Непосредственно термин «рюкзак» может быть интерпретирован достаточно широко. Данная задача и её варианты широко используются для моделирования большого числа практических задач.
Актуальность работы заключается в том, что мы можем решить задачу, в которой присутствует оптимальная подструктура, проделывая следующие три шага.
1) Разбиение задачи на подзадачи меньшего размера.
2) Нахождение оптимального решения подзадач рекурсивно, проделывая такой же трехшаговый алгоритм.
3) Использование полученного решения подзадач для
конструирования решения исходной задачи.
Объект исследования - математическая модель задачи о рюкзаке.
Предмет исследования - оптимизация задачи о рюкзаке методом динамического программирования.
Целью выпускной квалификационной работы является использование метода динамического программирования для решения задачи о рюкзаке.
Задачи работы:
1) Изучение общих подходов динамического программирования;
2) Создание алгоритма для решения задачи о рюкзаке;
3) Программная реализация задачи о рюкзаке.
Выпускная квалификационная работа состоит из введения, трёх глав, заключения, списка используемых источников.
В главе 1 рассматриваются общие подходы использования динамического программирования в прикладных задачах. В главе 2 приводятся конкретные реализации динамического программирования в прикладных задачах. В главе 3 разрабатываются алгоритм и интерфейс программы. В заключении представлены результаты и выводы о выполненной работе.
В выпускной квалификационной работе представлены общие подходы необходимости использования динамического программирования в некоторых прикладных задачах.
В настоящее время разработаны современные методы и алгоритмы решения задач дискретной оптимизации. Применение пакетов программ возможно без знания алгоритмов решения задач, однако знание алгоритмов и технологий их реализации позволяет более эффективно использовать прикладные программы. В этих программах используются алгоритмы, связанные с перебором большого числа вариантов, комбинаторные алгоритмы.
В работе подробно рассмотрены реализации динамического программирования в дискретном случае, а так же упомянуты реализации динамического программирования в непрерывном случае. Работа посвящена задаче о рюкзаке, методам её решения. Из них рассмотрены: метод ветвей и границ и метод динамического программирования. Программная реализация осуществлена для метода динамического программирования.
Задача о рюкзаке является довольно удачным примером демонстрации комбинаторных методов поиска оптимального решения метода динамического программирования.
Предложенная модификация алгоритма Беллмана-Форда,
использованная в программе для решения задачи о рюкзаке, в отличии от существующих программ, позволяет проводить расчеты в несколько раз быстрее, исключая ненужные операции.
1. Акулич, И.Л. Математическое программирование в задачах и упражнениях. - М.: Высшая школа, 1993. - 215с.
2. Банди, Б. Основы линейного программирования. М.: Радио и связь. 1989. - 176с.
3. Беллман, Р. Дрейфус С. Прикладные задачи динамического программирования. - М.: Наука, 1965. - 375с.
4. Вагнер, Г. Основы исследования операций. Т. 1. - М. Мир, 1972, 1973.
5. Воройский, Ф.С. Информатика. Новый систематизированный толковый словарь / Ф.С. Воройский. - М.: [не указано], 2017. - 150 с.
6. Гермейер, Ю.Б. Введение в теорию исследования операций. - М.: Наука, 1976. - 382с.
7. Замкова, Л.И. Булева двухкритериальная задача о рюкзаке / Л.И. Замкова // Известия Южного федерального университета. Технические науки. - 2009. - № 4. - С. 201 - 204.
8. Интрилигатор, М. Математические методы оптимизации и экономическая теория. - М.: Прогресс, 1975. - 592с.
9. Казаков, А.Я. Модифицированные модели Джейнса-Каммингса и квантовая версия задачи о рюкзаке / А.Я. Казаков // Журнал экспериментальной и теоретической физики. - 2003. - Т. 124, Вып. 6 (12). - С. 1264-1270.
10. Конюховский, П.В. Математические методы исследования операций: пособие для подготовки к экзамену. - СПб.:Питер, 2001. - 192с.
11. Корбут, А.А. Дискретное программирование. / А.А. Корбут, Ю.Ю. Финкельштейн. - М.: Наука, 1969. - 368 с.
12. Морозов, В.В., Сухарев А.Г., Федоров В.В. Исследование операций в задачах и упражнениях. - М.: Высшая школа, 1986.
13. Пападимитриу, Х. Комбинаторная оптимизация. Алгоритмы и сложность / Х. Пападимитриу, К. Стайглиц. - М.: Мир, 1985. - 510 с.
14. Саати, Т. Целочисленные методы оптимизации и связанные с ними экстремальные проблемы. / Т. Саати. - М.: Мир, 1973. - 304 с.
15. Таха, Х. Введение в исследование операций. Т.1, 2. - М.: Мир, 1985.
16. Шкурба, В.В. Задачи трёх станков / В.В. Шкурба. - М.: Наука, 1976. - 96 с.
Литература на иностранном языке
17. Fletcher R. Practical Methods of Optimization. Vol. 1, Unconstrained Optimization, and Vol. 2, Constrained Optimization, John Wiley and Sons., 1980.
18. Gembicki F.W. Vector Optimization for Control with Performance and Parameter Sensitivity Indices. Ph.D. Dissertation, Case Western Reserve Univ., Cleveland, Ohio, 1974.
19. Gill P.E., W. Murray, M.A. Saunders, and M.H. Wright. Procedures for Optimization Problems with a Mixture of Bounds and General Linear Constraints. ACM Trans. Math. Software, Vol. 10, pp. 282-298, 1984.
20. Gilmore P.C. The Theory and Computation of Knapsack Functions / P.C. Gilmore, R.E. Gomory // Operations Research. - 1966. - Vol. 14, No. 6. - pp. 1045 - 1074.
21. Zadeh L.A. Optimality and Nonscalar-valued Performance Criteria. IEEE Trans. Automat. Contr., Vol. AC-8, p. 1, 1963.