Теорема 1 Необходимое и достаточное условие разрешимости транспортной задачи
Для того, чтобы транспортная задача линейного программирования имела решение, необходимо и достаточно, чтобы суммарные запасы поставщиков равнялись суммарным запросам потребителей, т.е. задача должна быть с правильным балансом.
Теорема 2 Свойство системы ограничений транспортной задачи
Ранг системы векторов-условий транспортной задачи равен N=m+n-1 (m – поставщики, n-потребители)
Опорное решение транспортной задачи
Опорным решением транспортной задачи называется любое допустимое решение, для которого векторы условий, соответствующие положительным координатам, линейно независимы.
Ввиду того, что ранг системы векторов-условий транспортной задачи равен m+n – 1, опорное решение не может иметь отличных от нуля координат более m+n-1. Число отличных от нуля координат невырожденного опорного решения равняется m+n-1, а для вырожденного опорного решения меньше m+n-1
ЦиклЦиклом называется такая последовательность клеток таблицы транспортной задачи (i1, j1),(i1, j2),(i2, j2),...,(ik, j1), в которой две и только две соседние клетки распложены в одной строке или столбце, причем первая и последняя клетки также находятся в одной строке или столбце.
Цикл изображают в виде таблицы транспортной задачи в виде замкнутой ломаной линии. В цикле любая клетка является угловой, в которой происходит поворот звена ломаной линии на 90 градусов. Простейшие циклы изображены на рисунке 38.1
Допустимое решение транспортной задачи X=(xij) является опорным тогда и только тогда, когда из занятых клеток таблицы нельзя образовать ни одного цикла.
Метод вычеркивания
Метод вычеркивания позволяет проверить, является ли данное решение транспортной задачи опорным.
Пусть допустимое решение транспортной задачи, которое имеет m+n-1 отличных от нуля координат, записано в таблицу. Чтобы данное решение было опорным, векторы-условий, соответствующие положительным координатам, а также базисным нулям, должны быть линейно независимыми. Для этого занятые решением клетки таблицы должны быть расположены так, чтобы нельзя было из них образовать цикл.
Строка или столбец таблицы с одной занятой клеткой не может входить в какой-либо цикл, так как цикл имеет две и только две клетки в каждой строке или столбце. Следовательно, чтобы вычеркнуть сначало либо все строки таблицы, содержащие по одной занятой клетке, либо все столбцы, содержащие по одной занятой клетке, далее вернуться к столбцам (строкам) и продолжать вычеркивание.
Если в результате вычеркивания все строки истолбцы будут вычеркнуты, значит, из занятых клеток таблицы нельзя выделить часть, образующую цикл, и система соответствующих векторов-условий является линейно независимой, а решение является опорным.
Если же после вычеркивания останется часть клеток, то эти клетки образуют цикл, система соответствующих векторов-условий является линейно зависимой, а решение не является опорным.
Примеры "вычеркнутого" (опорного) и "не вычеркнутого" (не опорного решений):
Логика вычеркивания:
- Вычеркнуть все столбцы, в которых всего одна занятая клетка (5 0 0), (0 9 0)
- Вычеркнуть все строки, в которых всего одна занятая клетка (0 15), (2 0)
- Повторить цикл (7) (1)
Методы построения начального опорного решения
Метод северо-западного угла
Существует ряд методов построения начального опорного решения, наиболее простым из которых является метод северо-западного угла.
В данном методе запасы очередного по номеру поставщика используются для обеспечения запросов очередных по номеру потребителей до тех пор, пока не будут исчерпаны полностью, после чего используются запасы следующего по номеру поставщика.
Заполнение таблицы транспортной задачи начинается с левого верхнего угла, поэтому и называется метод северо-западного угла.
Метод состоит из ряда однотипных шагов, на каждом из которых, исходя из запасов очередного поставщика и запросов очередного потребителя, заполняется только одна клетка и соответственно исключается из рассмотрения один поставщик или один потребитель.
Пример 1Составить опорное решение, используя метод северо-западного угла.
Решение:
1. Распределяем запасы 1-го поставщика.
Если запасы первого поставщика больше запросов первого потребителя, то записываем в клетку (1,1) сумму запроса первого потребителя и переходим ко второму потребителю. Если же запасы первого поставщика меньше запросов первого потребителя, то записываем в клетку (1,1) сумму запасов первого поставщика, исключаем из рассмотрения первого поставщика и переходим ко второму поставщику.
Пример: так как его запасы a1 =100 меньше запросов первого потребителя b1 =100, то в клетку (1,1) записываем перевозку x11=100 и исключаем из рассмотрения поставщика.
Определяем оставшиеся неудовлетворенными запросы 1-го потребителя b1= 150-100=50.
150 | 200 | 100 | 100 | ||
100 | 100 | 100было-100надо=0осталось | |||
250 | |||||
200 | |||||
150надо-100было=50осталось |
2. Распределяем запасы 2-го поставщика.
Так как его запасы a2 = 250 больше оставшихся неудовлетворенными запросов 1-го потребителя b1 =50, то в клетку (2,1) записываем перевозку x21 =50 и исключаем из рассмотрения 1-го потребителя.
Определяем оставшиеся запасы 2-го поставщика a2 = a2 – b1 = 250-50=200. Так как оставшиеся запасы 2-го поставщика равны запросам 2-го потребителя, то в клетку (2,2) записываем x22=200 и исключаем по своему усмотрению либо 2-го поставщика, либо 2-го потребителя. В нашем примере мы исключили 2-го поставщика.
Вычисляем оставшиеся неудовлетворенными запросы второго потребителя b2=b2-a2=200-200=0.
150 | 200 | 100 | 100 | ||
100 | 100 | ||||
250 | 50 |
200 |
250-50=200 200-200=0 | ||
200 | |||||
150-100-50=0 |
3. Распределяем запасы 3-го поставщика.
Важно! В предыдущем шаге у нас был выбор исключать поставщика или потребителя. Так как мы исключили поставщика, то запросы 2-го потребителя все же остались (хоть и равны нулю).
Мы должны записать оставшиеся запросы равные нулю в клетку (3,2)
Это связано с тем, что если в очередную клетку таблицы (i,j) требуется поставить перевозку, а поставщик с номером i или потребитель с номером j имеет нулевые запасы или запросы, то ставится в клетку перевозка, равная нулю (базисный нуль), и после этого исключается из рассмотрения либо соответствующий поставщик, либо потребитель.
Таким образом, в таблицу заносятся только базисные нули, остальные клетки с нулевыми перевозками остаются пустыми.
Во избежании ошибок после построения начального опорного решения необходимо проверить, что число занятых клеток равно m+n-1 (базисный ноль при этом тоже считается занятой клеткой), и векторы-условий, соответствующие этим клеткам, линейно независимые.
Так как в предыдущем шаге мы исключили из рассмотрения второго поставщика, то в клетку (3,2) записываем x32=0 и исключаем второго потребителя.
Запасы 3-го поставщика не изменились. В клекту (3,3) записываем x33=100 и исключаем третьего потребителя. В клетку (3,4) записываем x34=100. Ввиду того, что наша задача с правильным балансом, запасы всех поставащиков исчерпаны и запросы всех потребителей удовлетворены полностью и одновременно.
Опорное решение | ||||
150 | 200 | 100 | 100 | |
100 | 100 | |||
250 | 50 | 200 | ||
200 | 0 | 100 | 100 |
4. Проверяем правильность построения опорного решения.
Число занятых клеток должно быть равно N=m(поставщики)+m(потребители) – 1=3+4 – 1=6.
Применяя метод вычеркивания, убеждаемся, что найденное решение является "вычеркиваемым" (звездочкой отмечен базисный нуль).
Следовательно, векторы-условий, соответствующие занятым клеткам, линейно независимы и построенное решение действительно является опорным.
Метод минимальной стоимости
Метод минимальной стоимости прост и позволяет построить опорное решение, достаточно близкое к оптимальному, так как использует матрицу стоимостей транспортной задачи C=(cij).
Как и метод северо-западного угла, он состоит из ряда однотипных шагов, на каждом из которых заполняется только одна клетка таблицы, соответствующая минимальной стоимости:
и исключается из рассмотрения только одна строка (поставщик) или один столбец (потребитель). Очередную клетку, соответствующую , заполняют по тем же правилам, что и в методе северо-западного угла. Поставщик исключается из рассмотрения, если его запасы груза использованы полностью. Потребитель исключается из рассмотрения, если его запросы удовлетворены полностью. На каждом шаге исключается либо один поставщик, либо один потребитель. При этом если поставщик еще не исключен, но его запасы равны нулю, то на том шаге, когда от данного поставщика требуется поставить груз, в соответствующую клетку таблицы заносится базисный нуль и лишь затем поставщик исключается из рассмотрения. Аналогично с потребителем.
Используя метод минимальной стоимости построить начальное опорное решение транспортной задачи.
Решение:
1. Запишем отдельно матрицу стоимостей для того, чтобы было удобнее выбирать минимальные стоимости.
2. Среди элементов матрицы стоимостей выбираем наименьшую стоимость C11=1, отмечаем ее кружочком. Данная стоимость имеет место при перевозке груза от 1-го поставщика 1-му потребителю. В соответствующую клетку записываем максимально возможный объем перевозки:
x11 = min {a1; b1} = min {60; 40} =40 т.е. минимум между запасами 1-го поставщика и запросами 1-го потребителя.
2.1. Запасы 1-го поставщика уменьшаем на 40.
2.2. Исключаем из рассмотрения 1-го потребителя, так как его запросы полностью удовлетворены. В матрице C вычеркиваем 1-ый столбец.
3. В оставшейся части матрицы C минимальной стоимостью является стоимость C14=2. Максимально возможная перевозка, которую можно осуществить от 1-го поставщика 4-му потребителю равна x14 = min {a1'; b4} = min {20; 60} = 20, где a1 со штрихом это оставшиеся запасы первого поставщика.
3.1. Запасы 1-го поставщика исчерпаны, поэтому исключаем его из рассмотрения.
3.2. Запросы 4-го потребителя уменьшаем на 20.
4. В оставшейся части матрицы С минимальная стоимость C24=C32=3. Заполняем одну из двух клеток таблицы (2,4) или (3,2). Пусть в клетку запишем x24 = min {a2; b4} = min {80; 40} =40 .
4.1. Запросы 4-го потребителя удовлетворены. Исключаем его из рассмотрения вычеркивая 4-й столбец в матрице C.
4.2. Уменьшаем запасы 2-го поставщика 80-40=40.
5. В оставшейся части матрицы C минимальная стоимость C32=3. Запишем в клетку (3,2) таблицы перевозку x32 = min {a3; b2} = min {100; 60} =60.
5.1. Исключим из рассмотрения 2-го потребителя. Из матрицы C исключаем 2-ой столбец.
5.2. Уменьшим запасы 3-го поставщика 100-60=40
6. В оставшейся части матрицы C минимальная стоимость C33=6. Запишем в клетку (3,3) таблицы перевозку x33 = min {a3'; b3} = min {40; 80} =40
6.1. Исключим из рассмотрения 3-го поставщика, а из матрицы C 3-ю строку.
6.2. Определяем оставшиеся запросы 3-го потребителя 80-40=40.
7. В матрице C остался единственный элемент C23=8. Записываем в клетку таблицы (2,3) перевозку X23=40.
8. Проверяем правильность построения опорного решения.
Число занятых клеток таблицы равно N=m+n – 1=3+4 -1.
Методом вычеркивания проверяем линейную независимость векторов-условий, соответствующих положительным координатам решения. Порядок вычеркивания показан на матрице X:
Вывод: Решение методом минимальной стоимости (таблица 38.3) является "вычеркиваемым" и, следовательно опорным.