Транспортная задача


Транспортная задача (задача Монжа — Канторовича) — математическая задача линейного программирования специального вида. Её можно рассматривать как задачу об оптимальном плане перевозок грузов из пунктов отправления в пункты потребления, с минимальными затратами на перевозки.

Транспортная задача по теории сложности вычислений входит в класс сложности P. Когда суммарный объём предложений (грузов, имеющихся в пунктах отправления) не равен общему объёму спроса на товары (грузы), запрашиваемые пунктами потребления, транспортная задача называется несбалансированной (открытой).

Постановка задачи

Транспортная задача (классическая) — задача об оптимальном плане перевозок однородного продукта из однородных пунктов наличия в однородные пункты потребления на однородных транспортных средствах (предопределённом количестве) со статичными данными и линеарном подходе (это основные условия задачи).

Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку). Под названием транспортная задача, определяется широкий круг задач с единой математической моделью, эти задачи относятся к задачам линейного программирования и могут быть решены оптимальным методом. Однако, спец.метод решения транспортной задачи позволяет существенно упростить её решение, поскольку транспортная задача разрабатывалась для минимизации стоимости перевозок.

Математическая формулировка задачи

Пусть имеется m {displaystyle m} пунктов производства некоторого однородного продукта и n {displaystyle n} пунктов его потребления. Для каждого пункта производства i = 1 , 2 , . . . , m {displaystyle i=1,2,...,m} и для каждого пункта потребления j = 1 , 2 , . . . , n {displaystyle j=1,2,...,n} заданы следующие величины: объём производства a i {displaystyle a_{i}} в пункте производства i {displaystyle i} , объём потребления b j {displaystyle b_{j}} в пункте потребления j {displaystyle j} , затраты на перевозку единицы продукта c i j {displaystyle c_{ij}} от пункта производства i {displaystyle i} до пункта потребления j {displaystyle j} . Предполагается, что суммарное производство равно суммарному потреблению: ∑ i = 1 m a i = ∑ j = 1 n b j {displaystyle sum _{i=1}^{m}a_{i}=sum _{j=1}^{n}b_{j}} . Требуется составить план перевозок, позволяющий полностью вывезти продукты всех производителей, полностью обеспечивающий потребности всех потребителей и дающий минимум суммарных затрат на перевозку. Обозначим как x i j {displaystyle x_{ij}} объёмы перевозок от поставщика i {displaystyle i} до потребителя j {displaystyle j} .

∑ j = 1 n x i j = a i {displaystyle sum _{j=1}^{n}x_{ij}=a_{i}} , i = 1 , 2 , . . . , m {displaystyle i=1,2,...,m} ∑ i = 1 m x i j = b j {displaystyle sum _{i=1}^{m}x_{ij}=b_{j}} , j = 1 , 2 , . . . , n {displaystyle j=1,2,...,n} ∑ i = 1 m ∑ j = 1 n c i j x i j → min {displaystyle sum _{i=1}^{m}sum _{j=1}^{n}c_{ij}x_{ij} ightarrow min }

История поиска методов решения

Проблема была впервые формализована французским математиком Гаспаром Монжем в 1781 году. Прогресс в решении проблемы был достигнут во время Великой Отечественной войны советским математиком и экономистом Леонидом Канторовичем. Поэтому иногда эта проблема называется транспортной задачей Монжа — Канторовича.

Методы решения

Классическую транспортную задачу можно решить симплекс-методом, но в силу ряда особенностей её можно решить проще (для задач малой размерности).

Условия задачи располагают в таблице, вписывая в ячейки количество перевозимого груза из A i {displaystyle A_{i}} в B j {displaystyle B_{j}} груза X i j ⩾ 0 {displaystyle X_{ij}geqslant 0} , а в маленькие клетки — соответствующие тарифы C i j {displaystyle C_{ij}} .

Итерационное улучшение плана перевозок

Нахождение опорного плана

Требуется определить опорный план и путём последовательных операций найти оптимальное решение. Опорный план можно найти следующими методами: «северо-западного угла», «наименьшего элемента», двойного предпочтения и аппроксимации Фогеля.

Метод северо-западного угла (диагональный или улучшенный)

На каждом этапе максимально возможным числом заполняют левую верхнюю клетку оставшейся части таблицы. Заполнение таким образом, что полностью выносится груз из A i {displaystyle A_{i}} или полностью удовлетворяется потребность B j {displaystyle B_{j}} .

Метод наименьшего элемента

Одним из способов решения задачи является метод минимального (наименьшего) элемента. Его суть заключается в сведении к минимуму побочных перераспределений товаров между потребителями.

Алгоритм:

  • Из таблицы стоимостей выбирают наименьшую стоимость и в клетку, которая ей соответствует, вписывают большее из чисел.
  • Проверяются строки поставщиков на наличие строки с израсходованными запасами и столбцы потребителей на наличие столбца, потребности которого полностью удовлетворены. Такие столбцы и строки далее не рассматриваются.
  • Если не все потребители удовлетворены и не все поставщики израсходовали товары, возврат к п. 1, в противном случае задача решена.
  • Итерации

    После нахождения опорного плана перевозок, нужно применить один из алгоритмов его улучшения, приближения к оптимальному.

    • Метод падающего камня
    • Метод потенциалов.

    Решение с помощью теории графов

    Рассматривается двудольный граф, в котором пункты производства находятся в верхней доле, а пункты потребления — в нижней. Пункты производства и потребления попарно соединяются рёбрами бесконечной пропускной способности и цены за единицу потока C i j {displaystyle C_{ij}} .

    К верхней доле искусственно присоединяется исток. Пропускная способность рёбер из истока в каждый пункт производства равна запасу продукта в этом пункте. Цена за единицу потока у этих рёбер равна 0.

    Аналогично к нижней доле присоединяется сток. Пропускная способность рёбер из каждого пункта потребления в сток равна потребности в продукте в этом пункте. Цена за единицу потока у этих рёбер тоже равна 0.

    Дальше решается задача нахождения максимального потока минимальной стоимости (mincost maxflow). Её решение аналогично нахождению максимального потока в алгоритме Форда — Фалкерсона. Только вместо кратчайшего дополняющего потока ищется самый дешёвый. Соответственно, в этой подзадаче используется не поиск в ширину, а алгоритм Беллмана — Форда. При возврате потока стоимость считается отрицательной.

    Алгоритм «mincost maxflow» можно запускать и сразу — без нахождения опорного плана. Но в этом случае процесс решения будет несколько более долгим. Выполнение алгоритма «mincost maxflow» происходит не более чем за O ( v 2 e 2 ) {displaystyle O(v^{2}e^{2})} операций. ( e {displaystyle e} — количество рёбер, v {displaystyle v} — количество вершин.) При случайно подобраных данных обычно требуется гораздо меньше — порядка O ( v e ) {displaystyle O(ve)} операций.

    При решении несбалансированной транспортной задачи применяют приём, позволяющий сделать её сбалансированной. Для этого вводят фиктивные пункты назначения или отправления. Выполнение баланса транспортной задачи необходимо для того, чтобы иметь возможность применить алгоритм решения, построенный на использовании транспортных таблиц.

    Обобщения

    Транспортная задача в сетевой постановке

    В этом варианте пункты не делятся на пункты отправления и пункты потребления, все пункты равноправны, но производство задается положительным числом, а потребление — отрицательным. Перевозки осуществляются по заданной сети, в которой дуги могут соединять любые пункты, включая производитель — производитель, потребитель — потребитель.

    Задача решается слегка измененным методом потенциалов, практически тем же, что и классическая постановка.

    Транспортная задача с ограничениями пропускной способности

    Вариант транспортной задачи в сетевой постановке, при котором задается максимальная пропускная способность некоторых дуг.

    Задача решается слегка усложненным методом потенциалов.

    Многопродуктовая транспортная задача

    Вариант транспортной задачи, в которой присутствует несколько продуктов (пункты могут производить/потреблять несколько продуктов). Для некоторых дуг задается ограничение на пропускную способность (без этого ограничения задача распадается на отдельные задачи по продуктам).

    Задача решается симплекс-методом (используется разложение Данцига — Вулфа, в качестве подзадач используются однопродуктовые транспортные задачи).


  • Нелинейное программирование
  • Нелинейная задача собственных значений
  • Задача Буземана — Петти
  • Математическая головоломка
  • «БУГУРУСЛАНСКАЯ ТРАНСПОРТНАЯ КОМПАНИЯ»

  •  

    • Яндекс.Метрика
    • Индекс цитирования