Ответ. Для получения максимальной прибыли необходимо произвести: 10 002 шт. наборов мебели вида 1; 10 000 шт. наборов мебели вида 2; 10 490 шт. наборов мебели вида 3; 4000 шт. тумб под телевизор. Книжные полки в этом месяце производить не нужно.
1.5.2. Транспортная задача и ее реализация в среде Excel
Транспортная задача является одной из наиболее распространенных задач линейного программирования и находит широкое практическое приложение.
Постановка транспортной задачи. Некоторый однородный продукт, сосредоточенный у т поставщиков Ai в количестве ai (i = 1, …, т) единиц, необходимо доставить п потребителям Bj в количестве bj (j = 1, …, п) единиц. Известна стоимость cij перевозки единицы груза от поставщика i к потребителю j. Составить план перевозок, позволяющий с минимальными затратами вывести все грузы и полностью удовлетворить потребителей.
Сформулируем экономико-математическую модель транспортной задачи. Обозначим через хij количество единиц груза, запланированных к перевозке от поставщика i к потребителю j. Так как от поставщика i к потребителю j запланировано перевезти xij единиц груза, то стоимость перевозки составит cijxij.
Транспортная задача относится к двухиндексным задачам линейного программирования, так как в результате решения задачи необходимо найти матрицу X с компонентами xij.
Стоимость всего плана выразится двойной суммой
Систему ограничений получаем из следующих условий задачи:
а) все грузы должны быть перевезены, т.е.
i = 1, …, m;
б) все потребности должны быть удовлетворены, т.е.
j = 1, …, n.
Таким образом, математическая модель транспортной задачи имеет следующий вид. Найти минимальное значение линейной функции
(1.6)
при ограничениях
i = 1, …, m; (1.7)
j = 1, …, n; (1.8)
xij 0, i = 1, …, m; j = 1, …, n. (1.9)
В рассмотренной модели предполагается, что суммарные запасы равны суммарным потребностям, т.е.
(1.10)
Транспортная задача, в которой суммарные запасы и потребности совпадают, т.е. выполняется условие (1.10), называется закрытой моделью; в противном случае - открытой. Для открытой модели может быть два случая:
а) суммарные запасы превышают суммарные потребности
б) суммарные потребности превышают суммарные запасы
Линейная функция одинакова в обоих случаях, изменяется только вид системы ограничений. Найти минимальное значение линейной функции
при ограничениях:
в случае «а»
i = 1, …, m,
j = 1, …, n, xij 0;
в случае «б»
i = 1, …, m,
j = 1, …, n; xij 0.
Открытая модель решается приведением к закрытой модели.
В случае «а», когда суммарные запасы превышают суммарные потребности, вводится фиктивный потребитель Bп+1, потребность которого описывается формулой
bп+1 = ,
а для случая «б», когда суммарные потребности превышают суммарные запасы, вводится фиктивный поставщик Ат+1, запасы которого описываются формулой
am+1 = .
Стоимость перевозки единицы груза до фиктивного потребителя и стоимость перевозки груза от фиктивного поставщика полагаются равными нулю, так как груз в обоих случаях не перевозится.
Транспортная задача имеет п + т уравнений с тхп неизвестными. Матрицу перевозок Х = (Хij)тп, удовлетворяющую условиям (1.7)-(1.9), называют планом перевозок транспортной задачи, a xij - перевозками.
План X*, при котором целевая функция (1.6) обращается в минимум, называется оптимальным.
Применение транспортных моделей к решению некоторых экономических задач
Алгоритм и методы решения транспортной задачи могут быть использованы при решении некоторых экономических задач, не имеющих ничего общего с транспортировкой груза. В этом случае величины тарифов Сij имеют различный смысл в зависимости от конкретной экономической задачи. К таким задачам относятся [8]:
• Оптимальное закрепление за станками операций по обработке деталей. В них Сij является таким экономическим показателем, как производительность. Задача позволяет определить, сколько времени и на какой операции нужно использовать каждый из станков, чтобы обработать максимальное количество деталей.
• Оптимальные назначения, или проблема выбора. Имеется т механизмов, которые могут выполнять п различных работ с производительностью Сij. Задача позволяет определить, какой механизм и на какую работу надо назначить, чтобы добиться максимальной производительности.
• Задача о сокращении производства с учетом суммарных расходов на изготовление и транспортировку продукции.
• Задача о закреплении самолетов за воздушными линиями.
• Решение задач с помощью метода запрещения перевозок. Используется в том случае, если груз от некоторого поставщика по каким-то причинам не может быть направлен одному из потребителей. Данное ограничение можно учесть, присвоив соответствующей клетке достаточно большое значение стоимости, тем самым в эту клетку не будут производиться перевозки.
Решение транспортной задачи с помощью средства Excel Поиск решения
Исходные данные транспортной задачи приведены схематически: внутри прямоугольника заданы удельные транспортные затраты на перевозку единицы груза cij, слева указаны мощности поставщиков ai а сверху - мощности потребителей bj. Найти оптимальный план закрепления поставщиков за потребителями xij.
Мощности поставщиков
Мощности потребителей
В данной задаче суммарные запасы равны суммарным потребностям, т.е.
= 550.
Транспортная задача, в которой суммарные запасы и потребности совпадают, является закрытой[4].
Ввод условий задачи состоит из следующих шагов.
1. Создание формы для решения задачи.
Этот шаг предполагает создание матрицы перевозок. Для этого необходимо выполнить резервирование изменяемых ячеек, поэтому в блок ячеек ВЗ:Е6 вводятся «1» — так резервируется место, где после решения задачи будет находиться распределение поставок, обеспечивающее минимальные затраты на перевозку груза.
2. Ввод исходных данных.
В конкретном примере осуществляется ввод мощностей четырех поставщиков (ячейки А10:А13), потребности регионов в их продукции (В9:Е9), а также удельные затраты по доставке нефтепродуктов от конкретного поставщика потребителю (блок В10:Е13) (рис. 1.26).
3. Ввод граничных условий.
3.1. Вводим условия реализации мощностей поставщиков
,
где ai - мощность поставщика i;
xij - объем поставки груза от поставщика i к потребителю j;
п - количество потребителей.
Для этого необходимо выполнить следующие операции:
• поместить курсор в ячейку A3;
• выбрать знак ;
• выделить необходимые для суммирования ячейки ВЗ:ЕЗ;
• нажать ENTER для подтверждения ввода формулы для суммирования.
Аналогичные действия выполнить для ячеек А4, А5, А6, т.е. ввести условия реализации мощностей всех поставщиков (для всех строк). Эти действия можно реализовать иначе:
• поместить курсор в ячейку A3;
• выбрать команду Копировать, т.е. скопировать в буфер формулу, введенную для ячейки A3;
• выделить ячейки А4:А6;
• выбрать команду Вставить, тем самым из буфера будет вставлена формула для суммирования в А4:А6.
3.2.Вводим условия удовлетворения запросов потребителей, т.е.
,
где bi - мощность потребителя j;
m - количество поставщиков. Для этого необходимо выполнить следующие операции:
• поместить курсор в ячейку В7;
• выбрать знак X, при этом автоматически выделяется весь столбец ВЗ:В6;
• нажать ENTER для подтверждения суммирования показателей выделенного столбца.
Эту же последовательность действий выполнить для ячеек С7 и Е7 или же проделать следующие действия:
• поместить курсор в ячейку С7;
• выбрать команду Копировать;
• выделить ячейки С7:Е7;
• выбрать команду Вставить.
Таким образом, введены ограничения для всех поставщиков и всех потребителей.
4. Назначение целевой функции.
Для вычисления значения целевой функции, соответствующей минимальным суммарным затратам на доставку груза, необходимо зарезервировать ячейку и ввести формулу для ее вычисления
где cij - стоимость доставки единицы груза от поставщика i к потребителю j;
xij - объем поставки груза от поставщика i к потребителю j.
Для этого необходимо произвести следующие действия:
• поместить курсор в ячейку В15 (после решения задачи в данной ячейке будет находиться значение целевой функции);
• запустить Мастер функций (значок fx);
• в окне Категория выбрать Математические;
• в окне Функция при помощи спинера выбрать СУММПРОИЗВ;
• нажать кнопку ОК;
• в окне СУММПРОИЗВ указать адреса массивов, элементы которых обрабатываются этой функцией.
В задаче целевая функция представляет собой произведение удельных затрат на доставку груза (расположенных в блоке ячеек В10+E13) и объемов поставок для каждого потребителя (содержимое ячеек В3+Е6). Для этого надо:
• в поле Массив 1 указать адреса В10:Е13;
• в поле Массив 2 указать адреса ВЗ:Е6;
• нажать кнопку ОК - подтверждение окончания ввода адресов массивов.
В поле ячейки В15 появится некоторое числовое значение, равное произведению единичных поставок на удельные коэффициенты затрат по доставке грузов (в данной задаче - это число 144) (рис. 1.27).
5. Ввод зависимостей из математической модели.
Для этого необходимо выполнить следующие действия:
• выбрать Сервис => Поиск решения;
• поместить курсор в поле Установить целевую (ячейку);
• ввести адрес $В$15 (тем самым мы резервируем ячейку куда после решения задачи помещается значение целевой функции) или поместить курсор в В15, а затем выбрать Поиск решения. При этом в поле адреса целевой ячейки будет автоматически введен адрес $В$15;
• установить направление изменения целевой функции, равное Минимальному значению;
• ввести адреса изменяемых ячеек ВЗ+Е6. Для этого необходимо:
• выбрать Изменяя ячейки;
• ввести адреса $В$3:$Е$6 или щелкнуть на красной стрелке рядом с этим полем, выйти в таблицу с матрицей перевозок, выделить блок ячеек ВЗ+Е6, щелкнуть на красной стрелке и вернуться в блок Поиск решения. Такая последовательность действий приводит к тому, что будут введены нужные адреса.
6. Ввод ограничений задачи.
В матрицу перевозок, содержащую исходные данные по задаче, необходимо ввести условие реализации мощностей всех поставщиков (рис. 1.28). Для этого необходимо:
• выбрать Добавить ограничения;
• в поле Ссылка на ячейку ввести адреса $А$3:$А$6;
• в среднем поле установить знак «=». Для этого щелкнуть спинер и выбрать необходимый знак «=»[5];
• в поле Ограничение установить адреса $А$10:$А$13;
• для подтверждения введенного условия нажать кнопку ОК. Далее вводится ограничение, которое реализует условие удовлетворения мощностей всех потребителей (рис. 1.29). Для этого необходимо:
• выбрать Добавить ограничения;
• в поле Ссылка на ячейку ввести адреса $В$7:$Е$7;
• в поле знака выбрать при помощи спинера знак «=»;
• в поле Ограничение установить адреса $В$9:$Е$9;
• нажать кнопку ОК;
• после этого надо вернуться в поле Поиск решения;
• после ввода всех ограничений ввести ОК. На экране появится окно Поиск решения с введенными ограничениями (рис. 1.30).
7. Ввод параметров.
С помощью окна Параметры можно вводить условия для решения оптимизационных задач. В нашей задаче следует установить флажок Неотрицательные значения и флажок Линейная модель. Нажать кнопку ОК. Опять появится диалоговое окно Поиск решения. Далее необходимо:
• щелкнуть по кнопке Параметры;
• выбрать переключатель Линейная модель;
• выбрать переключатель Неотрицательные значения (так как объемы поставок груза не могут быть отрицательными);
• нажать кнопку ОК. После этого произойдет переход в поле Поиск решения;
• нажать кнопку Выполнить.
Решение
Решение задачи выполняется сразу же после ввода данных, когда на экране находится диалоговое окно Поиск решения. Нажать кнопку Выполнить. На экране появится диалоговое окно Результаты поиска решения (рис. 1.31).
В результате нами был получен оптимальный план перевозок:
Матрица перевозок (изменяемые ячейки)
2.13Е-14
План перевозок означает, что:
Х13 = 80 ед. груза следует перевезти от поставщика 1 потребителю 3;
Х21 = 200 ед. груза следует перевезти от поставщика 2 потребителю 1;
Х23 = 70 ед. груза следует перевезти от поставщика 2 потребителю 3;
Х24 = 50 ед. груза следует перевезти от поставщика 2 потребителю 4;
Х32= 100 ед. груза следует перевезти от поставщика 3 потребителю 2;
Х41 = 50 ед. груза следует перевезти от поставщика 4 потребителю 1;
Х42 = 0 (2.13Е - 14 = 0) ед. груза следует перевезти от поставщика 4 потребителю 2.
Общая стоимость перевозок = 3200.
1.5.3. Задача о назначениях
Задача о назначениях — это распределительная задача, в которой для выполнения каждой работы требуется один и только один ресурс (один человек, одна автомашина и т.д.) и каждый ресурс может быть использован на одной и только одной работе. То есть ресурсы неделимы между работами, а работы неделимы между ресурсами. Таким образом, задача о назначениях является частным случаем транспортной задачи. Задача о назначениях имеет место при распределении людей на должности или работы, автомашин на маршруты, водителей на машины, групп по аудиториям, научных тем по научно-исследовательским лабораториям и т.п.
Исходные параметры задачи о назначениях (табл. 1.10):
n - количество ресурсов;
т - количество работ;
аi = 1 - единичное количество ресурса Ai, i = 1, …, п (например: один работник, одно транспортное средство, одна научная тема и т.д.);
bj = 1 - единичное количество работы Bj, j = 1, …, т (например: одна должность, один маршрут, одна лаборатория);
cij — характеристика качества выполнения работы Bj с помощью ресурса Ai (например: компетентность работника i при работе на должности j; время, за которое транспортное средство i перевезет груз по маршруту j; степень квалификации лаборатории i при работе над научной темой j).
Искомые параметры:
xij - факт назначения или неназначения ресурса Аi на работу Bj:
xij= 0, если ресурс i не назначен на работу j,
1, если ресурс i назначен на работу j;
- общая (суммарная) характеристика качества распределения ресурсов по работам.
Таблица 1.10
Общий вид транспортной матрицы задачи о назначениях
Ресурсы
Работы
Количество ресурсов
B1
B2
…
Bm
А2
c11
c12
…
c1m
А2
c21
c22
…
C2m
…
…
…
…
…
…
Аn
cn1
cn1
…
Cnm
Количество работ
...
Экономико-математическая модель задачи
i= 1, …, n,
j= 1, …, m,
xij=0 i= 1, …, n,j= 1, …, m.
По сравнению с транспортной задачей процесс приведения задачи о назначениях к сбалансированному виду имеет свои особенности (принимают значение «0» или «1»). Для этого необходимо при вводе ограничений указать тип переменных Двоичное (рис. 1.32).
При решении задач о назначении в Excel необходимо учитывать, что переменные xij являются булевыми.
1.6. ВОЗМОЖНЫЕ ОШИБКИ ПРИ ВВОДЕ УСЛОВИЙ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Если при решении задачи ЛП выдается сообщение, что решение не может быть найдено, то, возможно, причина заключается в ошибках, возникших при вводе условий задачи в Excel. Поэтому, прежде чем делать вывод об отсутствии оптимального решения задачи, ответьте на вопросы из табл. 1.11.