Методические указания по решению задач динамического программирования Цель работы: изучение процесса решения задачи динамического программирования в среде Excel. Постановка задачи: Средствами Excel определить оптимальный план распределения заданного количества ресурса Х корпорации по ее предприятиям i с целью получения максимума прибыли, опираясь на известные данные о доходах Zi(Хn), которые может принести каждое предприятие i, при условии выделения ему ресурсов в количестве Хn. Лабораторную работу рекомендуется выполнять следующим образом. 1. Создать таблицу исходных данных в левом верхнем углу рабочего поля в соответствии со своим вариантом. 2. Справа от таблицы исходных данных сделать заготовку для таблицы оценки эффективности распределения ресурса между предприятиями (F(Х)). Заготовка должна содержать имена столбцов, заполненный столбец F1(X):=Z1(X) и первую строчку с нулевыми значениями. Значения в столбце F1(X) лучше устанавливать посредством ссылки на ячейки столбца Z1(Х), а не путем занесения в них чисел. 3. Остальные ячейки таблицы F(Х) определяются согласно формуле. Fk ( x ) max ( zk ( xk ) Fk 1 ( x xk )) 0 xk X (1) Для ее вычисления, а также для заключительного этапа решения задачи, требуется знать сумму S ( xk , x xk ) zk ( xk ) Fk 1 ( x xk ) для различных вариантов 1 распределения заданного количества ресурса между фиксированным количеством предприятий. Для этого необходимо построить вспомогательные таблицы S (см. далее). 4. Назовем группой предприятий те k-1 предприятий, для которых ранее было вычислено Fk-1(x-xk). Под предприятием будем понимать рассматриваемое в данный момент времени предприятие k. Тогда некоторое количество ресурсов X может быть распределено с шагом ∆ между предприятием и группой предприятий X 1 способами, для каждого из которых необходимо подсчитать сумму S(xk, x-xk). 5. Будем строить таблицы S и F параллельно, следующим образом. Начнем построение с таблицы S(80) – таблицы для вариантов распределения 80-ти единиц ресурсов между N предприятиями. Для 80-ти единиц ресурсов с шагом 80 существует 2 варианта распределения: выделить 0 ресурсов группе предприятий и 80 рассматриваемому предприятию и наоборот, 80 – группе, 0 – предприятию. Занесем варианты распределения в таблицу. Подсчитаем si для двух предприятий (предприятия 2 и группы, в которой только предприятие 1), для чего заведем столбец с заголовком “Z2+F1”. Данный столбец, например, будет иметь ячейки с адресами С13 и С14. В ячейку С13 поместим сумму ячеек С3 и G2 (поскольку Z2(80) хранится в ячейке С3, а F1(0) – в ячейке G2). В ячейку С14 поместим сумму ячеек С2 и G3 (по аналогичным соображениям). Теперь в соответствии с формулой (1) можно определить значение F2(80) – оно равно максимуму среди ячеек C13 и С14. Запишем в ячейку H3 (в которой хранится F2(80)) формулу «макс (С13;C14)». 2 Теперь рассчитаем столбцы “Z3+F2”, “Z4+F3” таблицы S(80) и определим значения F3(80) и F4(80). Сделать это просто, но необходимо строго соблюдать последовательность операций. Поименуем столбцы “Z3+F2” и “Z4+F3”. Теперь выделим ячейки С13, С14 и скопируем их в соседние D13,D14, в результате чего, благодаря средствам автоматизации Excel, получим искомые значения для столбца “Z3+F2”. Теперь необходимо проделать аналогичную процедуру и скопировать ячейку H3 таблицы F в ячейку I3, чтобы рассчитать F3(80). Только после этого можно вернуться к таблице S(80) и рассчитать столбец «Z4+F3» путем копирования ячеек D13,D14 в ячейки E13,E14. Далее необходимо вернуться к заполнению таблицы F и получить значение F4(80) посредством копирования ячейки I3 в ячейку J3. 3 Такая строгая последовательность операций заполнения обусловлена, как Вы знаете, взаимосвязями между ячейками таблиц S и F. 6. Аналогичные процедуры по построению таблиц S(160), S(240), S(320), S(240) и заполнению оставшейся части таблицы F необходимо проделать при распределении 160, 240, 320 и 400 единиц ресурсов. Следует еще раз обратить внимание, что формулы для вычисления значений будут вводиться вручную только для ячеек столбцов Z2+F1 каждой из таблиц S, а также для ячеек столбца F2(X) таблицы F. Остальные ячейки таблиц (кроме исходных данных) вычисляются в процессе копирования одних ячеек в другие. В результате получаем заполненные таблицы: 4 7. После построения всех таблиц можно определить оптимальный план распределения ресурсов, начиная с последнего этапа. Из таблицы F определяем, что максимальная прибыль при распределении ресурсов между 4-мя предприятиями составляет 203. По таблице S(400), находим, что максимальная прибыль за весь рассматриваемый период, равная 203, получается, если 4-му предприятию выделить 160 ресурсов, а остальным 3-м – 240 ресурсов. Возвращаемся к таблице F и определяем, что оптимальное распределение 240 ресурсов между 3мя предприятиями приносит прибыль, равную 130. Далее переходим к таблице S(240), которая отражает распределение 240 ресурсов между 3-им предприятием и группой из 2-х предприятий (т.е. нас интересует распределение внутри группы из 3-х предприятий – столбец Z3+F2), и определяем, что прибыль в 130 единиц может быть получена, если 240 ресурсов целиком отдать 3-му предприятию. 5 7. Таким образом, оптимальное распределение предприятиями при заданных условиях следующее: - предприятию 1 – 0 рес; - предприятию 2 – 0 рес; - предприятию 3 – 240 рес; - предприятию 4 – 160 рес. ресурсов между 4-мя 8. При другой постановке задачи может оказаться, что оптимальное распределение ресурсов подразумевает выделение ресурсов каждому предприятию. В этом случае процесс обратного анализа должен быть продолжен. 6