Институт экономики, управления и права
А.В. Костромин.
Методические указания к выполнению контрольной работы по математике для экономического спецфака.
Казань-2000
Задание №1.
Предприятие выпускает два вида продукции А и В, для производства которых используется сырьё трех видов. На изготовление единицы изделия А требуется затратить сырья каждого вида а1, а2, а3 кг соответственно, а для единицы изделия В – b1 , b2 , b3 кг. Производство обеспеченно сырьем каждого вида в количестве Р1, Р2, Р3 КГ соответственно. Стоимость единицы изделия А составляет руб., а единицы изделия В - руб. Требуется составить план производства изделий А и В, обеспечивающий максимальную стоимость готовой продукции:
а) решите задачу симплекс – методом;
б) сформулируйте двойственную задачу и найдите её решение;
в) определите интервалы устойчивости двойственных оценок по отношению к изменению сырья каждого вида в отдельности;
г) оцените стоимость готовой продукции,
если запасы сырья каждого вида на
производстве изменились на величину
кг
соответственно.
д) решите исходную задачу геометрически.
a1 |
a2 |
a3 |
b1 |
b2 |
b3 |
P1 |
P2 |
P3 |
Δp1 |
Δp2 |
Δp3 |
|
|
2 |
3 |
1 |
1 |
4 |
3 |
400 |
900 |
600 |
200 |
100 |
-150 |
60 |
40 |
а) Решение задачи симплекс – методом.
Составим экономико-математическую модель задачи. Для этого обозначим x1 - количество изделий вида А, х2 – изделий вида В. Эта задача является задачей оптимального использования сырья, поэтому система ограничений имеет вид:
(1)
где справа стоит количество каждого вида сырья, которое не может быть превышено в процессе производства изделий. Эти ограничения являются нетривиальными.
Далее, количество изделий физически является неотрицательными (нельзя произвести отрицательное количество изделия), что дает нам тривиальные ограничения задачи:
x1
0 ; x2
0. (2)
Наконец, функция цели (или целевая функция) представляет собой общую стоимость произведенной продукции, и эта функция в поставленных ограничениях оптимизируется на максимум:
Z = 60 x1 + 40 x2 max (3)
Для решения задачи симплекс – методом приведем задачу (1)-(3) к каноническому виду, введя дополнительные балансовые переменные х3, х4, х5, которые означают остатки сырья соответственно 1-го, 2-го и 3-го типов. При этом неравенства (1) преобразуются в уравнения (другими словами, левые части неравенств сбалансированы с правыми частями):
(4)
По смыслу балансовые переменные здесь также неотрицательны, поэтому тривиальная система неравенств принимает вид:
xj
0, j =
. (5)
Введем балансовые переменные и в целевую функцию с коэффициентами, равными нулю:
Z =60 x1 + 40 x2 + 0 x3 + 0 x4 + 0 x5 max (6)
Задача в форме (4)-(6) имеет канонический вид. При этом систему (4) можно записать в векторной форме:
+
+
+
+
=
где
=
;
=
;
=
;
=
;
=
;
=
.
Здесь векторы , и имеют предпочтительный вид, т.е. являются единичными в одном из компонентов и нулевыми во всех остальных компонентах. Вектор называется столбцом свободных членов системы ограничений.
Для решения задачи (4)-(6) симплекс - методом необходимо иметь опорный план, т.е. допустимое базисное решение системы (4). Для этого все векторы надо разделить на две группы – базисные и свободные. Сначала выбираем базисные. Поскольку нетривиальных ограничений всего три, то и базисных векторов будет тоже три. В качестве базисных выбирают вектора, имеющие предпочтительный вид, т.е. в данном случае , и . Им соответствуют базисные переменные х3, х4, х5 системы (4). Остальные переменные (х1 и х2 ) будут свободными. При получении базисного решения все свободные переменные приравниваются к нулю. Подставив в (4) х1= х2=0, легко получаем остальные компоненты опорного плана:
х3 = 400; х4 = 900; х5 = 600.
В векторном виде этот опорный план выглядит так:
= ( 0 ; 0 ; 400 ; 900 ; 600 ).
Подставив компоненты в целевую функцию (6), получим значение целевой функции для этого плана:
Z ( )=0.
Теперь составим первоначальную симплексную таблицу:
Сб |
Б |
0 |
60 |
40 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
||||
|
|
400 |
2 |
1 |
1 |
0 |
0 |
|
|
0 |
|
900 |
3 |
4 |
0 |
1 |
0 |
|
|
0 |
|
600 |
1 |
3 |
0 |
0 |
1 |
|
|
zj - cj |
0 |
- 60 |
- 40 |
0 |
0 |
0 |
|
||
В верхней строке, над обозначениями
векторов, стоят коэффициенты целевой
функции при соответствующих переменных.
Нулевое значение над
говорит о том, что свободный член в
целевой функции отсутствует. Нижняя
строка таблицы, которая называется
индексной строкой, содержит
взятые с обратным знаком значения
коэффициентов из верхней строки.
Второй столбец таблицы состоит из обозначений базисных векторов. Порядок, в котором они записаны, не случаен. Каждый вектор поставлен в той строке, где в столбце коэффициентов этого вектора находится единица. Слева от базисных векторов, в первом столбце таблицы, поставлены соответствующие коэффициенты целевой функции (из верхней строки).
Последний столбец рассмотрим позже.
Теперь, когда начальная таблица построена, известен соответствующий опорный план и значения целевой функции, нужно сделать вывод о том, можно ли улучшить целевую функцию. Ответ на этот вопрос дает содержимое индексной строки: в случае отсутствия там отрицательных чисел делается вывод о том, что достигнутый опорный план является оптимальным и целевую функцию нельзя увеличить, т.е. сделать больше. В противном случае целевую функцию можно улучшить. Поскольку в данном случае в индексной строке есть отрицательные числа, план не является оптимальным, и его можно улучшить.
Переход к новому, лучшему опорному плану называется итерацией симплекс-метода. Она представляет собой преобразование однократного замещения, поскольку при этом происходит переход к новому базису: один из базисных векторов становится свободным, а в базис, наоборот, входит один из бывших свободных векторов.
Найдем эту пару векторов. Сначала
определим вектор, который войдет в
базис. Это должен быть один из свободных
векторов, т.е.
или
.
Выбираем тот вектор, которому в индексной
строке соответствует самое отрицательное
число (-60, обведено пунктиром). Значит,
вектор
становится базисным.
Теперь определим вектор, “покидающий”
базис. Это делается с помощью симплексных
отношений, обозначенных в последнем
столбце симплекс–таблицы. Как видно
из заголовка столбца, числителем
симплексного отношения является
свободный член ограничения, а знаменателем
– положительные коэффициенты
ведущего столбца, т.е. столбца
(вектора, который теперь войдет в базис).
Строка, в которой находится минимальное
симплексное отношение, называется
ведущей строкой. В той же строке
находится вектор
,
покидающий наш первоначальный базис.
Только при этом условии гарантируется
неотрицательность свободных членов
при пересчете таблицы. Отметим также,
что при
симплексные отношения являются не
допустимыми или не существуют; их не
следует рассматривать при определении
минимального отношения.
Элемент таблицы, находящийся на пересечении ведущего столбца и ведущей строки, называется ведущим элементом таблицы (он обозначен сплошным квадратом).
Теперь приступим к пересчету таблицы. Это делается в три этапа. Сначала ведущая строка делится на ведущий элемент:
Сб |
Б |
0 |
60 |
40 |
0 |
0 |
0 |
|
|
|
|
|
|
||
60 |
|
200 |
1 |
|
|
0 |
0 |
0 |
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
zj - cj |
|
|
|
|
|
|
|
Обратите внимание, что во втором столбце вместо уже стоит новый базисный вектор с коэффициентом 60 в столбце Сб.
Далее впишем в эту таблицу столбцы новых
базисных векторов. При этом, поскольку
и
остались в базисе, их столбцы остаются
без изменений, а столбец
становится точно таким же, каким до
этого был
:
Сб |
Б |
0 |
60 |
40 |
0 |
0 |
0 |
|
|
|
|
|
|
||
60 |
|
200 |
1 |
|
|
0 |
0 |
0 |
|
|
0 |
|
|
1 |
0 |
0 |
|
|
0 |
|
|
0 |
1 |
zj - cj |
|
0 |
|
|
0 |
0 |
|
Наконец, на третьем этапе определим значения в оставшихся девяти клетках таблицы. Их нужно пересчитать по правилу прямоугольника.
Чтобы сформулировать это правило, снова посмотрим на первоначальную симплекс-таблицу. Обратите внимание, что оставшиеся неизвестными элементы новой таблицы в первоначальной таблице соответствуют элементам, стоящим наискосок к ведущему элементу (поскольку ведущая строка и ведущий столбец уже построены).
Для любого элемента первоначальной таблицы можно определить прямоугольник
а*
В
А а
Здесь
-
ведущий элемент, а - искомый элемент,
А, В – элементы, находящиеся с ними на
пересечении строк и столбцов.
Новое значение элемента а получается из формулы:
Это и есть правило прямоугольника.
Например, для прямоугольника, обозначенного в первоначальной таблице, в новой таблице получаем значение:
0 -
= -
Все остальные значения пересчитываются аналогично. Получаем таблицу первой итерации симплекс-метода:
Сб |
Б |
0 |
60 |
40 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|||
0 |
|
200 |
1 |
|
|
0 |
0 |
|
|
|
300 |
0 |
|
- 1,5 |
1 |
0 |
|
0 |
|
400 |
0 |
|
- |
0 |
1 |
|
|
12000 |
0 |
- 10 |
30 |
0 |
0 |
|
|
Произошел переход к новому базису:
,
,
.
При этом переменные х2, х3
являются свободными, и в опорном
плане их значения равны нулю. Значения
остальных переменных получаем из нового
столбца свободных членов:
х1 = 200; х4 = 300; х5 = 400.
Запишем опорный план в векторной форме:
=
( 200 ; 0 ; 0 ; 300 ; 400 ).
Этому плану соответствует значение целевой функции, равное 12000 (проверьте подстановкой компонент в выражение (6)). В новой таблице это значение зафиксировано в индексной строке в столбце свободных членов.
Как видим, в индексной строке остался
один отрицательный элемент, поэтому
полученный план не является оптимальным.
Значение -10 находится в столбце
,
поэтому
войдет в новый базис. Минимальное
симплексное отношение достигается в
строке базисного вектора
,
который выходит из базиса.
Теперь пересчитываем таблицу первой итерации и получаем таблицу второй итерации:
Сб |
Б |
0 |
60 |
40 |
0 |
0 |
0 |
|
|
|
|
|
|
||
60 |
|
140 |
1 |
0 |
4/5 |
- 1/5 |
0 |
0 |
|
120 |
0 |
1 |
- 3/5 |
2/5 |
0 |
0 |
|
100 |
0 |
0 |
1 |
- 1 |
1 |
zj - cj |
13200 |
0 |
0 |
24 |
4 |
0 |
|
Аналогично определяем новый опорный план:
=
( 140 ; 120 ; 0 ; 0 ; 100 ).
Ему соответствует значение целевой функции, равное 13200. Поскольку в индексной строке уже нет отрицательных элементов, план является оптимальным:
;
=13200.
Итак, задача линейного программирования решена.
б) Двойственная задача и её решение.
Рассмотрим исходную задачу (1)-(3). При
переходе к двойственной задаче нужно
выполнить ряд правил. Во-первых, каждому
ограничению (1) исходной задачи
соответствует переменная двойственной
задачи. Таким образом, здесь будут три
двойственные переменные у1,
у2, у3. Во-вторых,
ограничения двойственной задачи
соответствуют столбцам системы (1);
неравенства типа
превращаются в неравенства типа
,
а свободными членами становятся
коэффициенты при соответствующих
переменных целевой функции (3). В-третьих,
целевая функция двойственной задачи
оптимизируются не на максимум, а на
минимум; коэффициентами становятся
свободные члены системы (1). Наконец,
двойственные переменные уi
, как и переменные задачи (1)-(3),
подчиняются тривиальным условиям
неотрицательности. С учетом этих
замечаний задача, двойственная задаче
(1)-(3), имеет вид:
(7)
,
i=1,2,3 (8)
F = 400 y1 + 900 y2 + 600 y3 max (9)
Эта задача тоже является задачей линейного программирования и также может быть решена симплекс-методом. Однако обе задачи, прямая и двойственная, тесно связаны между собой, и поэтому мы можем решить последнюю, если есть решение первой.
Оптимальное решение задачи (7)-(9) находится в индексной строке последней симплекс-таблицы и столбцах, соответствующих первоначальному базису. Отсюда находим:
=
( 24 ; 4 ; 0 ).
Таким образом,
=
24 > 0,
=
4 >0.
Это означает, что при производстве
данного вида изделий ресурсы первого
и второго типов дефицитны, т.е. используется
полностью, а третий ресурс используется
не полностью, поскольку
=
0.
в) Определение интервалов устойчивости двойственных оценок к изменению запасов сырья.
Согласно теории линейного программирования,
двойственные оценки различных видов
сырья (т.е. значения
)
будут устойчивы к изменению запасов
ресурсов, если выполняется условие:
D-1( В +
В
)
0 (10)
Здесь D-1- матрица,
состоящая из столбцов первоначального
базиса (т.е.
,
,
)
последней симплекс-таблицы:
Вектор В – вектор первоначальных запасов сырья, ∆В – вектор изменения запасов сырья. В данном случае:
;
.
Сначала определим интервалы устойчивости двойственных оценок по отношению к изменению сырья каждого вида.
Запишем неравенство (10):
0.
Матричное неравенство преобразуем в систему скалярных неравенств:
4/5 ( 400 + b1 ) – 1/5 ( 900 + b2) 0
-3/5 ( 400 + b1 ) + 2/5 ( 900 + b2) 0
( 400 + b1 ) – ( 900 + b2) + ( 600 + b3) 0
Рассмотрим устойчивость двойственных оценок к изменению запасов только первого вида сырья, т.е. b1 0, b2 = b3 = 0. Подставляем в систему, находим:
4/5
b1
-
= - 140, или
b1 -
175
- 3/5
b1
-
= - 120, или
b1
200
b1 900 – 400 - 600 = - 100, или b1 - 100
Объединяя эти неравенства, получаем:
- 100 b1 200.
Изменение запасов сырья только второго вида ( b1 = b3 = 0, b1 ≠ 0) дает нам следующее:
- 1/5 b2 - + = - 140, или b2 700
2/5
b2
-
= - 120, или
b2
- 300
- b2 900 – 400 - 600 = - 100, или b2 100
Отсюда получаем:
- 300 b2 100.
Аналогично исследуем устойчивость по третьему виду сырья ( b1= b2=0, b3 ≠ 0):
b3 900 – 400 – 600 = - 100
или
- 100 Δb3 < ∞.
Как и следовало ожидать, произвольное увеличение недефицитного товара третьего вида сырья не изменит его нулевой двойственной оценки.
г) Определение нового оптимального плана при измененных запасах сырья.
Проверим выполнение неравенства (10) для условий нашей задачи:
=
=
≥ 0.
Таким образом, при заданных изменениях запаса сырья двойственные оценки не изменятся. Это означает, что первый и второй виды сырья также будут использованы полностью, поэтому первое и второе неравенства системы (1) с измененными правыми частями можно записать как уравнения:
Получили систему двух уравнений с двумя неизвестными. Решая её, получаем новый оптимальный план:
=
280,
= 40.
При этом новая стоимость продукции получается подстановкой этих значений в целевую функцию (3):
Zнов.max = 60 ∙ 280 + 40 ∙ 40 = 18400.
д) Геометрическое решение исходной задачи.
Рассмотрим исходную задачу (1)-(3). Поскольку в ней только две переменные х1, х2, то её можно решить графически на координатной плоскости х1О х2. Тривиальные неравенства (2) означают, что решение следует искать в первом квадранте системы координат. Нетривиальные неравенства (1) представляют собой полуплоскости, пересечение которых в пределах первого квадранта образует так называемую область допустимых решений (ОДР) задачи линейного программирования. Оптимальный план представляет собой одну из угловых точек ОДР.
Построим, например, полуплоскость, отвечающую первому неравенству системы (1):
2x1 + 1x2 ≤ 400.
Эта полуплоскость делит координатную плоскость граничной линией, заданной уравнением:
2x1 + 1x2 = 400.
Линию, если она не проходит через начало координат, проще всего построить по двум точкам на осях координат. При х1= 0 получаем х2 = 400, а при х2 = 0 получаем х1 = 200. Соединяем эти две точки прямой линией, получаем две полуплоскости, выше и ниже этой прямой. Исходному неравенству отвечает только одна из этих полуплоскостей. Она определяется подстановкой в неравенство пробной точки, не лежащей на граничной прямой. Например, такой точкой может быть начало координат х1 = х2 = 0, т.е.
0 400.
Это неравенство является истинным, значит, начало координат принадлежит указанной полуплоскости. В противном случае пробная точка лежит в полуплоскости, не отвечающей исходному неравенству.
А
налогично
построим и две другие полуплоскости,
получим ОДР:
Теперь надо найти угловую точку ОДР, в
которой целевая функция достигает
максимума. Для этого построим вектор
роста целевой функции
=
( 60 ; 40 ), который состоит из коэффициентов
целевой функции при соответствующих
переменных. Вектор роста указывает
направление наискорейшего возрастания
целевой функции. Надо найти в ОДР точку,
наиболее удаленную от начала координат
в этом направлении. Для этого на
направление вектора
из всех угловых точек ОДР опускаем
перпендикуляры. Оптимальному плану
соответствует угловая точка, порождающая
самый дальний от начала координат
перпендикуляр. В нашем случае такая
угловая точка образована пересечением
границ 1-го и 2-го неравенств, поэтому
эти неравенства запишутся как уравнения:
Решение этой системы даёт оптимальный план первоначальной задачи:
= 140; = 120.
Заметим, что полученные числа совпадают с решением симплексного метода.
Задание № 2.
На трех базах А1, А2, А3 находится однородный груз в количестве 200, 200 и 100 т. Этот груз необходимо развезти пяти потребителям В1, В2, В3, В4, В5, потребности которых в данном грузе составляют 70, 80, 150, 110 и 90 т соответственно. Стоимость перевозок пропорциональна расстоянию и количеству перевозимого груза. Матрица тарифов имеет вид:
Спланировать перевозки так, чтобы их общая стоимость была минимальной.
Решение.
Составим транспортную таблицу по условиям задачи:
ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
Запасы аi |
А1
|
4
|
11
|
6
|
5
|
15
|
200
|
А2 |
8
|
7
|
9
|
13
|
10
|
200 |
А3 |
10
|
5
|
12
|
7
|
20
|
100 |
Потребнос- ти bj |
70 |
80 |
150 |
110 |
90 |
|
Строки таблицы соответствуют базам (пунктам отправления, ПО), а столбцы – заказчикам (пунктам назначения, ПН). Каждая клетка на пересечении некоторого столбца и какой-либо строки соответствует одному маршруту перевозок (например, клетка на пересечении А2 и В3 отвечает маршруту с базы А2 заказчику В3). Тарифы перевозок указаны в правом верхнем углу каждой клетки.
Решение транспортной задачи проводится в два этапа. На первом этапе находится первоначальный опорный план. На втором этапе на базе опорного плана методом потенциалов определяется оптимальный план.
На первом этапе рекомендуется подготовить первоначальный опорный план тремя разными методами: методом северо-западного угла, методом минимальной стоимости и методом двойного предпочтения. Затем из этих трех планов выбирается самый выгодный. Его и подвергают процедуре дальнейшей оптимизации методом потенциалов.
Рассмотрим метод северо-западного угла, или диагональный метод. В этом методе заполнение транспортной таблицы всегда начинается с клетки (А1 , В1), т.е. “северо-западного угла” таблицы. Далее, заполнение идет вокруг диагонали таблицы и всегда заканчивается в правом нижнем углу (клетка ( А3 , В5 )). В каждой клетке объем перевозки определяется как наименьшее значение из двух чисел: остатка запаса на базе и остатка заявки потребителя. Отсюда:
х11 = min { a1 , b1 } = { 200 ; 70 } = 70.
Таким образом, заявка первого потребителя выполняется в полном объеме, поскольку на базе имелся больший запас товара. Поэтому остальные клетки первого столбца не нужны и остаются пустыми.
Далее наступает очередь второго заказчика, который со своей заявкой приходит на первую базу, где еще остался товар:
х12 = min { 200 - 70 ; 80 } = { 130 ; 80 } = 80.
Он также получает всё, и остальные клетки второго столбца также будут пустыми.
Теперь на первой базе осталось только 50 т груза. Поэтому третий заказчик получит только эти 50 т, хотя ему требуется 150 т.
х13 = min { 200 – 70 – 80 ; 150} = 50.
Поскольку на первой базе больше не осталось товара, остальные клетки первой строки будут пустыми.
Остальную часть своего заказа второй заказчик получит на второй базе:
х23 = min { 200 ; 150 – 50 } = 100.
Далее поцесс повторяется для остальных заказчиков, в результате чего получаем опорный план:
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
аi |
А1
|
4 70 |
11 80 |
6 50 |
5 |
15 |
200 |
А2 |
8 |
7 |
9 100 |
13 100 |
10
|
200 |
А3 |
10 |
5 |
12 |
7 10 |
20 90 |
100 |
bj |
70 |
80 |
150 |
110 |
90 |
|
В этом опорном плане семь занятых клеток. Поскольку их должно быть m +n –1, где m – число баз, n - число заказчиков, план является невырожденным. Если бы клеток было меньше, чем m +n –1, план был бы вырожденным.
Осталось подсчитать общую стоимость перевозок. Она складывается из произведений объемов перевозок и тарифов по всем занятым клеткам, т.е.:
F ( X1 ) = 70 4 + 80 11 + 50 5 + 100 9 + 100 13 + 10 7 + 90 20 = 5530.
Как видим, при распределении грузов совсем не учитывается стоимость перевозок. Поэтому, как правило, метод северо-западного угла дает опорный план, далекий от оптимального.
Построим опорный план методом минимальной стоимости (или минимального элемента). Суть метода в следующем. Сначала из всей таблицы выбираем клетку с самым маленьким тарифом. В эту клетку помещаем максимально возможную перевозку, а затем вычеркиваем клетки, ставшие ненужными. Затем в оставшейся части таблицы процесс повторяем, пока вся таблица не будет заполнена.
В данном случае сама дешёвая клетка ( А1 , В1 ). С неё и начинаем распределение грузов:
х11 = min { 200 ; 70 } = 70.
Вычеркиваем оставшиеся клетки первого столбца и повторяем процесс в оставшейся части таблицы. Запишем последовательность заполнения клеток:
х14 = min { 200 - 70 ; 110 } = 110;
х32 = min { 100 ; 80 } = 80;
х13 = min { 200 – 70 – 110 ; 150 } = 20;
х23 = min { 200 ; 150 - 20 } = 130;
х25 = min { 200 - 130 ; 90 } = 70;
х35 = 20.
Получаем следующий опорный план:
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
bj |
А1
|
4 70 |
11 |
6 20 |
5 110 |
15 |
200 |
А2 |
8 |
7 |
9 130 |
13 |
10 70 |
200 |
А3 |
10 |
5 80 |
12 |
7 |
20 20 |
100 |
аi |
70 |
80 |
150 |
110 |
90 |
|
Здесь получены семь ненулевых перевозок, поэтому план невырожденный. Подсчитаем его стоимость:
F ( X2 ) = 4 70 + 6 20 + 5 110 + 9 130 + 10 70 + 5 80 + 20 20 = 3620.
Как видим, этот опорный план дешевле первого.
Теперь построим опорный план методом двойного предпочтения. При этом сначала в каждом столбце отметим галочкой клетку с наименьшей стоимостью, затем то же самое делаем с каждой строкой. Далее максимально возможные объемы перевозок помещаем в клетки, отмеченные двойной галочкой. Затем распределяем перевозки по клеткам, отмеченным одной галочкой. В оставшейся части таблицы перевозки распределяем по методу минимальной стоимости.
Как видим, данный метод фактически является модифицированным методом минимальной стоимости.
Очевидно, что по крайней мере одна клетка таблицы будет иметь двойную галочку (этой клеткой обязательно будет клетка с минимальным тарифом). В нашем случае таких клеток будет две: (А1, В1 ) и (А3, В2 ). Их и заполним в первую очередь:
х11 = 70 ; х32 =80.
Клетками с одной галочкой будут : (А1, В4 ) ; (А2, В5 ) ; (А2, В2 ) и (А1, В3 ) (проверьте это). Клетка (А2, В2 ) не будет заполнена, в этом нет необходимости, поскольку во втором столбце занята одна клетка : (А3, В2 ) с двойной галочкой. Остальные клетки используем:
х14 = 110 ; х13 = 20 ; х25 = 90.
Разумеется, после их заполнения ненужные клетки вычеркиваем. Оставшиеся две клетки галочек заполняем по минимальной стоимости:
х23 = 110 ; х33 =20.
П олучаем новый опорный план транспортной задачи:
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
аi |
А1 |
70 |
11 |
6 20 |
5 110 |
15 |
200 |
А2 |
8 |
7 |
9 110 |
13 |
10 90 |
200 |
А3 |
10 |
5 80 |
12 20 |
7 |
20 |
100 |
bj |
70 |
80 |
150 |
110 |
90 |
|
Этому опорному плану соответствует стоимость перевозок:
F (X3) =4 70 + 6 20 + 5 110 + 10 90 + 5 80 + 12 20 = 3480.
Отметим, что и этот план имеет семь ненулевых перевозок, поэтому является невырожденным.
Как видим из сравнения планов, последний является самым дешевым, т.е. самым выгодным. Поэтому его берем в качестве основы для дальнейшей оптимизации по методу потенциалов.
Основой метода потенциалов является теорема о потенциалах. Её формулировка следующая:
План (
) транспортной задачи является оптимальным
тогда и только тогда, когда существуют
числа такие ui
(i =
),
vj
( j =
),
называемые соответственно потенциалами
поставщиков и потребителей, при которых
выполняются соотношения:
(11)
Как видим из системы (11), уравнения записываются для заполненных клеток, а неравенства – для свободных клеток. Справа везде стоят тарифы перевозок в соответствующих клетках.
На этой теореме основывается сам алгоритм оптимизации планов транспортной задачи, который называется методом потенциалов. Рассмотрим его подробно.
Шаг 1.Определение потенциалов поставщиков и потребителей.
На этом шаге составляем систему уравнений для потенциалов, используя только занятые клетки. Используем последний опорный план:
ПН ПО |
В1 v1=4 |
В2 v2=-1 |
В3 v3=6 |
В4 v4=5 |
В5 v5=7 |
аi |
А1 u1=0 |
4 70 |
11 |
6 20 |
5 110 |
15 |
200 |
|
8 |
7 |
9 110 |
13 |
10 90 |
200 |
А3 u3=6 |
10 |
5 80 |
12 20 |
7 |
20 |
100 |
bj |
70 |
80 |
150 |
110 |
90 |
|
Заметим, что в этой системе всего 8 неизвестных, т.е. m + n (3 + 5). Однако уравнений всего 7, поскольку в невырожденном опорном плане всего 7 заполненных клеток
(т.е. m + n - 1 ). Для однозначного решения не хватает одного уравнения. В этом случае один из потенциалов, например, и1 (может быть и другой потенциал) приравнивают некоторому постоянному числу, например, нулю:
и1=0.
Это и будет недостающим уравненим в системе. Теперь систему можно легко решить, имея в виду, что все уравнения состоят только из двух неизвестных. Результаты решения записаны в заголовочных клетках таблицы. Решать систему можно и непосредственно по таблице, используя занятые клетки с известными значением одного из потенциалов. Этот процесс всегда можно начать с первой строки, где уже известно значение и1=0.
Сделаем замечание для случая, когда опорный план является вырожденным. В этом случае количество уравнений для определения потенциалов будет меньше, чем m + n – 1. Это недопустимо мало, поэтому используют следующий приём. В недостающее число свободных клеток записывают нулевые значения перевозок, а сами эти клетки считаются занятыми, и для них записывают уравнения потенциалов. Такая модификация опорного плана не влияет на его стоимость, поскольку нулевые перевозки имеют нулевые стоимости. Свободные клетки значащих нулей для подстановки выбираются не произвольно, однако об этом поговорим ниже.
Шаг 2. Проверка оптимальности опорного плана.
На этом шаге проверяем выполнение неравенств (11) для свободных клеток. Перепишем их в виде:
,
;
.
Если все Sij неотрицательны, значит, опорный план оптимален, и на этом наш вычислительный процесс заканчивается. Подсчитаем оценки для свободных клеток:
S12 = 11 – (0 - 1) = 12 0
S15 = 15 – (0 +7) = 8 0
S21 = 8 – (3 + 4) = 1 0
S22 = 7 – (3 - 1) = 5 0
S24 = 13 – (3 + 5) = 5 0
S31 = 10 – (6 + 4) = 0 0
S34 = 7 – (6 + 5) = - 4 < 0
S35 = 20 – (6 + 7) = 7 0
Оценка S34 оказалась отрицательной, значит, одно из неравенств (11) нарушено, и опорный план не является оптимальным . Таким образом, он нуждается в модификации, которую проведем на следующем этапе.
Шаг 3. Пересчет по циклу.
Для пересчета плана выбирается клетка, в которой оказалась отрицательная оценка. Таких клеток может оказаться несколько. В этом случае для пересчета выбирается клетка с самой отрицательной оценкой.
Циклом в опорном плане транспортной задачи называется замкнутый многоугольник из клеток таблицы с прямыми углами в вершинах, в который входят только вершинные клетки, и все эти клетки, кроме одной (для которой организуется пересчет, т.е. с отрицательной оценкой), являются занятыми.
Таким
образом, одна из клеток цикла является
свободной. Циклы могут иметь бесконечно
много конфигураций, например:
В последнем случае место пересечения двух линий цикла не входит в сам цикл, поскольку в вершинах цикла, которые, собственно, только и входят в цикл, совершается поворот на 90 0.
Каждой вершине цикла присваивается знак плюс или минус. При этом начальная клетка цикла, котороя является свободной, имеет знак плюс. Остальные клетки имеют чередующиеся знаки. Поскольку очевидно, что любой цикл имеет четное число вершин, то количество отрицательных и положительных вершин всегда будет одинаковым.
В данном случае цикл пойдет через клетки (А3, В4 ) ; (А1, В4 ) ; (А1, В3 ) и (А3, В3 ). В таблице цикл обрисован пунктирным прямоугольником.
Одним из признаков опорного плана транспортной задачи является то обстоятельство, что для любой свободной клетки всегда можно построить замкнутый цикл, где все остальные вершины будут располагаться в занятых клетках. Однако такой цикл будет единственным. С другой стороны, в опорном плане нельзя построить замкнутый цикл, в который входили бы только занятые клетки. Это привело бы к противоречивой системе уравнений для потенциалов. Данное замечание подсказывает правило, по которому в вырожденный опорный план должны быть помещены значащие нули: их нельзя располагать в клетках, которые могут создать замкнутый цикл только из занятых клеток.
Отсюда следует, что, если в транспортной задаче число занятых клеток превышает m + n – 1, то из них можно построить замкнутый цикл, и план уже не будет опорным.
Теперь вернемся к построенному нами циклу. Из всех отрицательных вершин цикла выбираем наименьшее значение перевозок:
Далее на значение
уменьшаем перевозки в отрицательных
вершинах цикла, а во всех положительных
вершинах значения перевозок увеличиваем
на эту же величину. Поскольку в цикле
чётное число вершин, то в пределах цикла
общий объём перевозок не изменится, что
не приведет к нарушению баланса между
запасами и заявками. Пересчитанная
таблица выглядит так:
ПН ПО |
В1 v1=4 |
В2 v2=3 |
В3 v3=6 |
В4 v4=5 |
В5 v5=7 |
аi |
А1 u1=0 |
4 70 |
11 |
6 40 |
5 90 |
15 |
200 |
А2 u2=3 |
8 |
7 |
9 110 |
13 |
10 90 |
200 |
А3 u3=2 |
10 |
5 80 |
12 |
7 20 |
20 |
100 |
bj |
70 |
80 |
150 |
110 |
90 |
|
Пересчитаем стоимость нового плана:
F ( X4 ) = 4 70 + 6 40 + 5 90 + 9 110 + 10 90 + 5 80 + 7 20 = 3400.
Как видим, стоимость перевозок уменьшилась.
Шаг 4. Определение потенциалов в новом плане.
Этот шаг является повторением шага 1. Система уравнений здесь почти не отличается от предыдущей, кроме одного уравнения. Это связано с тем, что свободная клетка (А3, В4 ) стала занятой, а клетка (А3, В3) стала свободной. Фактически здесь идет речь о преобразовании однократного замещения, которое имело место в симплекс методе. Соответственно одно из уравнений для потенциалов заменяется другим. Запишем новую систему:
Решаем эту систему аналогично, результаты помещены в заголовочные клетки последней таблицы.
Шаг 5. Расчет оценок для свободных клеток.
Этот шаг повторяет шаг 2. Считаем оценки:
S12 = 11 – (0 + 3) = 8 0
S15 = 15 – (0 +7) = 8 0
S21 = 8 – (3 + 4) = 1 0
S22 = 7 – (3 + 3) = 1 0
S24 = 13 – (3 + 5) = 5 0
S31 = 10 – (2 + 4) = 4 0
S33 = 12 – (2 + 6) = 4 0
S35 = 20 – (2 + 7) =11 0
Поскольку все оценки свободных клеток неотрицательны, полученный план является оптимальным. В противном случае пришлось бы продолжать шаги 1-3 процесса до тех пор, пока не будет получен оптимальный план.
Запишем решение транспортной задачи:
Fmin = F ( X* ) = 3400.

0
400
0
=120
600
zj
- cj
ПН
А2
u2=3