Динамическое программирование. Задача о замене оборудования
Государственное образовательное
учреждение высшего
Кафедра: Экономики и логистики
Учебная
дисциплина:
Тема: Динамическое программирование. Задача о замене оборудования.
Студент: Подпись ________ Романова А. В.
Руководитель:
Подпись_________
Оценка: ________
Санкт-Петербург
2010
Содержание:
1. Введение…………………………………………………………
2.Динамическое
2.1. Целочисленное
программирование………………………………….
2.2. Идеи и алгоритм решения задач динамического программирования.стр.6
2.3. Достоинства динамического программирования…………….........
3. Задача о замене оборудования. Постановка задачи в общем виде……стр.12
3.1.Задача 1…………………………………………………………………..
3.2.Задача 2…………………………………………………………………..
3.3. Задача 3……………………………………………………………….....
3.4. Задача 4………………………………………………………………….
4. Заключение……………………………………………………
5. Список литературы…………………………………
- Введение.
Словосочетание динамическое программирование впервые было использовано в 1940-х годах Р. Беллманом для описания процесса нахождения решения задачи, где ответ на одну задачу может быть получен только после решения задачи, «предшествующей» ей. В 1953 г. он уточнил это определение до современного. Первоначально эта область была основана, как системный анализ и инжиниринг. Вклад Беллмана в динамическое программирование был увековечен в названии уравнения Беллмана, центрального результата теории динамического программирования.
Слово «программирование» в словосочетании «динамическое программирование» в действительности к традиционному программированию (написанию кода) почти никакого отношения не имеет и происходит от словосочетания «математическое программирование», которое является синонимом слова «оптимизация». Поэтому слово «программа» в данном контексте скорее означает оптимальную последовательность действий для получения решения задачи. К примеру, определенное расписание событий на выставке иногда называют программой. Программирование в данном случае понимается как допустимая последовательность событий.
Целью данной курсовой работы является решение задачи о замене оборудования методами динамического программирования.
Основными задачами данной курсовой работы является изучение основ дискретного программирования (особенностей, алгоритмов решения задач); ознакомление с основным алгоритмом для практического решения задач; изучение технологии решения задач о замене оборудования и ее реализация для типовых задач.
- Динамическое программирование.
Динамическое программирование
— раздел математического
Процессы принятия решений, которые строятся по такому принципу, называются многошаговыми процессами. Математически оптимизационная задача строится с помощью таких соотношений, которые последовательно связаны между собой: например, полученный результат для одного года вводится в уравнение для следующего (или, наоборот, для предыдущего) и т. д. Таким образом, можно получить на вычислительной машине результаты решения задачи для любого избранного момента времени и «следовать» дальше. Динамическое программирование применяется не обязательно для задач, связанных с течением времени. Многошаговым может быть и процесс решения вполне статической задачи. Таковы, например, некоторые задачи распределения ресурсов
Динамическое программирование
представляет собой отдельное
Поэтому в данном случае применяют модель общей задачи математического программирования с ограничением (целочисленны).
Множество реальных задач характеризуются как дискретные. Причиной этому служит физическая неделимость некоторых факторов и объектов расчета. Так, на практике невозможно построить примерно 2,3 завода или принять на работу 1/5 землекопа. Все отраслевые задачи составляются на основе точного количества предприятий или проектных вариантов. Что касается планирования, то здесь используются типовые размеры предприятий, типовые мощности агрегатов. Такие элементы, в свою очередь вносят дискретность в реализацию расчетов.
Существуют так называемые плановые показатели — это годовые, месячные или суточные периоды, которые являются дискретными, раздельными. Каждый из элементов предполагает свое начало и конец.
Дискретное программирование также называют целочисленным. По этому поводу среди ученых возникают разногласия. С одной стороны, как видно, из примеров, в таком программировании действительно используются целые числа, с другой — в целом дискретное программирование не является исключительно целочисленным.1
Целочисленное программирование.
Целочисленное программирование – один из наиболее молодых, перспективных и быстро развивающихся разделов математического программирования. Можно перечислить большое количество разнообразных задач планирования экономики, организации производства, исследования конфликтных ситуаций, синтеза схем автоматического регулирования, которые формально сводятся к выбору лучших, в некотором смысле, значений параметров из определенной дискретной совокупности заданных величин. К ним можно отнести и экстремальные комбинаторные задачи, возникающие в различных разделах дискретной математики.
Задачи и методы, относящиеся к перечисленному кругу вопросов, в литературе именуются по-разному. Наибольшее распространение получил термин «целочисленное программирование», однако встречаются и такие как «дискретное программирование», реже «комбинаторное (или диофантово) программирование».
Наиболее изученными задачами этого класса являются целочисленные задачи линейного программирования, в которых на все переменные (или на их часть) наложено дополнительное требование целочисленности. В этих задачах результатом решения должны быть целые, но не любые целые. От них принято отличать так называемые дискретные задачи линейного программирования, в которых область допустимого изменения каждой переменной – не множество целых неотрицательных чисел, а некоторое заданное конечное множество.
- Идеи и алгоритм решения задач динамического программирования.
Идеи:
Планируя многошаговый процесс, необходимо выбирать управляющее воздействие на каждом шаге с учетом его будущих последствий на еще предстоящих шагах. Однако, из этого правила есть исключение. Среди всех шагов существует один, который может планироваться без "заглядывания в будущее". Какой это шаг? Очевидно, последний — после него других шагов нет. Этот шаг, единственный из всех, можно планировать так, чтобы он как таковой принес наибольшую выгоду. Спланировав оптимально этот последний шаг, можно к нему пристраивать предпоследний, к предпоследнему — предпредпоследний и т.д.
Поэтому процесс динамического программирования на 1-м этапе разворачивается от конца к началу, то есть раньше всех планируется последний,
N-й шаг. А как его спланировать, если мы не знаем, чем кончился предпоследний? Очевидно, нужно сделать все возможные предположения о том, чем кончился предпоследний, (N — 1)-й шаг, и для каждого из них найти такое управление, при котором выигрыш (доход) на последнем шаге был бы максимален. Решив эту задачу, мы найдем условно оптимальное управление на N-м шаге, т.е. управление, которое надо применить, если (N — 1)-й шаг закончился определенным образом.
Предположим, что эта процедура выполнена, то есть для каждого исхода
(N — 1)-го шага мы знаем условно оптимальное управление на N-м шаге и соответствующий ему условно оптимальный выигрыш. Теперь мы можем оптимизировать управление на предпоследнем, (N — 1)-м шаге. Сделаем все возможные предположения о том, чем кончился предпредпоследний, то есть (N — 2)-й шаг, и для каждого из этих предположений найдем такое управление на (N — 1)-м шаге, чтобы выигрыш за последние два шага (из которых последний уже оптимизирован) был максимален. Далее оптимизируется управление на (N — 2)-м шаге, и т.д.
Одним словом, на каждом
шаге ищется такое управление, которое
обеспечивает оптимальное продолжение
процесса относительно достигнутого в данный
момент состояния. Этот принцип выбора
управления, называется принципом оптимальности.
Само управление, обеспечивающее оптимальное
продолжение процесса относительно заданного
состояния, называется условно оптимальное
управление на данном шаге.
Теперь предположим,
что условно оптимальное
Действительно, пусть нам известно начальное состояние процесса. Теперь мы уже знаем, что делать на первом шаге: надо применить условно оптимальное управление, найденное для первого шага и начального состояния. В результате этого управления после первого шага система перейдет в другое состояние; но для этого состояния мы знаем условно оптимальное управление и т. д. Таким образом, мы найдем оптимальное управление процессом, приводящее к максимально возможному выигрышу.
Таким образом, в процессе оптимизации управления методом динамического программирования многошаговый процесс "проходится" дважды:
— первый раз — от конца к началу, в результате чего находятся условно оптимальное управление на каждом шаге и оптимальный выигрыш (тоже условный) на всех шагах, начиная с данного и до конца процесса
- второй раз — от начала к концу, в результате чего находятся оптимальные управления на всех шагах процесса.
Можно сказать, что процедура построения оптимального управления
методом динамического
программирования распадается на две
стадии: предварительную и
Так же можно сказать, что идеей динамического программирования является нахождение кратчайшего пути в графе из одной вершины в другую, используя оптимальную подструктуру; прямая линия обозначает простое ребро; волнистая линия обозначает кратчайший путь между вершинами, которые она соединяет (промежуточные вершины пути не показаны); жирной линией обозначен итоговый кратчайший путь.
Граф подзадач (ребро означает, что одна задача зависит от решения другой) для чисел Фибоначчи (граф — ациклический).
Оптимальная подструктура в динамическом программировании означает, что оптимальное решение подзадач меньшего размера может быть использовано для решения исходной задачи. К примеру, кратчайший путь в графе из одной вершины (обозначим s) в другую (обозначим t) может быть найден так: сначала считаем кратчайший путь из всех вершин, смежных с s, до t, а затем, учитывая веса ребер, которыми s соединена со смежными вершинами, выбираем лучший путь до t (через какую вершину лучше всего пойти). В общем случае мы можем решить задачу, в которой присутствует оптимальная подструктура, проделывая следующие три шага.
- Разбиение задачи на подзадачи меньшего размера.
- Нахождение оптимального решения подзадач рекурсивно, проделывая такой же трехшаговый алгоритм.
- Использование полученного решения подзадач для конструирования решения исходной задачи.
Подзадачи решаются делением их на подзадачи ещё меньшего размера и т. д., пока не приходят к тривиальному случаю задачи, решаемой за константное время (ответ можно сказать сразу). К примеру, если нам нужно найти n!, то тривиальной задачей будет 1! = 1 (или 0! = 1).3
Типовой алгоритм решения задач методом динамического программирования:
- Описать строение оптимальных решений.
- Выписать рекуррентное соотношение, связывающие оптимальные значения параметра для подзадач.
- Двигаясь снизу вверх, вычислить оптимальное значение параметра для подзадач.
- Пользуясь полученной информацией, построить оптимальное решение.
Для решения задач оптимизации существует специальная теория, большая заслуга в ее создании принадлежит Р. Беллману, в общем виде она достаточна сложна.4
Метод динамического программирования может применяться только для определенного класса задач. Эти задачи должны удовлетворять таким требованиям:
- Задача оптимизации интерпретируется как n-шаговый процесс управления.
- Целевая функция равна сумме целевых функций каждого шага.
- Выбор управления на i-м шаге зависит только о состояния системы к этому шаге, не влияет на предшествующие шаги (нет обратной связи).
- Состояние после i-го шага управления зависит только от предшествующего состояния управления (отсутствие последействия).
- На каждом шаге управление зависит от конечного числа управляющих переменных, а состояние от конечного числа параметров.
В основе решения всех
задач динамического
Каково бы ни было состояние системы S
в результате какого-либо числа шагов,
на ближайшем шаге нужно выбирать управление
так, чтобы оно в совокупности с оптимальным
управлением на всех последующих шагах
приводило к оптимальному выигрышу на
всех оставшихся шагах, включая данный.
Этот принцип впервые был сформулирован
Р. Беллманом в 1953 г. Им же четко были сформулированы и условия,
при которых принцип верен. Основное требование
- процесс управления должен быть без обратной
связи, т.е. управление на данном шаге не
должно оказывать влияния на предшествующие
шаги.
Принцип оптимальности утверждает, что для любого процесса без обратной связи оптимальное управление таково, что оно является оптимальным для любого подпроцесса по отношению к исходному состоянию этого подпроцесса. Поэтому решение на каждом шаге оказывается наилучшим с точки зрения управления в целом.5
2.3. Достоинства динамического программирования:
1. Идея и метод динамического программирования наиболее приспособлены к дискретным задачам, каковыми являются задачи из экономики.
2. Метод динамического программирования применим при любом способе задания и любом допустимом множестве состояний и управлений. Этого преимущества лишены классические методы оптимизации и другие вычислительные методы математического программирования.
3. Вычислительные схемы метода динамического программирования в дискретном случае связаны с перебором оптимальных значений показателя эффективности и управления на i-м шаге для всех возможных значений переменной состояния, но объем расчетов по этому методу значительно меньше, чем при прямом переборе вариантов. Это связано с тем, что на этапе условной оптимизации неудачные варианты сразу отбрасываются, а сохраняются лишь условно оптимальные на данном шаге.
4. Метод динамического программирования дает возможность анализа чувствительности к изменению исходных данных Si и n. Фактически здесь решается не одна задача, а множество однотипных задач для различных состояний Si и различных на каждом шаге. Поэтому при изменении исходных данных можно не решать задачу заново, а сделать лишь несложные добавления к уже выполненным расчетам, т.е. продолжить уже решенную задачу за счет увеличения числа шагов n или числа значений Si.6
- Задача о замене оборудования. Постановка задачи в общем виде.
Чем дольше механизм эксплуатируется, тем выше затраты на его обслуживание и ниже его производительность. Когда срок эксплуатации механизма достигает определенного уровня, может оказаться более выгодной его замена. Задача о замене оборудования, таким образом, сводиться к определению оптимального срока эксплуатации механизма.
Предположим, что мы занимаемся заменой механизмов на протяжении n лет. В начал каждого года принимается решение либо об эксплуатации механизма еще год, либо о его замене новым.
Обозначим через r(t) и c(t) прибыль от эксплуатации t–летнего механизма на протяжении года и затраты на его обслуживание за тот же период. Далее пусть s(t) - стоимость продажи механизма, который эксплуатировался t лет. Стоимость приобретения нового механизма остается неизменной на протяжении всех лет и равна I.
Элементы модели динамического программирования таковы :
- Этап і представляется порядковым номером года і, і=1,2,...n
- Вариантами решения на i–м этапе ( т. е. для i–го года) являются альтернативы: продолжить эксплуатацию или заменить механизм в начале i–го года.
- Состоянием на i–ом этапе является срок эксплуатации (возраст) механизма к началу i–го года.
Пусть fi(t)– максимальная прибыль, получаемая за годы от i до n при условии, что в начале i–го года имеется механизм t– летнего возраста.
Рекуррентное уравнение имеет следующий вид:
- – если эксплуатировать механизм
- – если заменить механизм.7
Постановка задачи в общем виде.
Рассмотрим задачу в общей постановке.
Пусть в течение периода, состоящего из n этапов, предприятие использует оборудование, которое вместе с установкой имеет стоимость I. Со временем оборудование изнашивается. При этом:
- суммарная производительность оборудования r(t) снижается, так как увеличивается время, необходимое для его профилактики и ремонта;
2) возрастают затраты на обслуживание и ремонт c(t) данного оборудования. Требуется определить моменты (их для длительного периода эксплуатации оборудования может быть несколько), когда следует заменять старое оборудование на новое, чтобы суммарная прибыль за весь период эксплуатации оборудования была максимальной. Под прибылью имеется в виду чистый доход от продажи выпущенной продукции за вычетом стоимости обслуживания и ремонта или замены оборудования. Предполагается, что заменяемое оборудование имеет нулевую стоимость, а доход от его реализации
по остаточной стоимости не учитывается.
Это допущение не является принципиальным
и введено для упрощения
Обозначим моменты начала каждого этапа через ;
момент завершения всего периода — через . Тогда на каждом этапе мы можем выбрать одно из двух возможных управлений:
— сохранить установленное оборудование и продолжать его эксплуатацию;
— приобрести новое
Здесь следует подчеркнуть, что управленческие решения могут применяться только в моменты
Оптимальной инвестиционной политикой (стратегией управления) U* называется совокупность таких решений , в результате реализации которых рассматриваемое производство за n шагов переходит из начального состояния в конечное и при этом суммарная прибыль от эксплуатации оборудования достигает максимального значения. Состояние процесса на i-ом этапе характеризуется возрастом оборудования. Максимально возможный возраст оборудования в момент равен i, а минимальный равен 1, если на предыдущем этапе произошла замена оборудования.
Прибыль ,получаемая на i-м этапе, зависит от состояния оборудования и сделанного нами выбора (управления) :
где r(0) — стоимость продукции, выпускаемой на новом оборудовании;
s(t) – стоимость продажи оборудования, который эксплуатировался t лет;
I — полная стоимость нового оборудования.
Очевидно, что суммарная
прибыль F, которую требуется
В выражении (2) критерий является аддитивным. Для оптимизации подобных критериев возможно использование методов динамического программирования.
Таким образом, суть разработки оптимальной инвестиционной политики — это получение максимального значения суммарной прибыли F. Она зависит от результатов управления процессом эксплуатации оборудования на каждом шаге. Особенностью динамического программирования является рассмотрение процесса от конца к началу, то есть сначала анализируется n-1 этап, ищется здесь оптимальное решение, затем то же делается на n-2 этапе и т.д. Таким образом, основой математического аппарата для нахождения оптимального решения является принцип оптимальности Беллмана:
При вычислениях с каждым из этапов ассоциирована одна управляемая переменная. Набор рекуррентных вычислительных процедур, связывающих различные этапы, обеспечивает получение оптимального решения задачи в целом при достижении последнего этапа.
Управление выбирают следующим образом:
1) для всех возможных управлений определяются значения сумм
которые сравниваются между собой;
2) в качестве условно
оптимального управления
Если наибольшее значение получается при применении нескольких различных управлений, то все они являются условно оптимальными. В этом случае не единственный.
При выборе управления на предпоследнем этапе (при i = n-1) никаких дальнейших шагов по эксплуатации оборудования не планируется, так что естественно считать . Тогда в сумме (4) остается лишь первое слагаемое. Таким образом, процесс продвигается от конечного этапа к начальному и на всех промежуточных шагах находятся значения:
– условно оптимальных управлений для каждого из возможных состояний ;
– оптимальное значение .
Вектор оптимального
управления U* всего процесса будет
получен при объединении
8
- Задача 1.
Пусть требуется выработать
оптимальную стратегию для
Таблица 1.
Возраст оборудования – t(лет) |
0 |
1 |
2 |
3 |
4 |
5 |
Производительность (млн. руб.) |
9 |
8 |
7 |
6 |
5 |
5 |
Затраты на ремонт – c(t) (млн. руб.) |
1 |
1 |
2 |
2 |
3 |
4 |
Стоимость нового комплекта оборудования I=6 млн. руб. Будем предполагать, что за пределами срока, представленного в таблице, эксплуатация оборудования нас не интересует.
Обозначения:
(t) – максимальный доход на временном отрезке i, . . . , n, при возрасте оборудования лет в начале i−го года.
– начальные затраты на приобретение и установку нового оборудования (цена нового оборудования).
Составляем уравнение Беллмана.
Приведем расчеты. После пятого этапа эксплуатация оборудования не предусматривается, поэтому будем иметь:
Этап 5:
|
|
Оптимальное решение | ||
|
|
|
|
решение |
1 |
8-1=7 |
9-6-1=2 |
7 |
c |
2 |
7-2=5 |
9-6-1=2 |
5 |
c |
3 |
6-2=4 |
9-6-1=2 |
4 |
с |
4 |
5-3=2 |
9-6-1=2 |
2 |
с,н |
5 |
5-4=1 |
9-1-6=2 |
2 |
н |

- Динамическое программирование. Задачи об инвестировании
- Динамическое программирование. Оптимальное распределение ресурсов. Задача коммивояжера
- Динамическое развитие организации
- Динамическое ценообразование в интернет-экономике
- Динаміка державного боргу України
- Динаміка основних показників розвитку України
- Динаміка політичної довіри сучасних українських громадян
- Динамическое программирование
- Динамическое программирование
- Динамическое программирование
- Динамическое программирование
- Динамическое программирование (
- Динамическое программирование в экономике
- Динамическое программирование (задача о загрузке)