Решение транспортных задач в среде Excel

Продолжение темы, начатой в "КВ" №21/2005

Одной из самых распространенных проблем во всех областях экономики является транспортировка груза или товара с минимальными материальными и временными затратами. Так как огромное количество возможных вариантов перевозок затрудняет получение самого экономичного плана эмпирическим или экспертным путем, то появилась необходимость разработки специальной теории, позволяющей быстро решать подобные задачи с помощью алгоритмизации. Применение математических методов в планировании перевозок дает большой экономический эффект. В этом нам и предстоит сейчас убедиться при помощи нашего знакомого Васи, который как раз устроился работать курьером.


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

Компания, где Василий нашел вакантное место курьера, имеет два склада, на которых хранится товар, и три магазинчика - конторы, где этот товар реализуется. Задача Васи заключается в строгом выполнении плана, который он получает каждый день. В качестве транспортного средства он использует старый, но выносливый советский велосипед, который не позволяет перевозить всю партию за раз. Поэтому нашему ненасытному другу приходится мотаться туда-сюда. На что он опять копит? Что же он там перевозит? Не ждите от меня ответов на эти вопросы, если б знал - давно бы уже сказал бы.

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


Составление математической модели

Сначала необходимо проделать подготовительную работу, а именно - определить тарифы на каждом участке будущего оптимального плана перевозок. Поскольку Вася заинтересован в том, чтобы делать свою работу максимально быстро, то в качестве тарифов в данной задаче выступает время, потраченное на перевозку единицы товара из n-го склада в m-ую контору. При помощи карты Минска (CityInfo) с учетом времени на перекур и на подкачку шин, Вася оценил среднее время перевозки товара из каждого склада в каждую контору. В результате была составлена таблица 1.

Таблица 1. Время на перевозку
Склад\Контора Контора №1 Контора №2 Контора №3 Есть на складах
Склад №1 5 20 8 20
Склад №2 10 15 12 30
Потребность 15 12 20 47/50

Данная транспортная задача относится к типу задач с неправильным балансом (47<>50), но нас это не должно смущать. Я вас уверяю, мы ничего не будем решать вручную. Хотелось бы отметить, что в реальной жизни транспортные задачи с правильным балансом встречаются не очень часто. Далее задачу необходимо, как говорится, формализировать, т.е. записать в виде уравнений (формул). Пусть X - количество единиц товара, перевозимых из каждого склада в каждую контору. Тогда X11 - количество единиц товара, перевозимых из первого склада в первую контору, X12 - количество единиц товара, перевозимых из первого склада во вторую контору, и т.д. (такие предложения пишутся простым копированием, если вы не знали.;) Поскольку задача с неправильным балансом, то необходимо ввести также фиктивную контору. Все переменные представлены в таблице 2.

Таблица 2. Количество перевозимых товаров
Склад\Контора Контора №1 Контора №2 Контора №3 Фиктивная Есть на складах
Склад №1 X11 X12 X13 X14 20
Склад №2 X21 X22 X23 X24 30
Потребность 15 12 20 3 50/50

Теперь все готово для составления системы уравнений и целевой функции, определяющей время выполнения плана перевозок и направленной на минимум. По смыслу ясно, что количество единиц товара, привезенных с каждого склада в контору, в сумме должно равняться потребности этой конторы. Т.е.

X11+ X21=15

X12+ X22=12

X13+ X23=20

X14+ X24=3

Аналогично получаем следующие условия:

X11+X12+X13+X14=20

X21+X22+X23+X24=30

Целевая функция, как я уже говорил, определяет время выполнения намеченного плана транспортировки товара. Поэтому:

E=5* X11 + 20* X12 + 8* X13 + 10* X21 + 15* X22 + 12* X23 ->min

Тарифы на доставку товара в виртуальную контору принимаются равными нулю, поэтому слагаемое "0*X14+0*X24" в записи формулы для целевой функции можно опустить. Теперь приступим непосредственно к решению поставленной задачи. Согласитесь, проделанные до сих пор операции не вызывают больших трудностей.


Выбор метода решения

А найти решение нам поможет мощный табличный процессор Microsoft Excel, широко используемый не только как удобное средство для хранения разнообразных данных и многофункциональный инструмент, позволяющий выполнять над ними многочисленные математические операции, но и как орудие для решения несложных оптимизационных задач. Последним, в частности, и занимается программная надстройка "Поиск решения". Если она у вас не установлена, то проделайте следующие действия: "Сервис" > "Надстройки", потом поставьте галочку около пункта "Поиск решения". Для поиска ответа остается только занести шесть ограничений и целевую функцию в Excel. Я не буду докучать читателю ((с) Джонатан Свифт, "Путешествия Гулливера";) подробным описанием того, как следует вводить данные в ячейки таблицы или как нужно составлять ограничения в "Поиск решения". Этот титанический труд был проделан в первой статье по оптимизации в среде Excel, опубликованной в 21-м номере. Отмечу, что хоть задача про изготовление баннеров и задача про перевозки принадлежат к различным типам задач, для нахождения ответа на которые разработано множество "своих" методов, все-таки обе задачи являются задачами линейного программирования. Поэтому их можно решать и общим для всех задач линейного программирования способом - симплекс-методом. Конечно, для решения транспортных задач вручную намного предпочтительнее использовать специально разработанные для этих целей алгоритмы. Но в конкретном случае мы переложим наше бремя на плечи машины. Ей-то какая разница, выполнять 10 или 100 итераций. Если мы собираемся использовать тот же самый подход, что и при решении задачи об изготовлении баннеров, то алгоритм поиска оптимального ответа в данном примере почти не будет отличаться от алгоритма, описанного в предыдущей статье. Различия будут заключаться лишь в подготовительных работах, которые мы, сами того не зная, уже проделали выше.

Итак, в ячейки строки с целевой функцией запишем коэффициенты перед переменными, входящими в целевую функцию. Так же поступим и cо всеми ограничениями в виде равенств (в столбце "L" записывается правая часть уравнений). В столбце с решением "J" в каждую ячейку введем формулу вида "=СУММПРОИЗВ(Bn:Gn;B2:G2)", где n изменяется от 3 до 9. Теперь открываем рабочее окно "Поиск решения" и записываем все ограничения, показанные на рисунке.

Нажимаем на кнопку "Выполнить" и вместе с Васей радуемся полученным результатам.


Анализ полученных результатов

Оптимальный план перевозок груза выглядит следующим образом: с первого склада нужно переправить 15 ед. груза в первую контору и 5 ед. груза в третью контору, а со второго - 12 ед. груза во вторую и 15 ед. груза в третью конторы. На все это Вася будет тратить 475 минут (7 часов и 55 минут). Это оптимальный вариант. Сравним его с любым другим возможным. Допустим, что Вася решил делать все наобум и выбирал маршрут случайным образом. Пусть план следующий: (X11, X12, X13, X21, X22, X23)=(0, 0, 20, 15, 12, 0). Тогда целевая функция будет равна 490 минут (за смену Вася не управится). С одной стороны, это не много, с другой, если бы в качестве тарифов выступало не время, а деньги, то экономия была бы существенной. Да и если вспомнить фразеологизм "Время - деньги", то всякие сомнения по поводу рациональности использования оптимизации в управлении и финансах отпадают. Ведь выгода заключается не в том, что Васе приходится быстрее крутить педали, а в том, что при помощи математической модели находится наилучший вариант протекания реального процесса.

В качестве следствия можно отметить, что если предстоит решать задачу с правильным балансом, то из всех рассуждений необходимо просто исключить переменные X14 и X24.

Конечно, существует много программ, которые специализируются именно на исследовании транспортных задач. Но с Excel'ем как-то проще ((с) Реклама про "Биосистему"). Иногда время и деньги, потраченные на поиски нужной программы в интернете, сравнимы с выгодой, полученной в ходе оптимизации. На одной web-странице программу, работающую с транспортными задачами, предлагалось приобрести за $100. Другое приложение оказалось бесплатным, но не умело решать задачи в общем случае (с неправильным балансом). Вот такие пироги (или проги ;).

В современном обществе методы оптимизации применяются повсеместно, принося существенную экономическую выгоду и предупреждая финансовые крахи. Они позволяют принимать разнообразные управленческие решения в условиях риска и неопределенности. Правда, уже при помощи более мощных программных комплексов, работающих на основе генетических алгоритмов, нечеткой логики и нейронных сетей.

Виталий КРАСИЛЬНИКОВ

Версия для печатиВерсия для печати

Номер: 

37 за 2005 год

Рубрика: 

Азбука программирования
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Виталик
Мужик ты меня по курсовой выручил спасибо
Аватар пользователя Narthex (автор)
Да, не за что :) :) :) Хорошо, что кому-то пригодилось
Аватар пользователя Анна
Помогите создать опорный план ТЗ:

Фирма осуществляет перевозки грузов. Есть список клиентов и расстояние к ним от склада. Известны параметры - объем, который нужно отвезти клиенту и объем, который влазит в каждую машину. Как составить ТЗ. Дело в том, что если поставить ограничения по объемам, то расчитывается оптимальный план по загрузке машин и перевозке клиентам, но получается, что 2-3 машины отвозят товары одним и тем же клиентам, а такого быть не должно. Подскажите, как можно правильно поставить дополнительные ограничения, чтобы только одна машина везла одному клиенту.

Аватар пользователя Илюша
Спасибо, также помог по курсовой работе :)
Аватар пользователя Мираж
Молодец!