Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Арутюнян А.Г. Применение математических методов и ЭВМ в народном хозяйстве

.pdf
Скачиваний:
39
Добавлен:
23.10.2023
Размер:
5.54 Mб
Скачать

Учет этого факта упрощает вычислительную схему выбо­ ра минимальной относительной оценки при выборе гене­ рального столбца. Упрощается и структура е-шкалы (см. параграф 3 третьей главы первого раздела); вместо трех уровней ( —1, 0 и - f l ) здесь будем иметь только два уровня.

Отметим, что учет приведенных особенностей структуры задачи не меняет укрупненную схему ее решения. Измене­ ния относятся только к деталям реализации общего алго­ ритма. Чтобы по возможности более усовершенствовать алгоритм для решения рассматриваемой задачи, произведем еще некоторые изменения.

Из алгоритма решения общей задачи было ясно, что в (/я -)-1)-ой строке текущей симплексной таблицы исполь­ зовались всего три элемента (лга+1,0, -*ш-и, к и x 'm+i. к). Ясно, что при достаточно больших значениях п по общей схеме теряется большое количество мест (вместо трех использу­ ется (« + 2) места). С другой стороны, указанные места ис­ пользуются только для преобразования элементов основной части текущей симплексной таблицы. Поэтому при решении общей задачи из текущей симплексной таблицы исключается указанная вспомогательная строка, и для целей хранения используемых трех элементов выделяются три определен­ ных места.

Как известно (см., например, [92]), столбцы, соответст­ вующие векторам текущего базиса, образуют .единичную подматрицу. Значит, можно не запоминать на каждом шагу столбцы базисных векторов, так как при надобности их можно восстановить. Идея возможности незапоминания столбцов текущей симплексной таблицы, соответствующих базисным векторам-, впервые была предложена Р. Гомори в разработанном им алгоритме решения задачи целочислен­ ного линейного программирования (см. [22]). Разумеется, при этом алгоритм решения задачи в определенной степени усложняется. В этом случае не только усложняется схема преобразования элементов текущей симплексной таблицы, но и увеличивается количество мест для хранения номеров внебазисных векторов. При решении задачи по общей схеме каждый вектор условий (вернее, его представление по век­ торам базиса) занимает определенный фиксированный стол-

161

11—644

бец симплексной таблицы. Так, на любом шаге вектор Aj занимает /-ый столбец таблицы (напомним, что вектор ограничений занимает нулевой столбец). При измененной вычислительной схеме алгоритма для запоминания коэффи­ циентов представления исключенного из базиса вектора по векторам нового базиса используется генеральный столбец, элементы которого преобразуются не по общей схеме, а специальным образом. Для вывода формул преобразования предположим, что генеральный (ft-ый) столбец занимают коэффициенты представления внебазисного вектора Аык, а r -ую позицию базиса занимает вектор Aj f (r — номер гене­ ральной строки). Ясно, что относительно текущего базиса указанные векторы будут иметь следующие представления:

 

л . , = £ о - л 1, + 1 'Л ,1+ !

о-л ,1= 2 ^|Л г

1 -1

1 -1

I—Г+1

1-1

Эти коэффициенты

запишем в виде

столбцов с номе­

рами »ft“ и „г“ :

 

 

 

 

■*1к.

х ,Л = 0 ),

 

 

*«k.

 

 

 

Х гк,

( = 1 ) ,

 

 

x :-t 1, к,

Jcr+-l. г ( = 0 ),

 

* т (= 0 ) .

Применим ко второму столбцу формулы преобразова­ ния элементов текущей симплексной таблицы (здесь j = r):

х к ------ - jcik при i ф г,

х гк

при i г.

*fk

Учитывая значения элементов x ir, получим: / — при Iф, Г,

- При Iг.

162

Так как элементы x h' должны занимать места соот­ ветствующих элементов * |к, то полученные формулы мож­ но переписать в следующем виде:

при i Ф г,

1

( 22.1)

-----при

i = г.

Х,ь

 

При этом подразумевается, что в й-ом столбце новой симплексной таблицы записываются коэффициенты пред­

ставления

исключенного из базиса вектора A s

по

векто­

рам нового базиса. Ясно, что в новом базисе вектор

введенный в базис,

имеет представление, имеющее

в г-ой

позиции

„1“,

а в

остальных

позициях — нули.

Нетрудно

заметить,

что

величина Zj — Cj

тоже преобразуется соглас­

но формуле (2 2 .1 ).

Итак, ценой незначительного усложнения вычислитель­ ной схемы преобразования элементов текущей симплексной таблицы можно сэкономить достаточное количество мест. Последнее обстоятельство имеет важное значение при ре­ шении задач больших размеров.

§ 3. Алгоритм решения вспомогательной канонической задачи

Приведем краткое описание вычислительной схемы алгоритма решения задачи Б'. На каждом шаге ориенти­ руемся основной симплексной таблицей размера (m -f-l)x X (ra -fl), четырьмя вспомогательными столбцами и двумя вспомогательными строками. Значит, текущая симплексная таблица будет иметь следующий вид (см. таблицу 1 ).

В первых т строках нулевого столбца заполняются значения базисных переменных, а в (ffi-f-l)-oft строке — те­ кущее значение целевой функции. В первых т строках о с ­ тальных п столбцов основной симплексной таблицы запол­ няются коэффициенты представлений внебазисных векторов по текущему базису. В (m -f-l)-oft строке этих же столбцов заполняются соответствующие выражения ZNk — £NkВспо-

163

Т а б л и ц а 1

 

Общий вид текущей симплексной таблицы [вспомогательной канонической задачи

 

 

Строки^''''''-

0

>

2

k

Л 'ы

7

e

N'

 

 

 

"k

 

 

1

*10

 

 

* i k

-*ln

дг'т

Ti

Bj

N 't

2

Х20

Хи

•*22

•*2k

*2„

•*2k

72

e 2

N't

'

 

 

 

 

 

Jf'rK

>

e r

N 't

 

 

 

 

 

 

 

 

 

 

 

•*Ш2

 

 

-*mk

7m

y ra

N 'm

м + 1

* « + 1 .0

■*чп4-], 1

* т + 1 . 2

*щ-г1. k

•*m+l, n

x m+1, k

7m+ l

e m+l

-

5

-

Si

S2

Sk

5 n

-

-

-

-

N

-

ЛГ,

N t

^k

 

-

-

-

-

могательные столбцы /4'цк, f, В н N' имеют то же самое назначение, что и в общей задаче.

В вспомогательной строке S заполняются верхние пре­ делы (Sj) изменения переменных задачи. В вспомогательной строке N заполняются номера внебазисных векторов и уров­ ни е-шкалы. Так, в позиции iVk заполняется номер внебазисного вектора, занимающего £-ый столбец основной симп­ лексной таблицы, и характеристика eN(i, показывающая с какой границей изменения совпадает текущее значение соответствующей внебазисной переменной. Здесь восполь­

зуемся следующими уровнями е-шкалы:

__1 1, если

JCj = 0 ,

1 1 1, если

Xj »

Теперь установим правила заполнения исходной симп­

лексной таблицы. Векторы

соответствующие пере­

менным jCn+i* образуют единичную подматрицу. В силу не­ отрицательности величин эти векторы образуют базис. Соответствующее базисное решение выражается вектором

Х ° а »(х 1°, х °,..., х п°,

;t011+m),

компоненты

которого

определяются соотношениями:

 

 

Г0 „ р и у = 1,

2 ,...,

 

(23.1)

1 bi при у = п + 1, 4 + 2 ,...,

п-\- т.

 

Отсюда видно, что

первые т строк нулевого

столбца

исходной симплексной таблицы заполняются соответствую­ щими величинами x l0= b it a (m -t 1)-ая строка этого же столб­ ц а — исходным значением целевой функции JtVfj, о“ 0 . Так как векторы исходного базиса совпадают с единичными векторами «-мерного пространства, то представление каж­

дого внебазисного

вектора

 

( / = 1, 2 ,...,

п) по векторам

базиса будет совпадать с его

представлением по координат­

ным направлениям;

иными словами, будем

иметь:

 

 

Xjjsssflij, i =

l, 2,...,

nr, J — 1, 2.....

п.

 

Поскольку в задаче

cn+ i= 0 ( j* » l, 2,...,

т),

то исход­

ное значение каждой величины

j *= Zj —

будет сов­

падать

с

Cj“ . Поэтому

в (« + 1 ) - у ю

строку каждого

столбца

заполняем

соответствующую величину

»— с “ .

В /-ой позиции Д"-шкалы (вспомогательного столбца N')

заполняем соответствующий индекс (4 + /) .

Остальные вспо-

165

могательные столбцы заполняются в процессе выбора гене­ ральной строки и преобразования элементов основной сим­ плексной таблицы.

В вспомогательной строке S заполняются верхние гра­

ницы (Sj) изменения основных переменных

1, 2 ..... п).

В строке N заполняются нули (элементы е-шкалы) и номера

внебазисных векторов ЛД / = 1, 2 .....

п).

 

Имея заполненную исходную

симплексную

таблицу,

можно начать процедуру оптимизации. Приведем после­ довательность вычислений. Каждый шаг начинается с вы­ бора минимальной относительной оценки. По аналогии с общим случаем берется произвольно большая величина М (для начального сравнения), сравнивается с произведением epjj х т+1, ] и выбирается из них меньшее. Очевидно, здесь меньшим будет указанное произведение. Фиксируются номер

столбца

1“, номер

внебазисного вектора

и уровень

-г-шкалы ,г,“ .

 

 

Определяем:

 

 

 

р =zmin ( — sNj * m+i, i )•

(23.2)

Если

pS*0, то

все относительные оценки

внебазисных

векторов неотрицательны; следовательно, для текущего

базисного

решения признак оптимальности выполнен.

Если

же р < 0 ,

то выбранный столбец

(обозначим его номер че­

рез k)

является

генеральным,

т. е.

вектор Лм

подлежит

вводу

в базис.

 

 

 

 

 

 

 

 

Для заполнения вспомогательного столбца Л'ык исполь­

зуется

генеральный столбец и характеристика

гк:

 

 

 

 

Ek -Xjk, ^

1»

2 ,..,,

т —(-1 ,

 

 

Одновременно характеристика

запоминается в

опре­

деленном

месте (условно

назовем / 2) для дальнейшего ис­

пользования. Заметим, что это

число

будет играть

роль

элемента x 'm+1, k

общего

алгоритма. В зависимости от зна­

ка ек выбираются

числа / , и / / ,

играющие соответственно

роли

элементов

х ш+]_о и f m+i

общего

алгоритма.

Если

ek= —1, то принимается

/ а =

0 , / , ' =

SNk, причем при на­

хождении числа

используется N-шкала. Если же ек= 1 ,

то принимается / , = SN

/ / =

0 .

 

 

 

 

 

Элементы столбца

7

выбираются

согласно следующим-

соотношениям:

 

 

 

 

 

 

 

 

[

0 ,

если

лГ(к' >

0 ,

 

 

f i e“ j 5 Ni,

если

jcik' <

0 , i =

l , 2 ,..., т.

 

 

1 + о о ,

если

Хк =

0 ,

 

 

Первые т элементов столбца в

определяются по фор­

муле:

 

 

 

 

 

 

 

 

 

 

е,=*

- —7-^-,'если

7i<C + °c,

 

 

 

-*ik’

 

 

 

 

f i - f x

 

 

 

+ 0 0 , е с л и 7 j = + o o ,

 

а в с

 

 

 

 

 

 

 

 

Л

 

 

 

 

 

 

 

Для

выбора

генеральной

строки

в столбце 0

отыски­

вается минимальный элемент:

 

 

 

 

 

 

 

В0 = min 0 |,

 

 

 

 

 

 

 

Ui<m+1

 

 

Если

минимум достигается

для единственного

индекса

(обозначим, как и прежде, этот индекс через г), то соот­ ветствующая строка является генеральной. В противном случае имеется ситуация вырожденности. Как указывалось при описании общего алгоритма, в случае вырожденности рассматривается задача, в которой вектору ограничений придается определенное приращение, зависящее от доста­ точно малой величины е. Аналогично общему случаю, в

качестве отклоняющих векторов R\

выбираются

векторы,

текущего базиса, т. е.

 

 

 

[

A n.',

если

-C|0 < [S n.',

 

 

/?, = {

'

если

'

г = 1, 2 .....

т.

! — An.',

jC(0 = S n.',

 

 

Так как столбцы базисных векторов не фигурируют в текущей симплексной таблице, то для определения единст­ венного минимума используются /V'-шкала и значения соот­

ветствующих элементов нулевого столбца.

 

Предположим,

что при определении 0 Оминимум дости­

гается для строк

гх

/ 2 __<С[

С

помощью TV'-шкалы

определяется

базисный

вектор A n.’

и

сравниваются

вели­

чины Х\ п и

S n . ’ . Е сли

Jti0 — S nj', то

в

качестве генераль­

ной выбирается строка

г,. Так

как

Г\ AY = — 1,

7 = Q

167

для 1= 1, 2 ,..., 1, / , - | - 1 ..... от, то минимальное отноше­ ние достигается при i=^iv Если x-t 0 <5ы,|, то из дальней­ шего рассмотрения исключается строка iv поскольку при i«etj указанное отношение будет максимальным (при осталь­ ных i эти отношения равны нулю). Очевидно, что не боль­ ше, чем через I анализов единственным способом будет определена генеральная строка.

Элементы нулевого столбца преобразуются по анало­

гии с общим алгоритмом, а именно:

 

V

=

" Р"

i = ' ' 0 + 1’

(23.3)

 

1ЛГ|0 “ * ^o-^ik в остальных случаях,

 

где v =

eit + IevI

 

 

 

 

—— -'-iU

 

 

 

 

 

2

 

 

 

 

Далее номер

генеральной строки (г) сравнивается с

т -f-1.

Если r =

m~\-1, то базис остается прежним; ме­

няется

только уровень еык:

 

 

 

 

 

e'N

=

- s N

 

и осуществляется

переход

к

следующему* шагу

оптими­

зации. Если же r < m + 1, то

базис меняется. В этом слу­

чае необходимо получить представление каждого внебазисного вектора по векторам базиса.

Для этого необходимо осуществить преобразование основной симплексной таблицы в целом. Как указывалось, в первую очередь преобразуются все столбцы, кроме ге­ нерального.

Затем по формулам (22,1) преобразуются элементы ге­ нерального столбца. Номер введенного в базис вектора Nv заполняется в r-ой строке шкалы Л"(Л"Г), а номер исклю­ ченного из базиса вектора (N'r) заполняется в k-ou столб­

це N-шкалы (Nk); одновременно заполняется

характерис­

тика sk, которая выбирается в зависимости от

знака эле­

мента xrk:

 

 

1,

если л:гк]> 0 ,

 

1,

если xrk< 0 .

 

Завершая эти действия, осуществляется переход к сле­ дующему шагу оптимизации. Ясно, что ва конечное число шагов получим оптимальное решение задачи Б'.

Приведем еще некоторые особенности данной задачи, позволяющие уменьшить количество дополнительных эле* ментов в текущей симплексной таблице.

Если вектор отклонения исключается из базиса, то соответствующая переменная может принимать только ну­ левое значение (нижняя граница изменения). Последнее следует из того факта, что все элементы исходной симп­ лексной таблицы неотрицательны и любое приращение основных переменных, требующее исключения из базиса вектора отклонения, принуждает эту переменную только убывать. С другой стороны, в общем случае на перемен­ ные отклонения можно не накладывать ограничения сверху. Ясно, что в силу ограниченности величин Ь\ каждая пере­ менная отклонения не сможет неограниченно возрастать, если остальные переменные остаются конечными. Следонагельно, при неограниченном возрастании одной перемен­ ной (отклонения) по точкам допустимого множества реше­ ний задачи, неограниченно будет возрастать и другая пере­ менная (основная переменная). Но в силу ограничений (21.5) основная переменная не может неограниченно возрастать. Следовательно, невозможно и неограниченное возрастание переменной отклонения. Равенство x n+i = 6 ; выполняется только для плана, в котором

X j=:0 для всех а ,) > 0 , j = 1, 2..... п.

(23.4)

Если вектор /1,,+i исключается из базиса

в первый раз

(разумеется, при этом одна из основных внебазисных пере­

менных с коэффициентом

принимает положительное

приращение),

то переменная x aJri в новом плане превра­

щается в нуль.

Если тот же вектор на некоторых шагах сно­

ва вводится в базис, то ясно, что в новом

плане Jtn+ i< bi.

Если вектор An+i вторично исключается из базиса и

переменная х п-и принимает значение л-п_|_|=

/?ь то должны

выполняться условия (23.4). А эго невозможно, так как на текущем решении значение целевой функции уже строго положительно (напомним, что при исходном решении зна­ чение целевой функции равно нулю). Учитывая это свой­ ство, при решении задачи можно не запоминать верхние границы изменения переменных отклонения и при необ­ ходимости (именно при построении столбцов Л'м. и у)

109

вместо верхней границы любой переменной отклонения использовать произвольно большую величину М. Это обстоятельство было учтено при построении симплексной таблицы. Нетрудно заметить, что при этом можно сэконо­ мить т мест хранения элементов текущей симплексной таблицы.

Изучение алгоритмов (как общего, так и приведен­ ного) показывает, что на каждом шагу столбец И исполь­ зуется только для хранения отношений

ЛЪ7 -^ -, / = 1, 2 ,..., т

и для выбора минимального из них. А если указанные отно­ шения уже определены, то столбец у не используется. Зна­ чит, для хранения этих отношений вместо столбца В мож­ но использовать столбец у. Этим сокращается один вспо­ могательный столбец в текущей симплексной таблице.

Детализированная блок-схема предложенного рацио­ нального алгоритма приведена на стр. 171—176.

Блок-схема разработана по следующему принципу. Блоки арифметических операций и засылки чисел описаны прямоугольниками, внутри которых указаны соответствую­ щие операции. Каждый прямоугольный блок имеет единст­ венный выход. Блоки сравнения и анализов описаны овало­ образными фигурами, содержащими операцию сравнения и сравниваемые величины с отметкой вопросительного знака. Каждый блок сравнения имеет два выхода: „да“ и „нет” . Выход „да“ соответствует случаю выполнения указанного

вблоке условия, а выход „нет“ —нарушению этого условия.

Улевого верхнего угла каждого блока указывается его номер. Каждый блок может иметь несколько входов. Если

вход идет непосредственно из другого блока непрерывной стрелкой, то на стрелке не указывается номер блока, от­ куда выходит эта стрелка. Если же вход данного блока идет из других блоков, то в начале стрелки изображается кружок, внутри которого указывается блок, откуда выходит данная стрелка. Если выход данного блока непосредственно не входит в другой блок, то к концу стрелки этого выхода изображается кружок с указанием номера блока, куда дол­ жна входить данная стрелка.

170

Соседние файлы в папке книги из ГПНТБ