Пример решения транспортной задачи с помощью MS Excel
Транспортная задача является классической задачей исследования операций. Множество задач распределения ресурсов сводится именно к этой задаче.
В хозяйстве имеются пять складов минеральных удобрений и четыре пункта, куда их необходимо доставить. Потребность каждого пункта в минеральных удобрениях различна, и запасы на каждом складе ограничены. Требуется определить, с какого склада, в какой пункт поставлять, сколько минеральных удобрений для минимизации грузооборота перевозок.
Имеются следующие исходные данные.
Наличие минеральных удобрений на складах.
Потребность в минеральных удобрениях на различных пунктах.
Расстояния между складами и пунктами доставки.
На пересечении столбца конкретного пункта доставки со строкой склада находится информация о расстояниях между этими пунктом доставки и складом. Например, расстояние между 3 пунктом и складом №3 равно 10 километрам.
Для решения задачи подготовим необходимые таблицы. (рис.1)
Рис.1 Изменяемые ячейки.
Значения ячеек по столбцу В с четвертой по восьмую строку определяются суммированием данных ячеек соответствующих строк начиная со столбца С до столбца F .
Например, значение ячейки B4=CУMM(C4:F4).
(Формулы – Математические – СУММ)
Значения ячеек по 9 строке по столбцам от С до F определяются суммированием данных ячеек соответствующих столбцов с 4 по 8 строки.
Например, значение ячейки С9=СУММ(С4:С8)
Каждое значение в ячейках на пересечении столбца конкретного пункта доставки и строки склада означает количество тонн, поставляемых с этого склада в данный пункт потребления, В нижней строке (строка 9) суммируется общее количество минеральных удобрений, поставляемых в определенный пункт доставки, а во втором столбце (столбец В) суммируется количество доставленного с конкретного склада минеральных удобрений.
Теперь, используя исходные данные, введем на этом же листе требуемые объемы поставок и расстояния между складами и пунктами доставки.
Рис.2 Исходная информация.
В строке 16 по столбцам C-F определим грузооборот по каждому пункту доставки, К примеру для 1 пункта (ячейка С16) это рассчитывается с помощью формулы
С16=С4*С11+С5*С12+С6*С13Н-С7*С14+С8*С15
либо можно использовать функцию СУММПРОИЗВ (Формулы – Математические – СУММПРОИЗВ, где Массив1- С4: С8, Массив2- С11: С15)
С16=СУММПРОИЗВ(С4: С8; С11: С15)
В ячейке С4 находится количество минеральных удобрений, перевозимых со склада №1 в 1 пункт доставки, а в ячейке СИ - расстояние от склада №1 до 1 пункта доставки. Соответственно первое слагаемое в формуле означает полный грузооборот по данному маршруту. Вся же формула вычисляет полный грузооборот перевозок минеральных удобрений в 1 пункт доставки.
В ячейке В16 по формуле =CУMM(C16:F16) будет вычисляться общий объем грузооборота минеральных удобрений.
Таким образом, информация на рабочем листе примет следующий вид (рис. 3)
Рис.3 Рабочий лист, подготовленный для решения транспортной задачи.
Для решения транспортной задачи воспользуемся процедурой Поиск решения, которая находится в меню Данные.
(Данные – Анализ – Поиск решения). Для добавления функции на панель инструментов:
Файл – Параметры – Надстройки - Управление - Перейти – Поиск решения – ОК.
После выбора данной команды появится диалоговое окно (рис. 4).
Рис.4 Диалоговое окно «Поиск решения».
Поскольку в качестве критерия оптимизации нами выбрана минимизация грузооборота, в поле
«Оптимизировать целевую функцию» введите ссылку на ячейку, содержащую формулу расчета общего объема грузооборота минеральных удобрений. В нашем случае это ячейка $В$16. Чтобы минимизировать значение конечной ячейки путем изменения значений влияющих ячеек (влияющими, в данном случае это и изменяемые ячейки, являются ячейки, которые предназначены для хранения» значений искомых неизвестных), переключатель установите в положение
«до: минимум».
В поле «Изменяя ячейки переменных» введите ссылки на изменяемые ячейки, разделяя их запятыми; либо, если ячейки находятся рядом, указывая первую и последнюю ячейку, разделяя их двоеточием ($C$4:$F$8). Это означает, что для достижения минимального грузооборота перевозок будут меняться значения в ячейках с С4 по F8, то есть будут изменяться количество груза, перевезенного по конкретному маршруту.
Если сейчас запустить процесс подбора параметров, то будет найден вариант, где все переменные равны нулю. И это правильно - если не перевозить ничего, то это самый дешевый вариант. Но нам необходимо перевезти минеральные удобрения, поэтому надо наложить некоторые ограничения для поиска решения.
В группе полей «В соответствие с ограничениями» нажмите кнопку «Добавить». Появится диалог «Добавление ограничения» (рис. 5)
Рис.5 Диалоговое окно «Добавление ограничения»
Следует ввести левую часть ограничения в левое поле, выбрать знак условия, накладываемого на значение и ввести правую часть ограничения. Как и в других случаях, можно не вводить ссылки на ячейки, а выделить мышью эти ячейки. После ввода одного ограничения следует нажать кнопку «Добавить» и ввести следующее. По окончании ввода всех ограничений нажмите на кнопку ОК. В диалоге появятся строки введенных ограничений (рис. 6)
Рис.6 Диалоговое окно «Параметры поиска решения» с заполненными полями.
Для изменения и удаления ограничений в списке «Ограничения» диалогового окна «Поиск решения» укажите ограничение, которое требуется изменить или удалить. Выберите команду Изменить и внесите изменения либо нажмите кнопку «Удалить».
Рассмотрим более подробно условия, которые следует наложить на значения в некоторых ячейках для правильного решения задачи.
Первое условие $В$4:$В$8 <=$В$11:$В$15. Оно означает, что значение в ячейке В4 должно быть меньше или равно значению в В11, в В5 меньше или равно, чем в В12, и так далее до В8 и В15.
В ячейках с В4 по В8 на листе находятся объемы поставок с конкретных складов. В ячейках с B11 по В15 - запасы на этих же складах. Так как невозможно вывести со склада больше, чем на нем есть, первое значение должно быть не больше второго.
Второе условие $C$4:$F$8>=0. Оно означает, что объем перевозок не может быть отрицательным, то есть, если на складе не хватает минеральных удобрений, их не везут с пункта доставки, на который эти минеральные удобрения были завезены ранее. Грузопоток имеет только одно направление - от складов к пунктам доставки удобрений.
И. наконец, третье, и последнее условие $C$9:$F$9>=$C$10:$F$10. Оно означает, что значения в ячейках девятой строки должны быть больше или равны значениям в ячейках десятой строки,, то есть запросы пунктов доставки минеральных удобрений должны быть выполнены полностью. Перевыполнение объема поставок допустимо, а недовыполнение - нет.
Введенные условия должны позволить найти наиболее оптимальный вариант решения задачи. Нажмите кнопку «Найти решение» для подбора решения.
После нахождения решения появляется диалог Результаты поиска решения (рис. 7)
Рис.7 Диалоговое окно «Результаты поиска решения».
Нажав кнопку ОК, вы занесете вариант решения на рабочий лист (рис.8).
Рис.8 Рабочий лист.