Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 6.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
335.36 Кб
Скачать

Лабораторная работа № 6

Цель: Решение транспортной задачи.

Транспортная задача является классической задачей исследования операций. Множество задач распределения ресурсов сводится именно к этой задаче.

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

Логистическая компания обслуживает четыре магазина, доставляя в них товары определенной группы с шести складов. Потребность каждого магазина в товарах различна. Запасы на каждом складе ограничены. Требуется определить, каким образом следует организовать маршрут доставки товаров, чтобы грузооборот был минимальным. Другими словами, решить, с какого склада, в какой магазин и сколько перевозить товаров для минимизации грузооборота перевозок.

Исходные данные следующие.

Таблица 1. Наличие товаров на складах

Номер склада

Наличие товаров, ед.

Склад № 1

2000

Склад № 2

1300

Склад № 3

1700

Склад № 4

1550

Склад № 5

1000

Склад № 6

1450

Таблица 2. Потребность магазинов в товарах

Номер магазина

Потребность в товарах, ед.

Магазин № 1

2000

Магазин № 2

1500

Магазин № 3

2100

Магазин № 4

3400

Таблица 3. Расстояния между складами и магазинами

Магазин № 1

Магазин № 2

Магазин № 3

Магазин № 4

Склад № 1

6

4

5

11

Склад № 2

12

6

4

9

Склад № 3

15

8

10

4

Склад № 4

9

5

11

6

Склад № 5

3

7

12

11

Склад № 6

4

9

15

12

  1. Подготовим исходные данные. В строку C3:F3 занесем потребности магазинов в товарах. В столбец В4:В9 занесем данные о наличии товаров на складах. В блок ячеек C4:F9 занесем расстояния между складами и магазинами.

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

Решение задачи методом потенциалов

  1. Строим исходный опорный план методом минимального элемента. Для удобства расчетов создаем таблицу следующей структуры:

Столбцы, содержащие информацию о запросах магазинов, разделяем на две части:

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

  • Во второй столбец заносим расстояния между магазинами и складами из исходных данных. В строку Запрос заносим признак, который будет сигнализировать выводом знака плюс об удовлетворении потребности данного магазина в товарах в процессе формирования исходного плана. Если в магазин еще надо завозить товар, то соответствующая ячейка будет пустой. В начале формирования плана все эти ячейки, естественно, будут пустыми. Формула для создания такого алгоритма работы, например, для магазина 1 имеет вид:

С21 = ЕСЛИ(C15+C16+C17+C18+C19+C20=C21;"+";" ")

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

С22 = СУММПРОИЗВ(C15:C20;D15:D20)

Для других магазинов грузооборот вычисляется аналогично.

В ячейке Е33 будем считать суммарный грузооборот по формуле:

Е23 = СУММ(C22:I22)

В столбце К будем вычислять текущее количество товара на соответствующем складе, равное запасу товара минус то его количество, которое перевезено во все магазины. Например, для склада 1 оно вычисляется по формуле:

К15 = =B15-C15-E15-G15-I15

  1. Построение начинаем с ячейки, содержащей минимальное значение расстояния между складом и магазином – D19. Заносим в ячейку С19 значение х51=min(1000, 2000)=1000. В ячейке К19 появилось нулевое значение. Это означает, что строка 19 (Склад 5) закрыта.

Далее переходим к ячейке D20, т.к. в ней находится минимальное значение в столбце D. Заносим в нее значение х61=min(2000 - 1000, 1450)=1000. В ячейке D21 появился плюс, значит, столбцы D (Магазин 1) закрыты. Запросы первого магазина обеспечены в полном объеме, при этом на складе 6 осталось еще 450 единиц товара.

Продолжаем заполнение ячеек аналогичным образом.

Переходим к ячейке F20 и заносим в Е20 значение х62=min(1500, 1450 - 1000)=450. Строка 20 закрыта.

Переходим к ячейке F15 и заносим в нее значение х12=min(1500 - 450, 2000)=1050. Знак плюс в ячейке F21 говорит о том, что столбцы F:E закрыты.

Переходим к ячейке G15 и заносим в нее значение х13=min(2100, 2000 - 1050)=950. В ячейке К15 – ноль, значит, строка 15 закрыта.

Переходим к ячейке G16 и заносим в нее значение х23=min(2100 - 950, 1300)=1150. Столбцы G:H закрыты.

Переходим к ячейке I16 и заносим в нее значение х24=min(3400, 1300 - 1150)=150. Поскольку остался единственный незакрытый столбец, закрываем его строками 17 и 18.

Опорный план построен. Столбец К содержит одни нули, т.е. весь товар со всех складов вывезен. В столбцах D, F, H, J изображены плюсы, значит, запросы всех магазинов удовлетворены.

Грузооборот при реализации найденного плана составляет 42050 единиц*км.

3. Для построения первой итерации скопируем исходный опорный план, начиная со строки 27. В строке Запрос в столбцах, содержащих расстояния между магазинами и складами, запишем потенциалы магазинов: v1, v2, v3, v4.

В столбце К запишем потенциалы складов от u1 до u6.

В блоке А42:А50 записываем систему уравнений для нахождения потенциалов, т.е. уравнения ui + vi = cij для всех свободных переменных. Получилось 9 уравнений и 10 неизвестных. Одно неизвестное полагаем равным нулю, например, v1 = 0. Тогда из первого уравнения u5 = 3, из второго – u6 = 4, и так далее. Записываем найденные значения в столбцы В и С.

Вычисляем косвенные расстояния для всех свободных переменных и заносим их в столбцы F и G. Косвенная стоимость вычисляется по формуле: cij = ui + vi. Например, для значения с11 (ячейка G41): с11 = u1 + v1. (G41=C44+C41).

Вычисляем разности dij = cijcij косвенные стоимости для всех свободных переменных и заносим их в столбцы H и I. Здесь cijэто реальные расстояния между складами и магазинами, а cij – косвенные расстояния. Например, разность d11 (ячейка I41) равна d11 = c11c11 (I41= D30-G41).

Среди разностей есть отрицательные значения, следовательно, план можно улучшить, увеличив количество перевозимого товара на одном из этих направлений. Поскольку все отрицательные разности одинаковые, выберем любую из них, например, d52 и составим цикл пересчета. Для этого скопируем часть таблицы первой итерации в блок ячеек К41:Т47. Допустим, х52 = А. Компенсируем увеличение х52 уменьшением х62: х62 = х62 - А. Далее компенсируем х61, а затем – х51. Цикл замкнулся. Следовательно, А=450, т.е. значение х52 можно увеличить до 450. Изменяем значения, участвующие в цикле пересчета, в таблице первой итерации. Видим, что грузооборот стал меньше, т.е. решение стало ближе к оптимальному. Продолжая итерации, можно придти к оптимальному решению.