Пример: Транспортная логистика
Я ищу:
На главную  |  Добавить в избранное  

Математика /

Динамическое программирование (задача о загрузке)

←предыдущая  следующая→
1 2 3 



Скачать реферат


АННОТАЦИЯ

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ……………………………………………………………………

1 ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ………………………….

1.1 Задача динамического программирования………………………..

1.2 Примеры задач динамического программирования……………...

1.3 Общая структура динамического программирования…………...

2 ЗАДАЧА О ЗАГРУЗКЕ……………………………………………………

2.1 Общие сведения…………………………………………………………

2.2 Рекуррентные соотношения для процедур прямой и обратной прогонки………………………………………………………………………

2.3 Решение задачи о загрузке…………………………………………….

2.4 Анализ чувствительности решения…………………………………..

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ……………………….

ПРИЛОЖЕНИЕ А……………………………………………………………

ПРИЛОЖЕНИЕ Б……………………………………………………………

ПРИЛОЖЕНИЕ В……………………………………………………………. 6

8

8

12

16

18

18

19

22

25

27

28

36

40

ВВЕДЕНИЕ

Работа над данным курсовым проектом позволяет закрепить зна-ния по предмету «Математические методы исследования операций».

В наше время наука уделяет все большое внимание вопросам ор-ганизации и управления, это приводит к необходимости анализа слож-ных целенаправленных процессов под углом зрения их струк¬туры и организации. Потребности практики вызвали к жизни специальные ме-тоды, которые удобно объединять под названием «исследование опе-раций». Под этим термином понимается применение математических, количественных методов для обоснования решений во всех областях целенаправленной человеческой деятельности.

Целью исследования операций является выявление наилучшего способа действия при решение той или иной задачи. Главная роль при этом отводится математическому моделированию. Для построения ма-тематической модели необходимо иметь строгое представление о цели функционирования исследуемой системы и располагать информацией об ограничениях, которые определяют область допустимых значений. Цель и ограничения должны быть представлены в виде функций.

В моделях исследования операций переменные, от которых зави-сят ограничения и целевая функция, могут быть дискретными (чаще всего целочисленными) и континуальными (непрерывными). В свою очередь, ограничения и целевая функция делятся на линейные и нели-нейные. Существуют различные методы решения данных моделей, наиболее известными и эффективными из них являются методы линей-ного программирования, когда целевая функция и все ограничения ли-нейные. Для решения математических моделей других типов предна-значены методы динамического программирования, целочисленного программирования, нелинейного программирования, многокритери-альной оптимизации и методы сетевых моделей.

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

Итерационная природа алгоритмов обычно приводит к объемным однотипным вычислениям. В этом и заключается причина того, что эти алгоритмы разрабатываются, в основном, для реализации с помощью вычислительной техники.

1 ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

1.1 Задача динамического программирования

Большинство методов исследования операций связано в первую очередь с задачами вполне определенного содержания. Классический аппарат математики оказался малопригодным для решения многих за-дач оптимизации, включающих большое число переменных и/или ог-раничений в виде неравенств. Несомненна привлекательность идеи разбиения задачи большой размерности на подзадачи меньшей размер-ности, включающие всего по нескольких переменных, и последующего решения общей задачи по частям. Именно на этой идее основан метод динамического программирования.

Динамическое программирование (ДП) представляет собой мате-матический метод, заслуга создания и развития которого принадлежит прежде всего Беллману. Метод можно использовать для решения весь-ма широкого круга задач, включая задачи распределения ресурсов, за-мены и управления запасами, задачи о загрузке. Характерным для ди-намического программирования является подход к решению задачи по этапам, с каждым из которых ассоциирована одна управляемая пере-менная. Набор рекуррентных вычислительных процедур, связывающих различные этапы, обеспечивает получение допустимого оптимального решения задачи в целом при достижении последнего этапа.

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

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

Динамическое программирование позволяет осуществлять опти-мальное планирование управляемых процессов. Под «управляемыми» понимаются процессы, на ход которых мы можем в той или другой степени влиять.

Пусть предполагается к осуществлению некоторое мероприятие или серия мероприятий («операция»), преследующая определенную цель. Спрашивается: как нужно организовать (спланировать) операцию для того, чтобы она была наиболее эффективной? Для того, чтобы по-ставленная задача приобрела количественный, математический харак-тер, необходимо ввести в рассмотрение некоторый численный крите-рий W, которым мы будем характеризовать качество, успешность, эф-фективность операции. Критерий эффективности в каждом конкретном случаи выбирается исходя из целевой направленности операции и за-дачи исследования (какой элемент управления оптимизируется и для чего).

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

«Каково бы ни было состояние системы S перед очередным ша-гом, надо выбрать управление на этом шаге так, чтобы выигрыш на данном шаге плюс оптимальный выигрыш на всех последующих шагах был максимальным».

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

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

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

2. Расчленить операцию на этапы (шаги).

3. Выяснить набор шаговых управлений xi для каждого шага и налагаемые на них ограничения.

4. Определить какой выигрыш приносит на i-ом шаге управление xi, если перед этим система была в состоянии S, т.е. записать «функцию выигрыша»:

.

5. Определить, как изменяется состояние S системы S под влия-нием управление xi на i-ом шаге: оно переходит в новое со-стояние

. (1.1)

6. Записать основное рекуррентное уравнение динамического программирования, выражающее условный оптимальный вы-игрыш Wi(S) (начиная с i-го шага и до конца) через уже из-вестную функцию Wi+1(S):

. (1.2)

Этому выигрышу соответствует условное оптимальное управле-ние на i-м шаге xi(S) (причем в уже известную функцию Wi+1(S) надо вместо S подставить измененное состояние )

7. Произвести условную оптимизацию последнего (m-го) шага, задаваясь гаммой состояний S, из которых можно за один шаг дойти до конечного состояния, вычисляя для каждого из них условный оптимальный выигрыш по формуле

8. Произвести условную оптимизацию (m-1)-го, (m-2)-го и т.д. шагов по формуле (1.2), полагая в ней i=(m-1),(m-2),…, и для каждого из шагов указать условное оптимальное управление xi(S), при котором максимум достигается.

Заметим, что если состояние системы в начальный момент извест-но (а это обычно бывает так), то на первом шаге варьировать состоя-ние системы не нужно - прямо находим оптимальный выигрыш для данного начального состояния S0. Это и есть оптимальный выигрыш за всю операцию

9. Произвести безусловную оптимизацию управления, «читая» соответствующие рекомендации на каждом шаге. Взять най-денное оптимальное управление на первом шаге ; из-менить состояние системы по формуле (1.1); для вновь най-денного состояния найти оптимальное управление на втором шаге х2* и т.д. до конца.

Данные этапы рассматривались для аддитивных задач, в которых выигрыш за всю операцию равен сумме выигрышей на отдельных ша-гах. Метод динамического программирования применим также и к за-дачам с так называемым «мультипликативным» критерием, имеющим вид произведения:

(если только

←предыдущая  следующая→
1 2 3 



Copyright © 2005—2007 «Mark5»