Автор: Пользователь скрыл имя, 18 Сентября 2011 в 21:13, курсовая работа
Целью данной работы является реализация на ЭВМ решения задачи оптимального распределения средств на расширение производства.
Задачи курсовой работы:
Рассмотреть теоретические аспекты решения задач динамического программирования; рекуррентность природы задач данного типа; принципы оптимальности Беллмана.
Разработка алгоритма. Блок - схемы. Структура алгоритма.
Реализация на ЭВМ разработанного алгоритма на выбранном языке программирования
ВВЕДЕНИЕ 3
1. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ 4
1.1. Основные понятия 4
1.2. Принципы динамического программирования. Функциональные уравнения Беллмана 4
1.3. Особенности задач динамического программирования 8
1.4. Примеры задач динамического программирования. 10
2. ЗАДАЧА РАСПРЕДЕЛЕНИЯ РЕСУРСОВ 12
2.1. Общая постановка задачи. 12
2.2. Пример задачи распределения ресурсов 14
ЗАКЛЮЧЕНИЕ 18
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 19
ПРИЛОЖЕНИЕ А 20
ПРИЛОЖЕНИЕ В 25
Fk(x) = (zk(xk)+Fk-1(x – xk-1))
Решение исходной задачи получим при х = Х0, k= N, т. е. из соотношения
FN(X0) = (zN(xN)+FN-1(X0 - xN)).
Найдя FN(X0) = (X0), определяем . Зная , находим X0– . Следовательно, найдем и FN-1(X0– ). Из выражения
FN-1(X0– ) = (zN-1(xN-1) + FN-2(X0 – – xN-1))
находим и т. д., т. с. процесс разворачивается в обратном направлении, при котором находятся уже не условно-оптимальные, а оптимальные значения функции цели на каждом этапе и оптимальное выделение ресурса для одного, двух и более предприятий.
Вычислительная схема решения задачи распределения ресурсов методом динамического программирования состоит в следующем: промежуток 0 ≤ x ≤ X0 разбивают, например, на n интервалов с шагом ∆ и считают, что функции zi(x) и Fi(x)определены только в точках х =0, ∆, 2∆, 3∆,..., причем n∆ =X0. Значения FN(x) для х, отличных от точек k∆, где k=0, 1, 2,.., n, получают интерполяцией. При i=1 функция F1(x) определяется равенством F1(x) = z1(x). Множество значений F1(k∆) =z1(k∆) (к=0,1,2, …, n) записывают в таблицу. Зная значения F1(k∆), переходят к вычислению значений функции F2(k∆):
F2(x) = (z2(k∆)+F1(X0-k∆)).
В ходе
вычислений устанавливаются не только
значения F2(x),
x = k∆, 0≤k≤X0 (k =0,1,2,
…, n), но и такие значения x2,
при которых достигает максимума выражение
z2(k∆)+
F1(X0-k∆).
Переходим к отысканию функции F3(x) и т. д. Пройдя весь процесс вычисления функций Fi(x) (i= ), получим
FN(X0) = (zN(xN)+FN-1(X0-xN)).
т. е.
FN(X0)
=max Z,
. На последнем этапе достигается максимальное
значение функции цели FN(X0)
и оптимальный объем ресурса, выделяемого
N-му предприятию, т. е.
. Затем процесс вычислений просматривается
в обратном порядке. Зная
находим X0
–
– объем ресурса, подлежащего распределению
между оставшимися N–1 предприятиями.
Так как раньше найдено значение
FN-1(x) = (zN-1(xN-1)+FN-2(X0-xN-1))
отсюда находим FN-1(X0- ) и, следовательно, и т.д. Продолжая процесс к началу, определяем . Тем самым будет завершен процесс определения оптимального плана распределения ограниченного ресурса. Практическое применение рассмотренной выше схемы представлено в приложении. Ниже проиллюстрируем рассмотренную задачу числовым примером.
Имеются 6 предприятий, между которыми следует распределить 200 единиц ограниченного ресурса. Получаемая предприятиями прибыль в зависимости от выделенной суммы х представлена в табл. 1. Приняв ∆ = 40, найти оптимальный план распределения
Таблица 1 Прибыль, получаемая предприятиями в зависимости от выделенных средств.
Выделяемый объем ресурса | z1(x) | z2(x) | z3(x) | z4(x) | z5(x) | z6(x) |
0 | 0 | 0 | 0 | 0 | 0 | 0 |
40 | 30 | 28 | 31 | 25 | 30 | 35 |
80 | 58 | 62 | 67 | 73 | 77 | 80 |
120 | 120 | 122 | 130 | 125 | 127 | 133 |
160 | 150 | 146 | 144 | 152 | 149 | 155 |
200 | 180 | 175 | 183 | 180 | 170 | 187 |
Пусть N = 1, тогда F1(x) = z1(x)
Значения
функции F1(x)
помещены в табл. 2. Предположим теперь,
что ресурс X0 = 200 единиц распределяется
между двумя предприятиями. Тогда
F2(x)
=
(z2(x2)
+ F1(x-x2)), 0
≤ x ≤ X0
Произведем вычисления значений функций F2(x) и представим их в табл. 2.
F2(40) = (z2(0) + F1(40), z2(40) + F1(0)) = (0 + 30, 28 + 0) = 30,
F2(80)
=
(z2(0)
+ F1(80), z2(40)
+ F1(40), z2(80)
+ F1(0)) =
(0 + 58,
28 + 30, 62 + 0) = 62,
F2(120)
=
(z2(0)
+ F1(120),
z2(40)
+ F1(80),
z2(80)
+ F1(40),
z2(120)
+
+ F1(0)) =
(0 + 120, 28 + 58, 62 + 30, 122 + 0) =
122.
Аналогично имеем
F2(160) = (0 + 150, 28 + 120, 62 + 58, 122 + 30, 146 + 0) = 152,
F2(200)
=
(0 + 180, 28 + 150, 62 + 120, 122 + 58, 146 + 30, 175 +
+0) = 122.
Пусть далее, имеющаяся сумма распределяется между тремя предприятиями. Получим F3(x) = (z3(x3) + F2(x-x3)), 0 ≤ x ≤ X0 . Значения функции F3(x) представлены в табл 2
F3(40) = (z3(0) + F2(40), z3(40) + F2(0)) = (0 + 30, 31 + 0) = 31,
F3(80)
=
(z3(0)
+ F2(80), z3(40)
+ F2(40), z3(80)
+ F2(0)) =
(0 + 62,
31 + 30, 67 + 0) = 67,
F3(120) = (0 + 122, 31 + 62, 67 + 30, 130 + 0) = 130,
F3(160) = (0 + 152, 31 + 122, 67 + 62, 130 + 30, 144 + 0) = 160.
F3(200)
=
(0 + 182, 31 + 152, 67 + 122, 130 + 62, 144 + 30, 183 +
+ 0) = 152
Затем распределяем ресурсы между четырьмя предприятиями
F4(x) = (z4(x4) + F3(x-x4)), 0 ≤ x ≤ X0
F4(40) = (0 + 31, 25 + 0) = 31,
F4(80) = (0 + 67, 25 + 31, 73 + 0) = 73,
F4(120) = (0 + 130, 25 + 67, 73 + 31, 125 + 0) = 130,
F4(160) = (0 + 160, 25 + 130, 73 + 67, 125 + 31, 152 + 0) = 160.
F4(200)
=
(0 + 192, 25 + 160, 73 + 130, 125 + 67, 152 + 31, 180 +
+ 0) = 203
Таблица 2
x | F1(x) | F2(x) | F3(x) | F4(x) | F5(x) | F6(x) |
0 | 0 | 0 | 0 | 0 | 0 | 0 |
40 | 30 | 30 | 31 | 31 | 31 | 35 |
80 | 58 | 62 | 67 | 73 | 77 | 80 |
120 | 120 | 122 | 130 | 130 | 130 | 132 |
160 | 150 | 152 | 160 | 160 | 160 | 165 |
200 | 180 | 182 | 192 | 203 | 2070 | 210 |
Аналогично распределяем ресурсы между пятью, а затем шестью предприятиями F5(x) = (z5(x5) + F4(x-x5)), 0 ≤ x ≤ X0
F5(40) = (0 + 31, 30 + 0) = 31,
F5(80) = (0 + 73, 30 + 31, 77 + 0) = 77,
F5(120) = (0 + 130, 30 + 73, 77 + 31, 127 + 0) = 130,
F5(160) = (0 + 160, 30 + 130, 77 + 73, 127 + 31, 149 + 0) = 160,
F5(200)
=
(0 + 203, 30 + 160, 77 + 130, 127 + 73, 149 + 31, 170 +
+ 0) = 207
И наконец F6(x) = (z6(x6) + F5(x-x6)), 0 ≤ x ≤ X0
F6(40) = (0 + 31, 35 + 0) = 35,
F6(80) = (0 + 77, 35 + 31, 80 + 0) = 80,
F6(120) = (0 + 130, 35 + 77, 80 + 31, 132 + 0) = 132,
F6(160) = (0 + 160, 35 + 130, 80 + 77, 132 + 31, 155 + 0) = 165.
F6(200)
=
(0 + 207, 35 + 160, 80 + 130, 132 + 77, 155 + 31, 187 +
+ 0) = 210
Из таблицы 2 находим оптимальный план распределения. Как видно из табл.2 максимальное значение функции цели составляет 210 единиц, т.е. . Из приведенных расчетов значений F6(х) находим, что шестому предприятию должно быть выделено = 80 единиц ресурса, остальным пяти 200 – 80 = 120 единиц. Из табл. 2 находим, что оптимальное распределение ресурса 120 единиц ресурса между пятью предприятиями составляет 130 единиц прибыли. При этом третьему предприятию следует выделить = 120 единиц ресурса. Отсюда = 0, =0, = 0, = 0. Оптимальный план распределения
X*=, z(X*)= 210
Проверка
очевидна z(X*) =
z1(0) + z2(0) +
z3(120) +
z4(0) + z5(0) +
+z6(80) =
210
ЗАКЛЮЧЕНИЕ
В ходе выполнения курсовой работы были рассмотрены теоретические аспекты решения задач динамического программирования. Динамическое программирование — это метод нахождения оптимальных решений в задачах с многошаговой (многоэтапной) структурой Схема динамического программирования состоит в погружении решаемой задачи в параметрическое семейство задач (иногда называемых подзадачами) и последующем решении этих задач, используя принцип оптимальности Беллмана и вытекающее из него рекуррентное уравнение Беллмана. Математически принцип оптимальности может быть представлен следующим образом: