МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Ухтинский государственный технический университет» (УГТУ) А. В. Семериков Решение транспортных задач Учебное пособие Ухта, УГТУ, 2013 УДК 004 : 519.86 (076.1) ББК 22.12 я7 С 30 Семериков, А. В. С 30 Решение транспортных задач [Текст] : учеб. пособие / А. В. Семериков. – Ухта : УГТУ, 2013. – 58 с. ISBN 978-5-88179-781-2 В пособии представлено решение транспортной задачи. Она представляет собой задачу линейного программирования, которую можно решить с помощью симплексметода. Поэтому в пособии вначале представлено решение транспортной задачи этим методом, а затем продемонстрировано решение этой же задачи методом потенциалов, в котором идея симплекс-метода представлена в другой форме. Как известно, применение новой формы решения (более удобной для этой задачи) обусловлено особенностью ограничений в постановке задачи. Материал в пособии изложен в следующем порядке: а) представлена общая постановка, цели задачи; б) представлено решение задачи симплекс-методом; г) проиллюстрировано три метода отыскания опорного плана; д) представлено решение методом потенциалов. Тем самым на конкретном примере была показана связь симплекс-метода и метода потенциалов, а также продемонстрирована эффективность последнего при ручном счёте. Пособие предназначено для студентов дневной и заочной форм обучения по специальности 230400 «Информационные системы и технологии», изучающих дисциплину «Математическое моделирование экономических процессов», а также магистров, аспирантов. УДК 004 : 519.86 (076.1) ББК 22.12 я7 Учебное пособие рекомендовано к изданию Редакционно-издательским советом Ухтинского государственного технического университета. Рецензенты: Н. А. Николаева, главный специалист планово-экономического отдела ОАО «Газпром промгаз», доцент, к.т.н.; В. М. Шарыгин, главный научный сотрудник филиала ООО «Газпром ВНИИГАЗ» в г. Ухта. Ухтинский государственный технический университет, 2013 Семериков А. В., 2013 ISBN 978-5-88179-781-2 ОГЛАВЛЕНИЕ 1. Транспортная задача. Общая постановка задачи................................................. 6 2. Пример транспортной задачи................................................................................. 8 3. Решение транспортной задачи симплекс-методом.............................................. 9 4. Решение транспортной задачи методом потенциалов ...................................... 16 5. Методы составления начального опорного плана ............................................. 16 6. Диагональный метод, или метод северо-западного угла. ................................. 18 7. Метод наименьшей стоимости............................................................................. 20 8. Метод Фогеля......................................................................................................... 22 9. Результаты вычислений всех методов ................................................................ 24 10. Понятие цикла...................................................................................................... 25 11. Метод потенциалов. ............................................................................................ 29 12. Результаты оптимизации базовых решений..................................................... 34 13. Открытая транспортная задача. ......................................................................... 34 14. Многопродуктовая транспортная задача. ......................................................... 36 15. Другие типы задач............................................................................................... 38 15.1 Задача о назначениях.................................................................................. 39 15.2 Задача с неразличимыми поставщиками и потребителями ................. 42 15.3 Транспортная модель с промежуточными пунктами........................... 45 15.4 Модель управления запасами..................................................................... 47 Заключение................................................................................................................. 50 Задания для самостоятельной работы ..................................................................... 52 Литература ................................................................................................................. 57 3 Введение При ведении хозяйственной деятельности человек всегда испытывает недостаток средств. При этом возникает необходимость в решении задачи для определения максимального эффекта при заданных ограничениях на ресурсы. В результате анализа предметной области формулируется целевая функция и уравнения, описывающие область определения. В случае если целевая функция и уравнения линейны, то тогда эта задача относится к задачам линейного программирования. В так называемой «транспортной задаче» (ТЗ) присутствует эта линейность. Кроме того, в ней имеется одна особенность – коэффициенты в ограничениях равны единице. По этой причине из множества задач линейного программирования выделяется подмножество ТЗ, решение которых можно осуществлять с помощью метода потенциалов. Этот метод принципиально не отличается от симплекс-метода, с помощью которого можно решить любую задачу линейного программирования, в том числе и ТЗ. Однако из-за наличия особенности в ограничениях этих задач был разработан метод потенциалов, в котором используется форма представления данных, отличная от формы представления данных симплекс-метода. Использование этой формы позволяет существенно упростить решение ТЗ, по сравнению с симплекс-методом. Кроме того, новая форма очень удобная для визуализации процесса решения. Задача ТЗ ассоциируется с перемещением груза от поставщиков к потребителям. Решение данной задачи позволяет разработать наиболее рациональные пути и способы транспортирования товаров, устранить чрезмерно дальние, встречные, повторные перевозки. Всё это сокращает время продвижения товаров, уменьшает затраты предприятий и фирм, связанные с осуществлением процессов снабжения сырьём, материалами, топливом, оборудованием и т. д. Вместе с тем алгоритм и методы решения транспортной задачи могут быть использованы при решении некоторых задач, не имеющих ничего общего с транспортировкой груза. Всё зависит от того, как интерпретируются так называемые тарифы. Так, например, при решении задачи обеспечения материальными ресурсами при производстве продукции товары, находящиеся на складе, физически не перемещаются, но при этом увеличивается их стоимость в результате расходов на хранение. Таким образом, товар как бы перемещается во времени, а значит, задачу по минимизации расходов на осуществление процесса обеспечения ресурсами можно решить с помощью ТЗ. Впервые высказывание о важности решения задач линейного программирования и, в частности, ТЗ было сделано в прошлом веке. Тогда же были пред4 ложены методы решения этих задач. У истоков создания теории линейного программирования стоял русский учёный – Л. В. Канторович. Широкое практическое использование этой теории началось после появления вычислительных машин. Это связано с тем, что при реализации методов линейного программирования требуется выполнять многочисленные последовательные арифметические операции. Ошибка в одном действии приводила к неверному результату и поиску верного решения путём повторного утомительного расчёта. В настоящее время имеются многочисленные публикации по практическому использованию решений ТЗ, разработаны программные средства, в том числе WEB-приложения [1]. В настоящем пособии представлено подробное решение одной и той же ТЗ с помощью симплекс-метода и метода потенциалов. Это сделано с целью демонстрации тесной связи этих методов, показ преимущества метода потенциалов и важности формирования начального решения. В учебном пособии представлена однопродуктовая модель. Вместе с тем её можно использовать и в случае многопродуктового перемещения товаров. Для этого необходимо представить многопродуктовую модель как целое, состоящее из однопродуктовых моделей. 5 1. Транспортная задача. Общая постановка задачи В общей постановке [2] транспортная задача состоит в отыскании оптимального плана перевозок некоторого однородного груза с m баз A1, A2,…, Am n потребителям В1, В2,..., Вn. Обозначим количество груза, имеющегося на каждой из m баз (запасы), соответственно a1, a2, …, am, а общее количество имеющегося в наличии груза – а: a = a1 + a2 + … + am, (1.1) заказы каждого из потребителей (потребности) обозначим соответственно b1 , b2 , …, bn, а общее количество потребностей – b: b = b1 + b2 + … + bn. (1.2) a=b (1.3) Тогда при условии мы имеем закрытую модель, а при условии a≠b (1.4) – открытую модель транспортной задачи. Очевидно, в случае закрытой модели весь имеющийся в наличии груз развозится полностью, и все потребности заказчиков полностью удовлетворены; в случае же открытой модели либо все заказчики удовлетворены, и при этом на некоторых базах остаются излишки груза (а > b), либо весь груз оказывается израсходованным, хотя потребности полностью не удовлетворены (а < b). Также существуют одноэтапные модели задач, где перевозка осуществляется напрямую с базы или завода изготовителя к потребителю, и двухэтапные, где между ними имеется «перевалочный пункт», например склад. План перевозок с указанием запасов и потребностей удобно записывать в виде следующей таблицы, называемой таблицей перевозок: Пункты отправления А1 А2 … Аm В1 х11 х21 … xm1 Потребности b1 Пункты назначения В2 … х12 … x22 … … … xm2 … b2 … 6 Вn x1n x2n … xmn bn Запасы a1 a2 … am а=b или а≠b Условие а = b или a ≠ b означает, с какой задачей мы имеем дело: с закрытой моделью или открытой моделью транспортной задачи. Переменное xij означает количество груза, перевозимого с базы Аi потребителю Вj: совокупность этих величин образует матрицу (матрицу перевозок). Очевидно, переменные хij должны удовлетворять условиям: x11 + x12 + ... + x1n = a1 x + x + ... + x = a 2n 2 21 22 ...................................... xm1 + xm 2 + ... + xmn = am x11 + x21 + ... + xm1 = b1 x12 + x22 + ... + xm 2 = b2 ...................................... x + x + ... + x = b 2n mn n 1n (1.5) xij ≥ 0; i ∈1, n; j ∈1, m . (1.6) Система (1.5) содержит т + п уравнений с тп неизвестными. Её особенность состоит в том, что коэффициенты при неизвестных всюду равны единице. Кроме того, все уравнения системы (1.5) могут быть разделены на две группы: первая группа из т первых уравнений («горизонтальные» уравнения) и вторая группа из п остальных уравнений («вертикальные» уравнения). В каждом из горизонтальных уравнений содержатся неизвестные с одним и тем же первым индексом (они образуют одну строку матрицы перевозок), в каждом из вертикальных уравнений содержатся неизвестные с одним и тем же вторым индексом (они образуют один столбец матрицы перевозок). Таким образом, каждая неизвестная встречается в системе (1.5) дважды: в одном и только одном горизонтальном и в одном и только одном вертикальном уравнениях. Для решения транспортной задачи необходимо, кроме запасов и потребностей, знать также и тарифы сij, т. е. стоимость перевозки единицы груза с базы Аi потребителю Вj. Совокупность тарифов сij также образует матрицу, которую можно объединить с матрицей перевозок и данными о запасах и потребностях в одну таблицу: 7 Пункты отправления A1 A2 Пункты назначения B1 c11 x11 Потребности … c12 x21 c22 … cm1 xm1 x1n c2n x2n … cm2 … b2 xmn … bn a1 a2 … cmn … xm2 b1 c1n … x22 … Bn … x12 c21 … Am B2 Запасы am а=b или а≠b Сумма всех затрат, т. е. стоимость реализации данного плана перевозок, является линейной функцией переменных хij: S = c11x11 + c12 x12 + ... + cmn xmn = ∑ cij xij . (1.7) Требуется в области допустимых решений системы уравнений (1.5) и (1.6) найти решение, минимизирующее линейную функцию (1.7). Таким образом, мы видим, что транспортная задача является задачей линейного программирования. Для её решения применяют симплекс-метод и метод потенциалов. На конкретном примере проследим за всеми этапами решения задачи. 2. Пример транспортной задачи При заданных объёмах груза в пунктах отправления и потребности в пунктах назначения определить оптимальный план перемещения груза от отправителя к потребителю. Исходные данные: Запас груза в i-м пункте отправления ai: a1 = 30, a2 = 15, a3 = 25. Потребность j-го пункта назначения в грузе bj: b1 = 20, b2 = 5, b3 = 45. Матрица тарифов (стоимость перевозки единицы груза) Ci,j: (Ci,j)m×n = Потребители Поставщики 1 2 3 8 1 2 3 10 30 5 20 10 15 30 20 10 3. Решение транспортной задачи симплекс-методом Составим математическую модель задачи транспортного типа. Целевая функция: F = 10 x1,1 + 20 x1,2 + 30 x1,3 + 0 x2,1 + 10 x2,2 + 20 x2,3 + 5 x3,1 + 15 x3,2 + 10 x3,3 → min . Граничные условия: 1 x + 1 x + 1 x + 0 x + 0 x + 0 x + 0 x + 0 x + 0 x = 30 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3 1,1 0 x1,1 + 0 x1,2 + 0 x1,3 + 1 x2,1 + 1 x2,2 + 1 x2,3 + 0 x3,1 + 0 x3,2 + 0 x3,3 = 15 0 x1,1 + 0 x1,2 + 0 x1,3 + 0 x2,1 + 0 x2,2 + 0 x2,3 + 1 x3,1 + 1 x3,2 + 1 x3,3 = 25 1 x1,1 + 0 x1,2 + 0 x1,3 + 1 x2,1 + 0 x2,2 + 0 x2,3 + 1 x3,1 + 0 x3,2 + 0 x3,3 = 20 0 x1,1 + 1 x1,2 + 0 x1,3 + 0 x2,1 + 1 x2,2 + 0 x2,3 + 0 x3,1 + 1 x3,2 + 0 x3,3 = 5 0 x1,1 + 0 x1,2 + 1 x1,3 + 0 x2,1 + 0 x2,2 + 1 x2,3 + 0 x3,1 + 0 x3,2 + 1 x3,3 = 45 Транспортная задача разрешима только в случае, если соблюдается условие баланса Σai = Σbi. В нашем случае оно выполняется, так как: Σai = 30 + 15 + 25 = 70, Σbi = 20 + 5 + 45 = 70. Следовательно, задача является закрытой (сбалансированной). Приведём систему ограничений к каноническому виду, для этого введём в каждое условие искусственную переменную R. Тогда система запишется в виде: 1 x1,1 + 1 x1,2 + 1 x1,3 + 0 x2,1 + 0 x2,2 + 0 x2,3 + 0 x3,1 + 0 x3,2 + 0 x3,3 + R 1 = 30 0 x1,1 + 0 x1,2 + 0 x1,3 + 1 x2,1 + 1 x2,2 + 1 x2,3 + 0 x3,1 + 0 x3,2 + 0 x3,3 + R 2 = 15 0 x + 0 x + 0 x + 0 x + 0 x + 0 x + 1 x + 1 x + 1 x + R = 25 1,1 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3 3 1 x + 0 x + 0 x + 1 x + 0 x + 0 x + 1 x + 0 x + 0 x + R = 20 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3 4 1,1 0x + 1x + 0x + 0x + 1x + 0x + 0x + 1x + 0x + R = 5 1,1 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3 5 0 x1,1 + 0 x1,2 + 1 x1,3 + 0 x2,1 + 0 x2,2 + 1 x2,3 + 0 x3,1 + 0 x3,2 + 1 x3,3 + R 6 = 45 Переходим к формированию исходной симплекс-таблицы. В строку F таблицы заносятся коэффициенты целевой функции. Так как среди исходного набора условий были равенства, мы ввели искусственные переменные R. Это значит, что в симплекс-таблицу нам необходимо добавить дополнительную строку M, элементы которой рассчитываются как сумма соответствующих элементов условий-равенств (тех, которые после при- 9 ведения к каноническому виду содержат искусственные переменные R) взятая с противоположным знаком. Из данных задачи составляем исходную симплекс-таблицу. F R1 R2 R3 R4 R5 R6 M x1,1 x1,2 x1,3 x2,1 x2,2 x2,3 x3,1 x3,2 x3,3 10 1 0 0 1 0 0 -2 20 1 0 0 0 1 0 -2 30 1 0 0 0 0 1 -2 30 0 1 0 1 0 0 -2 10 0 1 0 0 1 0 -2 20 0 1 0 0 0 1 -2 5 0 0 1 1 0 0 -2 15 0 0 1 0 1 0 -2 10 0 0 1 0 0 1 -2 Свободный член 0 30 15 25 20 5 45 -140 Так как в столбце свободных членов нет отрицательных элементов, то найдено допустимое решение. В строке M имеются отрицательные элементы, это означает, что полученное решение не оптимально . Определим ведущий столбец. Для этого найдём в строке M максимальный по модулю отрицательный элемент – это -2 (столбец x1,1 ). Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является R4, а ведущий элемент: 1. F R1 R2 R3 x1,1 R5 R6 M x1,2 x1,3 x2,1 x2,2 x2,3 x3,1 x3,2 x3,3 20 1 0 0 0 1 0 -2 30 1 0 0 0 0 1 -2 20 -1 1 0 1 0 0 0 10 0 1 0 0 1 0 -2 20 0 1 0 0 0 1 -2 -5 -1 0 1 1 0 0 0 15 0 0 1 0 1 0 -2 10 0 0 1 0 0 1 -2 Свободный член -200 10 15 25 20 5 45 -100 В строке M имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдём в строке M максимальный по модулю отрицательный элемент – это -2 (столбец x1,2 ). Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является R5, а ведущий элемент: 1. 10 x1,3 x2,1 x2,2 x2,3 x3,1 x3,2 x3,3 F R1 R2 R3 30 1 0 0 20 -1 1 0 -10 -1 1 0 20 0 1 0 -5 -1 0 1 -5 -1 0 1 10 0 0 1 Свободный член -300 5 15 25 x1,1 0 1 0 0 1 0 0 20 x1,2 0 1 -2 0 0 0 1 0 0 0 1 -2 0 0 0 1 0 0 0 1 -2 5 45 -90 R6 M В строке M имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдем в строке M максимальный по модулю отрицательный элемент – это -2 (столбец x1,3 ). Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является R1, а ведущий элемент: 1. F x1,3 R2 R3 x1,1 x1,2 R6 M x2,1 x2,2 x2,3 x3,1 x3,2 x3,3 50 -1 1 0 1 20 -1 1 0 0 20 0 1 0 0 25 -1 0 1 1 25 -1 0 1 0 10 0 0 1 0 Свободный член -450 5 15 25 20 0 1 -2 1 1 -2 0 1 -2 0 1 -2 1 1 -2 0 1 -2 5 40 -80 В строке M имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдём в строке M максимальный по модулю отрицательный элемент – это -2 (столбец x2,1 ). Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является R2, а ведущий элемент: 1. 11 x2,2 x2,3 x3,1 x3,2 x3,3 F -30 -30 25 25 10 Свободный член -1200 x1,3 0 1 -1 -1 0 20 x2,1 1 1 0 0 0 15 R3 0 -1 0 -1 1 1 1 0 1 0 25 5 1 0 0 0 0 0 0 1 -2 1 1 -2 0 1 -2 5 25 -50 x1,1 x1,2 R6 M В строке M имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдём в строке M максимальный по модулю отрицательный элемент – это -2 (столбец x3,1 ). Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является x1,1 , а ведущий элемент: 1. x2,2 x2,3 x1,1 x3,2 x3,3 F -5 -5 -25 25 10 Свободный член -1325 x1,3 -1 0 1 -1 0 25 x2,1 1 1 0 0 0 15 R3 1 1 -1 1 1 20 x3,1 -1 -1 1 0 0 5 x1,2 1 0 0 1 0 5 R6 M 1 -2 1 -2 -1 2 1 -2 1 -2 20 -40 В строке M имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдём в строке M максимальный по модулю отрицательный элемент – это -2 (столбец x2,2 ). Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является x1,2 , а ведущий элемент: 1. 12 x1,2 x2,3 x1,1 x3,2 x3,3 F 5 -5 -25 30 10 Свободный член -1300 x1,3 1 0 1 0 0 30 x2,1 -1 1 0 -1 0 10 R3 -1 1 -1 0 1 15 x3,1 1 -1 1 1 0 10 x2,2 1 0 0 1 0 5 R6 M -1 2 1 -2 -1 2 0 0 1 -2 15 -30 В строке M имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдём в строке M максимальный по модулю отрицательный элемент – это -2 (столбец x2,3 ). Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является x2,1 , а ведущий элемент: 1. x1,2 x2,1 x1,1 x3,2 x3,3 F 0 5 -25 25 10 Свободный член -1250 x1,3 1 0 1 0 0 30 x2,3 -1 1 0 -1 0 10 R3 0 -1 -1 1 1 5 x3,1 0 1 1 0 0 20 x2,2 1 0 0 1 0 5 R6 M 0 0 -1 2 -1 2 1 -2 1 -2 5 -10 В строке M имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдём в строке M максимальный по модулю отрицательный элемент – это -2 (столбец x3,2 ). Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является R3, а ведущий элемент: 1. 13 x1,2 x2,1 x1,1 x3,3 F 0 30 0 -15 Свободный член -1375 x1,3 1 0 1 0 30 x2,3 -1 0 -1 1 15 x3,2 0 -1 -1 1 5 x3,1 0 1 1 0 20 x2,2 1 1 1 -1 0 R6 M 0 0 0 0 0 0 0 0 0 0 В строке F имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдём в строке F максимальный по модулю отрицательный элемент – это -15. Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является x3,2 , а ведущий элемент: 1. x1,2 x2,1 x1,1 x3,3 F 0 15 -15 15 Свободный член -1300 x1,3 1 0 1 0 30 x2,3 -1 1 0 -1 10 x3,3 0 -1 -1 1 5 x3,1 0 1 1 0 20 x2,2 1 0 0 1 5 R6 M 0 0 0 0 0 0 0 0 0 0 В строке F имеются отрицательные элементы, это означает, что полученное решение не оптимально. Определим ведущий столбец. Для этого найдём в строке F максимальный по модулю отрицательный элемент – это x1,1 . Ведущей строкой будет та, для которой положительное отношение свободного члена к соответствующему элементу ведущего столбца минимально. Ведущей строкой является x3,1 , а ведущий элемент: 1. 14 x1,2 x2,1 x1,1 x3,3 F 0 30 15 15 Свободный член -1000 x1,3 1 -1 -1 0 10 x2,3 -1 1 0 -1 10 x3,3 0 0 1 1 25 x1,1 0 1 1 0 20 x2,2 1 0 0 1 5 R6 M 0 0 0 0 0 0 0 0 0 0 Так как исходной задачей был поиск минимума, оптимальное решение есть свободный член строки F, взятый с противоположным знаком. Найдено оптимальное решение (минимальные транспортные расходы): F=10 · 30 + 10 · 20 + 25 · 10 + 20 · 10 + 5 · 10 = 1000, при значениях переменных равных: x1,3 = 10 (количество продукции, доставленное от поставщика №1 к потребителю №3); x2,3 = 10 (количество продукции, доставленное от поставщика №2 к потребителю №3); x3,3 = 25 (количество продукции, доставленное от поставщика №3 к потребителю №3); x1,1 = 20 (количество продукции, доставленное от поставщика №1 к потребителю №1); x2,2 = 5 (количество продукции, доставленное от поставщика №2 к потребителю №2). Результат решения задачи можно представить в виде графа. 15 Пункты потребления Пункты производства 30 20 1 1 20 2 15 3 35 10 15 5 2 10 25 3 25 4. Решение транспортной задачи методом потенциалов Рассмотренную выше задачу можно решить путём некоторых преобразований таблицы перевозок, которая изображена в разделе Общая постановка задачи. Эти преобразования соответствуют переходу от одного плана перевозок к другому. Но, как и в общем случае, оптимальное решение ищется среди базисных решений. Следовательно, мы будем иметь дело только с базисными (или опорными) планами. Так как в данном случае ранг системы ограничений-уравнений равен т + п – 1, то среди всех тп неизвестных хij выделяется т + п – 1 базисных неизвестных, а остальные (m – 1)·(n – 1) неизвестных являются свободными. В базисном решении свободные неизвестные равны нулю. Обычно эти нули в таблицу не вписывают, оставляя соответствующие клетки пустыми. Таким образом, в таблице перевозок, представляющей опорный план, мы имеем т + п – 1 заполненных и (т – 1)·(п – 1) пустых клеток. Для контроля надо проверять, равна ли сумма чисел в заполненных клетках каждой строки таблицы перевозок запасу груза на соответствующей базе, а в каждом столбце – потребности заказчика [этим подтверждается, что данный план является решением системы (1.5)]. 5. Методы составления начального опорного плана Как и в общем случае, решение транспортной задачи начинается с отыскания первого опорного плана (исходного базиса). Мы рассмотрим три наиболее распространённых метода построения такого базиса. Суть этих методов состоит в том, что базисный план составляется последовательно, в несколько шагов (точнее, т + п – 1 шагов). На каждом из этих шагов заполняется одна клетка, при том так, что либо 16 полностью удовлетворяется один из заказчиков (тот, в столбце которого находится заполняемая клетка), либо полностью вывозится весь запас груза с одной из баз (с той, в строке которой находится заполняемая клетка). В первом случае мы можем исключить столбец, содержащий заполненную на этом шаге клетку, и считать, что задача свелась к заполнению таблицы с числом столбцов, на единицу меньшим, чем было перед этим шагом, но с тем же количеством строк и с соответственно изменённым запасом груза на одной из баз (на той базе, которой был удовлетворён заказчик на данном шаге). Во втором случае исключается строка, содержащая заполняемую клетку, и считается, что таблица сузилась на одну строку при неизменном количестве столбцов и при соответствующем изменении потребности заказчика, в столбце которого находится заполняемая клетка. Начиная с первоначально данной таблицы и повторив т + п – 2 раз описанный шаг, мы придём к «таблице», состоящей из одной строки и одного столбца (иначе говоря, из одной пустой клетки). Другими словами, мы пришли к задаче с одной базой и с одним потребителем, причём потребности этого единственного заказчика равны запасу груза на этой единственной базе. Заполнив последнюю клетку, мы освобождаем последнюю базу и удовлетворяем потребность последнего заказчика. В результате, совершив т + п – 1 шагов, мы и получим искомый опорный план. Различие методов отыскания первого опорного плана состоит в различии способов набора заполняемой клетки. Для рассматриваемого примера начальная транспортная таблица имеет вид: Пункты отправления Пункты назначения B1 A1 A2 A3 Потребности 20 B2 Запасы B3 10 20 30 30 10 20 5 15 10 5 45 30 15 25 70 В колонке справа, в нижней строке расположены соответственно объёмы груза в пунктах производства и пунктах потребления. Внутри таблицы в маленьких квадратах расположены тарифы перевозок единицы груза. В результате реализации начального опорного плана должны быть заполнены 17 т + п – 1 = 3 + 3 – 1 = 5 клеток с базисными переменными, а остальные (m – 1) · (n – 1) = (3 – 1) · (3 – 1) = 4 клетки с небазисными переменными не заполняются. В настоящем пособии рассматриваются три метода нахождения начального решения. 1. Диагональный метод, или метод северо-западного угла. При этом методе на каждом шаге построения первого опорного плана заполняется левая верхняя клетка (северо-западный угол) оставшейся части таблицы. При таком методе заполнение таблицы начинается с клетки неизвестного х11 и заканчивается в клетке неизвестного хmn, т. е. идёт как бы по диагонали таблицы перевозок. 2. Метод наименьшей стоимости. При этом методе на каждом шаге построения опорного плана первой заполняется та клетка оставшейся части таблицы, которая имеет наименьший тариф. Если такая клетка не единственная, то заполняется любая из них. Замечание. В диагональном методе не учитываются величины тарифов, в методе же наименьшей стоимости эти величины учитываются, и часто последний метод приводит к плану с меньшими общими затратами, хотя это и не обязательно. 3. Метод Фогеля. Суть его состоит в следующем: в распределительной таблице по строкам и столбцам определяется разность между двумя наименьшими тарифами. Отмечается наибольшая разность. Далее в строке (столбце) с наибольшей разностью заполняется клетка с наименьшим тарифом. Строки (столбцы) с нулевым остатком груза в дальнейшем в расчёт не принимаются. На каждом этапе загружается только одна клетка. Распределение груза производится, как и ранее. Рассмотрим каждый из этих методов. 6. Диагональный метод, или метод северо-западного угла Заполнение таблицы начинается с её северо-западного угла, т. е. клетки с неизвестным x11. Первая база А1 может полностью удовлетворить потребность первого заказчика В1 (a1 = 30, b1 = 20, a1 > b1). Полагая x11 = 20, вписываем это значение в клетку x11 и исключаем из рассмотрения первый столбец. B1 A1 B2 10 B3 20 30 30 20 30 A2 10 20 15 5 15 10 A3 20 0 5 45 18 25 70 10 На базе А1 остаётся изменённый запас а' = 10. В оставшейся новой таблице с тремя строками A1, A2, A3 и двумя столбцами B2, B3 северо-западным углом будет клетка для неизвестного х12. Первая база с запасом а'1 = 10 может полностью удовлетворить потребность второго заказчика В2 (а'1 = 10, b2 = 5, a'1 > b2). Полагаем x12 = 5, вписываем это значение в клетку х12 и исключаем из рассмотрения второй столбец. На базе А1 остаётся новый остаток (запас) a'' 1 = 5 . B1 A1 B2 10 20 B3 20 30 30 5 30 A2 10 5 20 15 5 A3 20 0 15 5 0 10 25 700 45 В оставшейся новой таблице с тремя строками A1, A2, A3 и одним столбцом B3 северо-западным углом будет клетка для неизвестного x13. Теперь третий заказчик B3 может принять весь запас с базы А1 (а"1 = 5, b3 = 45, а"1 < b3). Полагаем x13 = 5, вписываем это значение в клетку x13 и исключаем из рассмотрения первую строку. У заказчика из В3 осталась ещё не удовлетворённой потребность b'3 = 40. B1 A1 B2 10 20 20 5 30 A2 B3 30 30 5 10 0 20 15 5 A3 20 0 15 5 0 10 45 40 25 70 Теперь переходим к заполнению клеток для неизвестного х23 и х33 . Потребности B3 будут полностью удовлетворены базами А2 , и А3 . Исключаем третий столбец. 19 B1 A1 B2 10 20 B3 20 5 5 30 A2 30 10 5 20 0 15 15 0 25 70 0 10 25 45 0 5 0 0 20 15 A3 30 План составлен. Базис образован неизвестными x11, x12, x13, x23, x33. Правильность составленного плана легко проверить, подсчитав суммы чисел, стоящих в заполненных клетках по строкам и столбцам. Общий объём перевозок в тонно-километрах для этого плана составит: S1 = 20·10 + 5·20 + 5·30 + 15·20 + 25·10 = 1000. 7. Метод наименьшей стоимости При этом методе на каждом шаге построения опорного плана первой заполняется та клетка оставшейся части таблицы, которая имеет наименьший тариф. Если такая клетка не единственная, то заполняется любая из них. В данном случае заполнение таблицы начинается с клетки для неизвестного х31, для которого мы имеем значение с31 = 5, наименьшее из всех значений сij. Эта клетка находится на пересечении третьей строки и первого столбца, соответствующем третьей базе А3 и первому заказчику В1. Третья база А3 может полностью удовлетворить потребность первого заказчика В1 (а3 = 25, b1 = 20, a3 > b1). Полагая x31 = 20, вписываем это значение в клетку х31 и исключаем из рассмотрения первый столбец. На базе А3 остаётся изменённый запас а'3 = 5. B1 10 A1 B3 30 20 30 30 A2 A3 B2 10 20 15 5 20 20 0 15 5 10 45 25 70 5 В оставшейся новой таблице с тремя строками А1, А2, А3 и двумя столбцами В2, В3 имеются две клетки с наименьшим значением cij, где c22 = 10 и 20 c33 = 10. Выбираем (любую из них) клетку с c22 = 10. Вторая база А2 может полностью удовлетворить потребность второго заказчика В2 (а2 = 15 b2 = 5, a2 > b2. Полагая x22 = 5, вписываем это значение в клетку х22 и исключаем из рассмотрения второй столбец. На базе А2 остается изменённый запас а'2 = 10. B1 10 A1 B3 20 30 30 30 A2 A3 B2 10 20 5 5 20 20 0 15 5 0 15 10 25 70 5 10 45 Остался незаполненным один третий столбец. Его заполняем согласно имеющимся запасам на базах А1, А2, А3. В результате получаем x13 = 30, x23 = 10, x33 = 5. B1 10 A1 B3 20 30 30 30 A2 A3 B2 10 5 5 20 20 0 0 15 0 25 70 0 20 10 15 10 5 45 0 5 0 30 Общий объём перевозок в тонно-километрах для этого плана составит: S1 = 20·5 + 5·10 + 30·30 + 10·20 + 5·10 = 1300. Замечание. В диагональном методе не учитываются величины тарифов, в методе же наименьшей стоимости эти величины учитываются, и часто последний метод приводит к плану с меньшими общими затратами (что не имеет места в нашем примере). 21 8. Метод Фогеля Суть метода состоит в следующем: в распределительной таблице по строкам и столбцам определяется разность между двумя наименьшими тарифами. Отмечается наибольшая разность. Далее в строке (столбце) с наибольшей разностью заполняется клетка с наименьшим тарифом. Строки (столбцы) с нулевым остатком груза в дальнейшем в расчёт не принимаются. На каждом этапе заполняется только одна клетка. Для иллюстрации метода возьмём ту же начальную транспортную таблицу, что в методе наименьшей стоимости. B1 B2 10 A1 разность 10 B3 20 30 30 30 A2 10 20 10 15 5 A3 20 15 10 5 разность 25 70 45 5 5 5 10 Три наибольшие разности оказались одинаковыми и равными 10. Выбираем столбец В3 и заполняем клетку х33 с наименьшим тарифом 10 в этом столбце. Присвоим переменной х33 = 25. Запас на базе А3 полностью использован потребителем В3. Эта строчка исключается из расчёта. B1 B2 10 A1 20 30 30 30 A2 10 20 10 15 5 A3 20 разность разность 10 B3 15 10 5 25 70 25 45 20 5 5 5 0 10 Снова рассчитаем разности. Наибольшая разность получилась в столбце В1, наименьший тариф в этом столбце – у переменной х11. Присвоим ей значение х11 = 20. Спрос у базы В1 полностью удовлетворён. Столбец В1 исключаем из расчёта. 22 B1 A1 B2 10 разность 10 B3 20 30 30 20 30 A2 10 10 20 10 15 5 A3 20 0 15 25 70 25 45 20 5 разность 20 10 10 0 10 Снова рассчитаем разности. Из расчёта исключаем столбец В1 и строку А3. Все разности имеют одинаковое значение 10. В столбце В2 у переменной х22 наименьший тариф. Присвоим ей значение х22 = 5. Спрос у базы В2 полностью удовлетворён. Столбец В2 исключаем из расчёта. B1 A1 B2 10 разность 10 B3 20 30 30 20 30 A2 10 20 5 20 0 15 25 70 25 45 20 10 10 5 0 разность 10 15 5 A3 10 10 0 10 Остались незаполненными две клетки. Присваиваем переменной х13 = 10 (остаток неиспользованного запаса на А1). Присваиваем переменной х23 = 10 (остаток запаса на А2). B1 A1 B2 10 30 30 10 30 10 5 20 0 15 10 15 10 0 10 25 70 25 45 0 5 0 0 20 5 A3 разность 20 20 A2 разность 10 B3 10 10 23 0 Все базисные переменные в количестве пяти определены. Опорный план сформирован. Общий объём перевозок в тонно-километрах для этого плана составит: S1 = 20·10 + 5·10 + 10·30 + 10·20 + 25·10 = 1000. 9. Результаты вычислений всех методов Метод северо-западного угла: S = 1000 тонно-километров. Метод наименьшей стоимости: S = 1300 тонно-километров. Метод Фогеля: S = 1000 тонно-километров. Анализируя полученные нами результаты, можно прийти к выводу, метод северо-западного угла и метод Фогеля показали одинаково близкое приближение к оптимальному плану перевозок. Вместе с тем следует заметить, что в большинстве случаев метод северо-западного угла показывает худшее приближение к оптимальному решению, чем все рассмотренные методы. Данный пример взят для демонстрации неочевидности эффективности приближения к оптимальному решению у методов составления начального опорного плана. При использовании метода Фогеля время расчёта больше, чем у двух выше рассмотренных. Это вызвано тем, что на каждом шаге приходится заново искать разности между минимальными элементами в строках и столбцах. Однако это время компенсируется при дальнейшем поиске оптимального решения по методу потенциалов. Уменьшение количества дальнейших расчётов обусловлено тем, что метод Фогеля, как правило, даёт не только начальное опорное решение, но и оптимальное решение. Метод потенциалов в этом случае нужен фактически только для подтверждения, что получено действительно оптимальное решение. По этой причине метод Фогеля наиболее предпочтителен для решения транспортной задачи. После получения начального решения (опорного плана) для получения оптимального плана перемещения груза используется итерационный алгоритм, основу которого составляют понятия потенциала и цикла. 24 10. Понятие цикла Для перехода от одного базиса к другому при решении транспортной задачи используются так называемые циклы. Циклом пересчёта в таблице перевозок называется последовательность неизвестных, удовлетворяющая следующим условиям: 1. Одно из неизвестных последовательности свободное, а все остальные – базисные. 2. Каждые два соседних в последовательности неизвестных лежат либо в одном столбце, либо в одной строке. 3. Три последовательных неизвестных не могут находиться в одном столбце или в одной строке. 4. Если, начиная с какого-либо неизвестного, мы будем последовательно переходить от одного к следующему за ним неизвестному, то через несколько шагов мы вернёмся к исходному неизвестному. Второе условие означает, что у двух соседних неизвестных в цикле либо первые, либо вторые индексы одинаковы. Если каждые два соседних неизвестных цикла соединить отрезком прямой, то будет получено геометрическое изображение цикла – замкнутая ломаная из чередующихся горизонтальных и вертикальных звеньев, одна из вершин которой находится в свободной клетке, а остальные – в базисных клетках. Можно доказать, что для любой свободной клетки таблицы перевозок существует один и только один цикл, содержащий свободное неизвестное из этой клетки, и что число вершин в цикле всегда чётно. Пусть теперь мы имеем некоторую свободную клетку с соответствующим ей циклом. Если мы изменим значение свободного неизвестного, увеличив его на некоторое число х, то, переходя последовательно от одной вершины цикла к другой, мы должны будем в силу неизменности сумм по строкам и по столбцам поочередно уменьшать и увеличивать значения неизвестных в цикле на то же число х. Очевидно, если снабдить вершины цикла поочередно знаками «+» и «–», приписав вершине в свободной клетке знак «+», то можно сказать, что в вершинах со знаком «+» число х прибавляется к прежнему значению неизвестного, находящегося в этой вершине, а в вершинах со знаком «–» это число х вычитается из прежнего значения неизвестного, находящегося в этой вершине. Если в качестве х выбрать наименьшее из чисел, стоящих в вершинах , снабженных знаком «–», то по крайней мере одно из прежних базисных не25 известных примет значение нуль, и мы можем перевести его в число свободных неизвестных, сделав вместо него базисным то неизвестное, которое было свободным. Выбор в качестве х минимальное среди чисел, стоящих в отрицательных вершинах цикла, обеспечивает допустимость нового базиса. Если минимальное значение среди базисных неизвестных, стоящих в отрицательных вершинах цикла, принимается не в одной отрицательной вершине, то свободной оставляют только одну из них, а в других клетках с тем же минимальным значением пишут нули. В этом случае новое базисное решение будет вырождённым. Может случиться, что и само минимальное значение среди чисел в отрицательных клетках равно нулю. Тогда преобразование таблицы перевозок сведётся к перестановке этого нуля в свободную клетку. Значения всех неизвестных при этом остаются неизменными, но решения считаются различными, так как различны базисы. Оба решения вырождены. Описанное выше преобразование таблицы перевозок, в результате которого преобразуется базис, называется пересчётом по циклу. Заметим, что неизвестные, не входящие в цикл, этим преобразованием не затрагиваются, их значения остаются неизменными, и каждое из них остаётся либо в группе базисных, либо в группе свободных неизвестных, как и до пересчёта. Выясним теперь, как пересчет по циклу влияет на общий объём затрат на перевозки и при каком условии эти затраты становятся меньше. Пусть хpq – некоторое свободное неизвестное, для которого мы построили цикл и осуществили пересчёт по циклу с некоторым числом х. Если вершине цикла, находящейся в i-й строке и j-м столбце таблицы перевозок, приписан знак «+», то значение неизвестного хij, находящегося в этой вершине, увеличивается на х, что в свою очередь вызывает увеличение затрат на сij х, где сij – тариф, соответствующий этой клетке; если же указанной вершине приписан знак «–», то значение неизвестного хij уменьшается на х, что вызывает уменьшение затрат на сijх. Сложим тарифы, соответствующие положительным вершинам цикла, и вычтем из этой суммы сумму тарифов, соответствующих отрицательным вершинам цикла; полученную разность Spq назовём алгебраической суммой тарифов для данного свободного неизвестного хpq. Подсчёт алгебраической суммы тарифов можно истолковать и так: припишем тарифам те же знаки, которые приписаны соответствующим вершинам цикла, тогда алгебраическая сумма тарифов равна сумме таких тарифов со знаком («относительных тарифов»). Теперь, очевидно, мы можем заключить, что в целом при пересчёте по циклу, соответствующему свободному неизвестному хpq общий объём затрат на перевозки изменится на произведение алгебраической суммы тарифов на х, т. е. 26 на величину Spqх. Следовательно, если алгебраическая сумма тарифов для некоторого свободного неизвестного хpq отрицательна (Spq < 0), то пересчёт по циклу, соответствующему этому неизвестному, приводит к уменьшению общей суммы затрат на реализацию плана перевозок. Если же алгебраическая сумма тарифов положительна (Spq > 0), то пересчёт по соответствующему циклу приведёт к увеличению общей суммы затрат. И, наконец, если алгебраическая сумма тарифов равна нулю (Spq = 0), то пересчёт по соответствующему циклу не изменит общую сумму затрат (два различных базисных плана требуют одинаковых затрат на их реализацию). Рассмотрим цикл на примере в таблице перевозок, составленной по диагональному методу. B1 A1 B2 10 - 20 20 5 30 + 20 5 30 A2 B3 10 15 15 5 + A3 20 15 10 - 25 45 5 30 25 70 Свободной (небазисной переменной) х31 соответствует цикл х31, х33, х13, х11, х31. В указанном выше цикле для свободного неизвестного х31 получим: старые значения: х31 = 0, х33 = 25, х13 = 5, х11 = 20; новые значения: х´31 = х, х'33 = 25 – х, x´13 = 5 + х, х'11 = 20 – х. Так, в рассмотренном выше цикле имеем отрицательные вершины х33 и х11; следовательно, выбрав х = min{20;25} = 20, мы получаем: старые значения х31 = 0, х33 = 25, х13 = 5, х11 = 20; новые значения: х´31 = 20, х'33 = 5, x´13 = 25, х'11 = 0. Переменная х31 стала базисной, а переменная х11 небазисной, т. е. вместо прежнего базисного решения получаем новое базисное решение: B1 10 A1 B3 20 5 30 30 25 30 A2 A3 B2 10 20 15 15 5 20 20 15 10 5 45 5 27 25 70 Для цикла х31, х33, х13, х11, х31 в рассмотренной задаче алгебраическая сумма тарифов: S21 = c31 – c33 + c13 – c11 = 5 –10 + 30 –10 = 15 > 0. Значит, пересчёт по этому циклу не снижает расходы. И действительно, осуществив такой пересчёт, мы получаем план, по которому объём перевозок в тонно-километрах составит: S2 = 20·5 + 5·10 + 15·20 + 25·30 +5·20 = 1300. Тогда как по исходному плану он составил S1 = 1000. Имеем увеличение объёма перевозок на 300 тонно-километров, что и следовало ожидать, так как алгебраическая сумма тарифов в данном случае равна 15, а пересчёт по циклу осуществляется с помощью числа х = 20 (изменение затрат равно -15·20 = 300). Теперь рассмотрим цикл на примере в таблице перевозок, составленной по методу наименьшей стоимости. B1 A1 A2 B2 B3 10 + 20 30 10 30 5 A3 15 5 45 5 30 15 10 5 - 20 20 30 20 10 + 25 70 Неизвестному х11 соответствует цикл х11, х13, х33, х31, х11. В указанном выше цикле для свободного неизвестного х11 получим: старые значения: х11 = 0, х13 = 30, х33 = 5, х13 = 20; новые значения: х´11 = х, х'13 = 30 – х, x´33 = 5 + х, х'31 = 20 – х. Так, в рассмотренном выше цикле имеем отрицательные вершины х13 и х31; следовательно, выбрав х = min{20;30} = 20, мы получаем: старые значения х11 = 0, х13 = 30, х33 = 5, х13 = 20; новые значения: х´11 = 20, х'13 = 10, x´33 = 25, х'31 = 0, т. е. вместо прежнего базисного решения получаем новое базисное решение: B1 A1 B2 10 B3 20 20 10 5 5 A3 20 30 10 30 A2 30 20 15 10 15 10 25 45 5 28 25 70 Для цикла х11, х13, х33, х31, х11 в рассмотренной задаче алгебраическая сумма тарифов: S21 = c11 – c13 + c33 – c31 = 10 –30 + 10 –5 = -15 < 0. Значит, пересчёт по этому циклу снижает расходы. И действительно, осуществив такой пересчёт, мы получаем план, по которому объём перевозок в тонно-километрах составит: S2 = 20·10 + 10·30 + 5·10 +20·10 + 25·10 = 1000. Тогда как по исходному плану он составил S1 = 1300: S1 = 20·5 + 5·10 + 15·20 + 25·30 +5·20 = 1300. Имеем снижение объёма перевозок на 300 тонно-километров, что и следовало ожидать, так как алгебраическая сумма тарифов в данном случае равна 15, а пересчёт по циклу осуществляется с помощью числа х = 20 (изменение затрат равно -15·20 = -300). 11. Метод потенциалов Вычисление алгебраической суммы тарифов для каждого из свободных неизвестных можно производить без построения соответствующего цикла, пользуясь так называемыми потенциалами. Припишем каждой базе Ai некоторое число иi и каждому потребителю Вj – некоторое число νj: Ai → ui (i = 1,2,..., m), B j →ν j ( j = 1, 2,..., n) , так что ui + ν i = cij , (12.1) где cij – тарифы, соответствующие клеткам, заполненным базисными неизвестными. Эти числа ui и νj называются потенциалами соответствующих баз и потребителей. Зная потенциалы, легко вычислить алгебраическую сумму тарифов. Действительно, если в алгебраической сумме тарифов по циклу, соответствующему свободному неизвестному xpq, заменить тарифы базисных клеток их выражениями через потенциалы по формулам (12.1), то в силу чередования знаков при вершинах цикла все потенциалы, кроме ир и νq, сократятся, и мы получим: Spq = cpq – (up + νq). Для базисных клеток сумма потенциалов строки и столбца, в которых находится эта клетка, равна тарифу, соответствующему этой клетке; если же клетка для неизвестного xpq свободная, то сумму потенциалов 29 up + νq = c´pq (12.2) называют косвенным тарифом этой клетки. Следовательно, алгебраическая сумма тарифов для свободной клетки xpq равна разности её настоящего («истинного») и косвенного тарифов: Spq = cpq – c´pq. (12.3) Из (12.3) следует, что если косвенный тариф для данной свободной клетки больше её истинного тарифа, то алгебраическая сумма тарифов по циклу, соответствующему этой клетке, будет отрицательна; если же косвенный тариф меньше истинного, то алгебраическая сумма тарифов положительна, и, наконец, если косвенный тариф равен истинному, то алгебраическая сумма тарифов равна нулю. Потенциалы можно найти из системы равенств (12.1), рассматривая их как систему т + п – 1 уравнений с т + п неизвестными. Так как неизвестных здесь на единицу больше, чем уравнений, то по крайней мере один из потенциалов мы можем выбрать произвольно, положив, например, u1 = 0; тогда остальные потенциалы легко определяются из уравнения (12.1). Применим метод потенциалов для трёх рассмотренных выше опорных планов. Для плана, полученного по диагональному методу, имеем B1 A1 B2 10 20 20 5 30 A2 B3 30 30 u1 5 10 20 15 u2 15 5 A3 20 15 25 u3 70 25 45 5 ν1 10 ν2 u1 + ν 1 = 10 u1 + ν 2 = 20 . u1 + ν 3 = 30 u + ν = 20 3 2 u 3 + ν 3 = 10 30 ν3 Система содержит пять уравнений с шестью неизвестными. Выбирая произвольно значение и1, находим последовательно из первых трёх уравнений значения ν1 = 10 – u1, ν2 = 20 – u1 , ν3 = 30 – u1, затем из четвёртого уравнения – u2 = 30 – ν3 , из пятого уравнения – u3 = 10 – ν3. Положив, например, u1 = 0, получаем значения потенциалов: u1 = 0; ν1 = 10; ν2 = 20; ν3 = 30; u2 = -10; u3 = -20. Найдём теперь косвенные тарифы для свободных клеток и сравним их с истинными тарифами: c '31 = u3 + ν 1 = −10 < c31 (30), c '21 = u2 + ν 1 = 0 < c21 (30), c '32 = u3 + ν 2 = 0 < c32 (15), c '22 = u2 + ν 2 = 10 = c22 (10). Так как все косвенные тарифы не больше истинных тарифов, то мы получили оптимальный план. В данном случае начальный план, полученный по диагональному методу, представляет собой и оптимальный план. Произведём аналогичные вычисления для плана, полученного по методу наименьшей стоимости. B1 10 A1 B3 20 30 30 10 5 5 20 20 ν1 20 15 10 5 45 ν2 u2 15 10 5 u1 30 30 A2 A3 B2 u3 25 u1 70 ν3 u1 + ν 3 = 3 0 u 2 + ν 2 = 1 0 u2 + ν 3 = 20 . u + ν = 5 1 3 u 3 + ν 3 = 1 0 Положив аналогично u1 = 0, получаем значения потенциалов: u1 = 0; ν3 = 30; u2 = -10; ν2 = 20 u3 = -20; ν1 = 25. Найдём косвенные тарифы для свободных клеток и сравним их с истинными тарифами: 31 c '11 = u1 + ν 1 = 25 > c11 (10), c '12 = u1 + ν 2 = 20 = c12 (20), c '21 = u2 + ν 1 = 15 < c21 (30), c '32 = u3 + ν 2 = 0 < c32 (15). Для клетки с неизвестными х11 косвенный тариф больше истинного. Следовательно , для них мы будем иметь отрицательные алгебраические суммы тарифов: S11 = c11 − c '11 = 10 − 25 = −15 . Это означает, что стоимость перевозки груза можно уменьшить (создать новый план перевозки). Свободная переменная х11 должна быть переведена в базис. Для определения исключаемой из базиса переменной необходимо построить цикл с началом в клетке с х11. Цикл (1,1), (1,3), (3,3), (3,1), (1,1) – вершины цикла помечены значками плюс (+) и минус (-). B1 10 + 30 A1 A2 A3 B2 B3 20 30 10 5 20 20 5 - 10 15 5 45 5 ν1 ν2 30 u1 - 30 20 u2 15 10 u3 + 25 u1 70 ν3 В указанном выше цикле для свободного неизвестного х11 получим: старые значения: х11 = 0, х13 = 30, х33 = 5, х13 = 20; новые значения: х´11 = х, х'13 = 30 – х, x´33 = 5 + х, х'31 = 20 – х. Так, в рассмотренном выше цикле имеем отрицательные вершины х13 и х31; следовательно, выбрав х = min{20;30} = 20, мы получаем: старые значения х11 = 0, х13 = 30, х33 = 5, х13 = 20; новые значения: х´11 = 20, х'13 = 10, x´33 = 25, х'31 = 0, т. е. вместо прежнего базисного решения получаем новое базисное решение: 32 B1 A1 B2 10 B3 20 20 10 5 5 A3 20 ν1 20 15 10 25 45 ν2 u2 15 10 5 u1 30 10 30 A2 30 u3 25 u1 70 ν3 S2 = 20·10 + 10·30 + 5·10 +10·20 + 25·10 = 1000. Полученное решение было улучшено на 1300 – 1000 = 300 тоннокилометров. Продолжим вычисления подобно вышеописанному, определим новые потенциалы. u1 + ν 1 = 10 u1 + ν 2 = 20 u1 + ν 3 = 30 . u + ν = 20 3 2 u 3 + ν 3 = 10 Положив, например, u1 = 0, получаем значения потенциалов: u1 = 0; ν1 = 10; ν2 = 20; ν3 = 30; u2 = -10; u3 = -20. Найдём теперь косвенные тарифы для свободных клеток и сравним их с истинными тарифами: c '12 = u1 + ν 2 = 20 = c12 (20), c '21 = u2 + ν 1 = 0 < c21 (30), c '31 = u3 + ν 1 = −10 < c31 (5), c '32 = u3 + ν 2 = 0 < c22 (10). Так как все косвенные тарифы не больше истинных тарифов, то мы получили оптимальный план. S2 = 20·10 + 10·30 + 5·10 + 10·20 + 25·10 = 1000. Посмотрим, как данный метод улучшит начальное решение, полученное по методу Фогеля. 33 B1 A1 B2 10 B3 20 20 10 5 20 20 15 10 5 A3 30 10 30 A2 30 15 10 25 45 5 25 70 Начальное решение идентично начальному решению, полученному по методу северо-западного угла. Таким образом, все дальнейшие вычисления по получению оптимального решения будут идентичны вычислениям, проведённым после применения метода северо-западного угла. Поэтому в данном случае нет необходимости в проведении расчётов по улучшению начального решения, полученного по методу Фогеля. 12. Результаты оптимизации базовых решений Метод северо-западного угла: S = 1000 ед. Метод наименьшей стоимости: S = 1000 ед. Метод Фогеля: S = 1000 ед. Анализ решений позволяет сделать следующие выводы. 1. Улучшение различных опорных планов приводит к одинаковому оптимальному решению. 2. Метод северо-западного угла может привести к более близкому к оптимальному решению, чем метод наименьшей стоимости. 3. Метод Фогеля имеет существенное преимущество перед другими, потому что даёт возможность найти опорный план, максимально приближенный к оптимальному. 13. Открытая транспортная задача Выше рассматривалась закрытая модель транспортной задачи с правильным балансом, когда выполняется условие (1.3). В случае выполнения (1.4) (открытая модель) баланс транспортной задачи может нарушаться в 2-х направлениях: 1. Сумма запасов в пунктах отправления превышает сумму поданных заявок (транспортная задача с избытком запасов): 34 ∑ a > ∑b i j (где i = 1,..., m; j = 1,..., n) . 2. Сумма поданных заявок превышает наличные запасы (транспортная задача с избытком заявок): ∑ a < ∑b i j (где i = 1,..., m; j = 1,..., n) . Рассмотрим последовательно эти два случая. Транспортная задача с избытком запасов Сведем её к ранее рассмотренной транспортной задаче с правильным балансом. Для этого, сверх имеющихся n пунктов назначения В1, В2, ... , Вn, введём ещё один, фиктивный пункт назначения Вn+1, которому припишем фиктивную заявку, равную избытку запасов над заявками bn+1 = ∑ ai − ∑ b j (где i = 1,..., m; j = 1,..., n) , а стоимость перевозок из всех пунктов отправления в фиктивный пункт назначения bn+1 будем считать равной нулю. Введением фиктивного пункта назначения F с его заявкой bn+1 мы сравняли баланс транспортной задачи, и теперь её можно решать как обычную транспортную задачу с правильным балансом. Положим в пунктах производства A, B, C производится продукция соответственно в количестве 100 ед., 200 ед., 300 ед., которая потребляется в пунктах D, E в количестве соответственно 150 ед., 350 ед. В этом случае для фиктивного пункта назначения недостающий объём потребления равен (100 + 200 + 300) – (150 + 350) = 100 ед. Транспортная задача становится сбалансированной. Её начальное решение имеет вид: D A E 1 F 2 0 100 100 B 4 50 C 3 200 150 5 150 0 4 200 350 0 100 100 300 600 У поставщика C не востребовано 100 ед. продукции. 35 Транспортная задача с избытком заявок Эту задачу можно свести к обычной транспортной задаче с правильным балансом, если ввести фиктивный пункт отправления F с запасом ат+1, равным недостающему запасу, и стоимость перевозок из фиктивного пункта отправления во все пункты назначения принять равной нулю. Положим в пунктах производства A, B, C производится продукция соответственно в количестве 100 ед., 200 ед., 100 ед., которая потребляется в пунктах D, E в количестве соответственно 150 ед., 350 ед. В этом случае для фиктивного пункта производства недостающий объём составляет (150 + 350) – (100 + 200 + 100) = 100 ед. Транспортная задача становится сбалансированной. Её решение имеет вид: D A B E 1 2 100 100 4 50 3 5 C 200 150 4 100 100 0 F 150 0 100 350 100 500 Потребитель E не получит продукцию в объёме 100 ед. 14. Многопродуктовая транспортная задача Это частный тип транспортных задач, при котором вместо одного вида товара их может быть несколько. Они могут отличаться как по стоимости перевозок, так и по конечному получателю, т. е. разные продукты с одной базы могут идти к разным потребителям или, наоборот, один потребитель может нуждаться в товарах с разных баз. Такие задачи лучше всего разбить на однопродуктовые подзадачи и решать отдельно одним из вышеприведённых методов. А после получения частных решений объединить результат в одну таблицу. Рассмотрим решение задачи при перемещении трёх видов продукции М1, М2, М3 между двумя поставщиками А1, А2 и двумя потребителями В1 и В2. 36 Поставщик А1 может поставить продукцию М1, М2 соответственно в количестве 300 ед. и 100 ед. Поставщик А2 может поставить продукцию М3, М1 соответственно в количестве 100 ед. и 200 ед. Потребителю В1 требуется продукция М2, М1 в количестве 100 ед. и 400 ед., а потребителю В2 требуется продукция М1, М3 в количестве 100 ед. и 100 ед. Для запрещения поставки продукции несоответствующего вида необходимо в точке пересечения продукций разного вида назначить тариф на порядок больше, чем у совпадающих видов. В данном случае назначаем тариф, равный 1000. Начальный опорный план имеет вид: В1 М2 1000 М1 А1 А2 М1 М1 10 М1 М3 1000 20 5 1000 1000 1000 1000 1000 1000 15 1000 25 5 1000 М2 М3 В2 100 400 100 300 100 100 200 100 Решение это транспортной задачи приводит к следующему оптимальному плану перемещения продукции: В1 М1 М2 1000 А1 М2 М3 А2 М1 5 В2 М1 10 300 1000 М1 М3 1000 20 1000 1000 1000 15 100 1000 1000 100 1000 100 25 100 400 5 100 100 37 1000 100 300 100 100 200 Решение можно представить в виде графа: 15. Другие типы задач Алгоритм и методы решения транспортной задачи могут быть использованы при решении некоторых экономических задач, не имеющих ничего общего с транспортировкой груза. В этом случае величины тарифов сч имеют различный смысл, в зависимости от конкретной экономической задачи. К таким задачам относятся следующие: • оптимальное закрепление за станками операций по обработке деталей. В них сij является таким экономическим показателем, как производительность. Задача позволяет определить, сколько времени и на какой операции нужно использовать каждый из станков, чтобы обработать максимальное количество деталей. Так как транспортная задача требует нахождения минимума, то значения сij берутся с отрицательным знаком; • оптимальные назначения, или проблема выбора. Имеется m механизмов, которые могут выполнять т различных работ с производительностью сij. Задача позволяет определить, какой механизм и на какую работу надо назначить, чтобы добиться максимальной производительности; • задача о сокращении производства с учётом суммарных расходов на изготовление и транспортировку продукции; • увеличение производительности автомобильного транспорта за счёт минимизации порожнего пробега. Уменьшение порожнего пробега сократит количество автомобилей для перевозок, увеличив их производительность; • решение задач с помощью метода запрещения перевозок. Используется в том случае, если груз от некоторого поставщика по каким-то причинам не может быть отправлен одному из потребителей. Данное ограничение можно учесть, присвоив соответствующей клетке достаточно большое значение стоимости, тем самым в эту клетку не будут производиться перевозки. 38 15.1 Задача о назначениях Это задача, когда требуется распределить «m» работ по «n» станкам. Работа на станке связана с затратами « cij », где i – номер работы, j – номер станка. Необходимо так распределить работу по станкам, чтобы получился минимум суммарных затрат. Эту задачу можно рассматривать как частный случай транспортной задачи. Здесь предложение в каждом исходном пункте равно 1. Аналогично спрос в каждом пункте назначения равен 1. Если какую-либо работу нельзя выполнить, то соответствующая стоимость cij берётся равной очень большому числу «М». Виды работ Структура задачи о назначениях: Станки 3 4 c13 c14 c23 c24 … … cm3 cm 4 1 1 1 2 1 c11 c12 2 c21 c22 … … … m cm1 cm 2 1 1 … … … … … 1 n c1n c2n … cmn 1 1 1 1 1 Прежде чем решать задачу, необходимо ликвидировать дисбаланс, т. е. довести таблицу до состояния m = n . Задача о назначениях записывается следующим образом: 0 − j -я работа не выполняется на i -ом станке xij = 1 − j -я работа выполняется на i -ом станке n m z = ∑∑ cij xij → min . i =1 j =1 Ограничения: n ∑x i =1 ij = 1; m ∑x j =1 ij = 1 ; xij = 0 или 1. Специфическая структура задачи о назначениях позволяет разработать метод решения, отличный от предыдущих. Оптимальное решение задачи о назначениях не изменится, если к любой строке или столбцу матрицы стоимостей прибавить или вычесть постоянную величину. Этот факт доказывается следующим образом. Если pi и q j вычита- 39 ются из i-ой строки и j-го столбца, то новые стоимости имеют вид cij′ = cij − pi − q j . Новая целевая функция имеет вид: z′ = ∑∑ cij′ xij = ∑∑ ( cij − pi − q j ) xij = ∑∑ cij xij − ∑ pi ∑ xij − ∑ q j ∑ xij . n m n i =1 j =1 m n i =1 j =1 Поскольку m i =1 j =1 n m i =1 j =1 n n m m i =1 i =1 j =1 j =1 ∑ xij = ∑ xij = 1 , то z′ = z − const . Отсюда следует, что минимизация z′ приводит к тому же решению, как и z . Это соображение показывает, что если можно построить новую матрицу cij с нулевыми элементами и эти элементы или их подмножество соответствуют допустимому решению, то такое решение будет оптимальным, поскольку стоимость не может быть отрицательной. Виды работ Пример 1. Имеются три вида работ и три станка, на которых выполняется работа. Затраты за использование этих станков на каждый вид работ представлен в таблице. Необходимо выполнить все работы при минимальных затратах. Станки 1 2 3 6 12 15 1 1 12 13 5 2 1 8 10 11 3 1 1 1 1 cij′ = cij′ = 1 0 7 0 1 2 3 2 6 8 2 3 9 02 3 p1 = 6 р2 = 5 р3 = 8 1 2 3 1 0 4 9 2 7 6 0 3 0 0 3 q3 = 2 40 Квадратами помечены элементы, соответствующие допустимому (оптимальному) назначению со стоимостью 6 + 5 + 10 = 21. Первая работа выполняется на первом станке, вторая работа выполняется на третьем станке, третья работа выполняется на втором станке. Допустимое решение зачастую получить не столь просто, как в предыдущем примере. Поэтому разработаны специальные правила для нахождения оптимального решения. Пример 2. Имеются четыре вида работ и четыре работника, которые согласны выполнить работы за назначенную ими оплату. Необходимо выполнить все работы при минимальных затратах. 1 2 11 6 11 1 2 3 4 2 6 10 7 10 3 8 13 13 11 4 5 12 9 8 1 2 3 4 1 0 4 6 3 p1 = 2 2 1 0 3 2 p2 = 10 3 0 1 7 3 p3 = 6 4 3 2 3 0 p4 = 8 1 2 3 4 1 0 4 3 3 2 1 0 0 2 3 0 1 4 3 4 3 2 0 0 q3 = 3 В этом случае невозможно найти допустимое решение, состоящее из 0. Дальнейшая процедура состоит в проведении минимального числа прямых через некоторые строки и столбцы с тем, чтобы все нули оказались вычеркнутыми. 41 2 3 4 1 1 0 4 3 3 2 2 0 0 2 3 0 1 4 3 4 3 2 0 0 На следующем шаге выбирается наименьший невычеркнутый элемент «1». Этот элемент вычитается из каждого невычеркнутого элемента и прибавляется к каждому элементу, стоящему на пересечении проведённых прямых. 1 2 3 4 1 0 3 2 2 2 2 0 0 2 3 0 0 3 2 4 4 2 0 0 Квадратами помечены элементы, соответствующие допустимому (оптимальному) назначению со стоимостью 2 + 13 + 7 + 8 = 30. Первый работник выполняет первую работу, второй работник выполняет третью работу, третий работник выполняет вторую работу, четвёртый работник выполняет четвёртую работу. Следует заметить, что если на последнем шаге оптимальное решение не достигнуто, то процедуру проведения прямых следует повторять до получения допустимого решения. 15.2 Задача с неразличимыми поставщиками и потребителями При постановке транспортной задачи присутствуют поставщики и потребители продукции. При этом подразумевается, что продукция перемещается от поставщика к потребителю. Вместе с тем возможны и другие маршруты перемещения продукции. Например, продукция от одного поставщика может перемещаться к другому поставщику, от потребителя к потребителю. Таким образом, при таком перемещении продукции поставщик и потребитель выступают сразу в двух ролях, то есть нет различий между поставщиками и потребителями. 42 Для моделирования такой схемы перемещения вводится понятие буфера В. Буфер – это количество всей перевозимой продукции. Так, например, если имеются три поставщика А, B, C, которые поставляют продукцию в количестве соответственно 100 ед., 300 ед., 400 ед., то величина буфера должна быть равна B = 100 ед. + 300 ед. + 400 ед. = 800 ед. Такой же буфер должен присутствовать и у потребителя. При наличии двух потребителей D и E с объёмами потребления соответственно 250 ед. и 550 ед. B = 250 ед. + 550 ед. = 800 ед. Для отражения затрат на перемещение единицы продукции между всеми участниками транспортной схемы вводятся так называемые тарифы на перемещение. В данной рассматриваемой задаче естественно положить тариф на перемещение внутри каждого узла, равным нулю. Таким образом, при заданных условиях начальная транспортная таблица будет иметь вид: A B 0 A C 6 D 8 E 10 11 100 + 800 6 B 0 7 11 12 300 + 800 8 C 7 0 6 5 400 + 800 10 D 11 6 0 15 800 11 E 12 5 15 0 800 800 800 800 250 + 800 550 + 800 Решение это транспортной задачи приводит к следующему оптимальному плану перемещения продукции: A A B C D E B 0 C 6 D 8 800 E 10 11 100 + 800 100 6 0 7 800 8 11 150 7 0 11 300 + 800 150 6 800 10 12 5 400 + 800 400 6 0 15 800 800 11 800 12 800 5 800 43 15 250 + 800 0 800 550 + 800 800 Результаты расчёта можно представить в виде графа: Пункты производства и потребления 100 Пункты производства и потребления 100 А D 250 150 300 В 150 400 400 С E 550 Как видно из графа, перемещений продукции между поставщиками или между потребителями не наблюдается. Как не трудно понять, это связано с соотношением тарифов между узлами транспортной сети. Изменим тарифы перевозки. A A B C D E B 0 C 6 D 20 E 8 6 100 + 800 6 0 1 11 6 300 + 800 20 1 0 18 4 400 + 800 8 6 18 0 3 800 6 6 4 3 0 800 800 800 800 250 + 800 550 + 800 Решение это транспортной задачи с изменёнными тарифами приводит к следующему оптимальному плану перемещения продукции: 44 A A B C D E B 0 C 6 D E 20 800 8 6 100 + 800 100 6 0 800 20 1 150 1 11 300 + 800 150 0 18 650 8 6 6 4 400 + 800 550 18 0 3 800 800 6 800 6 800 4 800 3 250 + 800 0 800 550 + 800 800 Результаты расчёта представим в виде графа: Из графа видно, что поставщик B поставляет продукцию потребителю E транзитом через поставщика C. В данном случае поставщик C выступает в роли потребителя. 15.3 Транспортная модель с промежуточными пунктами Используя понятие буфера, рассмотренное выше, можно моделировать большое количество транспортных схем перевозки продукции. На практике во многих случаях продукция от поставщика попадает к потребителю через транзитные пункты. Такая схема доставки продукции является более общей, чем непосредственная транспортировка продукции от поставщика потребителю. Разработка схемы перевозки с промежуточными пунктами для различных практических случаев осуществляется на основе однообразных логических построений. Для иллюстрации метода решения таких задач рассмотрим конкрет45 ный пример транспортной задачи с двумя пунктами производства, одним транзитным пунктом и тремя пунктами потребления. Исходные данные для задачи представим в виде графа: В рассматриваемой задаче имеются: пять пунктов отправления продукции (A, B, C, D, F), четыре пункта назначении (C, D, F, E) и три транзитных пункта (C, D, F), через которые проходит транзитом продукция в объёме (100 + 200) = 300 ед. Поэтому в пункте D может присутствовать (300 + 50) = 350 ед., в пункте F (300 + 100) = 400 ед . Значения тарифов перемещения продукции изображены над дугами, соединяющими пункты транспортной сети. Для моделирования невозможности перемещения между пунктами, не соединёнными дугами, тарифы перевозок для них принимаются на несколько порядков больше, чем остальные тарифы. В этом примере их можно принять равными 100. Тариф перевозки внутри самого пункта принимается равным нулю. Метод решение этой задачи ничем не отличается от ранее рассмотренных задач. Оптимальный опорный план имеет следующий вид: C A B D 1 F 100 E 100 100 100 100 2 100 100 100 200 200 0 C D F 3 8 12 300 300 100 0 50 100 300 2 100 300 250 0 50 + 300 2 150 100 + 300 46 100 150 150 300 1200 Это решение представим в виде графа: 100 А D 10 0 300 С 250 F 100 150 0 20 200 50 В E 150 Из графа видно, что вся продукция (300 ед.) из транзитного пункта C поступает в пункт потребления D, в котором остаётся потребляемое количество 50 ед. Остаток в объёме 250 ед. поступает в пункт F, из которого 100 ед. остаются, оставшиеся 150 ед. идут на потребление в пункт E. Таким образом, используя понятия транзитного пункта и буфера, а также варьируя значениями тарифов перевозки, можно смоделировать и решить многочисленные транспортные задачи. 15.4 Модель управления запасами Предприятие производит продукцию, спрос на которую отмечается в течении четырёх месяцев. Он оценивается соответственно в 150, 200, 200, 150 единиц изделий в месяц. По технологическим причинам предприятие может выпускать в каждом месяце соответственно 200, 150, 150, 200 единиц изделий. Как видно, производство и спрос не совпадают. За непоставку продукции предприятие будет платить штраф в размере 2 рублей за одно изделие. За перепроизводство предприятие вынуждено хранить продукцию на складе. При этом расходы на хранение составляют 0,5 рубля за одно изделие в течение месяца. Предприятие планирует разработать оптимальный план производства продукции в течение этих четырёх месяцев. Для этой цели может быть использовано решение транспортной задачи. В этом случае элементы транспортной задачи имеют другие названия. Алгоритм решения при этом не изменяется. Так, пункты отправления продукции заменяются на периоды производства, пункт назначения становится периодом потребления, предложение в пункте отправления заменяется объёмом производства за период, спрос в пункте потребления 47 заменяется на объём реализации продукции за период и, наконец, тариф перемещения продукции представляет собой стоимость единицы продукции, которая рассчитывается как сумма цены продукции, затрат на хранение и штрафа за невыполнение условий поставки. Так, например, при производстве продукции в первом месяце для первого месяца потребления тариф перемещения будет равен цене продукции и составит 20 руб. В то же время при производстве продукции в первом месяце для второго месяца потребления цена продукции увеличится на величину затрат на хранение продукции в течение одного месяца и составит 20 + 0,5 = 20,5 руб. При производстве продукции во втором месяце для погашения задолженности в первом месяце цена продукции увеличится на величину штрафа и составит 20 + 2 = 22 руб. Учитывая вышесказанное, транспортная модель имеет вид: 1м 1м 20 2м 3м 20,5 4м 21,5 21 200 22 2м 20 20,5 21 150 24 3м 22 20 20,5 150 26 4м 24 150 22 200 20 200 200 700 150 В таблице символы 1 м, 2 м, 3 м, 4 м означают месяцы производства и потребления продукции. Оптимальное решение транспортной задачи, полученное с помощью симплекс-метода, имеет вид: 1м 1м 2м 3м 4м 2м 20 150 3м 20,5 4м 21,5 21 200 50 22 20 20,5 21 150 150 24 22 20 20,5 150 150 26 24 22 50 150 200 20 150 200 48 150 200 700 На основании полученного оптимального решения сформулируем стратегию поведения. Она выглядит следующим образом: 1. Изготовить 150 ед. в первом месяце для первого месяца и 50 ед. для второго месяца. 2. Во втором месяце изготовить 150 ед. для второго месяца. 3. В третьем месяце изготовить 150 ед. для третьего месяца. 4. В четвёртом месяце изготовить 50 ед. для третьего месяца и 150 ед. для четвёртого месяца. При этом доход составит: 150 · 20 + 50 · 20,5 + 150 · 20 + 50 · 22 + 150 · 20 = 11125. 49 Заключение В учебном пособии рассмотрена транспортная задача, которая широко используется на практике. С помощью транспортной задачи можно моделировать многочисленные практические процессы. В первую очередь, это моделирование перемещения продукции от поставщика к потребителю. При этом оптимальное перемещение наступает при минимуме затрат на перемещение. В то же время транспортная задача используется для решения задач, в которых перемещения как такового нет. Для примера показа широты использования транспортной задачи в данном пособии рассмотрены задача о назначении, задача об управлении запасами, для решения которых использована методология транспортной задачи. В пособии продемонстрирована гибкость транспортной задачи для решения практических задач при использовании понятия буфера и транзитного пункта перемещения. С помощью этих понятий можно моделировать многопродуктовые схемы перемещения, перемещать продукцию не непосредственно от поставщика к потребителю, а через транзитные базы, в качестве которых могут выступать и поставщики с потребителями. С помощью назначения больших или нулевых тарифов перемещения можно проектировать различные схемы перемещения продукции. При назначении тарифа перемещения между двумя пунктами, величина которого на несколько порядков выше, чем остальные тарифы, моделируется схема, в которой нет маршрута перемещения между этими пунктами. В пособии на конкретных примерах подробно рассмотрены методы решения транспортной задачи. Так как транспортная задача является одной из задач линейного программирования, в первую очередь был продемонстрирован симплекс-метод с использованием метода больших штрафов. Затем эта же задача решалась с помощью алгоритма, в котором использовался метод потенциалов, который по форме отличается от симплекс-метода. В то же время по логическому построению эти методы тождественны. Для нахождения начального опорного решения в методическом пособии были рассмотрены три метода: метод северо-западного угла, метод наименьшей стоимости, метод Фогеля. Наилучшее приближение к оптимальному решению даёт метод Фогеля. Метод наименьшей стоимости по логике должен давать лучшее приближение, чем метод северо-западного угла. Вместе с тем в пособии показано, что это бывает не всегда. 50 Алгоритм расчёта на основе метода потенциалов имел большое применение из-за наглядности процесса решения и сравнительно небольшого количества вычислений. Появление его позволило ускорить ручной счёт. С появлением вычислительных машин актуальность применения этих методов значительно снизилась. В настоящее время наибольшее предпочтение следует отдать симплекс-методу, на основе которого разработаны эффективные программные средства. 51 Задания для самостоятельной работы 1. Разработать модель транспортной задачи, в которой три пункта производства A, B, C, два транзитных пункта D, E и три пункта потребления F, G, P. В пунктах A, B, C находится соответственно 100, 200, 300 единиц продукции. Спрос в пунктах потребления F, G, P составляет соответственно 50, 250, 300 единиц продукции. За перемещение единицы продукции между пунктами транспортной сети назначены следующие тарифы: аd = 1, ae = 3, bd = 5, be = 4, cd = 5, ce = 4, df = 6, dg = 6, gf = 4, ep = 10, pg = 7. Отсутствие тарифа перемещения указывает на невозможность перемещения в данном направлении. Определить оптимальные маршруты и затраты на перемещение продукции. 2. Разработать модель транспортной задачи, в которой три пункта производства A, B, C, два транзитных пункта D, E и три пункта потребления F, G, P. В пунктах A, B, C находится соответственно 100, 300, 300 единиц продукции. Спрос в пунктах потребления F, G, P составляет соответственно 150, 250, 300 единиц продукции. За перемещение единицы продукции между пунктами транспортной сети назначены следующие тарифы: аd = 10, ae = 30, bd = 5, be = 4, cd = 5, ce = 4, df = 6, dg = 6, gf = 40, ep = 10, pg = 7. Отсутствие тарифа перемещения указывает на невозможность перемещения в данном направлении. Определить оптимальные маршруты и затраты на перемещение продукции. 3. Разработать модель транспортной задачи, в которой три пункта производства A, B, C, два транзитных пункта D, E и три пункта потребления F, G, P. В пунктах A, B, C находится соответственно 100, 150, 200 единиц продукции. Спрос в пунктах потребления F, G, P составляет соответственно 150, 150, 150 единиц продукции. За перемещение единицы продукции между пунктами транспортной сети назначены следующие тарифы: аd = 1, ae = 30, bd = 5, be = 4, cd = 5, ce = 4, df = 6, dg = 6, gf = 4, ep = 10, pg = 7. Отсутствие тарифа перемещения указывает на невозможность перемещения в данном направлении. Определить оптимальные маршруты и затраты на перемещение продукции. 4. Разработать модель транспортной задачи, в которой три пункта производства A, B, C, два транзитных пункта D, E и три пункта потребления F, G, P. В пунктах A, B, C находится соответственно 100, 150, 200 единиц продукции. Спрос в пунктах потребления F, G, P составляет соответственно 150, 150, 52 150 единиц продукции. За перемещение единицы продукции между пунктами транспортной сети назначены следующие тарифы: аd = 10, ae = 3, bd = 5, be = 40, cd = 5, ce = 4, df = 66, dg = 6, gf = 4, ep = 10, pg = 70. Отсутствие тарифа перемещения указывает на невозможность перемещения в данном направлении. Определить оптимальные маршруты и затраты на перемещение продукции. 5. Разработать модель транспортной задачи, в которой три пункта производства A, B, C, два транзитных пункта D, E и три пункта потребления F, G, P. В пунктах A, B, C находится соответственно 200, 150, 200 единиц продукции. Спрос в пунктах потребления F, G, P составляет соответственно 150, 250, 150 единиц продукции. За перемещение единицы продукции между пунктами транспортной сети назначены следующие тарифы: аd = 10, ae = 3, bd = 5, be = 4, cd = 5, ce = 3, df = 6, dg = 7, gf = 4, ep = 1, pg = 70. Отсутствие тарифа перемещения указывает на невозможность перемещения в данном направлении. Определить оптимальные маршруты и затраты на перемещение продукции. 6. Разработать модель транспортной задачи, в которой три пункта производства A, B, C, два транзитных пункта D, E и три пункта потребления F, G, P. В пунктах A, B, C находится соответственно 200, 150, 200 единиц продукции. Спрос в пунктах потребления F, G, P составляет соответственно 150, 250, 150 единиц продукции. За перемещение единицы продукции между пунктами транспортной сети назначены следующие тарифы: аd = 10, ae = 3, bd = 5, be = 4, cd = 5, ce = 3, df = 6, dg = 7, gf = 4, ep = 1, pg = 7, de = 15. Отсутствие тарифа перемещения указывает на невозможность перемещения в данном направлении. Определить оптимальные маршруты и затраты на перемещение продукции. 7. Разработать модель транспортной задачи, в которой три пункта производства A, B, C, два транзитных пункта D, E и три пункта потребления F, G, P. В пунктах A, B, C находится соответственно 200, 150, 100 единиц продукции. Спрос в пунктах потребления F, G, P составляет соответственно 150, 250, 50 единиц продукции. За перемещение единицы продукции между пунктами транспортной сети назначены следующие тарифы: ad = 10, ae = 3, bd = 5, be = 4, cd = 5, ce = 3, df = 6, dg = 7, gf = 4, ep = 1, pg = 7, dp = 15. 53 Отсутствие тарифа перемещения указывает на невозможность перемещения в данном направлении. Определить оптимальные маршруты и затраты на перемещение продукции. 8. Разработать модель транспортной задачи, в которой три пункта производства A, B, C, два транзитных пункта D, E и три пункта потребления F, G, P. В пунктах A, B, C находится соответственно 200, 150, 100 единиц продукции. Спрос в пунктах потребления F, G, P составляет соответственно 150, 250, 50 единиц продукции. За перемещение единицы продукции между пунктами транспортной сети назначены следующие тарифы: аd = 10, ae = 3, bd = 5, be = 4, cd = 5, ce = 3, df = 6, dg = 7, fg = 4, ep = 1, gp = 7, dp = 15. Отсутствие тарифа перемещения указывает на невозможность перемещения в данном направлении. Определить оптимальные маршруты и затраты на перемещение продукции. 9. Предприятие производит продукцию, спрос на которую отмечается в течение шести месяцев. Он оценивается соответственно в 150, 200, 200, 150, 200, 100 единиц изделий в месяц. По технологическим причинам предприятие может выпускать в каждом месяце соответственно 200, 150, 150, 200, 100, 200 единиц изделий. Как видно, производство и спрос по месяцам не совпадают. За непоставку продукции предприятие будет платить штраф в размере 12 рублей за одно изделие. За перепроизводство предприятие вынуждено хранить продукцию на складе. При этом расходы на хранение составляют 5 рублей за одно изделие в течение месяца. Цена продукции составляет 30 руб. Определить оптимальную стратегию производства продукции. 10. Предприятие производит продукцию, спрос на которую отмечается в течение шести месяцев. Он оценивается соответственно в 100, 200, 200, 200, 200, 100 единиц изделий в месяц. По технологическим причинам предприятие может выпускать в каждом месяце соответственно 200, 150, 150, 200, 100, 200 единиц изделий. Как видно, производство и спрос по месяцам не совпадают. За непоставку продукции предприятие будет платить штраф в размере 13 рублей за одно изделие. За перепроизводство предприятие вынуждено хранить продукцию на складе. При этом расходы на хранение составляют 4 рубля за одно изделие в течение месяца. Цена продукции составляет 20 руб. Определить оптимальную стратегию производства продукции. 11. Предприятие производит продукцию, спрос на которую отмечается в течение шести месяцев. Он оценивается соответственно в 100, 200, 200, 200, 200, 100 единиц изделий в месяц. По технологическим причинам предприятие 54 может выпускать в каждом месяце соответственно 200, 100, 150, 200, 150, 200 единиц изделий. Как видно, производство и спрос по месяцам не совпадают. За непоставку продукции предприятие будет платить штраф в размере 16 рублей за одно изделие. За перепроизводство предприятие вынуждено хранить продукцию на складе. При этом расходы на хранение составляют 3 рубля за одно изделие в течение месяца. Цена продукции составляет 25 руб. Определить оптимальную стратегию производства продукции. 12. Предприятие производит продукцию, спрос на которую отмечается в течение шести месяцев. Он оценивается соответственно в 100, 200, 250, 200, 250, 100 единиц изделий в месяц. По технологическим причинам предприятие может выпускать в каждом месяце соответственно 200, 150, 150, 250, 150, 200 единиц изделий. Как видно, производство и спрос по месяцам не совпадают. За непоставку продукции предприятие будет платить штраф в размере 26 рублей за одно изделие. За перепроизводство предприятие вынуждено хранить продукцию на складе. При этом расходы на хранение составляют 2 рубля за одно изделие в течение месяца. Цена продукции составляет 30 руб. Определить оптимальную стратегию производства продукции. 13. Имеется 6 видов работ, которые могут быть выполнены шестью организациями. Каждая организация согласна выполнить работы за определённую оплату, которая приведена в таблице: 1 раб. 2 раб. 3 раб. 4 раб. 5 раб. 6 раб. 1 орг. 200 123 330 155 330 333 2 орг. 105 234 165 199 159 473 3 орг. 125 156 276 189 244 321 4 орг. 132 233 75 201 433 412 5 орг. 105 432 231 301 309 300 6 орг. 132 321 115 220 306 233 Найти оптимальное размещение работ по организациям. 14. Имеется водопроводная сеть с семью узлами, в которой два узла (1), (3) являются пунктами поставки воды в объёме соответственно 400 и 300 куб., а два узла (2), (4) – пунктами потребления в объёме соответственно 350 и 350 куб. Стоимость перекачки одного кубометра между узлами составляет: (1)-(2) → 10 руб., (1)-(7) → 15 руб., (3)-(7) → 35 руб., (3)-(4) → 45 руб., (7)-(2) → 22 руб., (7)-(5) → 33 руб., (2)-(6) → 5 руб., (6)-(5) → 21 руб., (4)-(5) → 11 руб. Найти оптимальное решение для перекачки воды. 55 12 15. Найти кратчайший путь между узлами (1) и (7) транспортной сети, представленной на рисунке, на основе решения транспортной задачи. 16. Сформулировать транспортную задачу и найти оптимальное решение для автомобильной сети по перевозке продукции. Пункты отправления, пункты спроса и тарифы представлены на рисунке: 56 Литература 1. http://www.uchimatchast.ru/ 2. http://xreferat.ru/ 3. Таха Х. А. Введение в исследование операций / Х. А. Таха ; пер. с англ. – 7-е изд. – М. : Издательский дом «Вильямс», 2005. – 912 с.: ил. – Парал. тит. англ. 4. Волков И. К. Исследование операций / И. К. Волков, Е. А. Загоруйко. – М. : Издательство «МГТУ им. Баумана», 2004. – 435 с. 5. Кремер Н. Ш. Исследование операций в экономике / Н. Ш. Кремер. – М. : Издательство «ЮНИТИ», 2006. – 407 с. 57 Учебное издание Семериков Александр Вениаминович Решение транспортных задач Учебное пособие Редактор К. В. Коптяева Технический редактор Л. П. Коровкина План 2013 г., позиция 135. Подписано в печать 29.11.2013. Компьютерный набор. Гарнитура Times New Roman. Формат 60х84 1/16. Бумага офсетная. Печать трафаретная. Усл. печ. л. 3,4. Уч.-изд. л. 3,1. Тираж 120 экз. Заказ №280. Ухтинский государственный технический университет. 169300, Республика Коми, г. Ухта, ул. Первомайская, д. 13. Типография УГТУ. 169300, Республика Коми, г. Ухта, ул. Октябрьская, д. 13.