Вы находитесь на странице: 1из 11

РЕШЕНИЕ ТРАНСПОРТНОЙ ЗАДАЧИ В MS EXCEL

Транспортная задача – частный случай задачи линейного программирования.


Применяется:
 при определении рациональных перевозок грузов и пассажиров;
 для оптимального закрепления потребителей за поставщиками и т. д.
Постановка задачи.
Пусть имеется
 m поставщиков товара A1, A2, … , Am, на складах которых имеется груз в
количествах а1, а2, … , аm.
 n потребителей товара В1, В2, … , Вn, спрос каждого из них в этом грузе
составляет b1, b2, … , bn единиц;
 стоимость cij перевозки единицы груза от i-го поставщика к j-му
потребителю.
Необходимо составить план перевозок, позволяющий:
1. Вывезти все грузы со складов поставщиков.
2. Удовлетворить спрос в грузе каждого потребителя.
3. Минимизировать суммарную стоимость перевозок.

Типы транспортных задач:


 ТЗ закрытого типа (сбалансированная): суммарный спрос на груз всех
потребителей равен сумме запасов груза на всех складах поставщиков:
m n

 a  b
i 1
i
j 1
j

 ТЗ открытого типа (сбалансированная): суммарный спрос на груз всех


потребителей не равен сумме запасов груза на всех складах поставщиков:
m n

 a  b
i 1
i
j 1
j

Методы построения начального опорного плана задачи


 Метод северо-западного угла. Заполнение таблицы осуществляется с
верхнего левого («северо-западного») угла.
Недостаток метода – игнорирование стоимости перевозки товаров. Поэтому
построенный план часто не оптимальный.
 Метод минимального элемента. Заполнение таблицы на каждом шаге
осуществляется с клетки с минимальной стоимостью перевозок.
Проверка плана перевозок на оптимальность, а также его улучшение
осуществляется с помощью метода потенциалов.
Решение транспортной задачи в MS Excel.
1. Условие транспортной задачи в MS Excel оформляется двумя
таблицами: в первой записываются данные по стоимости перевозки единицы
груза от конкретного поставщика каждому потребителю, во второй –
первоначальные нулевые значения количества перевозимого груза, а также
потребность в товаре и запас его на складах.
2. Добавляется строка «Итого», показывающая сумму полученного
количества груза для каждого потребителя. Добавляется столбец «Итого»,
отображающий сумму полученного количества груза для каждого поставщика.
3. Определяется функция, соответствующая итоговой стоимости
перевозок.
4. Запускается надстройка «Поиск решения», в которую заносятся
соответствующие условия и подчитывается минимальное значение итоговой
стоимости перевозок.

Пример. Решите транспортную задачу в MS Excel, условие которой


заданы таблицей:

Потребители Запас на
Поставщики
В1 В2 В3 В4 В5 складе
Склад 1 25 42 52 3 54 2300
Склад 2 45 49 69 79 6 2700
Склад 3 82 55 28 51 14 3380
Склад 4 66 6 26 60 45 2500
Склад 5 35 58 19 13 65 3700
Требуется 4370 2430 3500 1690 2590

Решение. Рассмотрим подробное решение транспортной задачи


закрытого типа по критерию стоимости:
1) Условие транспортной задачи в MS Excel запишем двумя таблицами:
 Таблица 1: Начальные условия, отображающие количество поставщиков
(Склад i), потребітелей товара (Bj).
 Таблица 2: Расчетная таблица, в которой будут отображаться найденные
количества перевозимого груза. Их первоначальное значение принимается
равным нулю.

2) Таблица 2 дополним столбцом и строкой «Итого», в которые внесем


соответственно суммы значений количества перевозимого груза для конкретного
поставщика и потребителя. В нашем случае:
Для строки «Итого» Для столбца «Итого»
В16: = СУММ(B11:B15) G11: =СУММ(B11:F11)
С16: = СУММ(C11:C15) G12: =СУММ(B12:F12)
D16: = СУММ(D11:D15) G13: =СУММ(B13:F13)
E16: = СУММ(E11:E15) G14: =СУММ(B14:F14)
F16: = СУММ(F11:F15) G15: =СУММ(B15:F15)

Данные столбцы необходимы для дальнейшей проверки с тем, что


требуется потребителям и с тем, что есть на складах поставщиков.
В таблице 2 отобразим требуемое количество груза для каждого
потребителя (строка «Требуется») и запас товара на складе поставщиков
(столбец «Запас на складе»).
3) Определим функцию, соответствующую итоговой стоимости
перевозок (напомним, что цель задачи – найти минимальную суммарную
стоимость перевозок).
Данная функция представляет собой сумму произведений двух массивов:
стоимости перевозки единицы продукции от конкретного поставщика
конкретному потребителю и соответствующее этой стоимости количество
перевозимого груза.
В MS Excel данные массивы заданы в таблице 1 и таблице 2
соответственно. Для записи функции:
 перейдем в ячейку D19;
 выберем: Формулы – Математические – СУММПРОИЗВ;
 в появившемся окне укажем массивы, для которых необходимо
выполнить операцию (рисунок 1):

Рисунок 1. – Окно математической формулы «СУММПРОИЗВ»


В результате выполненных действий на экране будут отображены
исходные данные задачи, расчетная таблица, строка и столбец сравнений
«Итого», первоначальное значение итоговой минимальной суммы перевозок,
равное нулю (рисунок 2).

Рисунок 2. – Начальные данные и рассчетная таблица для решения


транспортной задачи в MS Excel.

4) Запускаем надстройку «Поиск решения». Для этого необходимо


вывести этот модуль в меню: Файл – Параметры Excel – Надстройки – Перейти
– отметить галочкой надстройку «Поиск решения» – ОК (рисунок 3).

Рисунок 3. – Доступные надстройки MS Excel.


Надстройка «Поиск решения» будет отображаться во вкладке «Данные»
панели быстрого доступа. Данная надстройка позволит осуществить
автоматический поиск наилучшего решения задачи – минимальной суммарной
стоимости перевозок груза, учитывая начальные данные. Для решения
необходимо обозначить ячейку с целевой функцией, указать находимое для нее
значение (минимальное), ввести ограничения для задачи (рисунок 4).

Рисунок 4. – Надстройка «Поиск решения».

Поясним заполнение окна надстройки, изображенное на рисунке 4:

«Установить целевую функцию» указана ячейка, в которой записана формула


подсчета итоговой суммы перевозок: $D$19.
«Равной» выбран необходимый вариант; в нашем
случае – минимальное значение (для
итоговой суммы перевозок).
«Изменяя ячейки» указан диапазон ячеек расчетной таблицы, в
котором будет отображаться количество
перевозимого груза: $B$11:$F$15
«Ограничения» чтобы добавить ограничение необходимо
нажать кнопку «Добавить»,
руководствоваться предлагаемыми
значениями выбора (рисунок 5).

Рисунок 5. – Запись ограничения либо внесение в него изменений.


Количество перевозимого груза (изменяемые ячейки) не может быть
отрицательным, поэтому первое вводимое ограничение отображает данное
условие: $B$11:$F$15 ≥ 0.
Значения в изменяемых ячейках (количество перевозимого груза) в сумме
должны совпадать как с потребностью в грузе для потребителей, так и запасу в
грузе на складах у поставщиков. Иными словами,
 значения в строке «Итого» должны соответственно быть равны
значениям в строке «Требуется»: $B$16:$F$16 = $B$17:$F$17;
 значения в столбце «Итого» должны соответственно быть равны
значениям в столбце «Запас на складе»: $G$11:$G$15 = $H$11:$H$15.
Замечание! Равенство последних двух ограничений соблюдается в
транспортных задачах закрытого типа. В задачах открытого типа для
избыточных значений («Требуется» или «Запас на складе») вводятся
ограничения со знаком «≤» («меньше либо равно»).
Для нахождения результата нажимаем кнопку «Выполнить» (или «Поиск
решения» – в зависимости от версии MS Excel). Итоговая таблица с количеством
перевозимого груза и минимальной стоимостью перевозок изображена на
рисунке 6:

Рисунок 6. – Итоговое решение транспорной задачи.

Замечание! Итоговая
таблица содержит дробные
значения количества
перевозимого груза. Чтобы
этого избежать можно в окне
надстройки «Поиск
решения» добавить еще одно Рисунок 7. – Задание целых значений
ограничение, задающее целые значения для изменяемых ячеек (рисунок 7).
РЕШЕНИЕ ТРАНСПОРТНОЙ ЗАДАЧИ В MATHCAD

Транспортная задача по критерию стоимости является задачей линейного


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

Потребители Запас на
Поставщики
В1 В2 В3 В4 В5 складе
Склад 1 25 42 52 3 54 2300
Склад 2 45 49 69 79 6 2700
Склад 3 82 55 28 51 14 3380
Склад 4 66 6 26 60 45 2500
Склад 5 35 58 19 13 65 3700
Требуется 4370 2430 3500 1690 2590

Решение.
1) Откроем Mathcad, установим панель инструментов. «Математика»: Вид
– Панели инструментов – Математика (поставить флажок).
Замечание! Если версия программы англоязычная, то выполняют: View –
ToolBars – MaTh. Панель инструментов может отобразиться на рабочей области,
а может «спрятаться» в верхней части окна.
Выведем на рабочий лист следующие вкладки нажатием на них этой
панели инструментов, которые будут использованы нами при решении:
 Калькулятор,
 Вектор и матрица,
 Вычисления,
 Математический анализ,
 Булева алгебра,
 Программирование,
 Символьные преобразования с ключевыми словами.
Целесообразно установить эти вкладки в правой части рабочей области,
оставив левую часть для выполнения операций (рисунок 8).

Рисунок 8. – Размещение необходимых панелей инструментов на рабочем


листе Mathcad.

2) Для решения транспортной задачи в Mathcad ее условие представляют


в матричной форме.
Обозначим: матрицу стоимостей перевозок единицы продукции – С,
вектор-строку потребностей в грузе – В, вектор-столбец запаса груза на складах
поставщиков – А.
3) В Mathcad есть стандартные переменные, значения которых задано
заранее. Одной из таких переменных является переменная ORIGIN, в которой
хранится номер первой строки (столбца) матрицы или первой компоненты
вектора. По умолчанию в Mathcad координаты векторов, столбцы и строки
матрицы нумеруются, начиная с 0 (ORIGIN:=0). Поскольку в математической
записи чаще используется нумерация с 1, удобно перед началом работы с
матрицами определять значение переменной ORIGIN равным 1, выполнять
команду ORIGIN:=1.
Для решения нам также пригодится функция вычисление номера
последнего элемента вектора v – функция last(v). В нашем примере с ее помощью
будут находиться количество элементов в векторе-строке В и векторе-столбце А.
Таким образом:
 зададим вручную значение переменной ORIGIN:=1,
 введем условие задачи в матричной форме (необходимо использовать
панель инструментов Вектор и матрица)
 зададим вручную функции m:=last(b), n:=last(a) (рисунок 9).
Рисунок 9. – Задание начальных условий задачи.

4) Зададим переменную х, значения которой будут являться элементами


матрицы грузов. Как и при решении задачи в MS Excel первоначальным
значениям количества перевозимого грузы присвоим значения, равные нулю.
Для дальнейшей проверки найдем суммарные значения для требуемого
покупателям количества грузов и суммарные значения запасов грузов на складах
поставщиков. Зададим целевую функцию F(x) – суммарную стоимость всех
перевозок – как сумму произведений соответствующих элементов матрицы С
(стоимости перевозки единицы груза от конкретного поставщика конкретному
покупателю) на соответствующие элементы матрицы Х (количество
перевозимого груза).
Для выполнения указанных действий используется панель инструментов
Математический анализ. Результат выполнения изображен на рисунке 10.

Рисунок 9. – Определение целевой функции.


5) В системе Mathcad можно реализовать расчеты по сложным
разветвленным алгоритмам или с циклическими процессами. Осуществление
таких решений производится с применением инструментов панели
инструментов Программирование.
Нам понадобятся следующие элементы данной панели инструментов:
 Add Line – создает и при необходимости расширяет жирную
вертикальную линию, под которой объединяются несколько
операторов. Справа от этой линии задается запись программного
блока.
 – символ локального присваивания. Локальный характер
присваивания означает, что значение, которое присвоено
переменной внутри программного блока, сохраняется только в теле
программы.
 for – оператор задания цикла с фиксированным числом повторений.
Он записывается в виде: for Var є min…max, где Var – переменная,
значение которой меняется от min до max с шагом +1.
Зададим цикл с оператором for для нахождения сумм количества
перевозимого груза и сравнения этих сумм с требуемым количеством груза для
каждого потребителя и запасом груза у каждого поставщика.
Применим блок символьного решения уравнений Given … Find (эти
ключевые слова печатаются с клавиатуры), в котором будут отражены
описанные выше условия и осуществится нахождение минимального значения
суммарной функции перевозок. Для записи данных необходимо применить
элементы панели инструментов Булева алгебра (рисунок 10).
Рисунок 10. – Решение транспортной задачи: определение количества
перевозимого груза и значения целевой функции.
Далее получаем окончательное решение: матрицу перевозок Х
(количество перевозимого груза) и суммарную іскомую стоимость перевозок
– минимальное значение функции F(x) (рисунок 11).

Рисунок 11. – Результат решения транспортной задачи в Mathcad.

Замечание! Для отображения конечного результата, а также


промежуточных вычислений целесообразно установить наиболее подходящий
формат чисел. При этом можно зафиксировать количество знаков после
запятой, отображение/скрытие незначащих нулей и т.д. Для выбора нужного
формата необходимо выполнить: Формат – Результат. В появившемся окне
установить необходимые параметры (рисунок 12).

Рисунок 12. – Формат отображения результата.