ЛАБОРАТОРНАЯ РАБОТА № 6 ОПТИМАЛЬНОЕ РАСПРЕДЕЛЕНИЕ РЕСУРСОВ Цель работы: изучение задачи распределения ресурсов методом динамического программирования. Домашнее задание: 1. Изучение теоретического материала. 2. Ознакомление с индивидуальным заданием на выполнение лабораторной работы. 3. Изучение алгоритма решения задачи и составление программы вычислений. Основные теоретические сведения Рассмотрим пример применения метода динамического программирования к задаче, которую можно интерпретировать как задачу распределения ресурсов между технологическими процессами. Имеется n технологических процессов, по которым надо распределить однородный ресурс (например деньги, или рабочую силу, или энергию) так, чтобы максимизировать общий доход. Пусть использование в i-м технологическом процессе ресурса в количестве u i приносит доход f i u i , а общее количество ресурса равняется a . Тогда задача состоит в максимизации функции n f (u ) f i (u i ) , i 1 при ограничении n ui a . i 1 Рассмотрим наряду с этой задачей класс аналогичных задач, в которых может меняться число процессов и общее количество ресурсов. Обозначим оптимальное значение в задаче с k процессами и количеством ресурсов b через wk (b) , тогда в исходной задаче оптимальное значение равно wn (a) . Для поставленных задач справедлив принцип оптимальности, который здесь можно сформулировать следующим образом: если для всех процессов в задаче ресурс распределен оптимально, то для части процессов доля ресурса, приходящаяся на них при таком распределении, также должна быть распределена оптимально. Если этот принцип применить к задаче с k процессами и количеством ресурсов b и предположить, что в k-й процесс вкладывается количество ресурса u k , то получаем формулу wk (b) max[ f k (u k ) wk 1 (b u k )] , 0 uk b Эта формула справедлива при любых k и b , поэтому для исходной задачи имеем цепочку соотношений wn (a) max[ f n (u n ) wn1 (b u n )] , 0 un a wn1 (a u n1 ) max[ f k (u k ) wk 1 (b u k )] , 0 u n1 a u n и т.д. Для первого процесса, когда ресурсы по остальным процессам уже распределены, получаем n w1 (a ui ) max f1 (u1 ) , i 2 n 0 u1 a ui i 2 С помощью таких рекуррентных соотношений можно решить задачу оптимального распределения ресурсов. Рассмотрим конкретный пример с f i (ui ) ci ui . Итак, требуется максимизировать n f (u ) ci ui i 1 при ограничении n ui a . i 1 Имеем n n i 2 i 2 w1 (a ui ) max c1 u1 c1 a ui , n 0 u1 a ui , i 2 а условно оптимальное использование ресурса в первом процессе есть n u1* a ui . i 2 Далее, n n i 3 i 2 w2 (a ui ) max[ c2 u 2 c1 a ui , n 0 u 2 a ui i 3 Дифференцируя выражение в квадратных скобках по u 2 и приравнивая производную к нулю, получаем соотношение 1 1 n 1 1 c2u 2 2 c1 (a ui ) 2 0 , 2 2 i 2 откуда u 2* n c22 2 (a ui ) , c1 c22 i 3 n w2 (a ui ) (c12 i 3 c22 ) (a n ui ) . i 3 На следующем шаге n w3 (a ui ) max[ c3 u3 i 4 n 0 u3 a ui . i 4 (c12 c22 ) (a n ui ) ] , i 3 Решая эту задачу максимизации, как и на предыдущем шаге, получаем n c32 2 (a ui ) , c1 c22 с32 i 4 u3* n w3 (a ui ) (c12 i 4 c22 с32 ) (a n ui ) . i 4 Продолжая вычисления по процедуре, получаем общие выражения для u k* и wk : u k* ck2 k ci2 (a n ui ) , i k 1 i 1 wk (a n k ui ) i k 1 i 1 ci2 (a n ui ) . i k 1 Так как для последнего технологического процесса должно выполняться ограничение 0 u n a , то на n-м шаге находим просто оптимальное значение задачи n wn (a) a ci ) . i 1 и оптимальное использование ресурса в n-м процессе u n0 cn2 a n i 1 . ci2 Подставляя u n0 в выражение для u n*1 , затем в u n* 2 и т.д., получаем решение задачи u k0 ck2 a n i 1 . ci2 Алгоритм решения задачи приведен на рис. 1. Начало Ввод данных Ввод ограничений Вычисление Просмотр результатов и отчета Конец Рис.1. Алгоритм решения задачи распределения ресурсов методом динамического программирования Проведение лабораторного исследования В соответствии с разработанным алгоритмом и программой расчета студенты обязаны провести расчет задачи распределения ресурсов используя результаты домашнего задания, выполненные в соответствии с данными, представленными в табл. 1. Таблица 1 № брига ды 1 2 3 4 стоим. оборудования 67 64 23 34 78 88 56 45 89 48,9 1 66,6 100 1 44,7 50 1 78,6 60 1 персонал (кол) 2 1 1 1 1 1 2 1 производительн ость 1 2 1 1 30 67 48 43 40 40 73 62 50 58 87 77 70 49 66 84 ден. кол-во средств сотрудн а иков 350 5 390 6 400 7 230 8 В начале программы необходимо ввести исходные данные: стоимость оборудования, численность персонала, значения производительности, объем денежных средств, количество сотрудников. Требования к отчету Отчет должен содержать: 1. Краткие теоретические сведения. 2. Алгоритм и программу расчетов. 3. Распечатку с результатами счета на ЭВМ. 4. Выводы по работе. Контрольные вопросы. 1. В чем заключается постановка задачи распределения ресурсов. 2. Поясните алгоритм решения задачи распределения ресурсов. 3. Перечислите методы решения задачи распределения ресурсов. Раскройте их сущность. 4. Поясните алгоритм решения задачи лабораторной работы. 5. Поясните принцип построения программы вычисления. Литература 1. В.А. Горелик, И.А. Ушаков. Исследование операций. Машиностроение, 1986. 2. Ю.П. Зайченко. Исследование операций. К.: Вища Школа, 1973. М.: