Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Экономико-математические методы и модели. Учебное пособие
.pdf
C y1
y2
x3
L
4
181
2
1
4
1
4
1
x1
4
19
2
1
4
1
4
3
x2
2
81
0
2
1
2
3
y3
2
1
0
2
1
2
3
Во втором случае получаем
.0
2
3
2
1
2
1
~
;41
2
3
2
1
2
81
32332
xyyxy
C y1
y2
x3
L
4
181
2
1
4
1
4
1
x1
4
19
2
1
4
1
4
3
x2
2
81
0
2
1
2
3
3
~
y
2
1
0
2
1
2
3
Далее решаем таким же образом две полученные задачи.
1.6. Транспортная задача
1.6.1. Постановка транспортной задачи
Транспортная задачей называется следующая задача линейного программирования: имеются пункты отправления груза A1, A2, . . ., Am и пункты назначения груза B1, B2, ..., Bn. Запасы груза на пункте отправления A
единиц, а заявка пункта назначения Bj равна b
единицам. Будем полагать, что
j
составляют a
i
31
i

сумма всех запасов равна сумме всех заявок. Стоимость перевозки единицы
....
...
,...
,...
21
222221
111211
mmnmm
n
n
axxx
axxx
axxx
....
...
,...
,...
21
222212
112111
nmnnn
m
m
bxxx
bxxx
bxxx
B1
B2
...
Bn
Всего
A1
c11
c12
...
c1n
a1
A2
c21
c22
...
c2n
a2
...
...
...
...
...
...
Am
cm1
cm2
...
cmn
am
Всего
b1
b2
...
bn
a
груза из пункта отправления Ai в пункт назначения Bj составляет c
единиц.
ij
Требуется найти план перевозок, при котором общая стоимость всех перевозок
будет минимальной. Эту задачу можно записать в следующем виде.
L = c11x
+ c12x
11
+ . . . + cmnxmn min;
12
x11 0, x
0, ... , xmn 0.
12
Первая система выражает ограничения на количества запасов груза на пунктах отправления, а вторая – ограничения на количества заявок пунктов назначения. Рассмотрим метод потенциалов решения этой задачи.
Составим следующую таблицу.
1.6.2. Нахождение опорного плана методом «северо-западного» угла
Опорным планом транспортной задачи называется любой план перевозок,
удовлетворяющий всем ограничениям. Метод “северо-западного” угла состоит
в заполнении таблицы плана перевозок от левого верхнего угла к правому нижнему. Полагаем x
– минимальным из чисел a1 и b1. Если b1 = a1, то переходим
11
32

к определению переменной x21, в противоположном случае – к x12. Для опреде-
i
a
~
j
b
~
.0~
i
a
ления значения x21 выберем минимальное из чисел a2 и b1 – x11. Аналогично, для
определения значения x12 выберем минимальное из чисел b2 и a1 – x11.
Передвигаясь таким образом по таблице, придём в правый нижний угол.
Если на каждом шаге минимальное число определялось однозначно, заполненными окажутся m + n – 1 клеток таблицы. В этом случае мы получаем невырожденный план. Если же при выборе минимальных чисел некоторые числа оказались равными, непустых клеток будет меньше. В этом случае в таблицу можно внедрить “малые положительные числа” и решать задачу нижеописанным
способом. То же самое можно сделать, если такая ситуация возникнет на какомлибо шаге.
1.6.3. Вычисление псевдоплатежей и псевдостоимостей
Заполненные клетки таблицы мы будем называть базисными, а пустые –
свободными. Введём для всех пунктов отправления и назначения псевдоплатежи, которые могут быть и отрицательными. Понятия псевдоплатежей и псевдостоимостей будут играть для нас вспомогательную роль.
Обозначим
– псевдоплатежи пункта отправления Ai и
– псевдоплате-
жи пункта назначения Bj. Будем выбирать псевдоплатежи так, чтобы для всех
базисных (непустых) клеток таблицы их сумма равнялась стоимости соответствующей перевозки единицы груза. Мы получаем систему линейных уравнений, в которой неизвестных на одну меньше, чем уравнений. Следовательно,
одну неизвестную мы можем выбрать произвольно, например, полагая
В
этой системе можно последовательно найти все неизвестные. После нахождения псевдоплатежей находим псевдостоимости для свободных (пустых) клеток
таблицы, складывая соответствующие псевдоплатежи. Для базисных клеток
псевдостоимости равны стоимостям соответствующих перевозок.
33

1.6.4. Проверка оптимальности плана
Проверка оптимальности плана состоит в сравнении полученных псевдостоимостей со стоимостями. Если все псевдостоимости для свободных клеток
не превосходят стоимостей, оптимальный план найден, и общую стоимость перевозок понизить нельзя. Если же есть свободная клетка для которой псевдостоимость больше стоимости, она выбирается в качестве разрешающей. В случае нескольких таких клеток разрешающей можно взять любую из них. Ещё раз
отметим, что для базисных клеток псевдостоимости совпадают со стоимостями.
1.6.5. Нахождение цикла и пересчёт таблицы
Возьмём разрешающую клетку таблицы. Для неё можно найти замкнутую
ломаную линию, отрезки которой горизонтальны или вертикальны, с вершинами в клетках таблицы. Все вершины этой ломаной, кроме находящейся в разрешающей клетке, должны быть в базисных клетках таблицы. Заметим, что такая ломаная всегда существует и является единственной, и будем называть её
циклом пересчёта. Далее можно расставить в вершины цикла пересчёта знаки
«+» и «–» таким образом: в разрешающую клетку поставить знак «+» и далее
чередовать знаки, двигаясь по вершинам цикла. В клетки со знаком «+» будут
добавлены единицы груза, а в клетках со знаком «–» количество перевозимого
груза будет уменьшено. Количество груза, перевозимого по циклу, определяется как минимальное из чисел в клетках со знаком «–». После этого совершаем
пересчёт таблицы, добавляя в клетки со знаком «+» найденное число, а из клеток со знаком «–» вычитая его, остальные клетки остаются при этом неизменными. В результате получаем новую таблицу, для которой находим псевдоплатежи и повторяем описанные выше процедуры.
34

1.6.6. Пример
B1
B2
B3
B4 Всего
A1
4
2
4
5
27
A2
4
2
1
2
22
A3
3
2
5
2
33
Всего
19
26
29
8
82
B1
B2
B3
B4 Всего
A1
19
4
8 2
4
5
27
A2
4
18
2
4 1
2
22
A3
3
2
25
5
8 2
33
Всего
19
26
29
8
82
,0
~
1
a
Дана транспортная задача в следующей формулировке: имеются пункты отправления груза A1, A2, A3 и пункты назначения груза B1, B2, B3, B4. Стоимости
перевозки единицы груза из пункта отправления Ai в пункт назначения Bj занесём в таблицу, в которой также укажем количество груза на каждом пункте отправления и заявку каждого пункта назначения.
Найдём опорный план методом «северо-западного» угла. Записываем минимальное из чисел 27 и 19 – число 19 в первую строку и первый столбец.
Первый столбец теперь заполнен, и мы переходим ко второму. В первую строку
осталось записать 8 единиц груза, а во второй столбец – 26. Выбираем минимальное из них – 8 и записываем его в первую строку и второй столбец. Первая
строка заполнена. Таким же образом находим и остальные базисные клетки
таблицы.
Вычислим теперь псевдоплатежи. Полагая
получаем
35

404
~
~
1111
acb
и
.202
~
~
1122
acb
,022
~
~
2222
bca
,101
~
~
2233
acb
,415
~
~
3333
bca
.242
~
~
3344
acb
,440
~
~~
1111
bac
,220
~
~~
2112
bac
,110
~
~~
3113
bac
,220
~
~~
4114
bac
,440
~
~~
1221
bac
,220
~
~~
2222
bac
,110
~
~~
3223
bac
,220
~
~~
4224
bac
,844
~
~~
1331
bac
,624
~
~~
2332
bac
,514
~
~~
3333
bac
.224
~
~~
4334
bac
B1
B2
B3
B4
a
~
A1
4
19
4
2 8 2
1 4
-2 5
0
A2
4 4
2
18
2
1 4 1
-2 2
0
A3
8 3
6 2
5
25
5
2 8 2
4
b
~
4
2
1
–2
B1
B2
B3
B4
a
~
A1
4
19
4
2 8 2
1 4
-2 5
0
A2
4 4
2
18
2
1 4 1
-2 2
0
A3
8 3
6 2
5
25
5
2 8 2
4
b
~
4
2
1
–2
Далее найдём
Сложив псевдоплатежи, получим псевдостоимости.
Занесём их в следующую таблицу.
Подчёркнутые псевдостоимости больше стоимостей, поэтому оптимальный
план не достигнут. Построим цикл пересчёта для клетки с псевдостоимостью 6.
Надо выйти из этой клетки и, пройдя по некоторым непустым клеткам, вернуться назад. Получаем следующий цикл пересчёта.
36

Находим число единиц груза, которое можно перевезти по этому циклу. В
B1
B2
B3
B4
a
~
A1
19
4
8 2
4
5
A2
4
2
22
1
2
A3
3
18
2
7 5
8 2
b
~
B1
B2
B3
B4
a
~
A1
4
19
4
2 8 2
5 4
2 5
0
A2
0 4
-2 2
1
22
1
-2 2
–4
A3
4 3
2
18
2
5 7 5
2 8 2
0
b
~
4
2
5
2
B1
B2
B3
B4
a
~
A1
1 4
26
2
4
5
A2
4
2
22
1
2
A3
18
3
2
7 5
8 2
b
~
клетках с числами 0 и 4 количество единиц груза будет увеличено, а в клетках с
числами 18 и 25 – уменьшено. Количество груза перевозимого по циклу определяется как минимальное из чисел 18 и 25 равно 18. Сделаем пересчёт таблицы. Заметим, что при этом и следующих пересчётах число непустых клеток (как
и суммы единиц груза по строкам и столбцам) в таблице не меняется.
Для полученной таблицы определяем псевдоплатежи и псевдостоимости.
Подчёркнутые псевдостоимости больше стоимостей, поэтому оптимальный
план не найден. Строим цикл пересчёта. После вычислений получаем таблицу.
37

Проводя аналогичные вычисления, получим такие таблицы.
B1
B2
B3
B4
a
~
A1
4 1 4
2
26
2
6 4
3 5
0
A2
-1 4
-3 2
1
22
1
-2 2
–5
A3
3
18
3
1 2
5 7 5
2 8 2
–1
b
~
4
2
6
3
B1
B2
B3
B4
a
~
A1
2 4
2
26
2
4 1 4
1 5
0
A2
-1 4
-1 2
1
22
1
-2 2
–3
A3
3
19
3
3 2
5 6 5
2 8 2
1
b
~
2
2
4
1
B1
B2
B3
B4
a
~
A1
3 4
2
20
2
4 7 4
2 5
0
A2
0 4
-1 2
1
22
1
-1 2
–3
A3
3
19
3
2 6 2
4 5
2 8 2
0
b
~
3
2
4
2
.175282631912247220
min
L
Все псевдостоимости в последней таблице не превосходят стоимостей, поэтому оптимальный план найден. Находим значение целевой функции, умножая количество груза в непустых клетках таблицы на стоимости перевозки единицы груза и суммируя по всей таблице.
38

1.7. Вырожденные случаи метода потенциалов
B1
B2
B3
B4 Всего
A1
5
10
5
20
A2
5
20
25
A3
15
15
Всего
20
25
10
5
60
B1
B2
B3
B4 Всего
A1
10
5
15
A2
15
5
20
A3
5
10 15
Всего
15
10
10
15 50
Вырожденный случай транспортной задачи возникает, когда минимальное
значение при нахождении опорного плана или пересчёте цикла достигается в
нескольких значениях. Преодолеваются вырожденные случаи двумя способами:
1) можно попытаться выбрать другой опорный план или другой цикл;
2) ввести в некоторые клетки , считая по ходу решения задачи > 0 и до-
статочно малыми, а затем положить = 0.
Рассмотрим примеры решения транспортной задачи в случае вырожденных
планов на примерах. Стоимости перевозок единиц груза здесь не имеют значения, поэтому в таблицах они не указаны.
Пример 1.
Пример 2.
В отличие от первых двух примеров, в следующем примере необходимо
вводить фиктивные величины уже для опорного плана.
39

Пример 3.
B1
B2
B3 Всего
A1
20
2
4
1
20+
A2
2
20–
3
5
20
A3
3
2
20– 4 20–
Всего
20
20
20 60
B1
B2
B3
a
~
A1
2
20
2
3 4
6 1
0
A2
1 2
3
20 –
3
5
2
5
–1
A3
0 3
2 2
4
20 – 2
4
–2
b
2
4
6
B1
B2
B3
a
~
A1
2
20
2
-1
4
1
1
0
A2
6 2
3
20
3
5 5
4
A3
5 3
2 2
4
20 – 2
4
3
b
~
2
–1
1
Поскольку цикл получается вырожденным, введём в него еще фиктивную
величину. Для этого добавим в клетку на пересечении второй строки и третьего столбца и вычтем в клетке на пересечении третьей строки и третьего
столбца. После этой операции цикл становится невырожденным и его можно
использовать для пересчёта таблицы.
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
