В условиях постоянно растущей глобализации и усложнения логистических цепочек, компании по всему миру ищут пути для оптимизации своих операционных процессов. Порой, даже незначительное, казалось бы, сокращение затрат на логистику может привести к существенной экономии, достигающей 30-50% от общих расходов, что наглядно демонстрируют кейсы таких компаний, как Medmarket, добившейся 30% экономии логистических расходов за счет оптимизации маршрутов. Именно здесь на арену выходит математическое программирование, предлагая мощные инструменты для решения сложнейших задач распределения ресурсов. Одной из таких фундаментальных проблем является транспортная задача, также известная как задача Монжа-Канторовича, которая стала краеугольным камнем в исследовании операций и прикладной математике.
Настоящая курсовая работа посвящена глубокому анализу задачи о размещениях и, в частности, транспортной задачи, представляющей собой частный случай первой. Мы рассмотрим её математическую постановку, экономическую интерпретацию, изучим классические и современные алгоритмы решения, а также проведем их сравнительный анализ. Целью работы является не только теоретическое осмысление, но и демонстрация практической значимости этих моделей через конкретные примеры из реального бизнеса, что позволит студентам технических и экономических вузов получить комплексное представление о применении математических методов в экономике и логистике. Структура работы последовательно проведет читателя от фундаментальных понятий к детализации алгоритмов и их практической реализации, завершаясь анализом связей с другими задачами математического программирования.
Теоретические Основы: Математическая Постановка и Экономическая Интерпретация
Понятие и Сущность Транспортной Задачи
Транспортная задача, известная также как задача Монжа-Канторовича, – это классическая проблема линейного программирования, направленная на поиск оптимального плана распределения однородных объектов или ресурсов от нескольких пунктов наличия (поставщиков) к нескольким пунктам потребления (потребителям). Её основная цель – минимизация общих затрат на перемещение этих объектов, будь то финансовые расходы, время или другие ресурсы, при условии полного удовлетворения спроса потребителей и полного вывоза имеющихся запасов у поставщиков.
Экономическая суть этой задачи пронизывает практически все сферы деятельности, где требуется эффективное распределение. Представьте себе крупное производственное объединение, имеющее несколько заводов (поставщиков) и множество региональных складов или розничных точек (потребителей). Каждый завод производит определённый объём продукции, и каждый склад нуждается в определённом количестве этой продукции. При этом стоимость перевозки единицы продукции от каждого завода до каждого склада может быть разной. Транспортная задача позволяет найти такой план перевозок, при котором совокупные затраты на логистику будут минимальными, при этом соблюдая все ограничения по производственным мощностям и потребительским запросам.
Этот подход не просто сокращает расходы, он оптимизирует всю логистическую сеть, превращая потенциально хаотичные потоки в предсказуемую и управляемую систему.
Важно отметить, что транспортная задача может быть классифицирована по критериям оптимизации: наиболее распространённым является критерий стоимости (минимизация денежных затрат на перевозку), но также существует критерий времени (минимизация общего времени на доставку), который становится критически важным в случаях скоропортящихся продуктов или срочных поставок.
Математическая Модель Транспортной Задачи
Математическая формализация транспортной задачи позволяет перевести сложную логистическую проблему в строгую систему уравнений и неравенств, которую затем можно решить с помощью специализированных алгоритмов.
Пусть у нас имеется m поставщиков (П1, П2, …, Пm) и n потребителей (С1, С2, …, Сn).
Каждый поставщик Пi имеет запас ai единиц однородного продукта.
Каждый потребитель Сj запрашивает bj единиц продукта.
Стоимость перевозки одной единицы продукта от поставщика Пi к потребителю Сj составляет cij.
Переменные модели:
Основными переменными являются xij – количество продукта, которое будет перевезено от i-го поставщика к j-му потребителю.
Целевая функция:
Цель транспортной задачи – минимизировать суммарные затраты на все перевозки. Это выражается следующей целевой функцией:
Σi=1m Σj=1n cijxij → min
Здесь Σ обозначает суммирование. Первое суммирование происходит по всем поставщикам от i=1 до m, второе – по всем потребителям от j=1 до n.
Ограничения:
- Ограничения по запасам поставщиков: Сумма всех поставок от каждого поставщика Пi должна быть равна его запасу ai.
Σj=1n xij = aiдля каждогоi=1, ..., m - Ограничения по запросам потребителей: Сумма всех поставок каждому потребителю Сj должна быть равна его запросу bj.
Σi=1m xij = bjдля каждогоj=1, ..., n - Условия неотрицательности: Объёмы перевозок не могут быть отрицательными.
xij ≥ 0для всехi, j
Типы транспортных задач:
Транспортная задача может быть «закрытой» (сбалансированной) или «открытой» (несбалансированной):
- Закрытая (сбалансированная) задача: Это идеальный случай, когда суммарные запасы всех поставщиков в точности равны суммарным запросам всех потребителей.
Σi=1m ai = Σj=1n bjВ этом случае все ресурсы будут распределены, и все потребности удовлетворены.
- Открытая (несбалансированная) задача: Возникает, когда суммарные запасы не равны суммарным запросам.
- Если
Σi=1m ai > Σj=1n bj(избыток запасов): Чтобы сбалансировать задачу, вводится фиктивный потребитель (Сn+1) с потребностью, равной избытку (Σai - Σbj). Стоимости перевозок к этому фиктивному потребителю принимаются равными нулю (ci,n+1 = 0), поскольку фактически никаких физических перевозок не происходит. - Если
Σi=1m ai < Σj=1n bj(дефицит запасов): Вводится фиктивный поставщик (Пm+1) с запасом, равным дефициту (Σbj - Σai). Стоимости перевозок от этого фиктивного поставщика также равны нулю (cm+1,j = 0).
- Если
Балансировка задачи является обязательным этапом, так как большинство алгоритмов решения транспортной задачи применимы только к сбалансированным моделям.
Задача о Назначениях как Частный Случай
Задача о назначениях является одной из фундаментальных задач комбинаторной оптимизации и представляет собой частный случай транспортной задачи. Её суть заключается в распределении n различных работ между n исполнителями таким образом, чтобы каждая работа была выполнена одним и только одним исполнителем, и каждый исполнитель был задействован только на одной работе, а суммарная эффективность (или затраты) при этом была оптимальной (максимальной или минимальной).
В контексте транспортной задачи, задачу о назначениях можно представить следующим образом:
- m поставщиков = n исполнителей
- n потребителей = n работ
- Запас каждого поставщика ai = 1 (каждый исполнитель может выполнить только одну работу).
- Потребность каждого потребителя bj = 1 (каждая работа должна быть выполнена только одним исполнителем).
- cij – это стоимость выполнения j-й работы i-м исполнителем.
Таким образом, математическая модель задачи о назначениях выглядит как:
Σi=1n Σj=1n cijxij → min (или max)
при ограничениях:
Σj=1n xij = 1 для каждого i=1, ..., n
Σi=1n xij = 1 для каждого j=1, ..., n
xij ∈ {0, 1} (т.е. xij = 1, если i-й исполнитель назначен на j-ю работу, и 0 в противном случае).
Как и транспортная задача, задача о назначениях может быть «открытой» (число исполнителей не равно числу работ). В этом случае также вводятся фиктивные исполнители или работы с нулевыми стоимостями, чтобы привести модель к «закрытому» (сбалансированному) виду, где число исполнителей равно числу работ. Для решения задачи о назначениях разработан специальный и весьма эффективный Венгерский алгоритм, который мы рассмотрим позднее.
Классические Алгоритмы Решения Транспортной Задачи
Решение транспортной задачи – это многоэтапный процесс, который традиционно делится на три ключевые стадии:
- Нахождение исходного опорного решения (плана): На этом этапе формируется первоначальный допустимый план перевозок, который удовлетворяет всем ограничениям, но не обязательно является оптимальным.
- Проверка опорного плана на оптимальность: С помощью специальных критериев определяется, является ли текущий план наилучшим из возможных.
- Переход от одного опорного решения к другому (если необходимо): Если план не оптимален, он последовательно улучшается путём итеративного перераспределения объёмов перевозок до достижения оптимальности.
Опорным решением транспортной задачи называется любое допустимое решение, для которого векторы условий, соответствующие положительным координатам (базисным переменным), линейно независимы. В контексте транспортной задачи, ранг системы векторов условий равен m+n-1. Это означает, что любое опорное решение не может иметь более m+n-1 отличных от нуля координат (базисных переменных). Данное свойство является фундаментальным и лежит в основе многих алгоритмов решения, так как определяет минимальное количество «занятых» клеток в транспортной таблице, необходимых для построения допустимого плана.
Методы Нахождения Опорного Плана
Существует несколько методов для построения начального опорного плана, каждый из которых отличается по сложности реализации и качеству получаемого начального решения.
Метод Северо-Западного Угла (МСЗУ)
Метод северо-западного угла (МСЗУ) – это самый простой и интуитивно понятный метод для нахождения исходного опорного плана. Он не учитывает стоимости перевозок, что делает его быстрым, но часто приводит к субоптимальным начальным решениям.
Пошаговая демонстрация:
- Начало: Начинаем заполнение транспортной таблицы с левой верхней клетки (клетки «северо-западного угла»), соответствующей первому поставщику и первому потребителю (
x11). - Заполнение клетки: В выбранную клетку записываем максимально возможный объем перевозки. Этот объем равен минимуму из текущего запаса поставщика (ai) и текущей потребности потребителя (bj).
xij = min(ai, bj) - Корректировка запасов/потребностей:
- Если
ai < bj, то запас i-го поставщика полностью исчерпан. Вычеркиваем i-ю строку из дальнейшего рассмотрения и уменьшаем потребность j-го потребителя на ai. Переходим к следующей строке (i+1) в том же столбце. - Если
ai > bj, то потребность j-го потребителя полностью удовлетворена. Вычеркиваем j-й столбец из дальнейшего рассмотрения и уменьшаем запас i-го поставщика на bj. Переходим к следующему столбцу (j+1) в той же строке. - Если
ai = bj, то и запас поставщика, и потребность потребителя полностью исчерпаны. Вычеркиваем и строку, и столбец. Переходим к следующей клетке по диагонали (i+1, j+1). В этом случае может возникнуть вырожденный опорный план (меньшеm+n-1базисных переменных), который потребует введения фиктивной нулевой перевозки.
- Если
- Повторение: Повторяем шаги 2 и 3 до тех пор, пока все запасы не будут распределены, а все потребности не удовлетворены.
Пример (гипотетический):
| Поставщик/Потребитель | C1 (10) | C2 (15) | C3 (5) | ai |
|---|---|---|---|---|
| P1 (20) | c11=5 | c12=8 | c13=3 | 20 |
| P2 (10) | c21=6 | c22=4 | c23=7 | 10 |
| bj | 10 | 15 | 5 | Σ=30 |
Применение МСЗУ:
- Клетка (1,1):
x11 = min(20, 10) = 10. Запас П1 = 20-10=10. Потребность С1 = 10-10=0. С1 вычеркнут. - Клетка (1,2):
x12 = min(10, 15) = 10. Запас П1 = 10-10=0. Потребность С2 = 15-10=5. П1 вычеркнут. - Клетка (2,2):
x22 = min(10, 5) = 5. Запас П2 = 10-5=5. Потребность С2 = 5-5=0. С2 вычеркнут. - Клетка (2,3):
x23 = min(5, 5) = 5. Запас П2 = 5-5=0. Потребность С3 = 5-5=0. П2 и С3 вычеркнуты.
Полученный опорный план:
| Поставщик/Потребитель | C1 (10) | C2 (15) | C3 (5) | ai |
|---|---|---|---|---|
| P1 (20) | 10 | 10 | 0 | 20 |
| P2 (10) | 0 | 5 | 5 | 10 |
| bj | 10 | 15 | 5 | Σ=30 |
Суммарные затраты: 10*5 + 10*8 + 5*4 + 5*7 = 50 + 80 + 20 + 35 = 185.
Метод Минимального Элемента (Наименьшей Стоимости)
В отличие от МСЗУ, метод минимального элемента (наименьшей стоимости) учитывает тарифы перевозок, что позволяет получить более экономичный начальный опорный план, часто более близкий к оптимальному.
Пошаговая демонстрация:
- Поиск минимального тарифа: В текущей транспортной таблице (с учётом невычеркнутых строк и столбцов) находим клетку с наименьшей стоимостью перевозки (cij).
- Заполнение клетки: В выбранную клетку записываем максимально возможный объем перевозки, равный
min(ai, bj). - Корректировка и вычеркивание: Аналогично МСЗУ, уменьшаем запас поставщика и/или потребность потребителя. Если строка или столбец полностью исчерпаны, они вычеркиваются из дальнейшего рассмотрения.
- Повторение: Повторяем шаги 1-3 до полного распределения всех запасов и удовлетворения всех потребностей. Если есть несколько клеток с одинаковой минимальной стоимостью, выбор может быть произвольным (но лучше выбирать ту, которая позволяет вычеркнуть и строку, и столбец для большей скорости, если это возможно).
Пример (с теми же данными):
| Поставщик/Потребитель | C1 (10) | C2 (15) | C3 (5) | ai |
|---|---|---|---|---|
| P1 (20) | c11=5 | c12=8 | c13=3 | 20 |
| P2 (10) | c21=6 | c22=4 | c23=7 | 10 |
| bj | 10 | 15 | 5 | Σ=30 |
Применение метода минимального элемента:
- Наименьший тариф c13=3:
x13 = min(20, 5) = 5. Запас П1 = 20-5=15. Потребность С3 = 5-5=0. С3 вычеркнут. - Следующий наименьший тариф c22=4:
x22 = min(10, 15) = 10. Запас П2 = 10-10=0. Потребность С2 = 15-10=5. П2 вычеркнут. - Следующий наименьший тариф c11=5:
x11 = min(15, 10) = 10. Запас П1 = 15-10=5. Потребность С1 = 10-10=0. С1 вычеркнут. - Последний тариф c12=8 (в оставшейся строке/столбце):
x12 = min(5, 5) = 5. Запас П1 = 5-5=0. Потребность С2 = 5-5=0. П1 и С2 вычеркнуты.
Полученный опорный план:
| Поставщик/Потребитель | C1 (10) | C2 (15) | C3 (5) | ai |
|---|---|---|---|---|
| P1 (20) | 10 | 5 | 5 | 20 |
| P2 (10) | 0 | 10 | 0 | 10 |
| bj | 10 | 15 | 5 | Σ=30 |
Суммарные затраты: 10*5 + 5*8 + 5*3 + 10*4 = 50 + 40 + 15 + 40 = 145. (Значительно лучше, чем МСЗУ).
Метод Аппроксимации Фогеля
Метод аппроксимации Фогеля (МАФ) является наиболее трудоёмким среди методов построения начального опорного плана, но при этом он генерирует решение, которое часто оказывается наиболее приближенным к оптимальному, а иногда и самим оптимальным. Его преимущество в том, что он оценивает «штрафы» за невыбор наименьшего тарифа.
Пошаговая демонстрация:
- Расчет «штрафов»: Для каждой невычеркнутой строки и каждого невычеркнутого столбца рассчитываем «штраф» – разность между двумя наименьшими тарифами в этой строке/столбце.
- Выбор строки/столбца: Находим максимальный «штраф» среди всех строк и столбцов. Выбираем ту строку или столбец, где этот максимальный штраф был найден.
- Выбор клетки и заполнение: В выбранной строке/столбце находим клетку с наименьшим тарифом. В эту клетку записываем максимально возможный объем перевозки, равный
min(ai, bj). - Корректировка и вычеркивание: Уменьшаем запасы и потребности, вычеркиваем исчерпанные строки/столбцы.
- Повторение: Повторяем шаги 1-4 до полного распределения всех грузов.
Пример (с теми же данными):
| Поставщик/Потребитель | C1 (10) | C2 (15) | C3 (5) | ai | Штраф (П) |
|---|---|---|---|---|---|
| P1 (20) | 5 | 8 | 3 | 20 | 8-5=3 |
| P2 (10) | 6 | 4 | 7 | 10 | 6-4=2 |
| bj | 10 | 15 | 5 | Σ=30 | |
| Штраф (С) | 6-5=1 | 8-4=4 | 7-3=4 |
Применение МАФ:
- Итерация 1:
- Штрафы строк: П1=(8-5)=3, П2=(6-4)=2.
- Штрафы столбцов: С1=(6-5)=1, С2=(8-4)=4, С3=(7-3)=4.
- Максимальный штраф = 4 (у столбцов С2 и С3). Выберем С2 (произвольно).
- В С2 минимальный тариф = c22=4.
x22 = min(10, 15) = 10. Запас П2 = 0. Потребность С2 = 5. П2 вычеркнут.
- Итерация 2 (после коррекции штрафов):
- Максимальный штраф = 8 (столбец С2).
- В С2 минимальный тариф = c12=8.
x12 = min(20, 5) = 5. Запас П1 = 15. Потребность С2 = 0. С2 вычеркнут.
- Итерация 3 (после коррекции штрафов):
- Максимальный штраф = 5 (столбец С1).
- В С1 минимальный тариф = c11=5.
x11 = min(15, 10) = 10. Запас П1 = 5. Потребность С1 = 0. С1 вычеркнут.
- Итерация 4:
- Осталась одна незаполненная клетка c13=3.
x13 = min(5, 5) = 5.
- Осталась одна незаполненная клетка c13=3.
Полученный опорный план (после корректного применения МАФ):
| Поставщик/Потребитель | C1 (10) | C2 (15) | C3 (5) | ai |
|---|---|---|---|---|
| P1 (20) | 10 | 5 | 5 | 20 |
| P2 (10) | 0 | 10 | 0 | 10 |
| bj | 10 | 15 | 5 | Σ=30 |
Суммарные затраты: 10*5 + 5*8 + 5*3 + 10*4 = 50 + 40 + 15 + 40 = 145. (В данном примере, как и метод минимального элемента, МАФ дал тот же результат).
Метод Двойного Предпочтения (Метод Вычеркивания)
Метод двойного предпочтения, также известный как метод вычеркивания, является одним из приближенных методов построения опорного плана транспортной задачи. Его логика основана на одновременном анализе наименьших тарифов как в строках (поставщиков), так и в столбцах (потребителей), что призвано дать более сбалансированное начальное решение.
Описание логики:
- Поиск минимальных тарифов: Для каждой невычеркнутой строки (поставщика) и каждого невычеркнутого столбца (потребителя) определяется наименьший тариф.
- Выбор клетки: Из всех найденных минимальных тарифов выбирается самый наименьший. Соответствующая ему клетка (i, j) является кандидатом для заполнения.
- Заполнение клетки: В выбранную клетку
xijзаписывается максимально возможный объем перевозки, равныйmin(ai, bj). - Корректировка и вычеркивание: Уменьшаются запасы поставщика и потребности потребителя. Если запас или потребность исчерпаны, соответствующая строка или столбец вычеркивается.
- Повторение: Шаги 1-4 повторяются до тех пор, пока все запасы не будут распределены, а все потребности не удовлетворены.
Метод двойного предпочтения пытается найти компромисс между простотой МСЗУ и экономической ориентированностью метода минимального элемента, анализируя минимальные тарифы более глобально. В одном из сравнительных исследований было отмечено, что метод наименьшей стоимости требовал на 1 итерацию меньше для построения опорного плана, чем метод двойного предпочтения. Однако трудоемкость метода наименьшей стоимости была в 2 раза выше. При этом, итоговая стоимость опорного плана, полученного методом наименьшей стоимости, оказалась на 810 000 тонно-километров меньше, что свидетельствует о потенциальной экономической эффективности метода наименьшей стоимости, несмотря на его большую трудоемкость. Это подчеркивает, что выбор метода для нахождения опорного плана часто зависит от конкретных требований к задаче: скорости получения решения или его экономической эффективности.
Метод Потенциалов для Проверки и Улучшения Оптимальности
После того как исходный опорный план найден одним из вышеописанных методов, следующим шагом является проверка его на оптимальность и, при необходимости, его улучшение. Для этого широко применяется метод потенциалов, который является модификацией симплекс-метода, адаптированной специально для транспортной задачи.
Пошаговый алгоритм метода потенциалов:
- Построение системы потенциалов:
- Для каждой строки (поставщика) вводится потенциал ui, а для каждого столбца (потребителя) – потенциал vj.
- Для всех занятых клеток (базисных переменных
xij > 0) должно выполняться равенство:ui + vj = cij. - Система из
m+n-1уравнений (по числу базисных переменных) сm+nнеизвестными (потенциалами) не имеет однозначного решения. Поэтому один из потенциалов (например,u1) произвольно принимается равным нулю. После этого все остальные потенциалы могут быть последовательно найдены.
- Расчет оценок свободных клеток:
- Для всех свободных клеток (
xij = 0, не базисные переменные) рассчитываются оценки dij по формуле:dij = ui + vj - cij - Эти оценки показывают, насколько изменится целевая функция, если в соответствующую свободную клетку будет введена одна единица груза.
- Для всех свободных клеток (
- Критерий оптимальности:
- Если все оценки dij
≤ 0, то текущий опорный план является оптимальным. Дальнейшее улучшение невозможно, и задача решена. - Если среди dij есть хотя бы одна положительная оценка (
dij > 0), то текущий план не оптимален, и его можно улучшить.
- Если все оценки dij
- Улучшение плана (построение замкнутого цикла):
- Выбирается свободная клетка с наибольшим положительным значением dij. В неё необходимо ввести максимально возможный объем перевозки.
- Для этого строится замкнутый цикл перераспределения поставок. Этот цикл начинается и заканчивается в выбранной свободной клетке, проходя только через занятые (базисные) клетки. Движение по циклу возможно по горизонтали и вертикали.
- Вершинам цикла поочерёдно присваиваются знаки «+» и «-» (начиная с выбранной свободной клетки, которой присваивается «+»).
- Из всех клеток цикла со знаком «-» выбирается клетка с минимальным объемом перевозки. Этот объем обозначается как
θ. - Значение
θприбавляется к объемам в клетках со знаком «+» и вычитается из объемов в клетках со знаком «-«. Клетка, из которой вычиталосьθи чей объем стал равен нулю, освобождается (выводится из базиса). Выбранная свободная клетка становится занятой (вводится в базис). - Получается новый опорный план, который будет более экономичным (или равным, если
dij=0).
- Повторение: С новым опорным планом повторяются шаги 1-4 до тех пор, пока не будет найден оптимальный план.
Метод потенциалов систематически и итеративно улучшает план, пока не будет достигнута ситуация, когда любое дальнейшее перераспределение грузов приведет только к увеличению или сохранению текущих затрат.
Это гарантирует, что найденное решение будет наилучшим из возможных, обеспечивая максимальную эффективность.
Венгерский Алгоритм для Задачи о Назначениях
Венгерский алгоритм – это мощный и элегантный метод, разработанный Гарольдом Куном в 1955 году, специально для решения задачи о назначениях. Его ключевая особенность заключается в том, что он гарантирует нахождение оптимального решения за полиномиальное время, что делает его весьма эффективным для задач умеренной размерности. Оригинальная версия алгоритма имеет вычислительную сложность O(n³), хотя существуют и более быстрые реализации с O(n⁴).
Принцип работы Венгерского алгоритма:
Алгоритм основан на поиске полного паросочетания минимального веса в двудольном графе. Если говорить проще, он пытается найти такой набор назначений (один исполнитель – одна работа), чтобы суммарная стоимость (или время, или иной критерий) была минимальной.
Основные этапы алгоритма:
- Предварительный этап (Редукция матрицы):
- Редукция строк: Из каждого элемента каждой строки матрицы затрат вычитается минимальный элемент этой строки. Это гарантирует появление хотя бы одного нуля в каждой строке.
- Редукция столбцов: Затем из каждого элемента каждого столбца (полученной после редукции строк матрицы) вычитается минимальный элемент этого столбца. Это гарантирует появление хотя бы одного нуля в каждом столбце.
- После этих операций в каждой строке и каждом столбце матрицы будут нули, что позволяет искать оптимальные назначения среди «нулевых» клеток.
- Поиск независимых нулей и их покрытие:
- Поиск независимых нулей: Цель – найти максимальное количество независимых нулей, то есть таких нулей, которые не находятся в одной строке или одном столбце. Это можно сделать, например, последовательно выбирая нули, вычеркивая соответствующие им строки и столбцы, и повторяя процесс.
- Покрытие нулей: Проводится минимальное количество линий (горизонтальных и/или вертикальных) так, чтобы покрыть все нули в матрице.
- Если число покрывающих линий равно размерности матрицы (n), то найден оптимальный набор назначений, соответствующий независимым нулям.
- Если число покрывающих линий меньше n, то текущее решение не оптимально, и требуется дальнейшая итерация.
- Итеративное улучшение (при необходимости):
- Находим наименьший непокрытый элемент в матрице. Обозначим его k.
- Вычитаем k из всех непокрытых элементов.
- Прибавляем k ко всем элементам, которые покрыты двумя линиями (пересечение строки и столбца).
- Элементы, покрытые одной линией, остаются без изменений.
- После этого этапа снова переходим к шагу 2 (поиску независимых нулей и их покрытию) до тех пор, пока число покрывающих линий не достигнет n.
Применение к несбалансированной задаче о назначениях:
Если число исполнителей не равно числу работ, Венгерский метод также требует предварительной балансировки. Для этого добавляются фиктивные исполнители или работы с нулевыми значениями в матрице затрат. Например, если 3 исполнителя и 4 работы, добавляется фиктивный исполнитель с нулевыми затратами на выполнение всех работ.
Венгерский алгоритм, благодаря своей строгости и эффективности, является стандартом де-факто для решения задач о назначениях во многих областях, от планирования производственных графиков до распределения задач в проектах.
Сравнительный Анализ Алгоритмов и Вычислительная Сложность
Выбор подходящего алгоритма для решения транспортной задачи или задачи о назначениях часто зависит от таких факторов, как размерность задачи, доступные вычислительные ресурсы, а также требуемая точность и скорость получения решения. Проведем сравнительный анализ рассмотренных методов.
Сравнение Методов Нахождения Опорного Плана
Методы нахождения исходного опорного плана существенно различаются по «качеству» получаемого решения и своей вычислительной трудоемкости:
- Метод Северо-Западного Угла (МСЗУ):
- Качество решения: Наихудшее. Поскольку МСЗУ полностью игнорирует стоимости перевозок, начальный план, полученный этим методом, чаще всего далек от оптимального.
- Трудоемкость: Самый простой и быстрый в реализации. Не требует сложных вычислений, только сравнение запасов и потребностей.
- Преимущества: Простота, скорость, легкость ручного выполнения.
- Недостатки: Низкая экономичность начального плана, что может привести к большому числу итераций на этапе оптимизации.
- Метод Минимального Элемента (Наименьшей Стоимости):
- Качество решения: Значительно лучше, чем у МСЗУ. Учитывая тарифы, он старается в первую очередь использовать самые дешевые маршруты, что сразу приближает план к оптимальному.
- Трудоемкость: Немного сложнее МСЗУ, так как на каждом шаге требуется поиск минимального элемента во всей оставшейся матрице.
- Преимущества: Относительно прост, но дает гораздо более экономичный начальный план.
- Недостатки: Все еще не гарантирует оптимальность.
- Метод Аппроксимации Фогеля (МАФ):
- Качество решения: Наилучшее среди методов построения начального плана. Часто дает план, который является оптимальным или квазиоптимальным (очень близким к оптимальному). Это объясняется тем, что метод учитывает «штрафы» за невыбор наилучшего тарифа, тем самым минимизируя потенциальные потери.
- Трудоемкость: Наиболее трудоемкий метод построения начального плана. Требует расчета разностей (штрафов) для каждой строки и столбца на каждой итерации.
- Преимущества: Высокое качество начального плана, что сокращает количество итераций на последующем этапе оптимизации.
- Недостатки: Выше вычислительная сложность, сложнее для ручного выполнения.
- Метод Двойного Предпочтения (Метод Вычеркивания):
- Качество решения: Позиционируется как промежуточный между методом минимального элемента и методом Фогеля. Он также учитывает тарифы, но его сравнительная эффективность по сравнению с методом минимального элемента может варьироваться.
- Трудоемкость: Сложнее, чем МСЗУ и метод минимального элемента, но проще, чем метод Фогеля.
- Сравнительный аспект: Как уже упоминалось, в одном из исследований метод наименьшей стоимости оказался более экономичным в итоговом плане, хотя и более трудоемким для построения опорного плана, чем метод двойного предпочтения. Это показывает, что «качество» и «трудоемкость» не всегда коррелируют прямолинейно, и для конкретных задач может быть предпочтителен тот или иной метод в зависимости от приоритетов.
В таблице ниже представлено обобщенное сравнение методов построения опорного плана:
| Метод | Качество Начального Плана | Трудоемкость | Основной принцип |
|---|---|---|---|
| Северо-Западного Угла | Низкое | Низкая | Последовательное заполнение сверху-слева |
| Минимального Элемента | Среднее | Средняя | Приоритет наименьшим тарифам |
| Двойного Предпочтения | Среднее-Высокое | Средняя | Одновременный учет минимальных тарифов в строках и столбцах |
| Аппроксимации Фогеля | Высокое | Высокая | Минимизация «штрафов» за невыбор оптимального маршрута |
Сравнение Методов Оптимизации Плана
Для достижения оптимального плана, как правило, используется метод потенциалов. Хотя существуют и другие распределительные методы, метод потенциалов является наиболее распространенным и эффективным для транспортной задачи.
- Метод Потенциалов:
- Эффективность: Высокая. Систематически и последовательно улучшает план, гарантируя нахождение глобального оптимума (для сбалансированной задачи).
- Трудоемкость: Зависит от качества начального плана. Чем ближе начальный план к оптимальному, тем меньше итераций потребуется. Сложность одной итерации связана с построением циклов и расчетом потенциалов.
- Сравнительный аспект: В сравнении с другими распределительными методами, трудоемкость расчетов с использованием метода потенциалов может быть на 60% выше. Однако, количество итераций при использовании метода потенциалов может быть в 1.4 раза больше, чем при использовании других распределительных методов для достижения оптимального плана. Это говорит о том, что хотя метод потенциалов может требовать больше итераций, каждая итерация может быть более вычислительно интенсивной, но общая эффективность за счет систематического поиска оптимального решения остается высокой.
Вычислительная Сложность и Теоретические Аспекты
С точки зрения теории сложности вычислений, транспортная задача относится к классу сложности P. Это означает, что для её решения существуют алгоритмы, которые находят оптимальное решение за полиномиальное время (время выполнения растет полиномиально с увеличением размера входных данных).
- Общий Симплекс-метод против Специализированных Алгоритмов:
Транспортная задача является частным случаем общей задачи линейного программирования, которую можно решить с помощью симплекс-метода. Однако, благодаря специфической структуре транспортной задачи (ограничения типа равенств и неотрицательность переменных), специализированные алгоритмы, такие как метод потенциалов, оказываются значительно более эффективными. Они используют эту структуру для упрощения вычислений, что позволяет избежать излишней сложности общего симплекс-метода, который мог бы быть избыточным для данной задачи. - Вычислительная сложность Венгерского алгоритма:
Для задачи о назначениях, которая, как мы помним, является частным случаем транспортной задачи, Венгерский алгоритм имеет вычислительную сложность O(n³) или O(n⁴) в оригинальной версии. Это также гарантирует полиномиальное время решения, что делает его крайне эффективным для практического применения.
Критерии сравнения методов решения транспортной задачи:
- Количество итераций: Чем ��еньше итераций требуется для достижения оптимального плана, тем быстрее алгоритм.
- Трудоемкость: Объем вычислительных операций на каждой итерации.
- Полученный результат (оптимальность плана): Насколько близко начальное или итоговое решение к глобальному оптимуму.
Таким образом, комплексное понимание этих алгоритмов позволяет не только найти оптимальное решение для конкретной задачи, но и выбрать наиболее подходящий метод, исходя из её специфики и требований к эффективности.
Практическое Применение Транспортной Задачи в Реальных Условиях
Транспортная задача – это не просто теоретическое упражнение в математическом программировании; это мощный аналитический инструмент, широко применяемый в реальном секторе экономики для оптимизации логистических и производственных процессов. Её применение позволяет компаниям значительно сократить издержки, повысить эффективность и конкурентоспособность.
Оптимизация Логистических Процессов
Одним из наиболее очевидных и массовых применений транспортной задачи является оптимизация логистики.
- Оптимизация поставок сырья и материалов на производственные предприятия: Представьте завод, который получает сырье от нескольких поставщиков, расположенных в разных регионах. Транспортная задача помогает определить, сколько сырья от каждого поставщика следует заказать и каким маршрутом доставить, чтобы минимизировать общие затраты на транспортировку.
- Пример: Российское представительство крупного американского конгломерата, внедряя TMS (Transport Management System) и централизуя учет логистических процессов, смогло существенно снизить транспортные издержки за счет более эффективного управления потоками сырья и готовой продукции.
- Оптимизация доставок товаров со складов в розничные магазины: Крупные розничные сети имеют множество складов и магазинов. Задача состоит в том, чтобы распределить товары со складов по магазинам таким образом, чтобы минимизировать затраты на доставку, учитывая запасы на складах и потребности магазинов.
- Пример: Компания «Азбука Мебели» после внедрения специализированной программы для логистики достигла значительного сокращения общего километража и улучшила загрузку транспорта. Это привело к заметной экономии на топливе и техническом обслуживании, что напрямую отразилось на рентабельности.
- Оптимизация пассажирских перевозок: Хотя чаще всего транспортная задача ассоциируется с грузоперевозками, её принципы применимы и к пассажирским потокам. Например, при планировании маршрутов общественного транспорта или распределении транспортных средств по направлениям.
- Распределение ресурсов, находящихся у производителей (поставщиков), по потребителям этих ресурсов: Это может касаться не только физических товаров, но и любых других ресурсов – энергии, рабочей силы, информационных потоков.
- Пример: На заводе «Европласт» во Владивостоке оптимизация маршрутов доставки теплозвукоизоляционных материалов с помощью сервиса Maxoptra позволила снизить затраты на доставку единицы продукции (м³). Эта экономия включала расходы на ГСМ и зарплату водителей, что особенно важно при ежемесячном пробеге автопарка более 40 000 км.
- Прикрепление потребителей ресурсов к производителям и привязка пунктов отправления к пунктам назначения: Это фундаментальная задача, решаемая транспортной моделью, которая помогает определить оптимальные пары «поставщик-потребитель».
- Взаимная привязка грузопотоков прямого и обратного направлений: В некоторых отраслях, например, при перевозке контейнеров, важно оптимизировать как прямые, так и обратные потоки, чтобы минимизировать количество «пустых» пробегов.
- Конкретные кейсы сокращения затрат:
- Medmarket (ООО ТК «ХОТЭЙ»): Достигла 30% экономии логистических расходов благодаря оптимизации маршрутов, снижению загрузки автомобилей и сокращению рабочего времени водителей.
- Segezha Group и ПАО «СИБУР»:** Активно внедряют контейнеризацию грузов. Segezha Group добилась снижения издержек на 40% за счет контейнеризации и планирует увеличить её уровень с 75% до 86%. ПАО «СИБУР» также использует контейнеры, возвращающиеся после доставки товаров в Россию, для оптимизации затрат. Это демонстрирует, как транспортная задача может быть частью более широкой стратегии оптимизации, включающей выбор видов транспорта и тары.
В целом, использование транспортных задач позволяет компаниям обеспечить доставку продукции потребителю в нужное время и место при минимальных совокупных затратах (трудовых, материальных, финансовых ресурсов). Внедрение этих методов позволяет сократить до 50% затрат на логистические операции, что критически важно для повышения эффективности деятельности в условиях высокой конкуренции.
Распределение Ресурсов и Производственные Задачи
Помимо логистики, транспортная задача находит применение и в других аспектах управления ресурсами и производством:
- Отдельные задачи оптимальной загрузки промышленного оборудования: На производстве с несколькими цехами и различными типами оборудования можно использовать транспортную модель для оптимального распределения производственных заказов по оборудованию, минимизируя время простоя или затраты на переналадку.
- Оптимальное распределение объемов выпуска промышленной продукции между заводами-изготовителями: Если компания имеет несколько заводов, производящих один и тот же продукт, транспортная задача может помочь определить оптимальный объем производства для каждого завода, чтобы удовлетворить общий спрос при минимальных затратах на производство и логистику.
Таким образом, транспортная задача является универсальным инструментом, который позволяет принимать обоснованные управленческие решения, направленные на минимизацию издержек и максимизацию эффективности в различных сферах бизнеса. Эта универсальность делает ее незаменимой в современной экономике.
Связь с Другими Задачами Математического Программирования
Транспортная задача, несмотря на свою специфичность и самостоятельную ценность, не существует в вакууме. Она является частью более обширной иерархии задач математического программирования и тесно связана с сетевыми моделями и алгоритмами на графах. Понимание этих связей позволяет не только глубже понять природу транспортной задачи, но и использовать более общие подходы для её решения или модификации.
Транспортная Задача в Контексте Линейного Программирования
Фундаментально, транспортная задача – это задача линейного программирования специального вида. Это означает, что её целевая функция линейна, и все ограничения также линейны. Однако её специфическая структура (ограничения типа равенств и неотрицательность переменных) делает её решаемой более эффективными специализированными алгоритмами, чем общий симплекс-метод.
Более широко, транспортная задача является частным случаем задачи нахождения потока минимальной стоимости. Задача о потоках минимальной стоимости – это более общая проблема, где необходимо найти поток в сети, который минимизирует общую стоимость при соблюдении ограничений на пропускную способность дуг и баланс потока в узлах. В транспортной задаче поставщики выступают как узлы-источники, потребители – как узлы-стоки, а дуги между ними – как маршруты с определённой стоимостью. При этом в классической транспортной задаче пропускная способность дуг часто считается неограниченной, что является упрощением более общей задачи о потоках.
Сетевая Постановка Транспортной Задачи
Один из наиболее естественных способов представления транспортной задачи – это её сетевая постановка. В этом контексте:
- Граф: Транспортная сеть представляется как ориентированный граф G = (V, E), где V – множество вершин, а E – множество дуг.
- Вершины: Множество вершин V включает:
- Узлы-источники (поставщики): Откуда груз отправляется.
- Узлы-стоки (потребители): Куда груз доставляется.
- Транзитные узлы: Промежуточные пункты (например, перевалочные склады, сортировочные центры), через которые груз может проходить.
- Дуги (Магистрали): Каждая дуга (i, j) ∈ E представляет собой потенциальный маршрут перевозки груза от узла i к узлу j. Каждая дуга имеет ассоциированную стоимость cij (на единицу груза) и, возможно, пропускную способность uij (максимальный объем груза, который может пройти по этой дуге).
В сетевой постановке неизвестными задачи являются объемы перевозок по каждой дуге (xij). Эти объемы могут быть ограничены пропускной способностью дуг (xij ≤ uij).
Учет транспортных затрат в сетевой постановке может быть более детализированным:
- На каждой дуге: затраты линейно зависят от объема потока (
cijxij). - В каждом узле: затраты могут линейно зависеть от объема переработки груза (например, стоимость перегрузки, складирования).
Опорный план в сетевой постановке должен удовлетворять следующим требованиям:
- Все запасы и потребности распределены.
- К каждой вершине подходит/исходит хотя бы одна стрелка (если это не изолированная вершина).
- Общее количество стрелок, образующих базис, на единицу меньше числа вершин (
m+n-1для классической транспортной задачи), и эти стрелки не образуют замкнутый контур. Это соответствует концепции остовного дерева, которое обеспечивает связность сети без избыточных связей.
Метод потенциалов, который мы рассматривали для проверки оптимальности транспортной задачи, может быть использован для решения транспортной задачи с ограничениями пропускной способности в сетевой постановке, хотя и с небольшим усложнением алгоритма для учёта дополнительных ограничений.
Взаимосвязь с Алгоритмами на Графах
Сетевые модели, в которых формулируется транспортная задача, тесно связаны с фундаментальными алгоритмами на графах. Эти алгоритмы могут быть использованы как часть более сложных оптимизационных моделей, так и для решения вспомогательных задач:
- Задача о кратчайшем пути: Алгоритмы, такие как алгоритм Дейкстры (для графов с неотрицательными весами рёбер) и алгоритм Флойда-Уоршелла (для поиска всех кратчайших путей между всеми парами вершин), используются для определения оптимальных маршрутов между двумя точками в сети. Хотя транспортная задача напрямую не ищет кратчайший путь, понимание этих алгоритмов важно для построения матрицы затрат (cij), если эти затраты зависят от кратчайшего расстояния между поставщиком и потребителем.
- Алгоритмы построения минимального остовного дерева: Например, алгоритмы Прима или Крускала, используются для нахождения минимального по весу подмножества рёбер, которое соединяет все вершины графа без циклов. Это важно в задачах проектирования сетей связи, дорог, трубопроводов, где необходимо обеспечить связность с минимальными затратами. Хотя напрямую не используются для решения транспортной задачи, их принципы (например, отсутствие циклов в базисе) находят отражение в методе потенциалов.
Таким образом, транспортная задача является мощным мостом между линейным программированием и теорией графов, демонстрируя, как специфические экономические проблемы могут быть эффективно решены с помощью комплексного математического аппарата.
Заключение
В рамках данной курсовой работы мы провели всестороннее исследование задачи о размещениях, сфокусировавшись на её важнейшем частном случае – транспортной задаче. Наша цель заключалась в создании исчерпывающего материала, детально раскрывающего как теоретические основы, так и практические аспекты этой оптимизационной проблемы.
Мы начали с погружения в математическую постановку транспортной задачи, определив её как задачу линейного программирования, направленную на минимизацию затрат при распределении ресурсов. Была представлена общая математическая модель с чётким определением переменных, целевой функции и ограничений, а также рассмотрены концепции сбалансированных и несбалансированных задач, что является критически важным для корректного применения алгоритмов. Особое внимание было уделено задаче о назначениях, её математической модели и связи с транспортной задачей как её частным случаем с единичными запасами и потребностями.
Далее мы перешли к изучению классических алгоритмов решения, которые последовательно включают этапы нахождения опорного плана, проверки его на оптимальность и последующего улучшения. Мы подробно рассмотрели и проиллюстрировали такие методы построения начального опорного плана, как метод северо-западного угла, метод минимального элемента, метод аппроксимации Фогеля и метод двойного предпочтения, каждый из которых обладает своими преимуществами и недостатками в плане простоты, трудоемкости и качества получаемого решения. Метод потенциалов был представлен как ключевой инструмент для проверки оптимальности и итеративного улучшения плана. Для задачи о назначениях был детально описан Венгерский алгоритм, признанный за свою эффективность и полиномиальную вычислительную сложность.
Сравнительный анализ алгоритмов позволил оценить их по критериям вычислительной сложности, трудоемкости и качества получаемого решения, подчеркнув, что выбор метода часто зависит от специфики задачи и требуемого баланса между скоростью и точностью. Мы подтвердили принадлежность транспортной задачи к классу сложности P и объяснили, почему специализированные алгоритмы превосходят общий симплекс-метод в её решении.
Практическая значимость транспортной задачи была продемонстрирована через многочисленные примеры из реального бизнеса. От оптимизации поставок сырья и распределения товаров в розничных сетях до оптимизации пассажирских перевозок и загрузки промышленного оборудования – везде транспортная задача находит своё применение. Конкретные кейсы таких компаний, как российское представительство американского конгломерата, «Азбука Мебели», завод «Европласт», Medmarket, Segezha Group и ПАО «СИБУР», наглядно показали, как применение этих математических моделей приводит к существенному сокращению логистических и операционных издержек.
Наконец, мы раскрыли место транспортной задачи в иерархии математического программирования, показав её связь с более общей задачей о потоках минимальной стоимости и её формулировкой в сетевой постановке. Взаимосвязь с алгоритмами на графах, такими как алгоритмы Дейкстры и Флойда для поиска кратчайших путей, подчеркнула междисциплинарный характер и широкие возможности применения концепций, лежащих в основе транспортной задачи.
Таким образом, данная курсовая работа не только представила строгую математическую базу и алгоритмический аппарат для решения транспортной задачи, но и убедительно продемонстрировала её фундаментальную роль в оптимизации экономических процессов. Полученные выводы подтверждают высокую применимость и эффективность рассмотренных алгоритмов для принятия обоснованных управленческих решений, что является критически важным навыком для студентов технических и экономических вузов в современных условиях.
Список использованной литературы
- Математическая модель транспортной задачи [Электронный ресурс] // e-learning.bmstu.ru: сайт. – URL: https://e-learning.bmstu.ru/moodle/mod/resource/view.php?id=80500 (дата обращения: 24.10.2025).
- Тема 3 задача о назначениях [Электронный ресурс] // bsac.by: сайт. – URL: https://bsac.by/index.php?option=com_docman&task=doc_download&gid=103 (дата обращения: 24.10.2025).
- Математическая модель задачи о назначениях [Электронный ресурс] // matematika.e-science.ru: сайт. – URL: http://matematika.e-science.ru/teoriya/lineinoe_programmirovanie/zadacha_o_naznacheniyah/matematicheskaya_model_zadachi_o_naznacheniyah (дата обращения: 24.10.2025).
- Модели и алгоритмы решения обобщенных задач о назначениях [Электронный ресурс] // elib.pnzgu.ru: сайт. – URL: http://elib.pnzgu.ru/files/read.php?dir=1&id=11568 (дата обращения: 24.10.2025).
- Постановка транспортной задачи общего вида [Электронный ресурс] // mathprofi.ru: сайт. – URL: https://mathprofi.ru/postanovka_transportnoi_zadachi.html (дата обращения: 24.10.2025).
- ТРАНСПОРТНАЯ ЗАДАЧА И ЕЁ ПРИМЕНЕНИЕ В РЕШЕНИИ ЭКОНОМИЧЕСКИХ ЗАДАЧ [Электронный ресурс] // science-education.ru: сайт. – URL: https://science-education.ru/ru/article/view?id=25577 (дата обращения: 24.10.2025).
- Решение транспортной задачи [Электронный ресурс] // rae.ru: сайт. – URL: https://www.rae.ru/forum2012/261/1230 (дата обращения: 24.10.2025).
- ПРИМЕНЕНИЕ ТРАНСПОРТНОЙ ЗАДАЧИ ПРИ РЕШЕНИИ ЭКОНОМИЧЕСКИХ ЗАДАЧ [Электронный ресурс] // cyberleninka.ru: сайт. – URL: https://cyberleninka.ru/article/n/primenenie-transportnoy-zadachi-pri-reshenii-ekonomicheskih-zadach (дата обращения: 24.10.2025).
- Галяутдинов, И. Транспортная задача — решение методом потенциалов [Электронный ресурс] // galyautdinov.ru: сайт преподавателя экономики. – URL: https://galyautdinov.ru/post/transportnaya-zadacha-reshenie-metodom-potencialov (дата обращения: 24.10.2025).
- Вопрос 6. Метод потенциалов для решения транспортной задачи в сетевой постановке [Электронный ресурс] // isu.ru: сайт. – URL: https://isu.ru/ru/science/work/izvestia/docs/2015/05/201505_06_18.pdf (дата обращения: 24.10.2025).
- Транспортная задача в сетевой постановке [Электронный ресурс] // isu.ru: сайт. – URL: https://isu.ru/ru/science/work/izvestia/docs/2015/05/201505_06_18.pdf (дата обращения: 24.10.2025).
- Сравнение результатов применения методов решения транспортной задачи линейного программирования [Электронный ресурс] // crede-experto.ru: сайт. – URL: https://crede-experto.ru/lib/002-019.pdf (дата обращения: 24.10.2025).
- СРАВНЕНИЕ РЕЗУЛЬТАТОВ ПРИМЕНЕНИЯ МЕТОДОВ РЕШЕНИЯ ТРАНСПОРТНОЙ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ [Электронный ресурс] // cyberleninka.ru: сайт. – URL: https://cyberleninka.ru/article/n/sravnenie-rezultatov-primeneniya-metodov-resheniya-transportnoy-zadachi-lineynogo-programmirovaniya (дата обращения: 24.10.2025).
- СРАВНИТЕЛЬНЫЙ АНАЛИЗ МЕТОДОВ РЕШЕНИЯ ТРАНСПОРТНЫХ ЗАДАЧ ПРИ ОПТИМАЛЬНОМ ПЛАНИРОВАНИИ ПЕРЕВОЗОЧНОГО ПРОЦЕССА [Электронный ресурс] // cyberleninka.ru: сайт. – URL: https://cyberleninka.ru/article/n/sravnitelnyy-analiz-metodov-resheniya-transportnyh-zadach-pri-optimalnom-planirovanii-perevozochnogo-protsessa (дата обращения: 24.10.2025).
- Лекция 4 [Электронный ресурс] // isu.ru: сайт. – URL: https://isu.ru/ru/science/work/izvestia/docs/2015/05/201505_06_18.pdf (дата обращения: 24.10.2025).
- ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ: ТРАНСПОРТНЫЕ И СЕТЕВЫЕ МОДЕЛИ [Электронный ресурс] // dep_vpm.pnzgu.ru: сайт. – URL: https://dep_vpm.pnzgu.ru/files/dep_vpm.pnzgu.ru/lp_transportnye_i_setevye_modeli.pdf (дата обращения: 24.10.2025).
- Транспортная задача в сетевой постановке [Электронный ресурс] // mathprofi.ru: сайт. – URL: https://mathprofi.ru/transportnaya_zadacha_v_setevoi_postanovke.html (дата обращения: 24.10.2025).
- Галяутдинов, И. Транспортная задача: метод минимального элемента [Электронный ресурс] // galyautdinov.ru: сайт преподавателя экономики. – URL: https://galyautdinov.ru/post/transportnaya-zadacha-metod-minimalnogo-elementa (дата обращения: 24.10.2025).
- Венгерский метод [Электронный ресурс] // e-learning.bmstu.ru: сайт. – URL: https://e-learning.bmstu.ru/moodle/pluginfile.php/1271616/mod_resource/content/1/03_03.pdf (дата обращения: 24.10.2025).
- Галяутдинов, И. Транспортная задача: метод аппроксимации Фогеля [Электронный ресурс] // galyautdinov.ru: сайт преподавателя экономики. – URL: https://galyautdinov.ru/post/approksimaciya-fogelya (дата обращения: 24.10.2025).
- Использование транспортной задачи для определения оптимального плана грузоперевозок [Электронный ресурс] // cyberleninka.ru: сайт. – URL: https://cyberleninka.ru/article/n/ispolzovanie-transportnoy-zadachi-dlya-opredeleniya-optimalnogo-plana-gruzoperevozok (дата обращения: 24.10.2025).
- Методы решения транспортной задачи [Электронный ресурс] // dspace.susu.ru: сайт. – URL: https://dspace.susu.ru/xmlui/bitstream/handle/0001.74/3392/10.pdf?sequence=1&isAllowed=y (дата обращения: 24.10.2025).
- Теоретический материал: Решение задачи о назначениях (Венгерский алгоритм) [Электронный ресурс] // ds.msu.ru: сайт. – URL: https://www.ds.msu.ru/content/courses/dmt/lectures/graph_algorithms/assignment/ (дата обращения: 24.10.2025).
- Алгоритм решения транспортной задачи закрытого типа [Электронный ресурс] // vumc.ru: сайт. – URL: https://vumc.ru/files/disiplins/mathematics/lection/lec_2.pdf (дата обращения: 24.10.2025).