Лекция 6. Динамическое программирование Содержание лекции: 1. 2. 3. 4. Формулировка задачи динамического программирования Принцип оптимальности Беллмана Алгоритм решения задач динамического программирования Экономические приложения задач динамического программирования Динамическое программирование © Н.М. Светлов, 2007-2011 Литература Фомин Г.П. Математические методы и модели в коммерческой деятельности: Учебник. – 2-е изд. М.: Финансы и статистика, 2005. — Глава 5. Экономико-математические методы и прикладные модели: Учеб. пособие для вузов / Под ред. В.В. Федосеева. — 2-е изд. М.: ЮНИТИ-ДАНА, 2005. — Раздел 3.5. Динамическое программирование © Н.М. Светлов, 2007-2011 2/9 6.1. Формулировка задачи динамического программирования Дано: множество состояний множество возможных переходов из одного состояния в другое в том числе начальное и конечное с каждым переходом связывается числовой параметр Найти: • интерпретируется как затраты, выгода, расстояние, время и т.п. оптимальную последовательность переходов (путь) из начального состояния в конечное максимум или минимум суммы числовых параметров предполагается, что хотя бы один путь из начального состояния в конечное существует Динамическое программирование © Н.М. Светлов, 2007-2011 3/9 Пример 6.1 1 5 8 1 3 4 0 5 2 16 4 2 9 11 9 5 7 9 10 12 11 8 4 14 9 7 6 4 4 1 0 12 10 15 5 4 4 7 4 8 17 -2 6 8 3 12 7 3 18 16 13 Динамическое программирование © Н.М. Светлов, 2007-2011 4/9 сумма числовых значений (e.g. расстояний) по всему пути 6.1 max c ij x ij Условие целочисленности переменных x ij Между вершинами i и j нет дуги. Математическая запись i I j J x ij i I 1, j J x ik i I единственность искомого пути: в каждую вершину можно прийти только из одной вершины (или вообще нельзя) x kj , k I \ {0} j J x ij {0;1}, i I , j J x ij 0, i I , j J , (i , j ) A если искомый путь пришёл в вершинуk, то он должен из неё выйти (если только она не конечная) 1, если путь проходит через дугу (i,j) 0, если не проходит или такой дуги нет Например, расстояние между пунктами i и j, км x ij – переменная включения дуги (i , j ) в путь c ij – числовое значение, приписанное дуге I – множество вершин, кроме конечной J – множество вершин, кроме начальной вершины 0 A – множество всех дуг X \ Y – оператор исключения множества Y из множества X {(1,2), (1,3), (2,4), (2,5), (3,5)…} Динамическое программирование © Н.М. Светлов, 2007-2011 5/9 6.2. Принцип оптимальности Беллмана Если вершины A и B лежат на оптимальном пути между вершинами 0 и X, то часть оптимального пути от 0 до X между вершинами A и B непременно является оптимальным путём от A до B. Следствие Чтобы найти оптимальный путь от 0 до A, достаточно исследовать продолжения к A всех оптимальных путей до вершин, предшествующих A Продолжения неоптимальных путей к предшествующим вершинам можно не просчитывать: они никогда не дадут оптимального пути к A Принцип Беллмана позволяет построить простую и эффективную вычислительную процедуру для решения задач динамического программирования Динамическое программирование © Н.М. Светлов, 2007-2011 6/9 6.3. Алгоритм решения задач динамического программирования 11 5 8 1 3 12 15 4 0 0 5 5 2 0 9 11 12 11 45 18 34 4 9 7 9 4 14 23 7 9 35 2 8 18 4 16 4 9 6 4 10 15 3 1 19 1 5 28 10 15 5 4 12 7 7 14 8 4 18 4 37 8 17 27 -2 6 3 3 4 16 13 Динамическое программирование © Н.М. Светлов, 2007-2011 максимум 7/9 6.3. Алгоритм решения задач динамического программирования 11 5 8 1 9 15 4 0 1 12 12 5 10 3 3 0 12 1 5 2 9 11 12 11 23 18 13 4 9 11 7 9 4 14 16 8 7 14 2 7 6 4 4 0 16 4 5 10 15 17 5 4 12 7 7 11 8 15 4 4 16 8 17 19 -2 6 3 3 4 16 13 Динамическое программирование © Н.М. Светлов, 2007-2011 минимум 8/9 6.4. Экономические приложения Управление проектами Управление реновацией основных средств производства • Дуги - работы, которые должны быть выполнены • Параметры – продолжительность работ • Самый длинный путь (max) определяет минимальный срок выполнения проекта • Дуги соответствуют решениям: • e.g., эксплуатировать; ремонтировать; списать • Параметры –доходы • Самый выгодный путь (max) определяет жизненный цикл элемента основных средств Бизнеспланирование • Дуги – операции, переводящие фирму в новое состояние • Параметры – доходы (расходы) • Самый выгодный путь определяет наилучший бизнес-план Поиск оптимального маршрута • Дуги – пути сообщения • Параметры – время (или стоимость) перевозки • Самый выгодный (min) путь определяет оптимальную перевозку Динамическое программирование © Н.М. Светлов, 2007-2011 9/9