
519_8_E92_2015_Efromeeva_E_V__Efromeev_N_M_Metody_issledovania_operatsiy_v_mashinostroenii_primery_zadachi_2-e_izdanie
.pdfИли, используя обозначения: |
|
поставщика |
3 потребителю, |
||||
• ! |
− |
|
перевозок |
|
|||
|
− объем |
|
от / |
к 3 |
|||
! |
|
цена |
|
от / |
|
|
|
; − запас продукции у / поставщика, |
|
||||||
8 |
|
|
|
|
|
|
|
>! − потребность продукции у 3 потребителя, |
|||
A, B − число поставщиков и потребителей соответственно. |
|||
|
M J |
|
|
F = H H • !8 ! → A/B, |
|||
|
KL !KL |
|
|
|
J |
8 |
! = ; , |
H |
|||
|
!KL |
|
|
|
M |
8 |
! = >!, |
|
H |
||
KL |
|
≥ 0, |
|
|
8 ! |
/ [1;A], 3 [1; B].
Глядя на развернутую запись транспортной задачи, легко заметить, что матрица ее условий довольно специфична: все ее элементы равны либо 0, либо 1, причем в каждом столбце содержится ровно две единицы.
|
|
|
M |
J |
|
|
|
|
|
|
|
|
Если представить задачу в векторной записи |
|
|
|
|||||||||
F = H H • ! |
8 |
! → A/B, |
|
|||||||||
|
|
M KLJ!KL |
X |
|
X |
|
|
|
|
|||
|
H H 8 |
!W |
! |
= WZ, |
|
|
|
|
||||
|
|
KL !KL |
|
|
|
|
|
|
|
|||
то размерность входящих в нее векторов будет равна A + B, а сами векторы |
||||||||||||
будут иметь следующий вид: 0 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
… |
|
|
/ |
|
|
|
|
|
;L |
|
|
1 |
|
|
|
|
|
|
|
|||||
|
… |
|
|
|
|
|
|
|
|
|
… |
|
X |
. .0. . . . A. . |
|
|
X |
|
;M |
||||||
|
|
|
|
|
|
|
|
|
|
|
||
W! = |
0 |
|
|
|
1 , |
|
WZ |
= >L . |
||||
|
… |
|
|
|
3 |
|
|
|
|
|
… |
|
|
1 |
|
|
|
|
|
|
|
>J |
|||
|
… |
|
|
B |
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
101
7.3. Свойства транспортной задачи
Свойство 1 (разрешимость). Сбалансированная транспортная задача всегда имеет решение.
Доказательство. Для разрешимости любой задачи линейного программирования необходимо доказать: а) непротиворечивость условий; б) ограниченность целевой функции.
a) для доказательства непротиворечивости условий достаточно указать
хотя бы один план. |
|
|
|
|
|
|
|
Пусть ∑ • |
= ∑ "# = $. Возьмем % # = |
&'() |
≥ 0. Тогда |
||||
* |
|||||||
|
, % # = , |
• "# |
• |
, "# = • , |
|||
|
$ |
= $ |
|||||
|
# |
# |
• "# |
"# |
|
|
|
|
, % # = , |
, • = "#; |
|||||
|
$ |
= $ |
б) целевая функция ограничена в сторону минимизации, так как
.(%) = , , 2 #% # ≥ 0.
#
Свойство доказано.
Свойство 2 (размерность). Ранг матрицы условий |
равен 4 + 6 − 1, т. е. |
|
опорные планы транспортной задачи могут |
||
содержать не более |
4 + 6 − 1 |
ненулевых |
компонент.
Доказательство. Для доказательства необходимо показать: а) что все миноры
порядка • + • равны 0; б) что существует минор порядка • + • − 1, не равный 0.
a)возьмем любой минор порядка • + •. Его матрица имеет • + • строк, причем из структуры векторов условий следует, что• в каждом столбце обязательно• будет по единице в первой группе из строк и во второй группе из строк.
Если мы в первой группе строк прибавим все строки к первой, а во второй все строки к последней, то получим матрицу, у которой первая и последняя строки состоят из единиц. Определитель такой матрицы равен нулю, поскольку он имеет две одинаковых строки:
102

б) возьмем специфический минор порядка |
: |
После вычеркивания последней строки и последнего столбца получится треугольный минор порядка ! + − 1, равный 1.
Этот результат является вполне предсказуемым, так как не все ограничения являются независимыми из-за условия баланса производства и потребления.
Свойство 3 (унимодулярность). Любой минор матрицы условий транспортной задачи равен 0 либо ±1. Такая матрица называется унимодулярной.
Доказательство индукцией по размерности #. При # = 1 утверждение очевидно.
Пусть утверждение справедливо для 1, . . . , # − 1. Докажем его для #. Возьмем минор -го порядка. Возможны три варианта.
103

ØВсе столбцы его матрицы содержат точно по две единицы. Этот минор равен нулю.
ØНайдется столбец, не содержащий ни одной единицы. Такой минор равен 0.
ØНайдется столбец, содержащий одну единицу. Раскладываем минор по этому столбцу. В силу индуктивного предположения утверждение справедливо.
Свойство 4 (целочисленность). Если объемы производства• и потребления целочисленны или кратны , то все опорные планы транспортной задачи, в том числе оптимальный• план, также целочисленны или кратны .
Доказательство. |
|
|
Пусть имеется опорный план |
транспортной задачи. |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
#$ |
|
|
• , |
|
|
|
|
|
|
|
|
||
Для ! + " − 1 его ненулевых компонент справедливо разложение |
|
|
|
|||||||||||||||||||
|
|
|
• |
|
|
|
$ %&'()&' |
= |
|
" |
|
|
|
|
|
|
|
|
||||
причем векторы |
|
линейно независимы. |
|
|
|
|
|
|
|
|
||||||||||||
& − 1 |
Это - |
векторная запись системы m + n линейных уравнений с |
|
|||||||||||||||||||
|
|
|
#$ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
найти |
|||
|
неизвестными. Ее можно решить по правилу Крамера и |
|
% + |
|||||||||||||||||||
компоненты плана |
|
|
|
|
|
•#$ |
|
|
|
|
|
|
|
|
|
|
|
|
||||
& − 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
размерности |
|
|||
|
Выберем в |
матрице условий базисный минор |
|
|
||||||||||||||||||
|
|
( = )*#$ |
-. |
|
вектором |
свободных членов. Тогда, |
||||||||||||||||
|
и заменим в нем столбец |
|
|
|
/ |
|
|
|
% + |
|||||||||||||
раскладывая определитель по столбцу свободных членов, получаем |
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
0 |
… |
34 |
… |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
… |
35 |
… |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0… |
… |
… |
… |
…0 |
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
0 |
0 |
… |
37 |
… |
1 |
0 |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
0 |
… |
84 |
… |
0 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
0 |
1 |
… |
85 |
… |
0 |
|
0 |
∑# <#3# + ∑$ |
>$8$ |
|
|
|
|||||
|
|
|
|
|
|
|
… … …9 |
… … |
|
|
|
|
|
|||||||||
|
|
*#$ = |
|
|
0 |
… |
8 |
… |
1 |
|
|
= |
|
|
|
|
|
, |
|
|
||
|
|
|
|
|
|
‖/‖ |
|
|
|
|
|
|
±1 |
|
|
|
|
|||||
|
|
где |
|
|
|
|
|
|
|
|
|
<#,>$ {0, +1, −1}. |
|
|
|
104
7.4. Алгоритм решения транспортной задачи
Опираясь на свойства, можно адаптировать симплексный метод таким образом, чтобы они учитывались в наибольшей степени.
Общая схема метода остается прежней: строится исходный базис и соответствующий ему опорный план, затем проводятся итерации до тех пор, пока не будет найдено оптимальное решение.
На каждой итерации текущий план проверяется на оптимальность, определяются векторы, включаемые и исключаемые из базиса, и проводится преобразование плана перевозок по правилу Жордана.
Вместе с тем имеются некоторые отличия от базового симплексного метода. Прежде всего, вместо одномерной индексации переменных в транспортной задаче будет использоваться двойная. Кроме того, некоторые шаги алгоритма, сохраняя принципиальную схожесть, из-за специфики задачи здесь будут реализованы более простым образом.
Последовательность этапов алгоритма решения транспортной задачи в точности повторяет аналогичную последовательность этапов симплексного алгоритма.
Шаг 1. Определяем начальное базисное допустимое решение, затем переходим к выполнению второго этапа.
Шаг 2. На основании условия оптимальности симплекс-метода среди всех небазисных переменных определяем вводимую в базис. Если все небазисные переменные удовлетворяют условию оптимальности, вычисления заканчиваются; в противном случае переходим к третьему этапу.
Шаг 3. С помощью условия допустимости симплекс-метода среди текущих базисных переменных определяем исключаемую. Затем находим новое базисное решение. Возвращаемся ко второму этапу.
Специальная структура транспортной модели для построения начального решения позволяет применить следующие методы (вместо использования искусственных переменных, как это делается в симплекс- методе).
1.Метод северо-западного угла.
2.Метод минимального элемента.
3.Метод Фогеля.
Различие этих методов заключается в ”качестве” начального решения, т.е. ”удаленности” начального решения от оптимального. В общем случае метод Фогеля дает наилучшее решение, а метод северо-западного угла – наихудшее. Однако метод северо-западного угла требует меньшего объема вычислений.
105

7.5. Разложение векторов условий
Прежде чем заняться собственно опорным планом, нужно научиться раскладывать векторы условий по совокупности других векторов условий.
Возникает естественный вопрос: зачем это нужно, ведь существуют стандартные процедуры решения данных задач, основанные на методах линейной алгебры.
Дело в том, что векторы, встречающиеся в транспортной задаче, столь специфичны (по две единицы в столбце, остальные нули), что указанные процедуры намного проще реализуются непосредственно, путем комбинаторных построений.
Правило. Для того, чтобы разложить вектор условий •"# транспортной задачи по другим векторам условий, нужно построить замкнутый
чередующийся маршрут из единиц векторов, замыкающийся на разлагаемый |
||||||||||||||||||
|
|
−1 |
|
|
|
|
|
0 |
равны |
|
для |
нечетных |
векторов в |
|||||
вектор. Коэффициенты разложения |
|
|
||||||||||||||||
маршруте, |
|
|
|
для четных векторов и |
|
для |
векторов, не вошедших в маршрут. |
|||||||||||
|
|
|
|
|
+1 |
|
• |
|
|
|
||||||||
|
% = 3, & = 3 |
|
|
|
% |
|
|
|
|
|
|
|
|
|
|
|||
|
Это правило становится очевидным, если его показать на нашем примере |
|||||||||||||||||
)• , • , • |
|
, • , • |
|
|
требуется |
разложить |
|
по |
векторам |
|||||||||
|
"# #" ## |
|
|
#$ |
Пусть |
|
||||||||||||
( |
|
|
$" |
|
, то есть представить его в виде суммы:'( |
|
|
|
||||||||||
|
|
|
). |
= & |
|
. |
|
|||||||||||
|
|
|
•"$ |
• + & • + & • + & • |
+ & • |
|
||||||||||||
|
|
|
|
"# "# |
#" #" |
|
## |
## |
|
#$ #$ |
$" |
$" |
|
|
Очевидно, маршрут из единиц всегда получается циклический и чередующийся:
106
Построение маршрута из единиц• можно сделать более наглядным, если вспомнить, что каждому вектору "# соответствует элемент • ! плана перевозок. Тогда движение по верхним единицам будет соответствовать перемещению по строке матрицы " (индекс # не меняется), а движение по нижним единицам перемещению по столбцу (индекс $ не меняется).
С учетом этого правило можно модифицировать: чтобы разложить %& ! по другим векторам, нужно построить чередующийся (по строке - по столбцу - по строке - по столбцу...) замкнутый маршрут из соответствующих перевозок, замыкающийся на перевозку, соответствующую разлагаемому вектору. Коэффициенты разложения равны +1 для нечетных перевозок в маршруте, −1 для четных перевозок и 0 для перевозок, не вошедших в маршрут:
%&)* = %&), − %&,, + %&,*.
Из приведенного правила немедленно следует специфический критерий линейной независимости для векторов условий транспортной задачи.
Критерий линейной независимости. Система векторов условий является линейно независимой, если из соответствующих им перевозок нельзя построить замкнутого маршрута.
Ранг матрицы условий равен / + 2 − 1 (свойство 2). Следовательно, среди векторов условий могут быть только / + 2 − 1 линейно независимых, и всякие / + 2 − 1 линейно независимых векторов образуют базис.
План задачи линейного программирования является опорным, если соответствующие ненулевым компонентам плана векторы линейно независимы.
Критерий опорности. План перевозок " = (• !) является опорным, если из его ненулевых перевозок нельзя составить чередующийся (строка – столбец – строка - столбец...) замкнутый маршрут.
В опорном плане не может быть более / + 2 − 1 ненулевых перевозок. Если их ровно / + 2 − 1, то план является невырожденным.
107

7.6. Определение начального решения
Транспортная компания занимается перевозкой сырья специальными машинами от трех складов к четырем предприятиям. На рис. 37 показаны возможности отгрузки сырья (предложения) складами (в машинах) и потребности (спрос) предприятий (также в машинах), а также стоимость перевозки •сырья одной машиной от складов к предприятиям. Стоимость перевозок ! приведена в некоторых условных единицах.
Математическая модель задачи имеет вид:
"= 10#$$ + 2#$% + 20#$& + 11#$' + 12#%$ + 7#%% + 9#%& + 20#%' + 4#&$
+14#&% + 16#&& + 18#&' → min,
|
# |
+ # |
+ # |
+ # |
= 15, |
|||
#$$ |
+ #$% |
+ #$& |
+ #$' |
= 25, |
||||
|
%$ |
|
%% |
|
%& |
|
%' |
= 10, |
|
#&$ |
+ #&%+#&& |
+ #&' |
|||||
|
|
#$$ + #%$ + #&$ |
= 5, |
|||||
|
# |
+ # |
+ # |
= 15, |
||||
#$$&% |
+ #%&%% |
+ #&&&% |
= 15, |
|||||
|
#$' |
+ #%' |
+ #&' |
= 15, |
# ! ≥ 0, 3 = 1, 2, 3; < = 1, 2, 3, 4;
5+15+15+15=15+25+10.
Рис. 37
108

7.6.1. Метод северо-западного угла
Выполнение метода северо-западного угла начинают с верхней левой |
||
ячейки (северо-западного угла) транспортной таблицы, т.е. с переменной • . |
||
Шаг 1. |
Переменной • |
присваиваем максимальное значение, |
допускаемое ограничениями на спрос и предложение. |
||
Шаг 2. |
Вычеркиваем строку (или столбец) с полностью |
|
реализованным |
предложением |
(с удовлетворенным спросом). Это |
означает, что в вычеркнутой строке (столбце) мы не будем присваивать значения остальным переменным (кроме переменной, определенной на первом этапе). Если одновременно удовлетворяются спрос и предложение, вычеркиваем только строку или столбец.
Шаг 3. Если не вычеркнута только одна строка или только один столбец, процесс останавливается. В противном случае переходим к ячейке справа, если вычеркнут столбец, или к ниже лежащей ячейке, если вычеркнута строка. Затем возвращаемся к первому этапу.
Если применить описанную процедуру к задаче, получим начальное базисное решение, представленное в таблице. В ней стрелками показана последовательность определения базисных переменных.
Получено следующее начальное базисное решение:
• = 5, • ! = 10, •!! = 5, •!" = 15, •!# = 5, •"# = 10.
Соответствующая суммарная стоимость перевозок равна $ = 5 ∙ 10 + 10 ∙ 2 + 5 ∙ 7 + 15 ∙ 9 + 5 ∙ 20 + 10 ∙ 18 = 520.
109

7.6.2. Метод минимального элемента
Решая задачу ЛП данным методом, мы будем получать лучшее начальное решение, чем методом северо-западного угла. Поскольку выбираем переменные, которым соответствуют наименьшие стоимости.
Шаг 1. По всей транспортной таблице ведем поиск ячейки с наименьшей стоимостью. Переменной в этой ячейке присваиваем наибольшее значение, допускаемое ограничениями на спрос и предложение. (Если таких переменных несколько, выбор произволен).
Шаг 2. Вычеркиваем соответствующий столбец или строку, и соответствующим образом корректируем значения спроса и предложений. Если одновременно выполняются ограничения и по спросу, и по предложению, вычеркиваем или строку, или столбец (точно так же, как в методе северо-западного угла).
Шаг 3. Просматриваем невычеркнутые ячейки и выбираем новую ячейку с минимальной стоимостью. Процесс продолжаем до тех пор, пока не останется лишь одна невычеркнутая строка или столбец.
Применим метод минимального элемента к задаче.
1.Ячейка (1,2) имеет наименьшую стоимость. Она равна 2. Наибольшее значение, которое можно присвоить переменной ••• равно 15. В этом случае удовлетворяются ограничения, соответствующие первой строке и второму столбцу.
2.Вычеркиваем второй столбец, предложение первой строки и спрос второго столбца принимают нулевые значения.
3.Следующей ячейкой с наименьшей стоимостью в незачеркнутой
части будет (3,1). Присвоим переменной !• значение 5 и вычеркнем первый столбец. Ограничение по предложению, соответствующее третьей строке, станет равным 10 − 5 = 5.
4.Продолжим процедуру, последовательно присваиваем переменной
•! значение 15, переменной •# – значение 0; далее находим !# = 5 и •# = 10.
Процесс поиска начального решения представлен в таблице. Стрелками показана последовательность присвоения переменным значений. Итак, получаем следующее начальное базисное решение (состоящее из 6 переменных):
•• = 15, •# = 0, •! = 15, •# = 10, !• = 5, !# = 5.
Соответствующее значение целевой функции равно $ = 15 ∙ 2 + 0 ∙ 11 + 15 ∙ 9 + 10 ∙ 20 + 5 ∙ 4 + 5 ∙ 18 = 475.
110