Динамическое программирование

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Курсовая работа.Математические методы.Филиппов.doc

— 289.00 Кб (Скачать файл)

Пусть имеется начальная подпоследовательность s. Тогда вычисляются величины:

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.

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

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(k) такой, что

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) +

  +
  = 0 + 14 + 3 = 17;

    dB(s = 0) = В(0) +

min cj = 0 + 15 + 2 = 17;

dC(s = 0) = С(0) +

=14 . 

Тогда

∆ (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  +

  +
  = 14 + 3 = 17;

    dB(1)(s = 0) = В1 +

+
  = 5 + 12 + 2 = 19;

dC(1) = С1 +

= 9 + 10 = 19 .

Откуда ∆ (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. Поэтому данный вариант является оптимальным.

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

 
 
 
 
 
 
 
 
 
 
 
 
 
 

     ЗАКЛЮЧЕНИЕ 

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

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

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

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

Библиографический список

  1. Таха Х. Введение в исследование операций.–М.: Мир,2004.
  2. Кузнецов Ю. Н. Математическое программирование. –М.: Наука,1976.
  3. Вентцель Е. С. Исследование операций. –М.: Наука,1976.
  4. Вентцель Е. С. Элементы динамического программирования. –М.: Наука,1987.
  5. Акоф Р., Сасиени М. Основы исследования операций. –М.: Мир,1971.
  6. Вентцель Е. С. Исследование операций: задачи, принципы, методология. –М.: Наука,2001.
  7. Карманов В. Т. Математическое программирование. –М.:Наука,1986.
  8. Зайченко Ю. П. Исследование операций. –К.: Высшая школа,1985.
  9. Аоки М. Введение в методы оптимизации. –М.: Наука,1997.
  10. Беллман Р., Дрейфус С. Прикладные задачи динамического программирования. –М.: Наука,2007.

Информация о работе Динамическое программирование