Некоторый однородный продукт, сосредоточенный у поставщиков в количестве единиц соответственно, необходимо доставить потребителям в количестве . Известна стоимость перевозки единицы груза -го поставщика к -му потребителю. Необходимо составить план перевозок, позволяющий вывезти все грузы, полностью удовлетворить потребности, и имеющий минимальную стоимость.
Обозначим через количество единиц груза, запланированного к перевозке от -го поставщика к -му потребителю, тогда условие задачи можно записать в виде табл. 7.1, которую также называют матрицей планирования.
Таблица 3.1
Поставщики | Потребители | Запасы | ||||||
... | ||||||||
... | ||||||||
... | ... | ... | ... | ... | ... | |||
... | ||||||||
Запросы | ... |
Составим математическую модель задачи. Так как от -го поставщика к -му потребителю запланировано единиц груза, то стоимость этой перевозки составит . Стоимость всего плана выразится двойной суммой .
Систему ограничений получаем из следующих условий:
а) все грузы должны быть вывезены, т.е. (эти уравнения получаются из строк);
б) все потребности должны быть удовлетворены, т.е. .
Таким образом, математическая модель транспортной задачи (ТЗ) может быть записана следующим образом:
– найти минимум линейной функции
(3.1)
при ограничениях
(3.2)
В рассматриваемой модели предполагается, что суммарные запасы равны суммарным запросам потребителей:
. (3.3)
Такая задача называется задачей с правильным балансом, а её модель – закрытой. Если же равенство (3.3) не выполняется, то задача называется задачей с неправильным балансом, а её модель – открытой.
Теорема 3.1. Для того чтобы транспортная задача ЛП имела решение, необходимо и достаточно, чтобы суммарные запасы поставщиков равнялись суммарным запросам потребителей.
Доказательство теоремы опускается.
3.2. Особенности решения транспортных задач с неправильным балансом:
1. Если суммарные запасы поставщиков превосходят суммарные запросы потребителей, т.е.
,
то необходимо ввести фиктивного (n + 1)-го потребителя с запросами
, равными разности суммарных запасов поставщиков и запросов потребителей, и нулевыми стоимостями перевозок единиц груза .
2. Если суммарные запросы потребителей превосходят суммарные запасы поставщиков, т.е.
,
то необходимо ввести фиктивного (m +1)-го поставщика с запасами , равными разности суммарных запросов потребителей и запасов поставщиков, и нулевыми стоимостями перевозок единиц груза .
3. При составлении начального опорного решения в последнюю очередь следует распределять запасы фиктивного поставщика и удовлетворять запросы фиктивного потребителя, несмотря на то, что им соответствует наименьшая стоимость перевозок, равная нулю.
Построение первоначального опорного плана
Рассмотрим систему ограничений (3.2) транспортной задачи. Она содержит неизвестных и уравнений, связанных соотношением (3.2). Если сложить почленно отдельно уравнения подсистемы в (3.2), то в силу (3.3) получим два одинаковых уравнения, что говорит о линейной зависимости всей системы. Однако если отбросить любое из этих уравнений, то получившаяся система из уравнений будет линейно независимой. Следовательно, опорный план транспортной задачи содержит компонент перевозок. Если условия транспортной задачи и её опорный план записаны в виде таблицы (например, табл. 3.1), то клетки, в которых проставлены перевозки, называют занятыми, а остальные – незанятыми. Занятие клетки соответствует базисным переменным, и их количество также равно .
Однако опорный план должен удовлетворять ещё и условию ацикличности. Для того, чтобы пояснить это понятие, рассмотрим вначале следующее определение:
Определение. Циклом называется набор клеток таблицы транспортной задачи , , ,…, , в которой две и только две соседние клетки содержатся в одной строке или столбце, причём последняя находится в том же столбце, что и первая.
Построение циклов начинают с какой-либо занятой клетки и переходят по столбцу(строке) к другой занятой клетке, в которой делают поворот под прямым углом и движутся по строке (столбцу) к следующей занятой клетке, пытаясь в конце концов вернуться к первоначальной. Существует ряд методов построения начального опорного решения. Наиболее простым из них является метод северо-западного угла.
Метод северо-западного угла. Для наглядности рассмотрим данный метод на примере. Пусть условия транспортной задачи заданы табл. 3.2.
Таблица 3.2
Поставщики | Потребители | Запасы | |||||||||
Запросы |
Заметим, что модель задачи является закрытой. Не учитывая стоимость перевозок, заполняем клетки, начиная с таким образом, чтобы запросы всех потребителей удовлетворялись, а запасы всех поставщиков были бы вывезены. Итак, запас 1-го поставщика – 100 единиц товара, а запрос 1-го потребителя – 200. Поэтому в первую клетку 1-го столбца заносим , исключаем из рассмотрения первого поставщика (его запасы вывезены) и переходим ко второму поставщику, у которого 250 единиц товара. Для того, чтобы удовлетворить первого потребителя, необходимо ещё 100 единиц. Поэтому в клетку первого столбца заносим . Исключаем первого потребителя и переходим ко второму, запасы которого равны 200. У второго поставщика осталось 150 единиц товара, поэтому в клетку заносим . Исключаем из рассмотрения второго поставщика и переходим к третьему. Этот процесс продолжается до тех пор, пока остаётся неисключённой в точности одна строка или один столбец. В результате получим табл. 3.3.
Таблица 3.3
Поставщики | Потребители | Запасы | |||||||||
Запросы |
Число занятых клеток . Также легко убедиться, что заполненные клетки таблицы не образуют циклов. Следовательно, построенное решение действительно является опорным.
Замечание. Если одновременно и столбец, и строка удовлетворяют ограничениям, очередная переменная, включаемая в базисное решение, обязательно имеет нулевое значение.
Вычислим стоимость перевозки, соответствующую этому опорному плану:
.
Эта стоимость перевозки на самом деле довольно далека от оптимальной, так как при составлении опорного плана не учитывались стоимости перевозок. Поэтому чаще применяют другой метод, описываемый ниже.
Метод минимальной стоимости. Данный метод позволяет построить решение, которое достаточно близко к оптимальному, так как при его применении используются стоимости транспортной задачи , . Он состоит из ряда однотипных шагов, на каждом из которых заполняется только одна клетка, соответствующая (в отличие от метода северо- западного угла). Сам процесс заполнения клетки такой же, как и в методе северо-западного угла. Также на каждом шаге исключается из рассмотрения только одна строка (поставщик, если его запасы заканчиваются) или только один столбец (потребитель, если его запросы выполнены).
Затем переходят к клетке, соответствующей из неисключённых клеток и т.д. При этом, если поставщик ещё не исключён, но его запасы равны нулю, то на том шаге, когда от него требуется поставить груз, в соответствующую клетку таблицы заносится базисный нуль и лишь потом поставщик исключается из рассмотрения. Аналогично поступают и с потребителем.
Рассмотрим метод минимальной стоимости на примере табл. 3.2.
Наименьшую стоимость имеет клетка . Запасы 1-го поставщика, как и запросы 4-го потребителя равны 100 единицам, поэтому заносим в эту клетку 100 и исключаем, например, 4-го потребителя. Затем переходим к следующей клетке, содержащей минимальную стоимость, например, к . Запасы 2-го поставщика равны 200 единицам, а запросы 1-го потребителя – 250 единиц, поэтому в клетку заносим и исключаем 1-го потребителя. У 2-го поставщика остаётся ещё 50 единиц. Следующая клетка из неисключённых, соответствующая минимальной стоимости, находится на пересечении 3-й строки и 5-го столбца. Согласно тому же правилу, заносим в неё и исключаем 3-го поставщика и т.д. В результате получим табл. 3.4.
Таблица 3.4
Поставщики | Потребители | Запасы | |||||||||
Запросы |
Легко проверить, что полученное решение является опорным. Найдём соответствующую ему стоимость перевозок:
.
Метод аппроксимации Фогеля. Данный метод из всех указанных позволяет построить решение, которое ближе к оптимальному. На каждой итерации по всем столбцам и по всем строкам находят разность между двумя записанными в них минимальными тарифами. Разности записывают в специально отведенных для этого строке и столбце в таблице условий задачи. Среди разностей выбирают максимальную. В строке (или столбце), которой данная максимальная разность соответствует, определяют минимальный тариф. Клетку, в которой он записан, заполняют количеством перевозимого груза на данной итерации. Если минимальный тариф одинаков для нескольких клеток данной строки (столбца), то для заполнения выбирают ту клетку, которая расположена в столбце (строке), соответствующем наибольшей разности между двумя минимальными тарифами, находящимися в данном столбце(строке).
Метод потенциалов
Из-за громоздкости симплексных таблиц, содержащих неизвестных, и большого объёма вычислительных работ для получения оптимального плана используются более простые методы. Самым распространённым является метод потенциалов.
Теорема 3.2. (признак оптимальности опорного решения). Если план опорный транспортной задачи является оптимальным, то ему соответствует совокупность чисел и чисел , удовлетворяющих условиям
(3.4)
для занятых клеток;
(3.5)
для свободных клеток.
Числа называются потенциалами поставщиков, а – потенциалами потребителей.
Замечание. Если хотя бы одна незанятая клетка не удовлетворяет условию (3.5), то опорный план не является оптимальным, и его можно улучшить, вводя в базис вектор, соответствующий клетке, для которой нарушается условие оптимальности (т.е. в эту клетку надо переместить некоторое количество груза).
Рассмотрим алгоритм решения транспортных задач методом потенциалов:
1. Проверить выполнение необходимого и достаточного условия разрешимости задачи. Если задача имеет неправильный баланс, то вводится фиктивный поставщик или потребитель с недостающими запасами или запросами и нулевыми стоимостями перевозок.
2. Построить начальное опорное решение (методом минимальной стоимости или каким-либо другим методом), проверить правильность его построения по количеству занятых клеток (их должно быть m + n – 1) и убедиться в линейной независимости векторов условий.
3. Построить систему потенциалов, соответствующих опорному решению. Для этого решают систему уравнений
при xij > 0,
которая имеет бесконечное множество решений. Для нахождения частного решения системы одному из потенциалов (обычно тому, которому соответствует большее число занятых клеток) задают произвольно некоторое значение (чаще нуль). Остальные потенциалы однозначно определяются по формулам
при xij > 0,
если известен потенциал vi, и
при xij > 0,
если известен потенциал uj.
4. Проверить выполнение условия оптимальности для свободных клеток таблицы. Для этого вычисляют оценки для всех свободных клеток по формулам
и те из них, которые больше нуля, записывают в левые нижние углы клеток. Если для всех свободных клеток 0, то вычисляют значение целевой функции и решение задачи заканчивается, так как полученное решение является оптимальным. Если же имеется хотя бы одна клетка с положительной оценкой, опорное решение не является оптимальным.
5. Перейти к новому опорному решению, на котором значение целевой функции будет меньше. Для этого находят клетку таблицы задачи, которой соответствует наибольшая положительная оценка
.
Строят цикл, включающий в свой состав данную клетку и часть клеток, занятых опорным решением. В клетках цикла расставляют поочередно знаки «+» и «–», начиная с «+» в клетке с наибольшей положительной оценкой. Осуществляют сдвиг (перераспределение груза) по циклу на величину . Клетка со знаком «–», в которой достигается , остается пустой. Если минимум достигается в нескольких клетках, то одна из них остается пустой, а в остальных проставляют базисные нули, чтобы число занятых клеток оставалось равным m + n – 1. Далее перейти к пункту 3 данного алгоритма.
Проиллюстрируем применение указанного алгоритма на опорном плане, полученном в предыдущем примере методом наименьшей стоимости.
Шаг 1. Составим систему соотношений:
соответствующих условиям (3.4). Система всегда содержит уравнений с неизвестными. Уравнений на одно меньше, чем неизвестных, поэтому система является неопределённой и одному неизвестному придают произвольное значение (обычно нулевое). После этого остальные потенциалы определяются однозначно. В нашем примере 4+5-1=8 уравнений с 9 неизвестными. Составленный нами первоначальный опорный план содержал нулевую переменную. В этом случае обычно определяют строку, содержащую наибольшее число занятых клеток. В нашем случае это . Положим . Из последних трёх соотношений системы определяем , и . Из остальных уравнений получаем , , , , (табл. 3.5).
Таблица 3.5
Поставщики | Потребители | Запасы | |||||||||
Θ | |||||||||||
Θ | |||||||||||
Θ | |||||||||||
Запросы |
Шаг 2. Проверим условие оптимальности для незанятых клеток. Если для всех таких клеток, то план является оптимальным, если же для некоторых , то план – неоптимальный. Тогда для каждой клетки, в которой не выполняется условие оптимальности, находим величину разности и записываем её значение в левый нижний угол этой клетки. Получилось 3 таких клетки: , , .
Шаг 3. Теперь выбираем клетку, которую необходимо сделать базисной. Загрузке подлежит, в первую очередь, клетка, которой соответствует . В нашем случае это . Необходимо определить, сколько груза должно быть в неё распределено.
Шаг 4. Здесь необходимо выбрать клетку, которая выводится из базиса и определить величину перераспределения груза. Отмечаем знаком «+» незанятую клетку, которую надо загрузить. Вместе с ней в таблице стало занятых клеток, следовательно, появится цикл (причём единственный), все вершины которого, за исключением клетки, находятся в занятых клетках. Начинаем движение по этому циклу от клетки, отмеченной знаком, расставляя поочерёдно во всех вершинах, в которых он меняет направление, знаки «–» и «+». Затем находим в клетках, отмеченных знаком «–». Эта величина определяет, сколько единиц груза можно перераспределить по найденному циклу. Значение записываем в незанятую клетку, отмеченную знаком «+». Двигаясь по циклу, вычитаем из объёмов перевозок в клетках, отмеченных знаком «–» и прибавляем к в клетках, отмеченных знаком «+».
Итак, строим цикл, в клетку заносим 50единиц и перераспределяем груз (табл. 3.6). Исключаем из базисных переменных и вводим .
В результате перераспределения получили новый опорный невырожденный план, который снова подлежит проверке на оптимальность. Строим систему потенциалов:
Полагая , получим: , , , , , , , .
Таблица 3.6
Поставщики | Потребители | Запасы | |||||||||
Запросы |
Проверяя условие оптимальности, получаем, что оно выполняется во всех клетках. Следовательно, построенный план является оптимальным. Стоимость перевозки по нему .
Замечание. В настоящее время решение задач ЛП успешно реализуется на ПК в Excel, а именно, с помощью надстройки Excel − Поиск решения.
Контрольные вопросы и задания
1. Дайте определение задач математического программирования.
2. Дайте определение задачи линейного программирования.
3. Сформулируйте математическую модель задачи использования ресурсов.
4. Используя графический метод решения задач линейного программирования определите максимальное или минимальное значения линейной целевой функции в области заданной неравенствами:
а) b)
5. Сформулируйте каноническую форму записи задачи линейного программирования.
6. Дайте определение многогранникав .
7. Какая точка множества называется угловой точкой?
8. Сформулируйте основную теорему ЛП.
9. Какое решение задачи ЛП называют опорным?. Укажите его связь с угловой точкой.
10. Дайте алгоритм решения задачи ЛП симплекс методом.
11. Решите задачу ЛП симплексным методом: .
12. Какими свойствами обладает двойственная задача ЛП?
13. Укажите правила составления двойственных задач.
14. Сформулируйте математическую модель транспортной задачи.
15. В чем заключается метод северо-западного угла построения первоначального опорного плана?
16. В чем заключается метод минимальной стоимости построения первоначального опорного плана?
17. В чем заключается метод аппроксимации Фогеляпостроения первоначального опорного плана?
18. Сформулируйте признак оптимальности опорного решениятранспортной задачи.
19. Построить первоначальный опорный план транспортной задачи методами: северо-западного угла, минимальной стоимости. В каждом случае вычислить общую стоимость перевозок грузов.
bj aj | |||||