Автор: Пользователь скрыл имя, 22 Декабря 2011 в 08:48, курсовая работа
Задачами данной курсовой работы являются:
1) Рассмотреть теоретические аспекты решения задач динамического программирования: реккурентность природы задач данного типа; принципы оптимальности Беллмана
2) Разработка алгоритма. Блок-схемы. Структура алгоритма
3) Реализация на ЭВМ построенного алгоритма на выбранном языке программирования
Введение
1. Динамическое программирование
1.1 Основные понятия
1.2 Принципы динамического программирования. Функциональные уравнения Беллмана
1.3 Особенности задач динамического программирования
1.4 Примеры задач динамического программирования
2. Задача о замене оборудования
3. Расчет показателей экономико-математической модели
Список использованных источников
Приложение
Министерство образования и науки Российской Федерации
Федеральное государственное образовательное учреждение среднего профессионального образования
Вельский
экономический техникум Архангельской
области
КУРСОВАЯ РАБОТА
По дисциплине: «Математические методы»
На тему:
«Динамическое программирование. Распределение
капитальных вложений»
Выполнил студент 3-го курса
Группа ПОВТ-32
Охотников Артем Васильевич
Проверила: Предподаватель
Дмитроченко
М.И
г.Вельск
2011 г.
Содержание
Введение
1. Динамическое программирование
1.1 Основные понятия
1.2 Принципы динамического
программирования. Функциональные
уравнения Беллмана
1.3 Особенности задач
динамического программирования
1.4 Примеры задач
динамического программирования
2. Задача о замене
оборудования
3. Расчет показателей
экономико-математической
Список использованных
источников
Приложение
Введение
Во всем мире существует
множество предприятий, которые
используют для производства своей
продукции машинное оборудование. Поэтому
при его внедрении нужно
Задачами данной
курсовой работы являются:
1) Рассмотреть теоретические
аспекты решения задач динамического
программирования: реккурентность природы
задач данного типа; принципы оптимальности
Беллмана
2) Разработка алгоритма.
Блок-схемы. Структура алгоритма
3) Реализация на ЭВМ
построенного алгоритма на выбранном
языке программирования
1.
Динамическое программирование
1.1
Основные понятия
Динамическое программирование
(иначе динамическое планирование)
это метод нахождения оптимальных
решений в задачах с
В задачах динамического
программирования экономический процесс
зависит от времени (от нескольких периодов
(этапов) времени), поэтому находится ряд
оптимальных решений (последовательно
для каждого этапа), обеспечивающих оптимальное
развитие всего процесса в целом. Задачи
динамического программирования называются
многоэтапными или многошаговыми. Динамическое
программирование представляет собой
математический аппарат, позволяющий
осуществлять оптимальное планирование
многошаговых управляемых процессов и
процессов, зависящих от времени. Экономический
процесс называется управляемым, если
можно влиять на ход его развития. Управлением
называется совокупность решений, принимаемых
на каждом этапе для влияния на ход процесса.
В экономических процессах управление
заключается в распределении и перераспределении
средств на каждом этапе. Например, выпуск
продукции любым предприятием - управляемый
процесс, так как он определяется изменением
состава оборудования, объемом поставок
сырья, величиной финансирования и т.д.
Совокупность решений, принимаемых в начале
каждого года планируемого периода по
обеспечению предприятия сырьем, замене
оборудования, размерам финансирования
и т.д., является управлением. Казалось
бы, для получения максимального объема
выпускаемой продукции проще всего вложить
максимально возможное количество средств
и использовать на полную мощность оборудование.
Но это привело бы к быстрому изнашиванию
оборудования и, как следствие, к уменьшению
выпуска продукции. Следовательно, выпуск
продукции надо спланировать так, чтобы
избежать нежелательных эффектов. Необходимо
предусмотреть мероприятия, обеспечивающие
пополнение оборудования по мере изнашивания,
т.е. по периодам времени. Последнее хотя
и приводит к уменьшению первоначального
объема выпускаемой продукции, но обеспечивает
в дальнейшем возможность расширения
производства. Таким образом, экономический
процесс выпуска продукции можно считать
состоящим из нескольких этапов (шагов),
на каждом из которых осуществляется влияние
на его развитие.
Началом этапа (шага)
управляемого процесса считается момент
принятия решения (о величине капитальных
вложений, о замене оборудования определенного
вида и т.д.). Под этапом обычно понимают
хозяйственный год.
Динамическое программирование,
используя поэтапное
Планируя поэтапный
процесс, исходят из интересов всего
процесса в целом, т.е. при принятии
решения на отдельном этапе всегда
необходимо иметь в виду конечную
цель.
Однако динамическое
программирование имеет и свои недостатки.
В отличие от линейного программирования,
в котором симплексный метод
является универсальным, в динамическом
программировании такого метода не существует.
Каждая задача имеет свои трудности,
и в каждом случае необходимо найти
наиболее подходящую методику решения.
Недостаток динамического программирования
заключается также в трудоемкости решения
многомерных задач. При очень большом
числе переменных решение задачи даже
на современных ЭВМ ограничивается памятью
и быстродействием машины. Например, если
для исследования каждой переменной одномерной
задачи требуется 10 шагов, то в двумерной
задаче их количество увеличивается до
100, в трехмерной - до 1000 и т.д.
1.2
Принципы динамического
программирования. Функциональные
уравнения Беллмана
Принцип оптимальности
и погружения. Любую многошаговую
задачу можно решать по-разному. Во-первых,
можно считать неизвестными величинами
ut и находить экстремум целевой функции
одним из существующих методов оптимизации,
т. е. искать сразу все элементы решения
на всех N шагах. Следует заметить, что
этот путь не всегда приводит к цели, особенно
когда целевая функция задана в виде таблиц
или число переменных очень велико. Во-вторых,
можно проводить оптимизацию поэтапно.
Поэтапность отнюдь не предполагает изолированности
в оптимизации этапов. Наоборот, управление
на каждом шаге выбирается с учетом всех
его последствий. Обычно второй способ
оптимизации оказывается проще, чем первый,
особенно при большом числе шагов. Идея
постепенной, пошаговой оптимизации составляет
суть метода динамического программирования.
Оптимизация одного шага, как правило,
проще оптимизации всего процесса в целом.
Лучше много раз решать простую задачу,
чем один раз - сложную.
С первого взгляда
идея может показаться тривиальной:
если трудно оптимизировать сложную
задачу, то следует разбить ее на
ряд более простых. На каждом шаге
оптимизируется задача малого размера,
что уже нетрудно. При этом принцип динамического
программирования вовсе не предполагает,
что каждый шаг оптимизируется изолированно,
независимо от других. Напротив, пошаговое
управление должно выбираться с учетом
всех его последствий.
Пусть, например, планируется
работа группы промышленных предприятий,
из которых одни заняты выпуском предметов
потребления, а другие производят для
этого машины. Задачей является получение
за T лет максимального объема выпуска
предметов потребления. Пусть планируются
капиталовложения на первый год. Исходя
из интересов только этого года,
мы должны были бы все средства вложить
в производство предметов потребления,
пустить имеющиеся машины на полную
мощность и добиться к концу года
максимального объема выпуска продукции.
Однако относительно всего периода
планирования такое решение будет
нерациональным. Необходимо выделить
часть средств на производство машин.
При этом объем продукции за первый
год снизится, зато будут созданы
условия, позволяющие увеличить
его выпуск в последующие годы.
Приведем второй
пример. Пусть прокладывается участок
железнодорожного пути между пунктами
А и В. Раз личные варианты трассы требуют
неодинаковых затрат, связанных с неоднородностью
грунта, особенностями рельефа, естественными
препятствиями и т. д. Требуется так провести
дорогу из A в В, чтобы суммарные затраты
были минимальны.
Заметим, что в
данной задаче нет естественного
деления на шаги, поэтому деление
вводится искусственно, для чего расстояние
между А и В разбивается на N частей и за
шаг оптимизации принимается каждая такая
часть.
Таким образом, одним
из условий применимости метода динамического
программирования является возможность
разбиения процесса оптимизации
решения на ряд однотипных шагов
(этапов), каждый из которых планируется
отдельно, но с учетом состояния
системы на начало этапа и последствий
принятого решения. Однако, среди всех
шагов существует один, который может
планироваться без оглядки на будущее.
Это последний шаг, поскольку за ним нет
больше этапов. Он может быть изучен и
спланирован сам по себе наилучшим. Отсюда
получаем одну из специфических особенностей
динамического программирования: всю
вычислительную процедуру программирования
целесообразно разворачивать от конца
к началу. Раньше всех планируется последний
N-й шаг, за ним (N - 1)-й и т. д. Возникает вопрос,
как найти оптимальное управление uN на
N-м шаге, если оно определяется не только
целью управления, но и состоянием системы
на начало этого шага? Сделать это можно
на основе предположений об ожидаемых
исходах предшествующего, но еще не исследованного
этапа, т. е. о значениях xN-1.
Для каждого возможного
исхода хN-1 на (N - 1)-м этапе находим
оптимальное управление на N-м этапе.
Такой набор оптимальных
Условно-оптимальные
управления дают возможность найти
не условное, а просто оптимальное
управление на каждом шаге. В самом
деле, пусть начальное состояние
x0 известно. Тогда, проделав процедуру
движения от конца к началу, находим
(х0). Так как начальное состояние x0 определяется
однозначно, это оптимальное управление
для первого шага. Вместе с тем находим
экстремальное значение целевой функции
относительно всего процесса. Зная оптимальное
действие (с точки зрения всего процесса)
для первого шага, выявим, к какому состоянию
перейдет система в результате этого действия,
т. е. найдем оптимальное состояние системы
на начало второго этапа. Но для всех возможных
состояний на начало второго этапа выявлены
оптимальные управления. Таким образом,
зная , установим оптимальное управление
для второго этапа (x1) и т.д. Проделав обратное
движение по условно-оптимальным управлениям
от начала к концу, найдем просто оптимальные
управления для всех этапов.
Таким образом, в
процессе оптимизации управления методом
динамического программирования многошаговый
процесс проходится дважды.
-Первый раз - от
конца к началу, в результате
чего находятся условно-
-Второй раз - от
начала к концу, в результате
чего находятся уже