Метод динамического программирования

Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 12:04, курсовая работа

Краткое описание

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

Содержание

Введение 4
1 Постановка задачи 6
1.1 Требования к системе и ее структуре 6
1.2 Требования к функциям, выполняемым системой 6
1.3 Требования к программно-аппаратному обеспечению 7
1.4 Требования к техническому обеспечению 7
1.5 Требования к эргономике и технической эстетике 7
1.6 Требования к надежности и хранению информации 8
2 Основная часть 9
2.1 Математическая модель 9
2.2 Метод решения задачи 10
2.3 Структурная схема программы 12
2.4 Схема взаимодействия модулей 12
3 Руководство программисту 13
4 Руководство пользователя 13
4.1 Общие сведения 13
4.2 Работа с помощью 13
4.3 Наиболее вероятные ошибки 13
Заключение 15
Список использованных источников 16

Прикрепленные файлы: 1 файл

Математические методы.doc

— 698.00 Кб (Скачать документ)

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

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

Понятный интерфейс снижает количество человеческих ошибок.

 

1.6 Требования  к надежности и хранению информации

 

В целях избежание  не корректной работы программы  не рекомендуется:

      • Удаление данных и файлов и каталога программы;
      • Изменение структуры и целостности кода программы;
      • Переименование и перемещение файлов в каталоге программы;

Объем программы  составляет 584 кб. Приложения можно  хранить на любых носителях. Ограничения  на транспортировку отсутствуют.

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

 

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

 

Математическая модель - это математическое представление  реальности.

Математическое моделирование - процесс построения и изучения математических моделей.

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

Главные функции модели:

      • упрощение получения информации о свойствах объекта;
      • передача информации и знаний;
      • управление и оптимизация объектами и процессами;
      • прогнозирование;
      • диагностика.

Идея динамического  программирования заключается в том, что оптимальное решение подзадач меньшего размера может быть использовано для решения исходной задачи. К примеру, кратчайший путь в графе из одной вершины (обозначим s) в другую (обозначим t) может быть найден так: сначала считаем кратчайший путь из всех вершин, смежных с s, до t, а затем, учитывая веса ребер, которыми s соединена со смежными вершинами, выбираем лучший путь до t (через какую вершину лучше всего пойти). В общем случае мы можем решить задачу, в которой присутствует оптимальная подструктура, проделывая следующие три шага:

    1. Разбиение задачи на подзадачи меньшего размера;
    2. Нахождение оптимального решения подзадач рекурсивно, проделывая такой же трех шаговый алгоритм;
    3. Использование полученного решения подзадач для конструирования решения исходной задачи.

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

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

  • перекрывающиеся подзадачи;
  • оптимальная подструктура;
  • возможность запоминания решения часто встречающихся подзадач.

Динамическое программирование обычно придерживается двух подходов к решению задач:

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

 

 


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

 

2.2 Метод  решения задачи

 

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

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

Для решения задачи оптимизации, в которой требуется построить  решение с максимальным или минимальным (оптимальным) значением некоторого параметра, алгоритм, основанный на динамическом программировании, можно сформулировать так:

  1. выделить и описать подзадачи, через решение которых будет выражаться искомое решение;
  2. выписать рекуррентные соотношения (уравнения), связывающие оптимальные значения параметра для подзадач;
  3. вычислить оптимальное значение параметра для всех подзадач;
  4. построить само оптимальное решение, используя полученную информацию.

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

Ниже приведен пример аналитического решением относительно предметной области, где:

Ui - выбор дороги на i - м шаге по которому направляется груз из данного пункта в соседний пункт;

Fi - итог предыдущего шага местонахождение транспорта с грузом в пункте в котором пребывает перед следующим шагом;

Zi – затраты на перевозку единиц груза из данного пункта в соседний.

Рассмотрим  решение задачи на данном примере. Дана модель соединения городов:

 

 

 

 

 

 


Рисунок 2 – Модель соединения городов

 Основные этапы решения задачи представлены в таблицах 8 – 12.

 Таблица 8 - разбиение вершин по группам

I

I

III

IV

V

с1

с2

с5

с8

с10

 

с3

с6

с9

 
 

с4

с7

   

После чего составим основное функциональное уравнение динамического  программирования:

Fi (xi – 1, Ui) = extr (Zi (xi – 1, Ui) + Fi + 1 (xi));

Для n шага уравнение примет следующий вид:

Fn (xn – 1, Un) = extr (Zn (xn – 1, Un – 1, Un) + Fn + 1 (xn));

Таблица 9 - первый этап

х3

U4

Z3

х4

f4

с8

(8,10)

1

С10

1

с9

(9,10)

7

С10

7




 

 

 

 

Для первого этапа  уравнение примет следующий вид:

F4 (x3 – 1, U4) = extr (Z3 (x3 – 1, U4 – 1, U4) + F4 + 1 (x3));

Таблица 10 - второй этап

X2

U3

Х3

Z3

F4

Z3+F4

F3

с5

(5,8)

с8

7

1

8

8

(5,9)

с9

2

7

5

-

с6

(6,8)

с8

9

1

10

-

(6,9)

с9

2

7

9

9

с7

(7,9)

с9

8

7

15

11


Для второго этапа  уравнение примет следующий вид:

F3 (x2 – 1, U3) = extr (Z3 (x2 – 1, U3 – 1, U3) + F3 + 1 (x2));

Таблица 11 - третий этап

X1

U2

Х2

Z2

F4

Z2+F3

F2

с2

(2,5)

с5

1

8

9

9

(2,7)

с7

6

15

21

-

с3

(3,5)

с5

2

8

10

10

(3,6)

с6

7

9

16

-

(3,7)

с7

4

15

19

-

с4

(4,5)

с5

6

8

14

14

(4,6)

с6

8

9

17

-

(4,7)

с7

3

15

18

-


 


Для третьего этапа уравнение  примет следующий вид:

F2 (x1 – 1, U2) = extr (Z2 (x1 – 1, U2 – 1, U2) + F2 + 1 (x1));

Таблица 12 – четвертый этап

X0

U1

Х1

Z1

F2

Z1+F2

F1

с1

(1,2)

с2

3

9

12

12

(1,3)

с3

5

10

15

-

(1,4)

с4

4

14

18

-




 

 

 

 

 

Для четвертого этапа уравнение примет следующий вид:

F1 (x0 – 1, U1) = extr (Z1 (x0 – 1, U1 – 1, U1) + F1 + 1 (x0));

Наиболее экономичный  маршрут доставки груза из пункта 1 в пункт 10 это: 1-2-5-8-10, а минимальные расстояние составляют 12 тыс.км.

2.3 Структурная схема программы

Структурная схема программы проиллюстрирована на рисунке 3.




 



 

 

 

Рисунок 3 - Пример структурной схемы программы

 

2.4 Схема  взаимодействия модулей

Схема взаимодействия модулей представлен на рисунке 4.

Рисунок 4 - Схема взаимодействия модулей

 

 

 

 

 

 

 

 

 


3 Руководство  программисту

 

Программа предназначена  для нахождения кратчайшего пути.

Структура программы  построена на взаимодействии двух модулей  «Matrica» в котором осуществляется заполнения матрицы  и произведение необходимых расчетов.  В модуль «Rechenie» выводится аналитическое решение и ответ.

Форматирование  конкретного варианта программы, обладающего  свойством многовариантности, учитывающего состав и структуру технических  средств, может производиться по необходимости средствами Borland Delphi при подключении стандартных библиотек.

 

4 Руководство  пользователя

 

4.1 Общие  сведения

 

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

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