Решение задачи с помощью модуля Поиска решения
Перенесем таблицу исходных данных на Лист 2.
Подготовим таблицу для информации о количестве товара, перевозимого между магазинами и складами. Блок ячеек С15:F20 отведем под изменяемые переменные, т.е. в каждую из них будет заноситься то количество товара, которое надо перевезти с конкретного склада в конкретный магазин. Первоначально занесем в них произвольные числа, например единицы.
В ячейки В15:В20 будем заносить количество товара, отправленного с конкретного склада во все магазины. Другими словами, их значения будут определяться суммированием данных в ячейках соответствующих строк, начиная со столбца С до столбца F .
В строке Фактическое количество в ячейки С21:F21 будем заносить количество товара, полученного конкретным магазином со всех складов, т.е. их значения определяются суммированием данных в соответствующих ячеек, начиная со строки 15 и до строки 20. Первоначально все они равны шести.
В строке Грузооборот в ячейки С22:F22 будем заносить грузооборот по конкретному магазину, т.е. сумму произведений количества товара, полученного со всех складов, на расстояния до этих складов. Для магазина 1 формула будет иметь вид:
С22 = СУММПРОИЗВ(C15:C20;C4:C9)
Поясним формулу. В ячейке С15 находится количество товара, которое будет перевезено с первого склада в первый магазин, а в ячейке С4 – расстояние от первого склада до первого магазина. Таким образом, С15*С4 – это грузооборот между первым складом и первым магазином. Аналогично, произведение С16*С4 – это грузооборот между вторым складом и первым магазином. Сложив все такие произведения, получим полный грузооборот перевозок товаров в первый магазин.
В объединенной ячейке C24:D24 по формуле СУММ(C22:F22) будет вычисляться общий объем грузооборота товаров.
Для решения транспортной задачи воспользуемся процедурой Поиск решения, которая находится в меню Сервис.
Поскольку в качестве критерия оптимизации выбрана минимизация грузооборота, в поле Установить целевую ячейку вводим ссылку на ячейку, содержащую формулу расчета общего объема грузооборота товаров – $C$24. Переключатель устанавливаем в положение – минимальному значению.
В поле Изменяя ячейки вводим ссылки на изменяемые ячейки, т.е. $С$15:$F$20. Это означает, что для достижения минимального грузооборота перевозок будут меняться значения в ячейках с С15 по F20. Другими словами, будет изменяться количество товаров, перевозимых между складами и магазинами.
Нажав кнопку Параметры, установим флажки Линейная модель и Неотрицательные значения.
Кнопкой Выполнить запускаем процесс подбора параметров. Получаем результат, в котором все переменные равны нулю. Это верный результат: если не перевозить ничего, то это и это и даст минимальный грузооборот. Для решения реальной задачи необходимо наложить некоторые ограничения для поиска решения.
Кнопкой Добавить вызовем окно Добавление ограничения.
Первая группа ограничений связана с ограниченным запасом товаров на складах. В ячейках В15:В20 находятся объемы поставок с конкретных складов, а в ячейках с B4:B9 – запасы товаров на этих же складах. Очевидно, что с любого склад невозможно вывести товаров больше, чем на нем есть. Значит, в окне Ссылка на ячейку указываем ячейки В15:В20, выбираем знак <= и в окне Ограничение указываем ячейки B4:B9:
$B$15:$B$20 <= $B$4:$B$9.
Вторая группа ограничений связана с тем, что объем перевозок не может быть отрицательным, то есть, если на складе не хватает товаров, то и взять их неоткуда. Грузоперевозки выполняются только в одном направлении – от складов к магазинам. Это означает, что все объемы перевозимых товаров должны быть положительными:
$С$15:$F$20 => 0
Третья группа ограничений говорит о том, что привезти лишний товар в магазин можно, но не выполнить запрос – нет. Количество товаров, привозимое в каждый магазин, находится в ячейках С21:F21, а запросы магазинов – в ячейках C3:F3. Таким образом, эти ограничения примут вид:
$С$21:$F$21 >= $C$3:$F$3.
Введя все ограничения, нажимаем кнопку Выполнить для подбора решения. После нахождения решения появляется окно Результаты поиска решения.
Нажав кнопку ОК, выводим решение на рабочий лист.
Как видим, результат расчетов совпадает с результатом, полученным в предыдущем пункте.
4. Проанализируем, как будет меняться грузооборот при добавлении дополнительных ограничений. Предположим, что из-за ремонта дороги между складом 5 и магазином 1 перевозка товаров между ними временно невозможна. Это означает, что в системе ограничений соответствующая ячейка должна равняться нулю: $С$19 = 0.
Вызываем Поиск решения и выводим результаты на рабочий лист:
Предположим, что у магазина 3 заключен договор со складом 4 об обязательной поставке 250 единиц товара. Это означает, что в системе ограничений соответствующая ячейка должна равняться 250: $Е$18 = 250.
Вызываем Поиск решения и выводим результаты на рабочий лист:
