Министерство образования и науки Российской Федерации Федеральное агентство по образованию ГОУ ВПО Уральский Государственный Технический Университет – УПИ им. Б. Н. Ельцина Факультет информационных систем и технологий Теория распределения ресурсов по различным пунктам для обеспечения эффективного обслуживания транспортных перевозок Пояснительная записка к курсовой работе По дисциплине: Теория информационных процессов и систем Выполнил: Студент гр. ИТ-45011 Ситников В. В. Проверил: Александров О. Е. Екатеринбург 2008г. Содержание СОДЕРЖАНИЕ ......................................................................................................................................................... 2 ПОСТАНОВКА ЗАДАЧИ ........................................................................................................................................ 3 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ .................................................................................................................................... 4 Общая характеристика распределительной задачи...................................................................................... 4 Транспортная задача как частный случай общей распределительной задачи ........................................... 6 Решение............................................................................................................................................................... 8 ПРАКТИЧЕСКАЯ ЧАСТЬ ...................................................................................................................................... 9 ЗАКЛЮЧЕНИЕ ....................................................................................................................................................... 18 СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ ................................................................................................. 19 2 Постановка задачи Произвести поиск и рассмотрение источников информации по теме проекта: Теория распределения ресурсов по различным пунктам для обеспечения эффективного обслуживания транспортных перевозок или иных операций, которые невозможно совместить во времени. 3 Теоретическая часть Общая характеристика распределительной задачи. Распределительные задачи связаны с распределением ресурсов по работам, которые необходимо выполнить. Задачи этого класса возникают тогда, когда имеющихся в наличии ресурсов не хватает для выполнения каждой работы наиболее эффективным образом. Поэтому целью решения задачи, является отыскания такого распределения ресурсов по работам, при котором либо минимизируются общие затраты, связанные с выполнением работ, либо максимизируется получаемый в результате общий доход. Типичная распределительная задача. Таблица № 1 Работы, которые нужно выполнить J2 ... Jj ... Jn Ресурсы J1 R1 R2 ... Ri ... Rm C1,1 C2,1 ... Ci,1 ... Cm,1 C1,2 C2,2 ... Ci,2 ... Cm,2 ... ... ... ... ... ... C1,j C2,j ... Ci,j ... Cm,j ... ... ... ... ... ... C1,n C2,n ... Ci,n ... Cm,n Объём требуемых ресурсов a1 a2 ... aj ... an Объём имеющихся ресурсов b1 b2 ... bi ... bm Большинство распределительных задач можно представить в виде матриц, приведённых в таблице № 1. Элементы Сi,j, стоящие в клетках матрицы, соответствуют затратам или доходу, отвечающим выделению, одной единицы ресурса Ri на работу Jj. Величины Сi,j могут быть независимыми или зависимыми. Так, например, затраты, обусловленные назначением одной автомашины на некоторый маршрут доставки грузов, не зависят от того какие машины назначены на обслуживание других маршрутов. В то же время при распределение средств между подразделениями фирмы доход от затрат определённого количества денег одним её подразделением (скажем производством) обычно зависит от того, какие средства будут затрачены другими подразделениями (скажем отделом сбыта). В теории распределения рассматриваются преимущественно задачи с независимыми затратами и доходами. Это объясняется не тем, что такие задачи более важны, а лишь тем, что для них значительно легче строить модели и получать решения. Если затраты (или доход), определяемые объёмом Xi,j ресурса i, выделенного на выполнение работы Jj, ровны Xi,j * Ci,j, то имеем линейную распределительную задачу. Распределительные задачи с независимыми линейными функциями затрат (или дохода) стали объектом, наиболее интенсивных исследований, в виду того что для их решения были развиты эффективные, итеративные методы линейного программирования. Однако имеются также методы решения некоторых нелинейных распределительных задач, в том числе, методы, основанные на линейной аппроксимации. Распределение ресурсов для одного периода времени может влиять на распределения ресурсов для последующих периодов, а может не оказывать на них никакого влияния. Если каждое из последовательности распределений не зависит от всех остальных, то такая задача называется статистической, в противном случае имеем 4 динамическую распределительную задачу. Статистические задачи исследованы в большей степени, чем динамические, но для решения некоторых типов динамических задач успешно применяются методы линейного динамического и динамического программирования. Для решения некоторых динамических задач применяют методы стохастического программирования. В таких задачах принятие решений основано на вероятностных оценках будущих значений параметров, имеющих фиксированное распределение вероятностей. Основные методы решения распределительных задач, в частности линейного программирования, построены на допущении, что объёмы, имеющихся в наличии ресурсов (bi), требуемые объёмы (aj ) и затраты (Ci,j ) точно известны. Если общий объём наличных ресурсов bi (i=l...m) равен общей потребности в них ai(j=l...n), то имеет место сбалансированная (закрытая) распределительная задача: Если же аj bi, то задача называется несбалансированной (открытой). Если ресурсы можно разделить между работами, то некоторые работы можно выполнять с помощью различных комбинаций ресурсов. Если работы и ресурсы измеряются в единицах одной и той же шкалы, то такие задачи обычно называют транспортными или задачами разложения. Если же работы и ресурсы выражаются в различных единицах измерениях, то задача называется общей распределительной задачей. Таким образом, транспортная задача является частным случаем общей распределительной задачи. 5 Транспортная задача как частный случай общей распределительной задачи Одна из наиболее распространенных задач математического (обычно — линейного) программирования — транспортная задача. В общем виде ее можно представить так: требуется найти такой план доставки грузов от поставщиков к потребителям, чтобы стоимость перевозки (или суммарная дальность, или объем транспортной работы в тоннокилометрах) была наименьшей. Следовательно, дело сводится к наиболее рациональному прикреплению производителей к потребителям продукции (и наоборот). В простейшем виде, когда распределяется один вид продукта и потребителям безразлично, от кого из поставщиков его получать, задача формулируется следующим образом. Имеется ряд пунктов производства с объемами производства в единицу времени (месяц, квартал), равными соответственно и пункты потребления, потребляющие за тот же промежуток времени соответственно продукции. В случае, если решается закрытая (сбалансированная) задача, сумма объемов производства на всех т пунктах-поставщиках равна сумме объемов потребления на всех n пунктах-получателях: Кроме того, известны затраты по перевозке единицы продукта от каждого поставщика к каждому получателю — эти величины обозначаются В качестве неизвестных величин выступают объемы продукта, перевозимого из каждого пункта производства в каждый пункт потребления, соответственно обозначаемые . Тогда наиболее рациональным прикреплением поставщиков к потребителям будет такое, при котором суммарные затраты на транспортировку будут наименьшими: При этом каждый потребитель получает нужное количество продукта: и каждый поставщик отгружает весь произведенный им продукт: Как и во всех подобных случаях, здесь также оговаривается неотрицательность переменных: поставка от какого-то пункта производства тому или иному пункту потребления может быть равна нулю, но отрицательной, т. е. следовать в обратном направлении, быть не может. Поскольку принято, что затраты на перевозки растут здесь пропорционально их объему, то перед нами задача линейного программирования — одна из задач распределения ресурсов. 6 Несбалансированную (открытую) транспортную задачу приводят к виду, показанному выше, искусственно: в модель вводятся так называемые фиктивный поставщик или фиктивный потребитель, которые балансируют спрос и потребление. В настоящее время разработано множество различных алгоритмов решения транспортной задачи: распределительный метод, метод потенциалов, дельта-метод, венгерский метод, метод дифференциальных рент, различные сетевые методы и т. д. Они относительно просты, по ним составлены десятки программ для вычислительных машин. Задачи эти часто усложняются разного рода дополнительными условиями: например, в них включается расчет не только себестоимости перевозок, но и себестоимости производства продукции (производственно-транспортная задача), оптимизируется совместно доставка взаимозаменяемых видов продукции (скажем, различных кровельных материалов), оптимизируется доставка грузов с промежуточными базами (складами). Кроме того, следует учитывать, что математическая модель транспортной задачи позволяет описывать множество ситуаций, весьма далеких от проблемы перевозок, в частности, находить оптимальное размещение заказов на производство изделий с разной себестоимостью. Классическая транспортная задача - задача об оптимальном плане перевозок однородного продукта из однородных пунктов наличия в однородные пункты потребления на однородных транспортных средствах (предопределённом количестве) со статичными данными и линеарном подходе (это основные условия задачи). Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку). Задача о максимальном потоке в сети изучается уже более 60 лет. Интерес к ней подогревается огромной практической значимостью этой проблемы. Методы решения задачи применяются на транспортных, коммуникационных, электрических сетях, при моделировании различных процессов физики и химии, в некоторых операциях над матрицами, для решения родственных задач теории графов, и даже для поиска Web-групп в WWW. Исследования данной задачи проводятся во множестве крупнейших университетов мира. 60 лет назад, эта задача решалась simplex методом линейного программирования, что было крайне не эффективно. Форд и Фалкресон предложили рассматривать для решения задачи о максимальном потоке ориентированную сеть и искать решение с помощью итерационного алгоритма. В течение 20 лет, все передовые достижения в исследовании данной задачи базировались на их методе. В 1970г. наш соотечественник, Диниц, предложил решать задачу с использованием вспомогательных бесконтурных сетей и псевдомаксимальных потоков, что намного увеличило быстродействие разрабатываемых алгоритмов. А в 1974 Карзанов улучшил метод Диница, введя такое понятие как предпоток. Алгоритмы Диница и Карзанова, как и исследования Форда и Фалкерсона, внесли огромный вклад в решение данной проблемы. На основе их методов 15 лет достигались наилучшие оценки быстродействия алгоритмов. В 1986г. появился третий метод, который также без раздумий можно отнести к фундаментальным. Этот метод был разработан Голдбергом и Таряном, и получил название Push-Relabel метода. Для нахождения максимального потока, он использует предпотоки и метки, изменяемые во время работы алгоритма. Push-Relabel алгоритмы очень эффективны, и исследуются до сих пор. И, наконец, в 1997г. Голдберг и Рао предложили алгоритм, присваивающий дугам неединичную длину. Это самый современный из всех известных мне алгоритмов. Асимптотическая оценка его быстродействия превзошла O(nm), о такой скорости многие годы можно было только мечтать. Уверен, что за прошедшие годы алгоритм Голдберга и Рао тщательно изучался и улучшался. 7 Решение Классическую транспортную задачу можно решить симплекс-методом, но в силу ряда особенностей ее можно решить проще (для задач малой размерности). Условия задачи располагают в таблице, вписывая в ячейки количество перевозимого груза из Аi в Bj груза Xij>=0, а в маленькие клетки - соответствующие тарифы Cij. Затем требуется определить опорный план и путем последовательных операций найти оптимальное решение. Опорный план можно найти методом "северо-западного угла" или методом "наименьшего элемента". Метод северо-западного угла (диагональный). На каждом этапе максимально возможным числом заполняют левую верхнюю клетку оставшейся части таблицы. Заполнение таким образом, что полностью выносится груз из Аi или полностью удовлетворяется потребность Вj. Одним из способов решения задачи является метод минимального (наименьшего) элемента Его суть заключается в сведении к минимуму побочных перераспределений товаров между потребителями. Алгоритм решения: Из таблицы стоимостей выбирают наименьшую стоимость и в клетку, которая ей соответствует, вписывают меньшее из чисел. Проверяются строки поставщиков на наличии строки с израсходованными запасами и столбцы потребителей на наличие столбца, потребности которого полностью удовлетворены. Такие столбцы и строки далее не рассматриваются. Если не все потребители удовлетворены и не все поставщики израсходовали товары, возврат к п.1, в противном случае задача решена. 8 Практическая часть Задача: Имеется 3 склада содержащие некоторое количество единиц однотипной продукции (см.таблицу 1), имеется также 3 потребителя нуждающиеся в определенном количестве данной продукции (см.таблицу 2). При перевозке одной единицы продукции со склада i потребителю j возникают издержки Pij. Величины издержек приведены в таблице 3. При перевозке K единиц продукции со склада i потребителю j суммарные затраты на перевозку составляют K*Pij. Требуется найти такой план перевозок при котором общие затраты на перевозку всей продукции, по всем потребителям, будут минимальны. Таблица 1 Таблица 2 Склад № Запас ед. продукции Потребитель № Потребность в ед. продукции 1 14 1 30 2 20 2 22 3 26 3 8 Таблица 3 Издержки на перевозку единицы продукции со склада i потребителю j Потребители Склад № 1 2 3 1 70 38 24 2 58 18 56 3 19 10 100 Шаг:1 Проверка на сбалансированность Общее число запасов на складах : 60 ; Общая потребность : 60 Задача является сбалансированной (закрытой(Транспортная задача называется закрытой если суммарное число запасов продукции на всех складах равно суммарному значению потребностей по всем потребителям.)). 9 Шаг:2 Отыскание начального решения. Метод минимального элемента Запишем настоящую задачу в виде транспортной таблицы. В верхней строке перечислим потребности потребителей по порядку номеров. В левом столбце перечислим имеющиеся запасы на складах. На пересечении j-го столбца и i-й строки будем записывать количество продукции, поставляемое с i-го склада j-му потребителю. Пока начальное решение не найдено, оставим эти клетки пустыми. В правом нижнем углу каждой клетки, зеленым цветом, отобразим соответствующие издержки. b1= 30 b2= 22 b3= 8 a1= 14 a2= 20 a3= 26 Введем вспомогательные строку и столбец, в которых будем отмечать оставшиеся нераспределенные запасы и соответственно потребности (остатки). Изначально их содержимое равно исходным запасам и потребностям, так как еще ничего не распределялось. На рисунке они представлены желтым цветом. Выберем клетку, в которую будем распределять продукцию на следующей итерации, это клетка, содержащая минимальное значение издержек (минимальный элемент). На рисунке, как сама клетка, так и соответствующие ей остатки отображаются красным шрифтом. b1= 30 b2= 22 b3= 8 a1= 14 14 a2= 20 20 X a3= 26 26 10 30 22 8 10 Итерация: 1 Заполним клетку a3,b2. Сравним значения остатков для производителя a3 и потребителя b2. Нераспределенных остатков по потребностям для b2 меньше (см. таблицу выше, красный шрифт), запишем меньшее число в клетку a3,b2 одновременно вычитая его из обеих клеток остатков (см. таблицу ниже). При этом клетка остатков по потребностям обнулится, указывая, что все потребности для b2 удовлетворены (см. таблицу ниже). Поэтому исключим столбец b2 из дальнейшего рассмотрения (серый фон). Ненулевое значение остатка по запасам для a3 показывает, сколько единиц продукции у него осталось не потребленной. b1= 30 b2= 22 b3= 8 a1= 14 14 a2= 20 20 a3= 26 X 22 19 30 4 10 0 8 Итерация: 2 Заполним клетку a3,b1. Сравним значения остатков для производителя a3 и потребителя b1. Нераспределенных остатков по запасам для a3 меньше (см. таблицу выше, красный шрифт), запишем меньшее число в клетку a3,b1 одновременно вычитая его из обеих клеток остатков (см. таблицу ниже). При этом клетка остатков по запасам обнулится, указывая, что все запасы производителя a3 использованы (см. таблицу ниже). Поэтому исключим строку a3 из дальнейшего рассмотрения (серый фон). Ненулевое значение остатка по потребностям для b1 показывает, сколько единиц продукции ему еще требуется. b1= 30 b2= 22 b3= 8 X a1= 14 24 a2= 20 a3= 26 14 20 4 22 19 26 0 10 0 8 Итерация: 3 11 b1= 30 b2= 22 8 a1= 14 a2= 20 a3= 26 b3= 8 24 X 20 58 4 6 22 19 0 10 26 0 0 b2= 22 b3= 8 Итерация: 4 b1= 30 a1= 14 a2= 20 a3= 26 X 8 70 24 20 0 58 4 6 22 19 0 10 6 0 0 b2= 22 b3= 8 Итерация: 5 b1= 30 a1= 14 6 8 a2= 20 20 a3= 26 4 22 0 0 0 0 0 0 Получено допустимое начальное решение (опорный план) (см. таблицу ниже), удовлетворенны нужды всех потребителей и использованы все запасы производителей. a1= 14 6 a2= 20 20 a3= 26 4 8 22 12 Шаг:3 Проверим полученный опорный план на невырожденность. Количество заполненных клеток N должно удовлетворять условию N=n+m-1 . В нашем случае N=5, n+m=3+3=6 , что удовлетворяет условию невырожденности плана. Шаг:4 Вычислим общие затраты на перевозку всей продукции. Для этого запишем транспортную таблицу в которой совместим найденный опорный план с величинами издержек. В левом верхнем углу каждой клетки будем указывать количество единиц продукции а в правом нижнем затраты на перевозку единицы продукции. (см. таблицу ниже) b1= 30 6 a1= 14 a2= 20 b2= 22 b3= 8 8 70 24 20 a3= 26 58 4 22 19 10 Перемножим числа стоящие в одной клетке (для всех клеток) затем полученные произведения сложим. Получим значение суммарных затрат, для данного начального решения. Pнач= 2068 Шаг:5 Проведем поэтапное улучшение начального решения, используя метод потенциалов. Итерация: 1 Составим вспомогательную рабочую матрицу затрат. Она строится из исходной матрицы издержек (см. Таблицу 3) путем переноса только тех ячеек Pij которые соответствуют заполненным клеткам транспортной таблицы. Остальные ячейки остаются пустыми. Кроме того, введем вспомогательный столбец в который внесем значения неизвестных U1 ... U3 (3,это m - число складов) и вспомогательную строку в которую внесем значения неизвестных V1 ... V3 (3,это n - число потребителей). На рисунке они представлены желтым цветом. Эти n+m неизвестных должны для всех (i,j), соответствующих загруженным клеткам, удовлетворять линейной системе уравнений Ui+Vj=Pij Эту систему всегда можно решить следующим способом: На первом шаге полагают V3=0. Если на k-м шаге найдено значение неизвестной, то в системе всегда имеется еще не определенная неизвестная, которая однозначно может быть найдена на (k+1)-м шаге из уравнения Ui+Vj=Pij, так как значение другой неизвестной в этом уравнении уже известно. 13 То какую неизвестную можно найти на (k+1)-м шаге, определяют методом проб. Переменные Ui и Vj называются симплекс-множителями или потенциалами. Рабочая матрица затрат с рассчитанными потенциалами представлена ниже. b1 b2 a1 70 a2 58 a3 19 10 v1= 46 v2= 37 b3 24 u1= 24 u2= 12 u3= -27 v3= 0 Порядок вычисления потенциалов был следующий: 1) Пусть V3 = 0 ; 2) U1 = P1,3 - V3 ; 3) V1 = P1,1 - U1 ; 4) U2 = P2,1 - V1 ; 5) U3 = P3,1 - V1 ; 6) V2 = P3,2 - U3 ; Теперь для всех свободных клеток рабочей матрицы затрат вычислим оценки Sij, по формуле Sij = Pij – Ui - Vj (зеленый цвет). Каждая такая оценка показывает на сколько изменятся общие транспортные затраты при загрузке данной клетки единицей груза. Таким образом, если среди оценок имеются отрицательные (затраты уменьшаются) то данный план можно улучшить переместив в соответствующую клетку некоторое количество продукции. Если же среди оценок нет отрицательных - план является оптимальным. Рабочая матрица затрат с заполненными оценками клетками представлена ниже. b1 b2 b3 a1 70 -23 24 u1= 24 a2 58 -31 44 u2= 12 a3 19 10 127 u3= -27 v1= 46 v2= 37 v3= 0 Из всех отрицательных оценок имеет смысл выбрать наибольшую по модулю (красный цвет), так как ее воздействие на общие затраты является максимальным. В нашем случае такая оценка находится в ячейке а2,b2 (красный цвет), в соответствующую ячейку транспортной таблицы мы должны переместить некоторое количество продукции т.е. загрузить ее. Отметим в транспортной таблице ячейку а2,b2 знаком + . Кроме нее мы пометим знаками - и + другие занятые числами ячейки таким образом, что в каждой строке и каждом столбце транспортной таблицы число знаков + будет равно числу знаков - . Это всегда можно сделать единственным образом, причем в каждой строке и каждом столбце содержится по одному + и - .То есть помеченные знаками клетки должны образовывать цикл. 14 b1= 30 b2= 22 b3= 8 6 a1= 14 8 20 a2= 20 - + 4 a3= 26 22 + - Затем мы определим минимум M из всех элементов, помеченных знаком - , и выбираем одну ячейку где этот минимум достигается. В нашем случае таковой является а2,b1 и обозначает загруженную клетку, которая должна стать свободной. Число M при этом составляет: 20 Переход к новой транспортной таблице разбивается на следующие шаги. а) В ячейку а2,b2 новой таблицы записывается число M. б) Ячейка а2,b1 остается пустой. в) В остальных ячейках, помеченных знаками - или +, число M соответственно вычитается из стоящего в ячейке числа или складывается с ним. Результат вносится в соответствующую ячейку новой таблицы. г) Непомеченные числа переносятся в новую таблицу без изменений. Остальные ячейки новой таблицы остаются пустыми. b1= 30 a1= 14 b2= 22 b3= 8 6 8 a2= 20 20 a3= 26 24 2 Итерация: 2 Рабочая матрица затрат с пересчитанными потенциалами и оценкам. b1 b2 b3 a1 70 -23 24 u1= 24 a2 31 18 75 u2= -19 a3 19 10 127 u3= -27 v1= 46 v2= 37 v3= 0 Ячейка а1,b2, транспортной таблицы, должна загрузиться. 15 b1= 30 b2= 22 b3= 8 6 a1= 14 8 - + 20 a2= 20 24 a3= 26 2 + - Ячейка а3,b2 становится свободной. M=2 b1= 30 b2= 22 b3= 8 4 2 8 a1= 14 a2= 20 20 a3= 26 26 Итерация: 3 Рабочая матрица затрат с пересчитанными потенциалами и оценкам. b1 b2 b3 a1 70 38 24 u1= 24 a2 8 18 52 u2= 4 a3 19 23 127 u3= -27 v1= 46 v2= 14 v3= 0 В приведенной выше таблице нет отрицательных оценок (план улучшить нельзя), следовательно, достигнуто оптимальное решение. b1= 30 a1= 14 4 2 b3= 8 8 70 38 24 20 a2= 20 a3= 26 b2= 22 18 26 19 Общие затраты на перевозку всей продукции составляют: 1402 16 Расчеты в среде MathCAD. Транспортная задача: Y(X11X12X13X21X22X23X31X32X33) 70 X11 38 X12 24 X13 58 X21 18 X22 56 X23 19 X31 10 X32 100 X33 Начальные приближения X11 0 X12 0 X13 0 X21 0 X22 0 X23 0 X31 0 X32 0 X33 0 X23 0 X31 0 X32 0 X33 0 Given Система ограничений X11 X12 X13 14 X11 X21 X31 30 X21 X22 X23 20 X12 X22 X32 22 X31 X32 X33 26 X13 X23 X33 8 Граничные условия X11 0 X11 X12 0 X13 0 X21 0 X22 0 X12 X13 X21 X22 Minimize( YX11X12X13X21X22X23X31X32X33) X23 X31 X32 X33 X11 4 X12 2 X13 8 X21 0 X22 20 X23 0 X31 26 X32 0 X33 0 3 Y( X11X12X13X21X22X23X31X32X33) 1.402 10 Оптимальное распределение однородных ресурсов зафиксировано в векторе (X11 Х12 Х13 ...). Из полученного решения видно, что X11 = 4, Х12 = 2, Х13 = 8, Х21= 0, Х22 = 20, Х23 = 0, Х31 = 26, Х32 =0, ХЗЗ = 0 Минимальная стоимость перевозок: F =1402 17 Заключение В ходе проделанной работы был осуществлен поиск и разбор источников информации по заданной теме. В результате чего были рассмотрены типы задач теории распределения и основные методы их решения. А также разобраны примеры решения, тем самым были закреплены полученные знания. 18 Список используемой литературы 1. http://www.i-u.ru/biblio/archive/aleksinskaja_obshie/01.aspx - Алесинская T. В., Основы логистики, 2005 2. http://maxoness.narod.ru/Study/ISO/3.htm 3. http://naukoved.ru/content/view/901/44/ 4. http://ru.wikipedia.org/wiki/Транспортная_задача 19