|
Закрытая транспортная задачаDate: 2015-10-07; view: 567. Рассмотрим задачу закрытого типа. Обозначим количество груза, перевозимого от i-го поставщика к j-му потребителю, через Составим математическую модель задачи.
Первые m уравнений системы (1) соответствуют ограничениям по запасам поставщиков, последние n — ограничениям потребителей; условие неотрицательности (2) следует из экономического смысла неизвестных ; уравнение (2) означает, что транспортная задача является закрытой. Целевая функция Математически транспортная задача (1)—(4) ставится следующим образом: среди множества планов системы линейных уравнений (1), (3) и неравенств (2) найти такой план Таким образом, транспортная задача является задачей линейного программирования и может быть решена симплекс-методом, алгоритм которого состоит из трех шагов: 1. Построение начального плана. 2. Проверка плана на оптимальность. Если план оптимален, то задача решена; в противном случае — переход к п.3. 3. Построение нового плана с меньшей (или равной) стоимостью перевозок. Специфические особенности системы ограничений транспортной задачи привели к разработке упрощенного метода решения на каждом шаге алгоритма.
Пример 1. Необходимо осуществить перевозки однородного груза от 4-х поставщиков 3-м потребителям, запасы и потребности которых, а также стоимости единичных перевозок заданы таблицей:
Требуется построить такой план перевозок, при котором суммарная стоимость будет наименьшей.
1. Построение начального плана. Прежде всего проверим, является ли задача закрытой.
Поскольку Решение будем строить непосредственно в транспортной таблице 7, которая имеет вид:
Таблица 7.
где ai — мощность поставщиков, bj — емкость потребителей, сij —стоимость единичной перевозки, а хij — количество перевозимого груза от Аi поставщика к Bj потребителю, i=1…m, j=1…n. Начальный план составим методом наименьшей стоимости. Из всей таблицы выбираем наименьшую стоимость единичной перевозки сij и в соответствующую ей клетку Из незаполненных клеток снова выбираем клетку с наименьшей стоимостью, и процесс распределения грузов повторяем, пока все запасы поставщиков не будут распределены, а потребности потребителей полностью удовлетворены. (Если клеток с одинаковой стоимостью несколько, в первую очередь заполняется клетка с наибольшей возможной поставкой.) В нашем примере наименьшую стоимость перевозки с42=1 имеет клетка (4;2). Потребность в грузе потребителя B2 составляет 9, а запас груза поставщика А4 11 единиц. Наибольшая из возможных поставок Далее заполняем клетку (4;1) с с41=2. Поставку х42 определим как наименьшее из чисел 12 и 2 (остаток груза А4), х42=2. Потребителю В1 необходимо завезти еще 10 единиц груза, а возможности поставщика А4 будут исчерпаны полностью, в клетке (4;3) ставим прочерк. Из оставшихся клеток наименьшую стоимость имеет клетка (3;1) с с31=5. Запас груза А3 равен 12, потребность В1 10 единиц, следовательно х31=10. Потребности В1 удовлетворены полностью, в остальных клетках первого столбца ставим прочерки. Оставшиеся у А3 2 единицы поместим в (3;3), т. е. х33=2. Далее вносим в таблицу х23=8, х12=9. Таблица 8 представляет начальный план задачи Х1. (Полезно проверить, что сумма поставок по столбцам равна соответствующим мощностям потребителей, сумма поставок по строкам — емкостям поставщиков.)
Таблица 8. План Х1.
Заполненные клетки таблицы соответствуют базисным переменным, а пустые — свободным переменным из системы ограничений (1) (свободные переменные равны нулю). Поскольку система (1) содержит m+n–1 линейно независимых уравнений, то и число базисных переменных будет таким же, (m — число поставщиков, n — число потребителей). План с m+n–1 заполненными (базисными) клетками называется невырожденным,при меньшем числе заполненных клеток — вырожденным. Для того чтобы снять вырождение, необходимо в пустые клетки записать нулевые перевозки, дополнив число базисных переменных до количества m+n–1. Ноль можно поставить только в ту пустую клетку, которая не будет образовывать цикла вместе с уже заполненными клетками. Циклом называется замкнутая ломаная, вершины которой находятся в клетках, а звенья располагаются вдоль строк и столбцов; в каждой вершине встречаются два звена, одно из которых проходит вдоль строки, а другое — вдоль столбца. Начало и конец ломаной совпадают; она может самопересекаться. Проверим вырожденность плана нашей задачи: мы имеем 4-х поставщиков и 3-х потребителей, для невырожденного плана число заполненных клеток должно составлять 4+3–1=6. У нас 6 заполненных клеток, следовательно, план невырожденный. Подсчитаем суммарную стоимость перевозок плана Х1:
2. Проверка плана на оптимальность. При проверке плана на оптимальность воспользуемся методом потенциалов. Каждому поставщику
Количество неизвестных потенциалов составит m+n, а уравнений (1) всего m+n–1. Поэтому один из потенциалов задается произвольно, после чего остальные потенциалы из системы уравнений (5) определяются однозначно. Обычно полагают Для того, чтобы план транспортной задачи был оптимальным, необходимо и достаточно, чтобы для всех пустых (свободных) клеток выполнялось условие
Если ввести понятие оценки клетки:
то условие (6) оптимальности плана можно сформулировать как условие неотрицательности оценок всех пустых клеток:
Проверим оптимальность построенного нами начального плана. По заполненным клеткам определим потенциалы поставщиков Ui и потребителей Vj, которые будем вписывать справа и внизу транспортной таблицы соответственно. Положим U1 =0. Для заполненных клеток запишем условие (5) и найдем неизвестные потенциалы: (1;3): (2;3): U2 +10 = 12, U2 = 2; (3;3): U3 +10 = 8, U3 = –2; (3;1): –2 + V1= 5, V1 = 7; (4;1): U4 + 7= 2, U4 = –5; (4;2): –5+ V2 = 1, V2 =6. Вычислим оценки пустых клеток по формуле (7):
Поскольку среди оценок клеток есть отрицательные, согласно условию (8) построенный план 3. Улучшение плана. Если среди оценок свободных клеток построенного плана есть хотя бы одна отрицательная, план может быть улучшен. Среди пустых клеток с отрицательными оценками выбираем клетку с наименьшей величиной В результате получаем новый план перевозок. Он может оказаться вырожденным, поэтому нужно следить за тем, чтобы каждый новый план содержал ровно m+n–1 заполненных клеток. Для нашей задачи среди отрицательных оценок наименьшую оценку имеет клетка (1;2), для нее строим цикл пересчета. Из клетки (1;2) звено ломаной можно провести только вправо (слева нет заполненной клетки), затем вниз до клетки (3;3) (вершина ломаной не может быть в клетке (2;3), поскольку в этой строке больше нет заполненных клеток). Затем влево до клетки (3;1), далее (4;1), (4;2) и возвращаемся в (4;1). Расставляем чередующиеся знаки «+» и «–» в вершинах ломаной, начиная с вершины в пустой клетке (1;2) (табл. 9).
Таблица 9.
Вычислим Новый план Х2 должен содержать 6 заполненных клеток, в построенном нами плане их всего 5, т.е. план вырожденный. Так получилось потому, клетки (1;3) и (4;2) одновременно стали пустыми. Чтобы снять вырождение плана, надо в одну из этих клеток дать перевозку, равную нулю, тогда клетка станет базисной. Поставим 0, например, в клетку (1;3), эта нулевая поставка переводит свободную клетку в разряд базисных. План Х2 транспортной задачи представлен в табл.10. (В этой же таблице записаны потенциалы и изображен цикл пересчета, получаемые в дальнейшем).
Таблица 10. План Х2.
Изменение значения целевой функции
Исследуем план Х2 на оптимальность. Вычислим потенциалы Ui и Vj. Положим U1 =0 и для заполненных клеток (напомним, что клетка (1;3) является заполненной) запишем условие (8.5): (1;3): (1;2): 0+V2= 3, V2 = 3; (2;3): U2+10 = 12, U2= 2; (3;3): U3 +10= 8, U3= –2; (3;1): –2+ V1= 5, V1 = 7; (4;1): U4+7 = 2, V1 = –5; Сделаем оценки пустых клеток:
Для плана X2 условие оптимальности (8) не выполнено, т.к. клетка (2;1) получила отрицательную оценку, для нее строим цикл пересчета. Расставляем чередующиеся знаки «+» и «–» в вершинах цикла, начиная с вершины (2;1). Вычислим
Таблица 11. План X3.
Проверим план (1;3): (1;2): 0+V2= 3, V2 = 3; (2;3): U2+10 = 12, U2= 2; (2;1): 2+ V1= 7, V1 = 5; (3;3): U3 +10= 8, U3= –2; (4;1): U4+5 = 2, U4= –3. Вычислим оценки пустых клеток:
Поскольку все оценки неотрицательны, план X3 является оптимальным. X3=
|