Данную задачу можно решить с использованием дешевых и доступных любому пользователю геоинформационных систем (ГИС), включающих автоматический прокладчик маршрутов. К примеру, в г. Санкт-Петербурге эта задача решается с помощью программы «Электронный атлас автодорог. Улицы Санкт-Петербурга 2003» (фирмы «ИНГИТ») или компакт-диска «Автокарты / каталог 2004» (компании TopPlan).
Эвристические алгоритмы решения задачи формирования развозочных маршрутов включают два этапа, во-первых, группировку пунктов по маршрутам, во-вторых, определение рационального порядка объезда пунктов. Задачу группировки пунктов по маршрутам можно решить как частный случай задачи о назначениях. Ниже рассматривается алгоритм решения данной задачи и пример его практического использования.
Предположим, что имеется п грузополучателей или клиентов, каждого из которых может обслужить любой из m привлеченных для перевозок автомобилей. Стоимость обслуживания i-го клиента j-м автомобилем с или теневая цена (это цена резервирования провозных возможностей, ее величина отражает максимальную цену, которую можно согласиться заплатить за обслуживание i-го клиента), рассчитывается следующим образом:
где Qi – вес партии товара, доставленной i-му клиенту (кг); qj – грузоподъемность j-го автомобиля с учетом класса груза (кг); sj – затраты на рейс, выполненный j-м автомобилем (руб.).
Необходимо распределить автомобили по клиентам так, чтобы минимизировать суммарные затраты, связанные с выполнением перевозки.
В исследовании операций задача, сформулированная выше, известна как задача о назначениях. Введем переменные хР принимающие значение 1 в случае, когда i-го клиента обслуживает j-й автомобиль, и значение 0 во всех остальных случаях.
Тогда ограничение
гарантирует обслуживание i-го клиента лишь одним автомобилем, то есть заказы клиентов разбивать нельзя, а ограничение
гарантирует, что каждый автомобиль будет обслуживать не более b клиентов. Это означает, что мы пытаемся учесть ограничения по времени обслуживания клиентов еще на этапе решения задачи о назначениях.
Поскольку речь идет о формировании развозочных маршрутов, необходимо учесть ограничения по грузоподъемности:
означающие, что фактическая нагрузка подвижного состава не должна превышать его грузоподъемности.
Стоимость решения, то есть сумма теневых цен для обслуженных клиентов, должна быть минимизирована. Таким образом, задачу о назначениях подвижного состава можно записать следующим образом.
Задача о назначениях является частным случаем классической транспортной задачи. При этом условие
хij..О{0,1}, i=1, …, m, j=1, …, n
означает выполнение требования двоичности переменных х.., то есть в допустимом целеисчислении значениями переменных могут быть только 0 и 1. Следовательно, для ее решения может быть использован эффективный вычислительный алгоритм симплексного метода, реализованный в средстве «Поиск решения» Microsoft Excel.
Пример решения задачи
Рассмотрим условный пример. Допустим, нам необходимо сформировать развозочные маршруты для обслуживания пяти клиентов, вес партии товара каждого из них колеблется в диапазоне от 0,8 до 1,45 т, а общий вес всех товаров составляет 5,9 т. В нашем распоряжении имеется семь автомобилей: пять автомобилей ГАЗ-3302 «Газель» грузоподъемностью 1,5 т и два автомобиля ГАЗ-53 грузоподъемностью 3 т. Стоимость аренды автомобиля ГАЗ-3302 «Газель» составляет 1 тыс. руб., а автомобиля ГАЗ-53 – 1,5 тыс. руб. Таким образом, имеется избыток грузовых возможностей, следовательно, необходимо определить подвижной состав, использование которого минимизирует транспортные издержки, и закрепить его за клиентами.
Для решения задачи на рабочем листе Excel разработаем модель рассматриваемой задачи. Разрабатываемую модель необходимо представить в виде трех таблиц: матрицы теневых цен сij, матрицы переменных хij и матрицы произведения сij*хij. Для решения задачи необходимо связать значения таблиц формулами. Зависимости, связывающие переменные модели, представлены в табл. 6–8.
В табл. 1 мы видим, что теневые цены рассчитываются по формуле (1), для чего в ячейку В6 занесена формула
Таблица 1
Зависимости, связывающие переменные в матрице теневых цен
В6=($16/В$12)×В$5, которая затем распространяется на весь диапазон ячеек В6:Н10, содержащих теневые цены.
Таблица 2
Зависимости, связывающие переменные в матрице переменных
Таблица 3
Матрица произведения сij *хij.
Фактическую загрузку подвижного состава рассчитывают по формуле (4), которая занесена в ячейке В11 в виде В11=СУММПРОИЗВ ($16:$110;1_6:1_10). Аналогично данная формула распространяется на весь диапазон ячеек В11:Н11, содержащих значения загрузки.
В табл. 2 мы видим, что в диапазоне L6:R10 содержатся изменяемые ячейки, формулы, занесенные в диапазон S6:S10, суммируют значения изменяемых ячеек по строкам, а занесенные в диапазон L11:R11 – по столбцам. Функция, занесенная в ячейки строки «Выбор», возвращает значение 1, если в ячейках строки «Сумма» находится значение, большее или равное 1, и значение О-в противном случае.
Таблица 4
Параметры надстройки Excel – Поиск решения
Обязательное условие для расчетов: в табл. 2 и 3 нужно установить числовой формат ячейки без знаков после запятой (<Формат> <Ячейки> <Число>, числовые форматы – числовой, число десятичных знаков – 0).
Представленные в табл. 3 формулы служат для вычисления целевой функции, то есть суммы теневых цен для обслуженных клиентов.
В диалоговое окно «Поиск решения» заносятся целевая ячейка, диапазон изменяемых ячеек и ограничения. Свод параметров модели представлен в табл. 4.
В результате использования программы «Поиск решения» (надстройка Excel) осуществляется оптимизация транспортного плана.
При заполнении формы «Поиск решения» получаем следующее:
При введении ограничения двоичности может возникнуть сложность в введении этого параметра. Поэтому необходимо задавать его следующим образом: