книги из ГПНТБ / Арутюнян А.Г. Применение математических методов и ЭВМ в народном хозяйстве
.pdfТогда задача (33.1)—(33.3) принимает следующий вид. Найти максимальное значение линейной функции
|
Л ( Н = Х |
с /у ,, |
|
(ззл ') |
|||
при условиях |
|
j-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
v |
а ц у^ = Ь{', /= 1 , |
2..... т, |
|
(33.2') |
|||
j-i |
|
|
|
|
|
|
|
|
у ^ 0 , у = 1 , |
2 |
п. |
|
(33.3') |
||
Задача (33.1') — (33.3') |
уже |
является общей задачей |
|||||
линейного программирования. |
|
|
|
|
|||
Наличие ограничений вида (За) в (33.3) придает основ |
|||||||
ной задаче особый характер. |
В этом случае |
при сведении |
|||||
задачи (33.1) — (33.3) |
к общей |
задаче линейного програм |
|||||
мирования количество |
векторов |
условий |
(т. |
е. количество |
|||
столбцов матрицы условий) увеличивается |
на л,1. Ясно, |
||||||
что при больших |
значениях |
пл сведение |
основной задачи |
||||
к общей задаче линейного программирования будет не эффективным, так как размеры матрицы условий будут зна чительно увеличиваться, а при машинном решении задач линейного программирования увеличение размеров матрицы сильно влияет не только на необходимое время для реше ния задачи, но и на точность результатов. Во многих же случаях такое увеличение размеров матрицы условий прак тически может привести к неразрешимости поставленной за дачи. Во избежание увеличения размеров матрицы условий можно поставленную основную задачу решать специаль ным методом, являющимся несущественным видоизмене нием (в смысле усложнения) общеизвестного симплексного метода. В книге [92] изложен метод решения основной задачи при следующих предположениях:
|
а) имеется исходное базисное решение2 и соответст |
вующая ему симплексная таблица; |
|
|
б) п3 = п, т. е. каждая переменная ограничена хотя бы |
с |
одной стороны. |
|
1 При этом в матрице условий задачи добавляются пi строк. |
ft |
J Определения всех понятий, используемых здесь, можно найти |
цитированной литературе. |
|
121
Ясно, что эти предположения значительно сужают круг решаемых задач, так как не для каждой практической за дачи они будут выполнены. В частности, предположение
б) является принципиально сужающим, так как при п3<^п
взадаче существуют переменные, на которые нет ограни чения ни снизу и ни сверху (такие переменные будем на зывать свободными). Следовательно, для применения изло женного в [92] алгоритма необходимо в матрице условий добавить еще п — п3 столбцов. Однако, как указывалось ранее, увеличение размеров матрицы условий не жела
тельно с точки зрения практической реализации решения задачи.
Оказывается, что путем незначительного усложнения вычислительной схемы алгоритма можно основную задачу решить и при п3< п без увеличения размеров матрицы условий. Для этого достаточно воспользоваться идеями, предложенными Зойтендейком (см. [34]).
Если исходное |
базисное решение |
заранее не задано, |
то можно поставить |
так называемую |
расширенную задачу |
и применить изложенный в [92] алгоритм с учетом пред лагаемой корректировки.
Определим величины:
oj, при у = 1, 2 ,..., п2,
Pi, при j = n2 + 1, л2-[-2 ,..., п3,
О, при у = л3 -|-1, я3 + 2 ,..., п,
0, если Ь, — £ ац х ? О,
ь- 1
1, если b; — X Лцjc°j < 0 .
(33.4)
(33.5)
Для удобства записи предполагается, что строки усло вий пронумерованы так, что подмножество индексов г, при которых величины -v, принимают одинаковые значения, чет
ко разделены. Пусть |
Vj = 0 |
при t**l, 2,..., т и vj = 1 при |
i = т3—|—1, т1~\- 2 ,..., |
т. |
|
Рассматривается |
задача: |
найти максимальное значение |
линейной функции |
|
|
122
|
F ( * } = v C j X j - ^ V ( _ 1 ) ^ п + , |
|
( 3 3 .6 ) |
||||||
|
|
|
|
|
|
|
|
|
|
при условиях |
|
|
|
|
|
|
|
|
|
|
X |
«ij*j+ .*n +i= |
&i, i' = l, |
2,..., m, |
|
(33.7) |
|||
|
|
y = l , |
2 ..... |
я „ |
|
|
|
(8 a)' |
|
^ ^ x jt j = n1-\-\, |
nj + |
2 ..... |
я2; |
я + 1, |
ч |
|
|||
|
|
|
|
« + 2,... л 4- ttiy, |
(86) |
(33.8) |
|||
JCj^pj, у««*я2+1, |
я2+2,..., я3; л-fOTj-fl, |
|
|
||||||
|
|
« + /«1 + 2 ,..., |
я + m. |
(8 в) |
|
||||
Здесь M —пока произвольная, достаточно большая ве |
|||||||||
личина, |
<*j — 0 |
при у = |
я + 1 , я + |
2..... |
я + /л |
и Pj = 0 при |
|||
/ = « + |
/« 1 + 1, |
п + яг, + 2,..., Я + |
/П, |
а |
остальные |
величи |
|||
ны — прежние. |
|
|
|
|
|
|
|
|
|
Связь между задачами |
(33.1) — (33.3) и |
(33.6) — (33.8) |
|||||||
совершенно аналогична связи между общей задачей линей ного программирования и соответствующей расширенной задачей. Так, например, если в оптимальном решении зада чи (33.6)—(33.8) с ненулевым значением участвует хотя бы одна искусственная переменная х п+\, то основная задача (33.1)—(33.3) неразрешима; если же в оптимальном решении задачи (33.6)—(33.8) значения всех искусственных перемен ных нули, то первые я компонентов этого решения обра зуют оптимальное решение основной задачи. Исходя из это го, естественно задачу (33.6) — (33.8) назвать расширенной относительно основной задачи (33.1)—(33.3). Таким обра зом, в результате решения расширенной задачи либо по лучим решение (оптимальное) основной задачи, либо обна ружим ее неразрешимость (несовместность условий или неограниченность сверху целевой функции на множестве допустимых решений).
Приведем теперь краткое описание алгоритма реше ния расширенной задачи, направив особое внимание на возможность машинной реализации вычислительной схемы,
атакже на отклонения от алгоритма, предложенного в
[92].Теоретическое обоснование и доказательство сходи мости алгоритма здесь не приводятся, так как они почти
123
не отличаются от соответствующих |
положений, |
относя |
щихся к алгоритму, изложенному в [92]. |
|
|
Выбираем вектор Л"0 — (х0,, х°2,..., |
х°п, х°п+]..... |
Л + т ), |
первые п компоненты которого определяются соотноше нием (33.4), а остальные — формулой
x°„+l= bi — г = 1 , 2,..., т. (33.9)
Непосредственной подстановкой можно убедиться, что выбранный вектор Х° удовлетворяет всем ограничениям расширенной задачи. Очевидно, что векторы-столбцы, со ответствующие искусственным переменным х п+ь образуют линейно-независимую систему (эти столбцы образуют еди ничную подматрицу т -го порядка). При построении вектора Х° в качестве исходных значений свободных переменных задачи выбраны нули. Согласно определению базисного решения задачи линейного программирования с двухсто ронними ограничениями на переменные векторы условий, соответствующие переменным, текущее значение которых не совпадает с граничными значениями их изменения, долж ны образовать линейно-независимую систему. С первого взгляда может показаться, что построенный вектор Х ° не удовлетворяет условию базисности, так как искусственные векторы уже образуют базис m-мерного векторного прост ранства, а добавление к ним любого вектора (соответст вующего свободной переменной) уже нарушает условие линейной независимости. С другой стороны, векторы, соот ветствующие свободным переменным, должны быть вклю чены в базис (напомним, что исходное значение каждой свободной переменной равно нулю, т. е. строго больше левой границы ( — оо) и строго меньше правой границы (-|-оо) интервала своего изменения). Этот кажущийся па радокс сразу выяснится, если точно представить специфику изменения свободных переменных. Каждую свободную пе ременную можно представить в виде суммы двух перемен ных, ограниченных с одной стороны:
Xj = Xj+ -J- х ~ ,
x f гг О, X j-ssO, j = ni -\-\, + 2 |
n. |
(33.10) |
124
Элементарными рассуждениями можно убедиться, чго в любом плане задачи (основной или расширенной) только одна из переменных х-+ и х ~ может принимать ненулевое значение, т. е. только одна из них может стать базисной переменной. Поэтому в процессе решения задачи будем принимать jCj = ^j+ или x^ — Xj- в зависимости от того, какая из этих переменных является базисной. Отметим, что на первых шагах может быть принято первое равенство, а на последующих — второе.
Из приведенного видно, что при п3<^п понятие ба зисного решения задачи линейного программирования с
двухсторонними ограничениями |
на переменные |
нуждается |
в уточнении. |
|
|
Определение. Допустимое |
решение задачи |
линейного |
программирования с двухсторонними ограничениями на пе ременные называется базисным, если векторы условий зада чи, соответствующих компонентам x jt для которых выпол няются условия:
а) значение х j не совпадает ни с одним граничным зна чением ее изменения, если эта переменная ограничена хотя бы с одной стороны;
б) значение x i отлично от нуля, если эта перемен ная свободна,
образуют'линейно независимую систему векторов. Отметим, что это определение относится как к основ
ной, так и к расширенной задаче.
Определим относительные оценки векторов условий
основной задачи; |
|
|
|
|
I Zj — Cj, |
если |
У = 1 , |
2,..., |
|
C j— Zj, |
если jcj ==s рj, у = 1 , |
2,..., п3, |
(33.11) |
|
— [Zj — Cj|, е сл и / = |
я34 -1, |
п3+ 2 ..... |
п. |
|
Аналогично доказательству, изложенному в [92], мож но показать, что признаком оптимальности базисного ре шения задачи (как основной, так и расширенной) является неотрицательность относительных оценок внебазисных век торов условий. Так как относительные оценки внебазисных векторов условий расширенной задачи являются линейными
125
функциями от произвольно большой величины |
М (входя |
щей в выражение целевой функции): |
|
Aj = Sj Ж 3/, у = 1 , 2,..., п, |
(33.12) |
то знак этих величин (Aj) определяется знаком коэффи циента 8/ , а при 8/ = 0 — знаком величины 8j. Текущее значение линейной функции (33.6) представится в следую
щем виде: |
|
/=*<,„ + М о0'. |
|
|
(33.12') |
|
|
|
|
||
Имея исходное базисное решение расширенной задачи, |
|||||
построенное указанным выше способом, легко |
|
вычислить |
|||
соответствующие |
величины: |
|
|
|
|
8„ ° = V |
Cjjc,»; |
8о,0= £ ( - 1 ) 4 + 'Л . ; |
I |
|
|
' - 1 |
|
|
|
\ |
(33.13) |
8,•= — с,; 8/"= .V (-1)4+1 а„; |
2,..., я. |
|
|
||
Введем величины ejt характеризующие значения пере |
|||||
менных текущего |
решения: |
|
|
|
|
|
1, |
если Xj = aj (xj — внебазисная); |
|
||
1, |
если Xj = pj (xj — внебазисная); |
|
(33.14) |
||
О, |
если Xj — базисная переменная; |
|
|||
О, |
если Xj — свободная (внебазисная) |
|
|
||
|
|
переменная. |
|
|
|
Тогда относительные оценки Ai будут выражаться фор |
|||||
мулой |
|
|
|
|
|
A, = [ ( * j - i ) I Y I - ej V I ж + (Y - |
1) \Ч — ei 8j“ |
V м + д/', |
|||
|
|
1, |
2..... п. |
|
(33.15) |
Отсюда ясно, что признак оптимальности текущего базиса определяется при помощи величин А/ и Д;".
Пусть A' — min А/.
1<j<n
Если Д' = 0, определим
Д" — min А-.", jet
где через 1 обозначено множество индексов у, для ко торых Aj' = 0. Значит, текущее базисное решение расши-
126
репной задачи будет оптимальным, |
если будет выполнено |
|||
условие Д'> 0 , а при Д '= 0 — |
условие Д "^ 0 . |
|
||
При выполнении условия |
Д '^ 0 |
необходимо |
анализи |
|
ровать значение коэффициента 80'. |
Если 8о'= £0, |
то основ |
||
ная задача неразрешима, |
так как в этом случае, продол |
|||
жив процесс оптимизации, |
получим |
оптимальное решение |
||
расширеннной задачи, в котором хотя бы одна искусст
венная |
переменная |
принимает |
ненулевое |
значение. |
Если |
||
Д '< 0 |
(или при Д ' = 0 , Д " < 0 ) , |
то вектор, |
значение |
отно- |
|||
•сительной оценки которого совпадает с |
Д' |
(или Д"), под |
|||||
лежит вводу в базис. Пусть этот вектор |
имеет индекс |
А. |
|||||
Для определения |
вектора, подлежащего |
|
исключению |
из |
|||
базиса, строится дополнительный вектор — столбец А* (см., например, [92]). Поскольку вектор А* строится в соответст вии со знаком 8/ (или 8к), то при е= * 0 (т. е. когда вводу в базис подлежит вектор, соответствующий свободной пе
ременной) |
подбирается или |
х к = х к+ (при Sk' < |
0 ) |
или |
|
лгк= х к- (при V > 0 ) . |
Далее |
заполняется столбец |
f. |
Для |
|
определения элемента |
пользуются Л/-шкалой, v-шкалой |
||||
и s-шкалой. |
Начиная с первого элемента столбца Ак анали |
||||
зируется знак x ik. В зависимости от знака элемента |
;cik в |
||||
/-ую позицию столбца ? заполняется либо верхний предел, либо нижний предел соответствующей переменной, или же неограниченно большую величину. Рассмотрим более под робно этот процесс. Пусть *ik]>0. С помощью iV-шкалы определяется номер вектора, занимающего /-ую позицию базиса. Если основной вектор занимает /-ую позицию, то при наличии ограничения на соответствующую переменную снизу нижняя граница ctj заполняется на месте элемента -ft, а при отсутствии ограничения снизу принимается -fi*=М . Если же /-ую позицию базиса занимает искусственный век тор, то принимается
1— |
О, если >i= |
0, |
М, если v, = |
1 . |
Вслучае .Xjk< 0 поступаем следующим образом. Если /-ую позицию базиса занимает основной вектор, то при на-
.личии ограничения на соответствующую переменную сверху принимается fj — Рн» а ПРИотсутствии ограничения сверху—
127
-r,= Af. Если же г'-ую позицию базиса занимает искусствен ный вектор, то принимается
1 —vi |
(0, |
если V j= 1, |
Ь = ~ ^ Г ’ |
Т' 6' T l _ U , |
если Vi= 0. |
В случае x ik = 0, |
независимо от вектора, занимающего |
|
*-ую позицию базиса, |
принимается |
= М. Указанной про |
цедурой заполняются первые т позиции столбца |
||
Для заполнения |
(/л 4-1)-ой позиции столбца ? поль |
|
зуются е-шкалой. Принимается |
= M в следующих слу |
|
чаях:
а) бк = 0 ; б) ек= 1, и на соответствующую переменную нет огра
ничения снизу;
в) gk= —1, и на соответствующую переменную нет ограничения сверху. В остальных случаях принимается:
Отметим, что при ti = M принимается %{ = М. Остальная часть вычислений полностью совпадаете про
цедурой, изложенной в [92].
Отметим теперь некоторые особенности машинной реа лизации вычислительной схемы приведенного алгоритма. В алгоритме, предложенном в [92], для определения ге неральной строки используется дополнительная {т-\- 1)-ая строка, в которой заполняются всего два элемента. Оче видно, при больших значениях п (а в практических зада чах п достигает до нескольких сотен) для дополнительной строки теряется большой объем памяти машины. Поэтому целесообразно в отдельности запоминать указанные два элемента, исключив из текущей симплексной таблицы до полнительную строку. Текущая симплексная таблица пред ставлена на стр. 129.
Таким |
образом, |
общий |
шаг алгоритма заключается |
в осуществлении следующей |
последовательности действий. |
||
1. Определение |
вектора |
условий, подлежащего вводу |
|
в базис, т. |
е. определение генерального столбца. Для этого |
||
необходимо выполнить следующее:
128
Д = уи+2.к = |
min уго+2,j, |
|
|
где |
|
|
|
| д:т+2, j , |
если |
= |
— 1, |
— Хт+2, j , |
если |
Sj = |
1, |
— \ Хт*г, j 1, если «5= |
0. |
||
1.2°. Анализ знака Д:
а) если Д < 0 , то вектор Ак подлежит вводу в'базис; переход к выполнению пункта 2 ;
б) если Д5»0, то переход к подпункту 1.3°. 1.3°. Анализ значения элемента хга+2, о :
а) |
если Хпц-2,о ф 0, |
то переход к подпункту 1.4°; |
|
б) |
если х т+2,о= 0, |
то переход к подпункту 1.5°. |
|
1.4°. Вычисления прекращаются; исходная задача не |
|||
разрешима. |
|
|
|
1.5°. Нахождение*= Ут И, к — |
л У т + ],Ь |
||
где |
( |
ЛтЦ-1, j , |
если gj = —1, |
|
|||
—x m+it i , если gj = 1,
—I^m+l, ] ,| если gj = 0 .
9—644 |
129 |
1.6°. Анализ знака |
4* |
|
|
|
а) если Д < 0 , |
то |
вектор |
Ак подлежит |
вводу в базис; |
переход к выполнению пункта 2 ; |
|
|||
б) если д > 0 , |
то |
переход |
к подпункту |
1.7°. |
1.7°. Найдено |
оптимальное решение. |
С помощью |
||
А-шкалы определяются значения базисных переменных, а по e-шкале — значения внебазисных переменных. Элемент лгппл.о показывает оптимальное значение целевой функции.
2. |
|
Определение генеральной строки, т. е. определен |
|||||||
исключаемого из базиса вектора или обнаружение |
неиз |
||||||||
менности |
базиса. |
|
|
|
|
|
|
|
|
2.1°. |
Заполнение элемента р0 {граничное значение |
пе |
|||||||
ременной, соответствующей генеральному |
столбцу) |
и |
р* |
||||||
(дополнительный элемент |
генерального столбца): |
|
|
||||||
|
|
|
|
Рк= -1 . |
|
|
|
|
|
2.2П. Анализ величины |
|
|
|
|
|
||||
а) |
если A'ma-2.k = |
0, |
то |
переход |
к подпункту 2.3°; |
|
|
||
б) |
если х 1Гн 2,кУ |
0. |
то |
переход |
к подпункту 2.5°. |
|
|
||
2.3°. Анализ величины Am^i.k; |
|
|
|
|
|||||
а) |
если Am+i,k г-0, то переход к подпункту 2.6°; |
|
|
||||||
б) |
если A.n+i.k — 0 , то допущена ошибка |
при определе |
|||||||
нии генерального столбца. В этом случае необходимо прове рить текущую симплексную таблицу и обнаружить ошибку.
2.4Л. Заполнение вспомогательного столбца Дк но соот
ношениям |
|
|
|
|
|
_ ( — |
если |
Ат+2,к > 0 , |
, 2 |
..... т + 2 |
; |
1 AiK, |
если |
* = 1 |
|||
лгт+2,к < 0 , |
|
|
|
переход |
к подпункту 2 .6 °. |
|
|
|
2.5°. |
Заполнение вспомогательного столбца Дк по соот |
|||
ношениям |
|
|
|
|
2.6°. |
Заполнение элемента рк: |
|
||
|
рк, |
если х т+2.к > 0 |
или х т+2.к = 0, |
a .W i,k > 0 , |
|
рк, |
еслчи ^ir+2,k< 0 |
или АВ)Н2. к = 0 , |
а х т+1,к < 0 . |
|
|
|
130 |
|
