Автор работы: Пользователь скрыл имя, 27 Сентября 2011 в 10:26, курсовая работа
Целью исследования методов является выявление наилучшего способа действия при решении той или иной задачи. Главная роль при этом отводится математическому моделированию. Для решения математических моделей предназначены различные математические методы. Среди них метод динамического программирования, рассмотренный в данной работе.
ВВЕДЕНИЕ…………………………………………………………………..3
I. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ……………………………………………..5
1.1. Задача динамического программирования ………………………..5
1.2. Примеры задач динамического программирования………………9
1.3. Общая структура динамического программирования……………13
1.4. Понятие о методе ветвей и границ………………………………….15
II.ПРАКТИЧЕСКАЯ ЧАСТЬ………………………………………………21
2.1.Применение метода ветвей и границ для задач календарного планирования ……………………………………………………………….21
ЗАКЛЮЧЕНИЕ………………………………………………………………27
Библиографический список………………………………………………..28
Пусть
имеется начальная
dC(s) = С(s) + , (1)
dB(s) = В (s) + + min cj , (2)
dA(s) = A (s) + + (3)
где J (s) — множество символов, образующих последовательность s.
За оценку критерия С (s) для варианта s можно принять величину
D(s) = max {dA(s), dB (s), dC (s)}. (4)
Тогда ход решения задачи трех станков можно представить следующей формальной схемой.
Нулевой шаг. Задание множества G(0), образуется всеми возможными последовательностями (s = 0).
Вычисление оценки для множества G0:
где D(0) = max {dA(0), dB (0), бC (0)},
; ; .
Первый шаг.Образование множеств G1(1) U G1(2) U... …G1(n).
Подмножество Gk определяется всеми последовательностями с началом ik(k — 1, ...,n ).
Вычисление оценок. Оценку для последовательности sk определяют из соотношения (4), т. е.
D(sk) = max {dA(sk), dB (sk), dC (sk)}; k = 1, n.
Выбор варианта
для продолжения. Из всех подпоследовательностей,
построенных на предыдущем шаге, выбирают
наиболее перспективную
D(sk(1))=min D(sj(1)).
Ветвление. Выбрав наиболее перспективный вариант последовательности sk(1), развивают его построением всех возможных подпоследовательностей длиной 2 с началом sk(1) вида sk+1(2)= (sk(1), j), где j не входит в sk.
Вычисление оценок производят в соответствии с соотношениями (1), (2), (3).
k - ш а г. Допустим, что уже проведено k шагов, в результате чего построены варианты s1(k), s2(k) ,…,svk(k), а именно подпоследовательности длиной k.
Выбираем
самый перспективный вариант sS
D(ss(k))=min D(sj(k)).
Множество Gs(k) разбиваем на (п — k) подмножеств, каждое из которых образуется добавлением к последовательности ss(k) некоторого элемента ik+1 такого, что ik+1 .
Оценка определяется в соответствии с соотношениями (1) — (4).
В результате строим дерево вариантов следующего вида: вершина О отвечает s = 0, вершины первого уровня G1(1), G2(1)..., Gn(1) соответствуют последовательностям длиной 1, т. е. s1(1) = 1, s2(1) = 2,..., sn(1) = п и т. д. Каждая конечная вершина отвечает последовательности максимальной длины п.
Признак оптимальности. Если sv(n) отвечает конечной вершине дерева, причем оценка наименьшая из оценок всех вершин, то sv(n) — искомый вариант, иначе переходим к продолжению варианта с наименьшей оценкой.
Пример 6. Рассмотрим
задачу .трех станков, условия которой
приведены в табл. 1:
Таблица 1
Длительность операций | Деталь | ||||
1 | 2 | 3 | 4 | 5 | |
ai
bi ci |
2
3 4 |
5
2 4 |
1
1 2 |
3
4 2 |
3
5 2 |
Нулевой шаг. s = 0.
dA(s = 0) = A(0) +
dB(s = 0) = В(0) +
dC(s
= 0) = С(0) +
Тогда
∆ (s = 0) = max {17, 17,14} = 17.
Первый шаг. Конструируем все возможные последовательности длиной 1
s1(1) = 1; s2(1) = 2; s3(1) = 3; s4(1) = 4; s5(1) = 5.
Находим
dA(1) =
A1 +
dB(1)(s
= 0) = В1 +
dC(1)
= С1 +
Откуда ∆ (1) = max {17, 19, 19} = 19.
Аналогично определяем ∆ (2), ∆ (3), ∆ (4), ∆ (5).
Второй шаг. Среди множества подпоследовательностей длиной 1, s1(1) = 1, s2(1) = 2,..., s5(1) = 5 выбираем наиболее перспективную s = 1, для которой величина оценки-прогноза ∆ (s) оказывается наименьшей. Далее развиваем ее, конструируя возможные варианты длиной 2, т. е. (1.2), (1.3), (1.4), (1.5).
Для каждого из этих вариантов вновь определяем оценки по формулам (1) — (4).
Процесс вычислений продолжаем аналогично.
Процесс построения дерева вариантов приведен на рис. 1.
Каждой конечной вершине дерева вариантов будет отвечать полная последовательность s = i1,i2,,.in. Если для некоторой такой вершины величина оценки ∆ (s) не превосходит величины оценок для всех остальных вершин, то эта оценка определяет искомый оптимальный вариант. В противном случае разбиваем более перспективный вариант с наилучшей оценкой.
Конечная вершина определяет вариант (последовательность) = 3, 1, 5, 2, 4 с наилучшей оценкой ∆ = 20. Поэтому данный вариант является оптимальным.
Непосредственной проверкой убеждаемся, что время обработки всей последовательности деталей для этого варианта совпадает со значением оценки-прогноза и является минимальным:
ЗАКЛЮЧЕНИЕ
При написании курсовой работы, передо мной стояла цель – выявить наилучший способ решения задач динамического программирования. В первой части курсовой работы, мною был изучен смысл динамического программирования и выявлено, что метод динамического программирования можно использовать для решения весьма широкого круга задач и какими принципами следует руководствоваться при постановке задач динамического программирования. Было определено, что динамическое программирование позволяет осуществлять оптимальное планирование управляемых процессов, сформулирован общий принцип, лежащий в основе решения всех задач динамического программирования, отмечена структура динамического программирования.
Во второй части курсовой работы мной была изучена основная идея и особенности вычислительного метода динамического программирования. А также подробно рассмотрена общая постановка, алгоритм решения задач методом динамического программирования , приведены примеры решения задач методом динамического программирования.
Динамическое программирование хорошо приспособлено для решения задач оптимизации многостадийных процессов, особенно тех, в которых состояние каждой стадии характеризуется относительно небольшим числом переменных состояния. Однако при наличии значительного числа этих переменных, т. е. при высокой размерности каждой стадии, применение метода динамического программирования затруднительно вследствие ограниченных быстродействия и объема памяти вычислительных машин.
Именно
благодаря данной программе можно
облегчить труд человека, решающего
задачи методом динамического
Библиографический список