Экономические задачи линейного программирования и их решение с испол
..pdfПримеры решения задач в Microsoft Excel
Транспортная задача с закрытой моделью
Постановка задачи
Имеется три поставщика (а1, а2, а3) с запасами одного продукта в количестве 30, 40, 20 единиц соответственно. Имеется четыре потребителя этого продукта (b1, b2, b3, b4) с заданными потребностями продукта в количестве 20, 25, 35, 10. Дана стоимость перевозки единиц груза по всем маршрутам (табл. 3.3). Суммарные запасы равны суммарным потребностям.
Необходимо определить план доставки грузов от поставщиков потребителям при условии минимальной суммарной стоимости всех перевозок.
|
|
|
|
|
Таблица 3.3 |
|
|
|
|
|
|
Поставщики |
|
Тарифы потребителей |
|
Запас |
|
b1 |
b2 |
b3 |
b4 |
груза |
|
|
|
|
|
|
на складе |
а1 |
2 |
3 |
5 |
4 |
30 |
а2 |
3 |
2 |
4 |
1 |
40 |
а3 |
4 |
3 |
2 |
6 |
20 |
Потребность |
20 |
25 |
35 |
10 |
90 |
Моделирование
Обозначим переменные величины:
– хij – количество груза, перевозимого от i-го поставщика
кj-му потребителю;
–х11 – количество груза, перевозимого от поставщика а1 к потребителю b1;
–х12 – количество груза, перевозимого от поставщика а1 к потребителю b2;
–х13 – количество груза, перевозимого от поставщика а1 к потребителю b3;
–х14 – количество груза, перевозимого от поставщика а1 к потребителю b4.
Аналогично для остальных поставщиков.
121
Тогда целевая функция
z= 2x11 + 3x12 + 5x13 + 4x14 + 3x21 + 2x22 +
+4x23 + 1x24 + 4x31 + 3x32 + 2x33 + 6x34 → min.
Система ограничений:
x11 |
x21 |
x31 |
20, |
|
|||
x |
x |
22 |
x |
32 |
25, |
||
|
12 |
|
|
|
|
||
x |
x |
|
x |
|
35, |
|
|
|
13 |
|
23 |
|
33 |
|
|
x14 |
x24 |
x34 |
10, |
|
|||
x |
x |
|
x |
|
x |
30, |
|
|
11 |
12 |
13 |
14 |
|
||
x21 |
x22 |
x23 |
x24 |
40, |
|||
|
|
x32 |
x33 |
x34 |
20, |
||
x31 |
хij ≥ 0.
Решение
Введем исходные данные и таблицу с изменяемыми ячейками в Excel (рис. 3.14).
Рис. 3.14
Ячейки I4:L6 предназначены для значений переменных (это изменяемые в процессе поиска решения ячейки), в них появится искомое количество перевозимой продукции по завершении поиска решения. N9 – целевая ячейка, в которой будет размещена формула целевой функции.
В таблице «План доставки» продублированы столбец «Запас груза на складе» и строка «Потребность» (с помощью ссылок), добавлены:
122
–столбец «Использовано»,
–строка «Объем доставки».
Заполним таблицу «План доставки» формулами, необходимыми для создания ограничений:
–ограничения на запасы – в ячейку M4 столбца «Использовано» введем =СУММ(I4:L4), а затем растянем эту формулу в ячейки
M5:M6;
–ограничения на потребности – в ячейку I7 строки Объем доставки введем =СУММ(I4:I6) и растянем ее в ячейки J7:L7.
Запишем общие суммы по столбцам и строкам:
–в ячейку N7 – по столбцу Запасы на складе =CУMM(N4:N6);
–в ячейку M8 – по столбцу Потребность =СУММ(I8:L8);
–в ячейку N8 введем логическую формулу для контроля об-
щих сумм: =ЕСЛИ(M8=N7; Закрытая модель; Открытая модель) (рис. 3.15).
Рис. 3.15
В ячейку N9 запишем формулу для целевой функции
=СУММПРОИЗВ(B4:E6;I4:E6).
Для поиска оптимального набора значений параметров плана доставки, который соответствует минимальному значению целевой функции, следует воспользоваться надстройкой Поиск решения. Заполним диалоговое окно надстройки (рис. 3.16):
123
1.В поле Оптимизировать целевую ячейку введем адрес целе-
вой функции N9.
2.Ниже выберем параметр Минимум.
Рис. 3.16
3.В поле Изменяя ячейки переменных введем диапазон ячеек
сискомыми переменными I4:L6.
4.Установим флажок Сделать переменные без ограничений неотрицательными и выберем параметр Поиск решения линейных задач симплекс-методом.
5.Щелчком по кнопке Добавить вызовем окно Добавление ограничения. В этом окне введем ссылки на ячейки ограничений,
атакже выберем оператор ограничений. Для решения данной задачи нам необходимы следующие ограничения:
– I7:L7 = I8:L8 – условиеполногоудовлетворенияпотребностей,
– M4:M6 = N4:N6 – условие полного распределения ресурсов.
124
6. Нажав кнопку Найти решения, получим результаты решения.
Вокне Результаты поиска решения выберем все три отчета
исохраним полученный результат как сценарий (кнопка Сохра-
нить сценарии) с именем Закрытая модель.
На рис. 3.17 приведен оптимальный план перевозок.
Рис. 3.17
Анализ отчетов
Теперь необходимо проанализировать отчеты, которые мы получили при решении задачи. На рис. 3.18 представлен отчет о результатах.
Рис. 3.18
125
Оптимальное значение целевой функции |
|
|
|
|
||||||
|
|
|
|
zmin = 210 руб. |
|
|
|
|
||
Значения основных переменных прямой задачи: |
|
|
||||||||
x11 |
= 20, |
x12 |
= 0, |
x13 = 10, |
x14 |
= 0, |
x21 |
= 0, |
x22 |
= 25, |
x23 |
= 5, |
x24 |
= 10, |
x31 = 0, |
x32 |
= 0, |
x33 |
=20, |
x34 |
= 0. |
Анализ отчетов и выводы по анализу аналогичны тем, что представлены в подразд. 2.6 и 2.7.
Транспортная задача с открытой моделью
В задачах с открытой моделью запасы поставщиков не равны суммарным потребностям. Например, запасы поставщиков больше потребностей.
Откроем лист Excel с закрытой моделью, удалим из плана доставки полученные результаты и изменим данные в столбце «Запас груза на складе» (рис. 3.19). Изменится общая сумма запасов на складе, а в ячейке N8 появится сообщение «Открытая модель».
Рис. 3.19
Эта ситуация приведет к тому, что будут израсходованы не все запасы, поэтому изменится ограничение M4:M6 ≤ N4:N6 – условие неполного распределения запасов (рис. 3.20).
Результат выполнения поиска решения сохраним в виде сценария с именем «Открытая модель 1».
Результаты решения приведены на рис. 3.21.
126
Рис. 3.20
Рис. 3.21
Анализ отчетов и выводы по анализу аналогичны тем, что представлены в подразд. 2.6 и 2.7.
3.4.Задача о назначении
Впроцессе управления производством зачастую возникают задачи назначения исполнителей на различные виды работ, например: подбор кадров и назначение кандидатов на вакантные долж-
127
ности, распределение источников капитальных вложений между различными проектами научно-технического развития, распределение экипажей самолетов между авиалиниями.
Задача о назначении – частный случай транспортной задачи. Это класс так называемых распределительных задач. Они могут быть решены в рамках теории линейного программирования, если распределяется однородный ресурс. Например, в задаче о назначении все работники могут выполнять любую из предложенных работ, все экипажи самолетов – направляться на любую авиалинию.
Название задачи о назначении непосредственно исходит от практической кадровой ситуации, когда претендентов нужно назначить на вакантные должности наилучшим образом.
Критерий максимизации общего эффекта используется тогда, когда известны заданные оценки способности каждого претендента исполнять определенные функции (чем выше, тем лучше); критерий минимизации – когда известна заданная величина затрат на подготовку каждого претендента для определенной деятельности (чем выше, тем хуже).
Особенность задачи о назначении состоит в том, что наличие высокой оценки одного претендента еще не гарантирует успех, поскольку целью оптимизации является максимальный общий эффект. Вторая особенность заключается в том, что переменные являются булевыми переменными, т.е. принимают значения 0 либо 1.
Постановка задачи
Задачу о назначениях можно сформулировать следующим образом. Необходимо выполнить m различных работ. Для их выполнения можно привлечь n рабочих. Каждый рабочий за определенную плату готов выполнить любую работу. Выполнение любой работы следует поручить одному рабочему, и каждый рабочий может выполнять только один вид работы. Требуется так распределить работы между рабочими, чтобы общие затраты на выполнение всех работ были минимальными.
128
Закрытая модель задачи о назначении
Предполагается, что количество рабочих равно количеству работ, т.е. n = m.
Математическая модель задачи о назначении примет следующий вид.
Целевая функция
n |
m |
|
|
z cij xij min. |
(3.15) |
||
j 1 |
i 1 |
|
|
Система ограничений: |
|
|
|
m |
|
|
|
xij 1, |
i 1, ..., m, |
(3.16) |
|
i 1 |
|
|
|
n |
|
|
|
xij |
1, |
j 1, ..., n, |
(3.17) |
j 1 |
|
|
|
xij ≥ 0, i = 1, …, m, j = 1, ..., n, |
(3.18) |
где сij – показатель эффективности j-го рабочего на i-й работе, например производительность выполнения j-м рабочим i-й работы;
xij – переменная модели (хij = 1, если j-й рабочий используется
на i-й работе, и xij = 0 в противном случае).
(3.15) – целевая функция (минимум издержек на выполнение всех работ).
(3.16), (3.17) – система ограничений, отражающая следующие условия: каждая работа должна быть выполнена одним рабочим; каждый рабочий может быть привлечен к одной работе.
(3.18) – условия неотрицательности переменных.
При решении задачи о назначениях исходной информацией является таблица задачи о назначениях с = {сij}, элементами которой служат показатели эффективности назначений. Для задачи о назначениях, записанной в закрытой форме, количество строк этой таблицы совпадает с количеством столбцов (табл. 3.4).
129
|
|
|
|
|
|
|
|
|
|
Таблица 3.4 |
|
|
|
|
|
|
|
Рабочий |
|
|
|
||
Работа |
|
|
|
|
|
||||||
1 |
2 |
|
|
… |
|
j |
… |
|
n |
||
|
|
|
|
|
|||||||
1 |
c11 |
c12 |
|
|
… |
|
c1j |
… |
|
c1n |
|
2 |
c21 |
c22 |
|
|
… |
|
c2j |
… |
|
c2n |
|
… |
… |
… |
|
|
… |
|
… |
… |
|
… |
|
i |
ci1 |
ci2 |
|
|
… |
|
cij |
… |
|
cin |
|
… |
… |
… |
|
|
… |
|
… |
… |
|
… |
|
m |
cm1 |
cm2 |
|
|
… |
|
cmj |
… |
|
cmn |
|
Результатом решения задачи о назначениях (3.15)–(3.18) явля- |
|||||||||||
ется набор переменных x* |
|
|
|
||||||||
(i |
1, m |
; j |
1, n |
), значения которых рав- |
|||||||
|
|
ij |
|
|
|
|
|
|
|
|
|
ны 0 или 1.
Оптимальный план задачи можно представить в виде квадратной матрицы назначений, в каждой строке и в каждом столбце которой находится ровно одна единица. Такую матрицу иногда называют матрицей перестановок. Значение целевой функции (3.15), соответствующее оптимальному плану, называют эффективностью назначений.
Открытая модель задачи о назначении
Задача о назначениях в открытой форме возникает тогда, когда количество рабочих не равно количеству работ. В этих случаях задача может быть преобразована в закрытую модель.
Пусть, например, количество рабочих п превышает количество работ m.
Введем дополнительные фиктивные работы с индексами i = = m + 1, m + 2, ..., k. Коэффициенты таблицы назначений сij, j = 1, ..., п; i = m + 1, ..., k положим равными нулю. В этом случае получаем задачу, сформулированную в закрытой форме. Если в оптимальном плане этой задачи xij* = 1 при i = т + 1, ..., k, то исполнитель j назначается на выполнение фиктивной работы, т.е. остается без работы. Заметим, что оптимальное значение целевой функции исходной за-
130