Полученное
значение целевой функции F=1466
ден.ед. является оптимальным решением
транспортной задачи.
Решение
транспортной задачи с помощью метода
запрета перевозок.
Предположим,
что необходимо установить запрет на
поставку по одному из представленных
маршрутов. В этом случае необходимо
значительно увеличить тариф на поставку
груза по данному маршруту и вновь
используя надстройку EXCEL
«Поиск решения» найти новое решение
данной транспортной задачи.
Так,
в случае значительного увеличения
стоимости перевозок по маршруту (1;3),
будет сформировано новое решение.
Выводы:
При
решении данной транспортной задачи
было использовано несколько различных
методов, каждый из которых постепенно
приближал нас к искомому оптимальному
значению.
На первом этапе был использован
«метод северо-западного угла». Его
основной целью является поиск допустимых
решений, а не анализ целевой функции.
Применение метода минимальной
стоимости и метода Фогеля позволили
найти опорные решения близкие к
оптимальному. Причем метод минимальной
стоимости предложил решение равное
решению, полученному методом Фогеля.
Метод минимальной стоимости был принят
за опорный план и проверен на оптимальность
методом потенциалов. Получили, что
найденное методом минимальной стоимости
значение целевой функции (F=1546
ден.ед.) не является оптимальным. Было
принято решение о преобразовании плана
поставок, осуществлено перераспределение
груза и получен новый опорный план, при
котором значение целевой функции
снизилось до 1474 ден.ед..
В свою очередь
данный план был проверен при помощи
надстройки EXCEL
«Поиск решения». В результате был
определен оптимальный план перевозки
(F=1466
ден.ед.).
Соседние файлы в папке маркетинг ответы на тесты
- #
16.03.201548.21 Кб45лблогистика.xlsx
- #
- #
- #
- #
- #
- #
Содержание
- Постановка задачи и подготовка таблиц
- Виды транспортных задач
- Общее описание транспортной задачи
- Инструменты для решения транспортной задачи в Эксель
- Постановка задачи
- Решение задачи
- Условие
- Варианты решения
- Транспортная задача в Экселе
- Пример задачи
- Как решить транспортную задачу в Excel
- Алгоритм решения транспортной задачи распределительным методом
- Что такое симплекс-метод
- Алгоритм решения основной задачи ЛП симплекс-методом
- Вводная часть, с которой желательно ознакомиться
- О чем говорится в определении транспортной задачи?
- Общий план решения транспортной задачи методом потенциалов
- Подробная инструкция по решению транспортной задачи
Постановка задачи и подготовка таблиц
Цель задачи сводится к математическому моделированию минимизации грузопотоков. Довольно часто студенты пишут рефераты на тему поиска решения транспортной задачи. Этот пример можно взять за основу реферата.
Виды транспортных задач
Условия и ограничения транспортной задачи достаточно обширны и разнообразны. Поэтому для ее решения разработаны специальные методы. С помощью любого из них можно найти опорное решение. А впоследствии улучшить его и получить оптимальный вариант.
Условия транспортной задачи можно представить двумя способами:
- в виде схемы;
- в виде матрицы.
В процессе решения могут быть ограничения (либо задача решается без них).
По характеру условий различают следующие типы транспортных задач:
- открытые открытые транспортные задачи (запас товара у поставщика не совпадает с потребностью в товаре у потребителя);
- закрытые (суммарные запасы продукции у поставщиков и потребителей совпадают).
Закрытая транспортная задача может решаться методом потенциалов. Она всегда разрешима. Открытый тип сводят к закрытому с помощью прибавления к суммарному запасу или потребности в товаре недостающих единиц, чтобы добиться равенства.
Общее описание транспортной задачи
Главной целью транспортной задачи является поиск оптимального плана перевозок от поставщика к потребителю при минимальных затратах. Условия такой задачи записываются в виде схемы или матрицы. Для программы Excel используется матричный тип.
Если общий объем товара на складах поставщика равен величине спроса, транспортная задача именуется закрытой. Если эти показатели не равны, то такую транспортную задачу называют открытой. Для её решения условия следует привести к закрытому типу. Для этого добавляют фиктивного продавца или фиктивного покупателя с запасами или потребностями равными разнице между спросом и предложением в реальной ситуации. При этом в таблице издержек добавляется дополнительный столбец или строка с нулевыми значениями.
Инструменты для решения транспортной задачи в Эксель
Для решения транспортной задачи в Excel используется функция «Поиск решения». Проблема в том, что по умолчанию она отключена. Для того, чтобы включить данный инструмент, нужно выполнить определенные действия.
- Делаем перемещение во вкладку «Файл».
- Кликаем по подразделу «Параметры».
- В новом окне переходим по надписи «Надстройки».
- В блоке «Управление», который находится внизу открывшегося окна, в выпадающем списке останавливаем выбор на пункте «Надстройки Excel». Делаем клик по кнопке «Перейти…».
- Запускается окно активации надстроек. Устанавливаем флажок возле пункта «Поиск решения». Кликаем по кнопке «OK».
- Вследствие этих действий во вкладке «Данные» в блоке настроек «Анализ» на ленте появится кнопка «Поиск решения». Она нам и понадобится при поиске решения транспортной задачи.
Постановка задачи
Есть запасы однотипной продукции у поставщиков A1, A2, A3, A4.
Существует потребность в этой продукции B1, B2, B3
Стоимость доставки единицы продукции от поставщиков к потребителям представлена в таблице.
Поставщик |
Потребитель |
Запас |
||
В1 | В2 | В2 | ||
А1 | 6 | 5 | 2 | 250 |
А2 | 3 | 7 | 4 | 100 |
А3 | 7 | 8 | 1 | 80 |
А4 | 2 | 2 | 3 | 120 |
Потребность |
150 | 150 | 250 |
Необходимо составить такой план перевозок, который бы удовлетворил все потребности и имел минимальную стоимость.
Решение задачи
Для решения данной задачи в табличном процессоре необходимо составить две таблицы, приведенные выше, но вторую таблицу не заполнять данными.
Для решения транспортной задачи потребуются функции: СУММПРОИЗВ, СУММ и надстройка «Поиск решения».
Для отображения формул необходимо на вкладке «Формулы» в группе «Зависимости формул» выбрать «Показать формулы» либо горячее сочетание клавиш «Ctrl+` (тильда)».
Дальше выбираем команду «Поиск решения» на вкладке «Данные»
Кстати, если дать имена диапазонам ячеек, то окно поиска решения будет выглядеть следующим образом:
Решение поставленной задачи представлено ниже.
Условие
Есть некие предприятия и склады с грузом. Каждое предприятие, нуждается в определённом объёме нашего груза. Каждый склад доставляет тонну груза по собственному тарифу. Таким образом, нужно составить маршрут, по которому мы развезём объём груза, удовлетворяющий каждое предприятие, и при этом затратим меньше всего средств.
Так транспортная задача выглядит в своём наиболее общем и типовом виде.
С – это цена за тонну. X – это то, сколько мы привезём тонн со склада на предприятие. Например, если мы примем X11 равным 5, это будет значить, что со склада А1 к потребителю B1 мы повезём 5 тонн по цене C11. Вот нам и нужно как-то распределить всё так, чтобы потратить меньше всего денег.
Варианты решения
Транспортную задачу можно решить «вручную». Существует несколько подходов к её решению на бумаге. Среди них:
- Метод опорного плана;
- Метод минимального элемента;
- Метод Фогеля.
Решение транспортных задач
Как правило, решая задачу одним из этих способов, вы получаете решение, находите потенциалы для него и понимаете, что в числе потенциалов есть положительные значения. Соответственно, это говорит о том, что вы нашли неверное решение. Далее вам нужно действовать, что называется, наугад. Вы переставляете различные цифры в таблице, пробуете разные варианты, словом, ищите решение методом «научного тыка». Далее снова пересчитываете потенциалы, и снова ничего не срастается.
Однозначного алгоритма, работающего безотказно в любых условиях, к сожалению, пока не придумали.
Однако для решения транспортной задачи или проверки полученного нами на бумаге результата, мы можем воспользоваться функционалом MS Excel.
Транспортная задача в Экселе
Для решения нам потребуется надстройка «Поиск решения». Возможно, она не будет активирована в вашем редакторе по умолчанию, поэтому, проделываем следующую очередность действий:
- Жмём «Файл»;
- В появившемся меню нажимаем по предпоследней кнопке «Параметры»;
- Вновь находим предпоследний пункт «Надстройки» и переходим в «Управление»:
- Ставим галочку в появившемся окне рядом с пунктов «Поиск решения» и жмём «ОК».
Поиск решения активирован. Далее он будет нами использован.
Пример задачи
На складах A1 — A4 есть суммарно 100 тонн зерна, и их нужно развести по текущим расценкам в пункты B1 – B3, потратив как можно меньше средств на доставку. Тарифы на доставку указаны в центре таблицы.
Ручное решение транспортной задачи занимает очень много времени и сил (скажем, даже для учебной задачи типа 3*5 решение может составлять от 4 до 10 страниц расчетов!). Тогда как решение в Эксель для задачи размерности как 3*3, так и 5*7 потребует буквально 10-15 минут и немного опыта (правда, если уже составлена математическая модель).
Использовать можно любую версию программы – 2003, 2007, 2010 и так далее, главное, включить использование надстройки Поиск решения (интерфейс может немного отличаться в разных версиях).
Алгоритм решения транспортной задачи распределительным методом
Резюмируя выполненные выше решения, сформулируем алгоритм решения транспортной задачи распределительным методом (поиска оптимального плана транспортной задачи).
- Проверить, является ли план перевозок оптимальным. Если оценки всех “свободных мест” неотрицательны, то план перевозок является оптимальным. В противном случае можно найти новый план перевозок с меньшим значением линейной формы.
- Найти “свободное место” с наименьшей негативной оценкой (наибольшее по модулю отрицательное число). В новом плане перевозок соответствующая клетка становится “занятым местом”.
- Вдоль цикла, соответствующего “свободному месту” из предыдущего пункта, отметить вершины знаками “плюс” и “минус” пройденные вершины (“кружочки”) по принципу: знаком “плюс” отмечаются нечётные вершины, знаком “минус” – чётные.
- Вдоль цикла, упомянутого в предыдущем пункте, выбрать наименьшее из чисел в кружочке, отмеченное знаком “минус” и обозначить его буквой “тэта”.
- Произвести перенаправление грузов для нового плана перевозок. Для этого число “тэта”, упомянутое в предыдущем пункте, прибавить к стоимостям перевозок в правых нижних углах клеток со знаком “плюс” и вычесть из стоимостей перевозок в правых нижних углах клеток со знаком “минус”. Стоимости в клетках, не входящих в цикл, не меняются.
- Вычислить значение линейной формы для нового плана перевозок. Для этого вычисляется “экономия”: число “тэта” умножается на число, стоящее в кружочке в соответствующей клетке. “Экономия” (отрицательное число) прибавляется к значению линейной формы предыдущего плана.
- В таблице, соответствующей новому плану, построить циклы, соответствующие “свободным местам” и вычислить оценки этих “свободных мест”. Для этого двигаться только по “занятым местам” и при каждом шаге поворот делать только под прямым углом. Каждый шаг вдоль цикла отмечать знаком “плюс” или “минус” по принципу: знаком “плюс” отмечаются нечётные вершины, знаком “минус” – чётные.
Эти шаги следует повторять до тех пор, пока оценки всех “свободных мест” не станут положительными.
Если в ходе решения транспортной задачи появились вырожденные (сингулярные) планы, то возможно, что число “тэта” равно нулю. Тогда на соответствующей итерации решения значение линейной формы не меняется (что и было показано в примере 2).
Что такое симплекс-метод
Задача линейного программирования — это задача поиска неотрицательных значений параметров, на которых заданная линейная функция достигает своего максимума или минимума при заданных линейных ограничениях.
Симплекс-метод — алгоритм решения оптимизационной задачи линейного программирования путём перебора вершин выпуклого многогранника в многомерном пространстве. Алгоритм является универсальным методом, которым можно решить любую задачу линейного программирования.
Если вам тоже ничего не понятно из этого определения, то вы на верном пути. Чаще всего статьи про симплекс-метод очень сильно углубляются в дебри теории задачи линейного программирования, из-за чего очень легко потерять суть и так ничего и не понять. Мы постараемся описать алгоритм симплекс-метода так, чтобы показать, что в нём нет ничего страшного и на самом деле он весьма простой. Но сначала нам всё-таки потребуется ввести несколько определений.
Целевая функция — функция, максимум (или минимум) которой нужно найти. Представляет собой сумму произведений коэффициентов на значения переменных: F = c1·x1 + c2·x2 + … + cn·xn
Ограничение — условие вида a1·x1 + a2·x2 + … + an·xn v b, где вместо v ставится один из знаков: ≤, = или ≥
План — произвольный набор значений переменных x1 … xn.
Алгоритм решения основной задачи ЛП симплекс-методом
Пусть в задаче есть m ограничений, а целевая функция заивисит от n основных переменных. Первым делом необходимо привести все ограничения к каноническому виду — виду, в котором все условия задаются равенствами. Для этого предварительно все неравенства с ≥ умножаются на -1, для получения неравенств с ≤.
Чтобы привести ограничения с неравенствами к каноническому виду, для каждого ограничения вводят переменную, называемую дополнительной с коэффициентом 1. В ответе эти переменные учитываться не будут, однако сильно упростят начальные вычисления. При этом дополнительные переменные являются базисными, а потому могут быть использованы для формирования начального опорного решения.
Пример 1
Привести к каноническому виду ограничения:
2·x1 + 3·x2 + 6·x3 ≤ 240
4·x1 + 2·x2 + 4·x3 = 200
4·x1 + 6·x2 + 8·x3 ≥ 160
Меняем знаки у ограничений с ≥, путём умножения на -1 и добавляем дополнительные переменные к ограничениям с неравенством:
2·x1 + 3·x2 + 6·x3 + x4 = 240
4·x1 + 2·x2 + 4·x3 = 200
-4·x1 – 6·x2 – 8·x3 + x5 = -160
Вводная часть, с которой желательно ознакомиться
Существует несколько методов решения транспортной задачи. Мы будем подробно рассматривать два из них:
- решение транспортной задачи методом потенциалов (рассмотрен в данной статье)
- решение транспортной задачи с использованием симплекс метода.
Решение задачи методом потенциалов происходит в несколько этапов:
- Определение опорного решения.
- Применение к найденному опорному решению самого метода потенциалов.
- Проверка единственности решения.
Определение опорного плана, в свою очередь, можно выполнить несколькими способами. Мы рассмотрим два из них:
- метод северо-западного угла
- метод минимальных стоимостей
(не путать с методами решения самой транспортной задачи!!!)
О чем говорится в определении транспортной задачи?
У нас есть некоторый груз, который находится на складах: склад 1, склад 2, …, склад – это пункты отправления.
Этот груз нам необходимо развести по магазинам: магазин 1, магазин 2, …, магазин k – это пункты назначения.
Нам выгоднее как можно эффективнее выполнить работу, т.е. найти такой вариант перевозки, при котором затраты будут минимальными.
Общий план решения транспортной задачи методом потенциалов
Решить транспортную задачу можно различными методами, начиная от симплекс-метода и простого перебора, и заканчивая методом графов. Один из наиболее применяемых и подходящих для большинства случаев методов – итерационное улучшение плана перевозок.
Суть его в следующем: находим некий опорный план и проверяем его на оптимальность (Z → min). Если план оптимален – решение найдено. Если нет – улучшает план столько раз, сколько потребуется, пока не будет найден оптимальный план.
Подробная инструкция по решению транспортной задачи
Строим таблицу, где указываем запасы материалов, имеющиеся на складах поставщиков (Ai), и потребности заводов (Bj) в этих материалах.
В нижний правый угол ячеек таблицы заносим значение тарифов на перевозку груза (Cij).
2. Проверка задачи на закрытость
Обозначим суммарный запас груза у всех поставщиков символом A, а суммарную потребность в грузе у всех потребителей – символом B.
Тогда:
Транспортная задача называется закрытой, если A = B . Если же A ≠ B , то транспортная задача называется открытой. В случае закрытой задачи от поставщиков будут вывезены все запасы груза, и все заявки потребителей будут удовлетворены. В случае открытой задачи для ее решения придется вводить фиктивных поставщиков или потребителей.
Проверим задачу на закрытость:
A = 10 + 20 + 30 = 60
B = 15 + 20 + 25 = 60
A = B, следовательно данная транспортная задача – закрытая.
3. Составление опорного плана
Составляет предварительный (опорный) план перевозок. Он не обязательно должен быть оптимальный. Это просто своеобразный «черновик», «набросок», улучшая который мы постепенно придем к плану оптимальному.
Есть разные методы нахождения опорного плана. Наиболее распространены следующие:
а) Метод Северо-Западного угла.
Суть метода проста – ячейки транспортной таблицы последовательно заполняются максимально возможными объемами перевозок, в направлении сверху вниз и слева направо. То есть сперва заполняется самая верхняя левая ячейка (“северо-западная” ячейка), потом следующая справа и т.д. Затем переходят на новую строку и вновь заполняют ее слева направо. И так пока таблица не будет заполнена полностью.
Подробное описание метода и пример можно посмотреть здесь.
б) Метод минимального элемента.
Метод заключается в том, что для заполнения ячеек транспортной таблицы выбирается клетка с минимальным значением тарифа. Затем выбирается следующая клетка с наименьшим тарифом и так продолжается до тех пор, пока таблица не будет заполнена (все запасы и потребности при этом обнулятся).
Подробное описание метода и пример можно посмотреть здесь
в) Аппроксимация Фогеля.
Основа метода в нахождении разности(по модулю) между парой минимальных тарифов в каждой строке и столбце. Затем в строке или столбце с наибольшейразностью заполняется клетка с наименьшимтарифом. Затем все эти действия повторяются заново, только при этом уже не учитываются заполненные клетки.
Подробное описание аппроксимации Фогеля и пример можно посмотреть онлайн
г) Метод двойного предпочтения.
Суть метода в том, что отмечаются клетки с наименьшим тарифом по строкам, а затем по столбцам. Затем ячейки заполняются в следующей очередности: сначала клетки с двумя отметками, потом с одной, наконец без отметок.
Подробное описание метода и пример можно посмотреть здесь
4. Проверка опорного плана на вырожденность
Клетки таблицы, в которые записаны отличные от нуля перевозки, называются базисными, а остальные (пустые) – свободными.
План называется вырожденным, если количество базисных клеток в нем меньше, чем m + n -1. Если во время решения задачи получился вырожденный план, то его необходимо пополнить, проставив в недостающем числе клеток нулевую перевозку и превратив, тем самым, эти клетки в базисные (общий баланс и суммарная стоимость перевозок плана при этом не изменятся). Однако проводить пополнение плана, выбирая клетки произвольно, нельзя. План должен быть ациклическим!
План называется ациклическим, если его базисные клетки не содержат циклов. Циклом в транспортной таблице называется несколько клеток, соединенных замкнутой ломаной линией так, чтобы две соседние вершины ломаной были расположены либо в одной строке, либо в одном столбце. Ниже приведен пример цикла:
Ломаная линия может иметь точки самопересечения, но не в клетках цикла.
Кол-во базисных клеток = 5
m + n – 1 = 3 + 3 – 1 = 5
Следовательно, первоначальный план перевозок – невырожденный.
5. Вычисление потенциалов для плана перевозки
Для анализа полученных планов и их последующего улучшения удобно ввести дополнительные характеристики пунктов отправления и назначения, называемые потенциалами.
Этот метод улучшения плана перевозок называется методом потенциалов. Есть другие методы итерационного улучшения плана перевозок, но здесь мы их рассматривать не будем.
Итак, сопоставим каждому поставщику Ai и каждому потребителю Bj величины Ui и Vj соответственно так, чтобы для всех базисных клеток плана было выполнено соотношение:
Ui + Vj = Cij
Добавим к транспортной таблице дополнительную строку и столбец для Ui и Vj.
Предположим, что U1 = 0.
Тогда мы сможем найти V3 = C13 – U1 = 1 – 0 = 1.
Зная V3, мы теперь можем найти U3:
По аналогии вычисляем все оставшиеся потенциалы:
6. Проверка плана на оптимальность методом потенциалов
Для каждой свободной клетки плана вычислим разности
ΔCij = Cij – (Ui + Vj )
и запишем полученные значения в левых нижних углах соответствующих ячеек.
План является оптимальным, если все разности ΔCij ≥ 0.
В данном случае план – неоптимальный (ΔC22 < 0), и его следует улучшить путем перераспределения поставок.
7. Перераспределение поставок
Найдем ячейку с наибольшей по абсолютной величине отрицательной разностью ΔCij и построим цикл, в котором кроме этой клетки все остальные являются базисными. Такой цикл всегда существует и единственен.
Отметим ячейку с отрицательной разностью ΔCij знаком «+», следующую знаком «-», и так далее, поочередно.
Затем находим минимальной значение груза в ячейках цикла имеющих знак «-» (здесь это 5) и вписываем его в свободную ячейку со знаком «+». Затем последовательно обходим все ячейки цикла, поочередно вычитая и прибавляя к ним минимальное значение (в соответствии со знаками, которыми эти ячейки помечены: где минус – вычитаем, где плюс – прибавляем).
Получим новый опорный планперевозок:
Так как базисных клеток стало больше, чем m + n – 1, то базисную клетку с нулевым значением делаем свободной:
Снова вычисляем значения потенциалов и разности ΔCij:
На этот раз все разности ΔCij ячеек положительные, следовательно, найдено оптимальное решение.
8. Если оптимальное решение найдено, переходим к п. 9, если нет – к п. 5.
У нас оптимальное решение найдено, поэтому переходим к пункту 9.
9. Вычисление общих затрат на перевозку груза
Вычислим общие затраты на перевозку груза (Z), соответствующие найденному нами оптимальному плану, по формуле:
Zmin = 10 ∙ 1 + 15 ∙ 3 + 5 ∙ 2 + 15 ∙ 1 + 15 ∙ 2 = 110 ден. ед.
Общие затраты на доставку всей продукции, для оптимального решения, составляют 110 ден. ед.
10. Построение графа перевозок
Найдя оптимальный план перевозок, построим граф. Вершинами графа будут «склады» и «магазины». В вершинах укажем соответствующие объемы запасов и потребностей. Дугам, соединяющим вершины графа, будут соответствовать ненулевые перевозки. Каждую такую дугу подпишем, указав объем перевозимого груза.
В результате получится граф, аналогичный изображенному ниже:
Источники
- https://abuzov.ru/reshenie-transportnoj-zadachi-excel/
- https://exceltable.com/otchety/reshenie-transportnoy-zadachi
- https://lumpics.ru/the-solution-of-the-transportation-problem-in-excel/
- https://msoffice-prowork.com/reshenie-transportnojj-zadachi-v-excel-sbalansirovannaya-zadacha/
- https://Reshatel.org/reshenie-zadach/transportnaya-zadacha-v-excel/
- https://www.MatBuro.ru/ex_mp.php?p1=tzexcel
- https://function-x.ru/zadacha_transportnaja_raspredelitelnyi_metod.html
- https://programforyou.ru/calculators/simplex-method
- http://matecos.ru/mat/matematika/kak-reshit-transportnuyu-zadachu-2.html
- http://galyautdinov.ru/post/transportnaya-zadacha
Методов формирования опорного плана в транспортной задаче придумано немало, но, пожалуй, самый простой из них — метод «Северо-Западного угла» (диагональный метод). Алгоритм заполнения клеток транспортной таблицы в его случае сводится к следующему: сначала заполняется клетка в верхнем левом («северо-западном») углу, затем следующая клетка справа и т. д., пока не заполнится вся строка. Затем мы переходим ко второй строке и снова заполняем ее слева направо. И так далее.
Метод «Северо-Западного угла», в самом деле, прост и понятен, но его недостаток — низкая эффективность. Сформированный с его помощью план в большинстве случаев не является оптимальным.
Формирование опорного плана методом Северо-Западного угла
Итак, у нас имеется транспортная таблица с исходными данными.
Формирование опорного плана начинаем с внесения в верхнюю левую клетку максимально возможного объема перевозки.
Запасы на складе A1 закончились, поэтому в оставшиеся ячейки данной строки ставим прочерки. Затем переходим к следующей строке и заполняем ее ячейки слева направо.
Переходим к третьей строке и тоже заполняем ее слева направо.
Все, нами получен опорный план. Еще раз отмечу, что при методе «Северо-Западного угла» транспортная таблица просто заполняется в направлении сверху вниз и слева-направо (образно говоря, по диагонали).
Источники
- Метод Северо-Западного угла // Циклопедия. URL: http://cyclowiki.org/wiki/Метод_северо-западного_угла (дата обращения: 2.11.2013)
© Копирование любых материалов статьи допустимо только при указании прямой индексируемой ссылки на источник: Галяутдинов Р.Р.
Нашли опечатку? Помогите сделать статью лучше! Выделите орфографическую ошибку мышью и нажмите Ctrl + Enter.
Библиографическая запись для цитирования статьи по ГОСТ Р 7.0.5-2008:
Галяутдинов Р.Р. Транспортная задача: метод Северо-Западного угла // Сайт преподавателя экономики. [2013]. URL: https://galyautdinov.ru/post/metod-severo-zapadnogo-ugla (дата обращения: 16.04.2023).
И. В. Синёв,
преподаватель вычислительной техники
Кировского транспортного техникума.
Логический подход к решению транспортной задачи с помощью Excel.
С появлением компьютеров решение многих задач стало сводиться к элементарному вводу данных, а алгоритм решения знают только составители программ. Это хорошо для практических целей, но для процесса обучения такие программы не подходят, т.к. теряется возможность развития у студента логического мышления. Компьютер должен помогать студенту при выполнении элементарных, но громоздких вычислений, а логическая часть решения задачи должна оставаться за студентом. Понятно, что составление таких программ ляжет на плечи преподавателей, поскольку стандартные программы для народного хозяйства, написанные профессиональными программистами, должны облегчать труд человека, а преподаватель должен подготовить студентов к созданию таких программ или алгоритмов. Для этого студент сам должен принимать участие в решении задач, чтобы научиться создавать их самостоятельно. Рассмотрим одну из таких программ.
Студентам практически всех технических ВУЗов приходиться решать так называемую транспортную задачу. Транспортная задача представляет собой задачу линейного программирования, её можно решать симплекс-методом. Однако специфическая структура условий задачи позволила разработать более эффективные вычислительные методы.
Внимание к транспортным задачам обусловлено тем, что задачи подобного типа, во-первых, часто встречаются в практических работах по исследованию операций и, во-вторых, к ним сводятся многие другие задачи линейного программирования: сетевая задача, задача о назначениях, задача календарного планирования и т.п.
Для решения транспортной задачи разработан целый ряд методов. Здесь рассмотрен метод, который нашёл широкое применение в практике, а именно метод потенциалов (модификация распределительного метода). Данная задача легко решается с помощью компьютера, например на языках Pascal, FoxPro. Однако при полностью автоматизированном решении студенты, как сказано выше, лишены возможности логически мыслить, т.к. сразу, после ввода данных, получают оптимальный план, а при «ручном» решении много времени затрачивается на рутинную работу – математические вычисления. Этих недостатков лишена программа в Excel, созданная автором. В ней присутствует и самостоятельное мышление при построении опорных планов, и компьютерная помощь при громоздких вычислениях. Эта программа будет полезной студентам, которые изучают методы решения оптимизационных задач, а также преподавателям вычислительной техники и программистам.
Теория и математическая постановка транспортной задачи хорошо изложена во многих учебниках. Однако следует напомнить основные положения задачи.
Даны размеры m запасов (ai) и n потребностей (bj), и матрица стоимости перевозки единицы груза от каждого поставщика к каждому потребителю (Cij).
Нужно составить план перевозок, чтобы общая стоимость всех перевозок (F), была минимальной.
Задача представляет собой транспортную задачу линейного программирования. Она может быть открытого типа, когда
, или , или
При превышении общего объема запасов над спросом (или наоборот), в таблицу данных добавляется фиктивный пункт потребления (или запасов). Потребления (или запасы) в этом пункте принимаются равным превышению общего объема наличия продукта над суммарным объемом спроса (или наоборот), то есть (в первом случае)
Стоимость (Cij) в клетках этого столбца таблице равняется нулю. По аналогии действуем и во втором случае.
После этих преобразований задача становится транспортной задачей линейного программирования закрытого типа, потому что
Рассмотрим решение задачи методом потенциалов.
Строим первый опорный план. При этом используем метод двойного преимущества: сначала выбираем клетки с минимальной стоимостью по каждой строке, потом — по каждому столбцу.
Для построения первого опорного плана используют и другие методы, например, северо-западного угла.
Этот опорный план с данными представляем в первой таблице. Справа от таблицы добавляем столбец потенциала Ui, снизу — строка потенциала Vj . В первой строке принимаем Ui=0 и дальше заполняем значение потенциалов по строкам и столбцам таблицы, где есть значения (базисные клетки) таким образом, чтобы выполнялось уравнение: Сij=Ui+Vj.
В плане должно быть (m+n-1) базисных клеток.
Если оценка какой-то свободной клетки Sij=Cij-(Ui+Vj)
Тогда переделываем план, избрав эту клетку (если их несколько — выбираем максимальную по модулю), вписав в неё минимальное из существующих значений базисных клеток. Другие значения базисных клеток преобразуем таким образом, чтобы сумма спроса и потребности по строкам и столбцам оставалась неизменной.
То есть, увеличиваем или уменьшаем на это значение другие базисные клетки. Цикл пересчёта – это многоугольник с прямыми углами в базисных (заполненных) клетках, в которых и делаем этот пересчет.
На каждом этапе преобразования транспортной таблицы можно подсчитывать общие расходы для сравнения с предыдущим планом.
Когда для всех клеток выполнится условие Sij =0 — план будет оптимальным, то есть общие расходы F — минимальны.
Следует отметить, — если в полученном оптимальном опорном плане есть хотя бы одна оценка свободной клетки, которая равна нулю, то такой оптимальный план неоднозначен, то есть при той же минимальной стоимости может быть и другой оптимальный опорный план, что не меняет цели решенной задачи.
Далее приведена исходная таблица (в начале работы в файле-книге Excel) для решения транспортной задачи (3х5), т.е. 3 поставщика и 5 потребителей (рис.1). Заготовки таблиц для любого сочетания поставщиков и потребителей можно выполнить на отдельных листах Excel.
Рис.1 Исходная таблица в Excel для решения транспортной задачи (3х5)
Программа снабжена инструкцией и подсказками. На листе, с помощью «Примечания», создается инструкция по работе с программой, которая появляется при наведении курсора на соответствующую ячейку (в данной программе – R1).
Содержание инструкции приведено ниже.
ИНСТРУКЦИЯ ПО РАБОТЕ С ПРОГРАММОЙ
1. В первой (исходной) таблице:
1.1. Заполняем строку потребностей и столбец запасов.
1.2. В левом верхнем углу каждой ячейки вводим Cij (тариф перевозки единицы груза).
1.3. Расставляем кол-во груза в правой части клеток любым приёмом, например, по правилу северо-западного угла.
1.4. Определяем и расставляем потенциалы U и V.
1.5. Выделяем заштрихованную клетку в левом верхнем углу таблицы.
1.6. Щёлкаем по кнопке, находящейся справа от таблицы («Стоп!!! …»).
После этого ниже исходной таблицы будет создана её копия, причём значения потенциалов строк и столбцов (U и V), кроме U[1]=0, будут удалены, чтобы вы определили и ввели их новые значения.
2. Во второй (и последующих) таблице(ах):
2.1. По индексам перспективной клетки для перерасчёта опорного плана (клетка с max отрицательным значением Sij = Сij — (Ui + Vj), — оценка свободной клетки, определённая в предыдущем плане), выстраиваем цикл перерасчёта.
2.2. Изменяем количество груза в клетках цикла перерасчёта.
2.3. Определяем и растравляем потенциалы U и V.
2.4. Выделяем заштрихованную клетку в левом верхнем углу этой таблицы.
2.5. Щёлкаем по кнопке справа от таблицы («Стоп !!!…»).
После выполнения этих действий с помощью макроса будет выполнено копирование последнего и вставка очередного опорного плана, в котором нужно перераспределить груз, но без значений потенциалов.
Заполняем значения потенциалов U и V. Если не все ячейки со значениями потенциалов заполнены – программа выдаст соответствующее сообщение.
Повторяем пункт 2 до тех пор, пока, после заполнения потенциалов U и V, под текущей таблицей не появится сообщение, что план оптимален! После этого можно отправлять на печать.
Очевидно, имеет смысл только последняя таблица. Но мы говорили об учебных целях, а это означает, что можно и нужно печатать всё.
Пример распечатки решения приведен в приложении на рис. 2-а, 2-б. Формулы в файле-книге Excel, по которым происходят вычисления, представить на рисунках электронной таблицы из-за их громоздкости невозможно. Кроме того, соответствие ссылкам лучше просмотреть в самой программе, т.к., например, формула
=ЕСЛИ(ИЛИ(B11=»»;D11=»»;F11=»»;H11=»»;J11=»»;L7=»»;L9=»»;H20=0);»»;
ГПР(H20;B17:P18;2;ЛОЖЬ))
будет непонятной без наличия самой таблицы.
В данной работе не приводится порядок создания макросов, поскольку это не является принципиальным. Скопировать и вставить таблицу опорного плана, а также удалить значение потенциалов можно и без макроса. Но в данном случае, макрос позволяет не тратить время на рутинную работу и таким образом он лишь совершенствует программу. Его запуск осуществляется кликом по кнопке «СТОП!!! Выделите заштрихованную ячейку в левом верхнем углу таблицы!!! Только после этого щелкните данную кнопку». Это нужно для того, чтобы макрос при копировании опорного плана определил, относительно какой ячейки производить копирование и вставку.
Цикл пересчёта – многоугольник с прямыми углами вычерчивается в Excel с помощью панели инструментов «Рисование».
Замечания, предложения и заказы на приобретение данной бесплатной программы просьбы направлять по адресу: [email protected]
Синёву Игорю Вячеславовичу.
ЛИТЕРАТУРА
-
Деордица Ю.С., Нефедов Ю.М. – Исследование операций в планировании и управлении: Учебн. пособие. – К.: Выща шк., 1991. – 270с..
-
Глушаков С.В., Сурядный А.С. Microsoft Offise 2000: Учебный курс. – Харьков: Фолио; Ростов-на-Дону; Феникс, 2001.–500 с.
Приложение
Рис.2-а Распечатка решения транспортной задачи (начало)
Рис.2-б Распечатка решения транспортной задачи (окончание)
Примечание. Поскольку в приведенном примере в оптимальном плане S32=0 (незаполненная клетка), то такой оптимальный план неоднозначен, то есть при той же минимальной стоимости может быть и другой оптимальный план, что не меняет цели решенной задачи. Альтернативный оптимальный план для данного примера представлен ниже.
9
Эксель можно использовать для решения широкого спектра задач, в том числе, для нахождения наилучшего способа осуществления перевозок от производителя (продавца) к потребителю (покупателю). Давайте посмотрим, каким образом это можно реализовать в программе.
Содержание
- Транспортная задача: описание
- Подготовительный этап: включение функции “Поиск решения”
- Пример задачи и ее решение
- Условия
- Алгоритм решения
- Заключение
Транспортная задача: описание
С помощью транспортной задачи можно найти наилучший вариант перевозки с минимальными издержками между двумя взаимодействующими контрагентами (в рамках данной статьи будем рассматривать покупателей и продавцов). Чтобы приступить к решению, нужно представить исходные данные в схематичном или матричном виде. Последний вариант применяется в Эксель.
Транспортные задачи бывают двух типов:
- Закрытая – совокупное предложение продавца равняется общему спросу.
- Открытая – спрос и предложение не равны. Чтобы решить такую задачу, нужно сначала привести ее к закрытому типу. В этом случае добавляется условный покупатель или продавец с недостающим количеством спроса или предложения. Также в таблицу издержек следует внести соответствующую запись (с нулевыми значениями).
Подготовительный этап: включение функции “Поиск решения”
Чтобы решить транспортную задачу в Эксель, нужно воспользоваться функцией “Поиск решения”, которую нужно предварительно активировать, т.к. изначально она не включена. Алгоритм действий следующий:
- Открываем меню “Файл”.
- В перечне слева выбираем пункт “Параметры”.
- В параметрах кликаем по подразделу “Надстройки”. Затем в правой части окна в самом низу, выбрав значение “Надстройки Excel” для параметра “Управление”, щелкаем по кнопке “Перейти”.
- В открывшемся окне ставим галочку напротив надстройки “Поиск решения” и жмем OK.
- В результате, если мы перейдем во вкладу “Данные”, то увидим здесь кнопку “Поиск решения” в группе инструментов “Анализ”.
Пример задачи и ее решение
Чтобы лучше понять, как решать транспортные задачи в Excel, давайте рассмотрим конкретный практический пример.
Условия задачи
Допустим, у нас есть 6 продавцов и 7 покупателей. Предложение продавцов составляет 36, 51, 32, 44, 35 и 38 единиц. Спрос покупателей следующий: 33, 48, 30, 36, 33, 24 и 32 единицы. Суммарные количества по спросу и предложению равны, следовательно, это транспортная задача закрытого типа.
Также, мы имеем данные по издержкам перевозок из одного пункта в другой (ячейки с желтым фоном).
Алгоритм решения
Итак, приступи к решению нашей задачи:
- Для начала строим таблицу, количество строк и столбцов в которой соответствует числу продавцов и покупателей, соответственно.
- Перейдя в любую свободную ячейку щелкаем по кнопке “Вставить функцию” (fx).
- В открывшемся окне выбираем категорию “Математические”, в списке операторов отмечаем “СУММПРОИЗВ”, после чего щелкаем OK.
- На экране отобразится окно, в котором нужно заполнить аргументы:
- в поле для ввода значения напротив первого аргумента “Массив1” указываем координаты диапазона ячеек матрицы затрат (с желтым фоном). Сделать это можно, используя клавиши на клавиатуре, или просто выделив нужную область в самой таблице с помощью зажатой левой кнопки мыши.
- в качестве значения второго аргумента “Массив2” указываем диапазон ячеек новой таблицы (либо вручную, либо выделив нужные элементы на листе).
- по готовности жмем OK.
- Щелкаем по ячейке, расположенной слева от самого верхнего левого элемента новой таблицы, после чего снова жмем кнопку “Вставить функцию”.
- На этот раз нам нужна функция “СУММ”, которая также, находится в категории “Математические”.
- Теперь нужно заполнить аргументы. В качестве значения аргумента “Число1” указываем верхнюю строку созданной для расчетов таблицы (целиком) – вручную или методом выделения на листе. Жмем кнопку OK, когда все готово.
- В ячейке с функцией появится результат, равный нулю. Наводим указатель мыши на ее правый нижний угол, и когда появится Маркер заполнения в виде черного плюсика, зажав левую кнопку мыши тянем его до конца таблицы.
- Это позволит скопировать формулу и получить аналогичные результаты для остальных строк.
- Выбираем ячейку, которая находится сверху от самого верхнего левого элемента созданной таблицы. Аналогично описанным выше действиям вставляем в нее функцию “СУММ”.
- В значении аргумента “Число1” теперь указываем (вручную или с помощью выделения на листе) все ячейки первого столбца, после чего кликаем OK.
- С помощью Маркера заполнения выполняем копирование формулы на оставшиеся ячейки строки.
- Переключаемся во вкладку “Данные”, где жмем по кнопке функции “Поиск решения” (группа инструментов “Анализ”).
- Перед нами появится окно с параметрами функции:
- в качестве значения параметра “Оптимизировать целевую функцию” указываем координаты ячейки, в которую ранее была вставлена функция “СУММПРОИЗВ”.
- для параметра “До” выбираем вариант – “Минимум”.
- в области для ввода значений напротив параметра “Изменяя ячейки переменных” указываем диапазон ячеек новой таблицы (без суммирующей строки и столбца).
- нажимаем кнопку “Добавить” в блоке “В соответствии с ограничениями”.
- Откроется небольшое окошко, в котором мы можем добавить ограничение – сумма значений первых столбцов исходной и созданной таблицы должны быть равны.
- становимся в поле “Ссылка на ячейки”, после чего указываем нужный диапазон данных в таблице для расчетов.
- затем выбираем знак “равно”.
- в качестве значения для параметра “Ограничение” указываем координаты аналогичного столбца в исходной таблице.
- щелкаем OK по готовности.
- Таким же способом добавляем условие по равенству сумм верхних строк таблиц.
- Также добавляем следующие условия касательно суммы ячеек в таблице для расчетов (диапазон совпадает с тем, который мы указали для параметра “Изменяя ячейки переменных”):
- больше или равно нулю;
- целое число.
- В итоге получаем следующий список условий в поле “В соответствии с ограничениями”. Проверяем, чтобы обязательно была поставлена галочка напротив опции “Сделать переменные без ограничений неотрицательными”, а также, чтобы в качестве метода решения стояло значение “Поиск решения нелинейных задач методов ОПГ”. Когда все готово, нажимаем “Найти решение”.
- В результате будет выполнен расчет и отобразится окно с результатами поиска решения. Оцениваем их, и в случае, когда они нас устраивают, нажимаем OK.
- Все готово, мы получили таблицу с заполненными данными и транспортную задачу можно считать успешно решенной.
Заключение
Таким образом, с помощью программы Эксель достаточно просто решить транспортную задачу. Самое главное – правильно заполнить начальные данные и четко следовать плану действий, и тогда проблем быть не должно, т.к. программа все расчеты выполнит сама.