
- •МинистерсТво образования и науки Российской Федерации Королёвский колледж космического машиностроения и технологии
- •Дисциплина Математические методы
- •Раздел1. Основы моделирования ………………………………………………… .3
- •Раздел 2. Детерминированные задачи……………………………………………..7
- •Тема 2.1. Линейное программирование…………………………………………7
- •Основные понятия исследования операций
- •Рассмотрим основные понятия теории исследования операций.
- •Модели, их классификация, особенности
- •Классификация математических моделей
- •По использованному при построении модели математическому аппарату
- •Построение простейших математических моделей
- •Раздел 2. Детерминированные задачи
- •Тема 2.1. Линейное программирование
- •2.1.1. Модели линейного программирования
- •2.1.2. Графический метод решения задач линейного программирования
- •2.1.3. Симплекс-метод для решения задач линейного программирования
- •2.1.4. Симплекс-метод c искусственным базисом
- •2.1.5. Двойственная задача линейного программирования
- •2.1.6. Двойственный симплекс-метод
- •Приведем задачу к виду озлп
- •2.1.7. Постановка транспортной задачи
- •2.1.8. Построение опорного плана транспортной задачи
- •2.1.9. Определение оптимального плана транспортной задачи
- •Тема 2.2. Нелинейное программирование
- •Тема 2.3. Алгоритмы на графах
- •2.3.1. Основные сведения из теории графов
- •Пути и маршруты в графе
- •Вес и длина пути
- •Степени вершин
- •2.3.2. Матричное представление графа
- •Поиск кратчайшего пути в графе
- •Первая итерация
- •Вторая итерация
- •Третья итерация
- •Четвёртая итерация
- •Поиск максимального потока в графе
- •Задача о максимальном потоке
- •Тема 2.4. Динамическое программирование
- •2.4.1. Постановка задачи динамического программирования
- •2.4.2. Моделирование многошаговых процессов
- •2.4.3. Принцип оптимальности
- •Раздел 3. Задачи в условиях неопределенности
- •Тема 3.1. Системы массового обслуживания
- •Характеристики входа
- •Поведение клиентов
- •Характеристики очереди
- •Характеристики процесса обслуживания
- •Параметры моделей очередей
- •Тема 3.2. Имитационное моделирование
- •Имитация с помощью метода Монте-Карло (метода статистических испытаний)
- •Тема 3.3. Основы теории принятия решений
- •Принятие решений в условиях определенности
- •Принятие решений в условиях неопределенности
Тема 2.4. Динамическое программирование
2.4.1. Постановка задачи динамического программирования
Динамическое программирование представляет собой специальный метод оптимизации решений, приспособленный к многошаговым или многоэтапным операциям.
Предположим, что исследуемая операция представляет собой процесс, развивающийся во времени и состоящий из серии этапов(или шагов). Существуют операции, которые распадаются на ряд шагов совершенно естественным образом (например, при разработке плана хозяйственной деятельности фирмы (предприятия) на долгосрочный период естественно принять год за один шаг). В других операциях такое деление можно выполнить искусственно, выбирая некоторую длину, интервал времени, в качестве продолжительности шага. Так как изучаемый процесс является управляемым, то на каждом шаге должно приниматься решение, от которого зависит успешное выполнение данного шага и операции в целом. Таким образом, управление всей операцией складывается из ряда элементарных, «пошаговых» управлений.
Рассмотрим пример многошаговой операции планирования хозяйственной деятельности объединения (группы) промышленных предприятий Пi, П2, Пk на некоторый период времени Т, состоящий из m хозяйственных лет.
Предположим, что в начале периода планирования на развитие группы предприятий выделены капитальные средства в размере К0, которые предназначены для расходования в процессе функционирования системы. Эти средства определенным образом должны быть распределены между предприятиями рассматриваемой группы. Считается, что предприятие за год приносит доход, величина которого зависит от вложенных средств. В начале каждого хозяйственного года сумма имеющихся средств должна быть перераспределена между предприятиями — каждому предприятию выделяется определенная доля средств.
При разработке операции планирования возникает вопрос: как в начале года нужно распределять имеющиеся средства между предприятиями, чтобы суммарный доход от всей группы предприятий за весь период Т был максимальным?
Приведенный пример является типичной задачей динамического программирования, поскольку здесь рассматривается управляемый процесс. Управление состоит в распределении и перераспределении средств в ходе процесса. Шагом управления является выделение определенных средств каждому предприятию в начале хозяйственного года. Математическая формулировка задачи выглядит следующим образом.
Предположим, что в начале некоторого года / предприятиям П1, П2, Пк выделяются соответственно средства Хi1, Хi2,… Xik. Совокупность этих значений представляет собой не что иное, как управление на шаге i:
Ui=(Xi1, Хп,… , Х!к).
А управление операцией в целом выражается как совокупность всех шаговых управлений:
U =(U1, U2,…Um).
Управление может удовлетворительным и неудовлетворительным, оно может быть эффективным или неэффективным. Как правило, эффективность управления оценивается при помощи того же самого показателя IV, что и эффективность самой операции в целом. В рассматриваемом нами примере показатель эффективности операции (целевая функция задачи) выражается как суммарный доход от всего комплекса предприятий за определенное количество (т) лет. Величина этого показателя зависит от качества управления за весь период времени U, т.е. от всей совокупности пошаговых управлений:
W = W(U) = W(U1, U2,..,Um).
Возникает вопрос: как выбрать пошаговые управления U1 U2, Um, чтобы величина показателя эффективности была наибольшей (максимальной) из всех возможных?
Поставленная таким образом проблема называется задачей оптимизации управления, а управление, при котором показатель становится максимальным, носит название оптимального управления. В дальнейшем мы будем обозначать оптимальное управление (в отличие от управления в общем случае U) буквой и. Таким образом, оптимальное управление и многошаговым процессом состоит из совокупности оптимальных шаговых управлений:
u = (u1,и2…,ит).
Задача оптимизации управления выглядит следующим образом: определить оптимальное управление на каждом шаге процесса ui (i= 1, 2, т) и, следовательно, оптимальное управление всей операцией и.
Заметим, что в рассматриваемом нами примере (управление распределением финансовых средств группы предприятий) показатель эффективности представляет собой сумму доходов за все отдельные годы исследуемого периода времени:
W = w1 + w2 + … + wm
где w, — доход от всей системы за год i.
Показатель, обладающий таким свойством, называется аддитивным. Далее будут обсуждаться свойства задач оптимизации управления только с аддитивными показателями эффективности.
Рассмотрим задачу динамического программирования в общем виде. Предположим, что исследуется операция с аддитивным показателем эффективности, состоящая из некоторого количества (т) шагов. Пусть на каждом шаге используется некоторое управление Ui и требуется определить оптимальное управление
u = (u1,и2…,ит).
при котором показатель эффективности W = w1 + w2 + ... + wm становится максимальным.
Поставленную задачу можно решать разными способами:
сразу искать оптимальное управление для всего периода;
строить его постепенно, шаг за шагом, таким образом, что на каждом этапе расчета оптимизируется только один шаг процесса.
Обычно второй способ оптимизации оказывается существенно проще, чем первый, особенно при большом числе шагов процесса. Реализация такого подхода составляет основное содержание метода динамического программирования. При этом управление на каждом шаге не является изолированным (независимым от других шагов); а определяется с учетом возможных последствий в будущем. Оно должно быть дальновидным, с учетом перспективы. Управление, при котором эффективность данного шага максимальна, но при этом расходуется слишком много ресурсов, вследствие чего на следующих шагах нельзя получить хорошие результаты, является неправильным, ошибочным.
Возьмем следующий пример: пусть требуется составить план работы группы промышленных предприятий, часть которых занята выпуском тканей, а остальные производят ткацкие станки для предприятий первой подгруппы. Задача состоит в получении за планируемый период максимально возможного объема выпуска тканей. Рассмотрим планирование распределения средств (капитальных вложений) на первый год. Если исходить из локальных интересов первого года (шага), то нужно было бы все имеющиеся средства вложить в производство тканей, пустить все имеющиеся станки на полную мощность и добиться к концу года максимального выпуска потребительской продукции. Однако при таком режиме работы некоторые станки выйдут из строя, и мы не сможем их отремонтировать или заменить, поскольку на это не выделено средств. Следовательно, необходимо выделить определенную долю средств для группы предприятий, которые выпускают новые машины и ремонтируют старые.
Планируя многошаговую операцию нужно выбирать управление на каждом шаге с учетом его последствий для будущих периодов времени. Но из этого правила есть одно исключение: есть шаг, который можно планировать без учета будущих последствий, а именно последний шаг планируемого периода. Действительно, его план можно рассчитывать так, чтобы он принес наибольший локальный эффект. Рассчитав оптимальный план для последнего периода, подобные рассуждения можно повторить, считая последним этапом — предыдущий. Подобную процедуру можно произвести для всей цепочки шагов.
Таким образом, процесс динамического программирования осуществляется от конца к началу: сначала находится оптимальный план для последнего шага т. На этом шаге делаются предположения (гипотезы) относительно плана предпоследнего шага (т - 1), и для каждой гипотезы ищется управление, при котором эффект на последнем шаге будет максимальным. Решив эту задачу, получим так называемое условное оптимальное управление шага т, т.е. такое управление, которое нужно применить, если шаг (т - 1) получил данный вариант плана.
Предположим, что вышеописанная процедура выполнена и для каждого варианта плана на шаге (т - 1) известно условное оптимальное управление на шаге т и соответствующий ему условный оптимальный выигрыш. Далее происходит переход к оптимизации управления на предпоследнем шаге (т - 1). Для этого делаются все возможные предположения о тех вариантах плана, которые могут быть выполнены для шага (т - 2), и для каждого из них находится управление шаге (т - 1), чтобы эффект за последние два шага (из которых последний уже оптимизирован) был максимален. После чего оптимизируется управление на шаге (т - 2) и т.д. То есть на каждом шаге процесса ищется такое управление, которое обеспечивает оптимальное продолжение процесса относительно достигнутого (или запланированного) в данный момент состояния. Этот принцип выбора управления называется принципом оптимальности. Само управление, обеспечивающее оптимальное продолжение в указанном выше смысле, называется условным оптимальным управлением на данном шаге.
Далее будем исходить из того, что условное оптимальное управление известно на каждом шаге, тем самым нам 'известно, что делать дальше (или как планировать) при любом состоянии операции к началу каждого шага. Тогда можно определить уже не «условное», а истинное оптимальное управление на каждом шаге.
В самом деле, предположим, что нам известно начальное состояние процесса (операции), обозначим его S0. Мы знаем, что делать на первом шаге — нужно использовать то условное оптимальное управление, которое выработано для первого шага при условии, что в начале было состояние S0. В результате выполнения этого управляющего воздействия оптимизируемая система перейдет после первого шага в некоторое состояние S1 но для этого состояния уже известно условное оптимальное управление на втором шаге и т.д. Таким образом, будет найдено оптимальное управление процессом
u = (u1,и2…,ит).
приводящее к максимально возможному эффекту Wmax.
Приведенное описание показывает, что в процессе оптимизации управления методом динамического программирования многошаговый процесс выполняется дважды:
первый раз он идет от конца к началу, в результате чего находятся условные оптимальные управления на всех шагах и условный оптимальный выигрыш на каждом шаге, начиная от первого и до конца процесса;
второй раз он проходит от начала к концу, при этом определяются истинные (не условные) управления на всех шагах операции и тем самым находится оптимальное управление всей операцией в целом.
На практике очень часто встречаются многоэтапные операции, связанные с необходимостью найти эффективное распределение некоторых видов и запасов ресурсов (сырья, рабочей силы, денежных средств и т.п.) между предприятиями одной отрасли или региона, а также между различными отраслями промышленности. Важное место занимают задачи распределения капитальных средств во времени, в формулировку которых включается требование получение максимального дохода за фиксированный период времени.