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

Zhadan_lektsii_6_semestr

.pdf
Скачиваний:
23
Добавлен:
03.06.2015
Размер:
10.08 Mб
Скачать

так,чтобы в новой угловой точке,соответствующей новому базису,значение целевой функции было бы меньше.Встает вопрос,каким образом это делать?Опишем данную процедуру подробно,условно ее можно разбить на три этапа.

Предполагаем,что задача(73)является невырожденной,т.е.все угловые точки X невырождены.Пусть x текущая угловая точка множества X и пусть B соот - ветствующий ей базис.Не умаляя общности считаем,что базис этой точки состоит из первых m столбцов матрицы A. Тогда A = [B, N], где det B = 0.Кроме того, JB(x) = [1 : m], JN (x) = [m + 1 : n] и для вектора x справедливо разбиение(74). Имеем также

b = BxB + NxN = BxB, xB = B−1b.

(75)

1)Выбор столбца матрицы N для ввода в базис.Чтобы перейти к новому базису,надо по крайней мере взять один столбец из матрицы N и заменить им какой - то столбец матрицы B. Встает вопрос , какой именно столбец следует взять изN?

Чтобы выяснить это,возьмем произвольный столбец ak из матрицы N и рассмот - рим n − m векторов

 

x

B

0

1a

k

 

 

 

 

 

 

 

λB

 

 

 

 

 

 

 

 

 

λ

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

..

 

 

 

 

 

 

 

xk = xk(λ) =

 

 

 

..

 

 

 

 

,

k JN (x),

(76)

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где λ > 0 и компонента λ является k-й компонентой вектора xk(λ).Имеем в силу(75)

и (76)

Axk = BxB − λBB−1ak + λak = BxB = b,

поэтому ограничение типа равенства Ax = b для всех векторов xk(λ) выполняется. Более того,так как xB > 0 и λ > 0, то для λ положительных и достаточно малых

получаем,что ≥ . Таким образом , допустимая точка для ≤ ÷ , xk(λ) 0n xk(λ) 0 < λ λk

где ÷ ≤ ∞.

0 < λk

Рассмотрим,какие значения принимает целевая функция в точках xk(λ).Имеем

 

c, xk(λ) =

cB, xB − λ cB, B−1ak + λck =

Обозначим

=

cB, xB − λ cB, B−1ak − ck .

k = cB, B−1ak − ck, k J

и составим из этих величин вектор ∆= [∆ 1, . . . , ∆n]. Формально его компоненты определены при всех k J, а не только при k JN (x). Тогда

c, xk(λ) = c, x − λ∆k, k JN (x).

(77)

41

Вектор ∆ иногда называют вектором оценок замещения.Как нетрудно прове-

рить,если

k

 

JB(x)

, то

k

= 0

.

Действительно, B−1ak

= ek при этих k,

где ek

 

 

R

m

 

 

 

k = c

B

, ek − c

k

 

 

k-й единичный орт из

 

.Поэтому

 

 

= 0.При остальных

k он

может принимать отличные от нуля значения.Понятно,что вектор ak, k JN (x), целесообразно вводить в базис только в том случае,когда соответствующая оценка замещения ∆k положительна.

2)Проверка оптимальности .Рассмотрим сначала случаи,которые позволяют сделать вывод,что текущая точка x либо оптимальна,либо в задаче(73)вообще не существует решения.

Случай оптимальности текущей точки.Смотрим оценки замещения ∆k, k J.

Если все ∆k ≤ 0 (для этого фактически надо проверить оценки замещения только при k JN (x)),то текущая точка x является оптимальной.Это видно из формулы(77), так как ввод в базис любого нового вектора ak из N приводит к тому,что значение целевой функции увеличивается(по крайней мере не убывает).Но можно обосновать это и более формальным образом.Обозначим u = (B−1)T cB. Тогда условие ∆k ≤ 0 может быть записано как

k = (B−1)T cB, ak − ck = u , ak − ck ≤ 0, k JN (x),

(78)

причем ∆k = 0, k JB(x). В матричной форме неравенства (78) принимают вид AT u ≤ c, т . е . точкаu оказывается допустимой в задаче,двойственной к рассматриваемой задаче(73),

b,Tu

→ max

(79)

A u

≤ c.

 

Кроме того,

c, x = cB, xB = cB, B−1b = (B−1)T cB, b = u , b .

Мы получили,что точки x и u являются допустимыми и в них значения целевых функций совпадают.Поэтому по теореме двойственности для пары задач(73)и(79) обе точки являются оптимальными каждая в своей задаче.

Случай отсутствия решения.Существует такой индекс k JN (x), что ∆k > 0 и B−1ak ≤ 0m.В этом случае можно сделать вывод,что допустимое множество X неограничено и существует луч,целиком принадлежащий допустимому множеству, вдоль которого целевая функция стремится к −∞.Действительно,при этом предположении xk(λ) ≥ 0n при любом λ ≥ 0.Кроме того,всегда по построению Axk(λ) = b. Поэтому xk(λ) X для всех λ ≥ 0.Имеем для этих x(λ):

c, xk(λ) = c, x − λ∆k → −∞

при λ → +∞.В этом случае работа симплекс метода также прерывается.

42

Рассмотрим наконец,последнюю возможность,которая позволяет перейти в новую угловую точку X,которой соответствует новый базис.Такой переход происходит, если для некоторого k JN (x) выполняется ∆k > 0 и B−1ak ≤0m.

3)Выбор столбца для ввода в базис .Пусть найдутся такие k JN (x) и i JB(x), что ∆k > 0 и (B−1ak)i > 0.В этом случае можно сделать итерационный шаг.Обозначим

+(x) =

 

 

B

−1

 

 

i > 0

 

JB+

i

JB(x) :

 

 

ak

 

 

и выберем из множества JB

(x) такой индекс s, что

 

 

 

 

λ

 

= min

 

(B−1b)i

=

 

(B−1b)s

.

(80)

 

 

 

 

 

i JB+(x) (B−1ak)i

 

(B−1ak)s

 

Заметим,что λ > 0, так как (B−1b)i = (xB)i > 0 для любого i JB(x).

Точка xø = xk(λ ) допустимая,а номер s, при котором достигается минимум в

(16),единственный.Это следует из предположения о невырожденности задачи.Более того,новая точка xø будет угловой точкой множества X, ее базис получается из

базиса B(x) = [a1, . . . , as, . . . , am] старой точки x удалением столбца с номером s и помещением на его место столбца ak, т . е .

B(øx) = [a1, . . . , ak, . . . , am] .

В новой точке xø компонента xøs равняется нулю,а компонента xøk, напротив , ста - новится положительной.Кроме того,

c, xø = c, x − λ ∆k < c, x ,

т.е.при переходе из x в новую точку xø значение целевой функции уменьшается. Итерация на этом заканчивается и метод идет на выполнение следующей итерации.

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

Суммируя вышесказанное,опишем следующий алгоритм решения задач линейного программирования.

Алгоритм симплекс-метода.

Пусть дана начальная угловая точка x0 и пусть найдена текущая угловая точка

xv.

Шаг1 .Ставим в соответствие точке xv множества индексов базисных переменных JB = JB(xv) и внебазисных переменных JN = JN (xv), а также матрицу базиса B.

Шаг2 .Если ∆k для любого k JN , то текущая точка xуг является решением задачи.Процесс останавливается с найденным решением.

43

Шаг3 .Если существует индекс k JN , для которого ∆k > 0 и B−1ak ≤ 0m, то процесс прерывается с утверждением,что в задаче не существует решения.

Шаг4 .Если существует такое k JN , что ∆k > 0 и B−1ak ≤0, то переходим в новую угловую точку xøv с меньшим значением целевой функции .

Шаг5 .Переходим на шаг1.

Данный алгоритм конечный,так как конечно число угловых точек в задаче. Нетрудно видеть,что оно не может превышать количество возможных базисов Cnm =

Cnn−1.

Симплекс-метод был предложен****

1.4.4.Симплекс-метод в табличной форме

Одним из достоинств симплекс-метода является возможность организовать его работу в табличной форме.Основой конструкции является симплекс-таблица,связанная с текущей угловой точкой x множества X и с ее базисом столбцами ai, i JB(x).

Размер таблицы (m+1)×(n+1). Будем считать , что строки и столбцы нумеруются от 0 до m и n соответственно.Саму таблицу будем обозначать Z, а ее элементы zij, 0 ≤ i ≤ m, 0 ≤ j ≤ n.Конкретное заполнение таблицы связано с текущей угловой точкой(и следовательно,с базисом данной угловой точки).По сути в ней содержатся разложения всех столбцов матрицы A и правой части b по векторам текущего базиса.

Пусть,для определенности,базис рассматриваемой угловой точки составляют

}.

первые

m

столбцов матрицы

A

, т . е .

 

{

 

},

JN (x) =

 

{

m + 1, . . . , n

 

 

 

 

 

 

 

 

JB(x) = 1, . . . , m

 

 

 

 

Тогда A = [B, N], где B = [a1, . . . , am], N

= [am+1, . . . , an].Имеем

 

det B = 0 и из

x = [xB, xN ], xN = 0n m следует,что

xB = B−1b, причем xB > 0.

 

 

 

 

 

 

 

 

 

÷

 

 

 

 

 

 

 

 

 

÷

 

 

 

 

 

 

Обозначим a0 = b и A = [a0

, a1, . . . , an].По другому матрицу A можно представить

÷

 

 

 

 

÷

это матрица Z без нулевой строки.Она имеет размер

как A = [b, B, N].Пусть

Z

m × (n + 1). Заполним Z÷,

полагая Z÷ = B−1A÷ или,в более подробной записи,

Z÷ =

÷

÷

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[÷z0, ZB, ZN ], где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 = B

−1

a0

= B

−1

 

 

÷

= B

−1

 

 

÷

−1

N.

 

 

 

 

 

 

b = xB, ZB

 

B = Im, ZN = B

 

 

 

 

Итак zik = (B−1ak)i, 1 ≤ i ≤ m, 0 ≤ k ≤ n. Заполнение нулевой строки матрицы Z отличается от заполнения других строк,а именно,ее элементы с первого вплоть до последнего полагаются равными: z0k = ∆k, 1 ≤ k ≤ n, где ∆ вектор оценок замещения в данной угловой точке x.Элемент z00 берется равным значению целевой

функции в точке x, т . еz. = c, x . С целью общности данное значение обозначим

00

также,как

0 = c, x = cB, xB = cB, B−1a0 = cB, B−1a0 − с0,

где положено: c0 = 0.

44

Удобно вверху над столбцами таблицы указываются номера соответствующих столбцов матрицы A,разложения которых даются в этих колонках.Также слева, указываются номера столбцов базиса.

После заполнения симплекс-таблицы проводится ее анализ.Возможны три ситуации:

1)Если z0k ≤ 0 для всех k JN (x), то текущая точка x является решением задачи, дальнейшие расчеты прекращаются.

2)Если z0k > 0 для некоторого k JN (x) и zik ≤ 0 для всех 1 ≤ k ≤ m, то расчеты также прекращаются,при этом в задаче не существует решения и можно указать луч,

принадлежащий допустимому множеству,вдоль которого значение целевой функции стремится к −∞.

3) Если z0k > 0 для некоторого k JN (x) и среди остальных компонент столбца с номером k найдется положительная компонента,то определяются номера всех таких

положительных компонент.Пусть Jk+ = {1 ≤ i ≤ m : zik > 0}.После подсчитывается

величина

 

 

zi0

 

zs0

 

λ

 

= min

=

.

 

 

 

+ z

ik

z

sk

 

 

i Jk

 

 

Элемент zsk объявляется ведущим элементом.Столбец as выводится из базиса,а столбец ak, напротив , вводится в базис . Все это соответствует переходу в новую уг - ловую точку x¯, в которой JB(¯x) = (JB(x) \ {s}) {k}.Слева вместо номера s ставится номер k.После этого производится перерасчет всех элементов таблицы.

¯

новая таблица,соответствующая новому базису JB(¯x).Перерасчет про-

Пусть Z

изводится по следующим формулам:

 

 

 

ij = zij

zik

0 ≤ i ≤ m, i = s,

0 ≤ j ≤ n,

(81)

 

 

zsj,

 

zsk

 

 

sj =

1

zsj, 0 ≤ j ≤ n.

 

(82)

 

 

 

 

 

 

zsk

 

Таким образом,из всех строк,кроме

s-й,вычитается

s-я строка,умноженная пред-

варительно на коэффициент zik/zsk, где i номер строки , из которой производится

вычитание.Строка с номером

s просто делится на ведущий элемент.При таком пре-

образовании в новой таблице

¯

в k-м столбце элемент z¯sk = 1,а остальные элементы

Z

zik = 0.

К формуле перерасчета(81)можно прийти следующим образом.Имеем

m

m

ak = B(B−1ak) = zikai =

zikai + zskas

=1

i=1, i=s

i

45

= zoj z0k zsj. zsk

и,поскольку ведущий элемент zsk всегда положителен,получаем

1

 

m

zik

 

ak

 

(83)

as =

 

=1, i=s

 

ai.

zsk

zsk

 

 

i

 

 

 

 

Далее,так как

 

 

 

 

 

m

 

 

 

 

aj = zijai, 0 ≤ j ≤ n,

i=1

то,подставляя(83),приходим к следующему представлению векторов a0, . . ., an в новом базисе.

aj =

 

m

 

zijai + zsjas =

 

 

 

 

 

i=1, i=s

 

 

 

 

 

 

m

 

 

 

 

 

 

1

 

 

m

zik

 

= i=1, i=s

zijai + zsj

zsk

ak

 

i=1, i=s zsk ai

=

 

 

m

 

 

 

zik

 

 

 

zsj

 

 

=

 

i=1, i=s

zij

zsk

zsj

ai +

ak.

 

 

 

 

 

 

 

 

 

zsk

 

 

Для элементов нулевой строки имеем

m

z0j = cB, B−1aj − cj = cizij − cj, 0 ≤ j ≤ n.

i=1

Поэтому

0j

= m

= im=1, = im=1,

i=1

= m

i=1

i=s ciij + ckkj − cj =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

zik

 

 

 

 

zsj

 

k

 

 

 

 

j

 

i=s c

 

 

zij − zsk zsj

+

 

c

 

j

c

 

 

=

 

 

zsk

 

 

 

 

i

 

 

 

zik

zsj

k

 

 

 

 

 

 

 

 

c

 

zij − zsk zsj +

 

c

 

 

− c

 

=

 

 

 

 

zsk

 

 

 

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

zsk

 

cizij

 

 

cj

m

cizik

 

 

ck

 

zsj

 

 

 

 

 

 

 

 

 

 

 

Так как разложения столбцов матрицы A, входящих в текущий базис , всегда дают единичные векторы(если они идут подряд,то образуют единичную матрицу), а соответствующие оценки замещения для этих столбцов всегда равны нулю , то нет особого смысла держать эти столбцы в таблице и поэтому их часто опускают.При этом..... ?

1.4.5.Выбор начальной угловой точки

.

Для нахождения начальной угловой точки применяются несколько способов.Одним из распространенных является

Метод искуственного базиса.Считаем,что b ≥ 0m.Если же для какой-либо компоненты bi вектора правой части b выполняется неравенство bi < 0, то , умножая одновременно i-ую строку матрицы A и i-ую компоненту вектора b на −1, приходим

46

к выполнению нужного неравенства.Строится вспомогательная задача

 

min

m=1 yi,

(84)

Ax + yi = b,

x ≥ 0n, y ≥ 0m.

Пространство переменных в этой задаче расширяется по сравнению с исходной за-

дачей(73).В качестве начальной угловой точки берется точка

x

=

0n

.

y

b

 

 

Если b > 0m,то данная угловая точка невырожденна.

Далее вспомогательная задача(84)решается симплекс-методом.Пусть найдено ее решение и пусть x и y соответственно первая и вторая компоненты векторов x и y в решении . Обозначим

 

 

 

 

m

 

 

 

 

 

i

 

 

 

 

µ =

 

yi .

 

 

 

 

 

 

=1

 

 

Возможны две ситуации.

 

 

 

 

 

1) µ

 

= 0, т . еy. = 0m. В этом случае x

 

угловая точка в исходной задаче .

 

 

 

 

 

 

2) µ

 

> 0, т . е . для хотя бы одной компоненты вектораy

выполняется yi > 0. В

 

 

 

 

 

 

 

этом случае допустимое множество X в исходной задаче(73)должно быть пустым.

Действительно,если X = , то найдется x X.Но тогда точка

 

 

 

 

 

x

 

 

 

 

x

=

 

.

 

 

 

y

 

0m

 

 

 

 

 

 

 

будет решением вспомогательной задачи и в ней значение целевой функции равно нулю.

С использованием метода искуственного базиса реализуется двухфазовый симплексметод решения задачи линейного программирования.Первая фаза состоит из решения вспомогательной задачи.Вторая фаза заключается в решении исходной задачи линейного программирования(73)из найденной угловой точки.Искуственная переменная при этом отбрасывается.

М-метод. В данном методе объединяются оба этапа нахождения начальной уг - ловой точки и последующего решения исходной задачи.

Пусть M достаточно большая положительная переменная и пусть , по прежне -

му, b ≥ 0m.Составляется так называемая M-задача:

 

min c, x + M

im=1 yi

,

Ax + y =

(85)

 

b,

 

x ≥ 0n, y ≥ 0m.

 

Утверждение7. Пусть исходная задача линейного программирования(73)раз-

47

решима.Тогда найдется такое число M ≥ 0, что для всех M > M в любом реше - нии [x , y ] задачи(85)точка x будет оптимальной для исходной задачи(73).При этом y = 0m.

Встаем вопрос,как выбирать константу M в(85)?Можно показать,что если взять в качестве M величину M = max1≤i≤m ui , где u оптимальное решение задачи(84),двойственной к(73),то утверждение7оказывается справедливым.

1.4.6.Модифицированный симплекс-метод

.

В обычном симплекс-методе работают с симплекс-таблицей Z.Ее элементы преобразуются по формулам(81),(82).В модифицированном симплекс-методе работают с матрицей базиса B, точнее , с обратной к ней матрицейB−1. Объясняется это тем , что для того,чтобы получить информацию о всех величинах,связанных с текущей угловой точкой,достаточно только знать матрицу B−1.Действительно,имея B−1, легко находим разложения всех столбцов матрицы A по текущему базису,а также величины

 

u = B−1 T cB, ∆k = u, ak − ck, xB = B−1.

Поэтому хранится

только матрица B

1, а новая матрица Bø−1

, соответствующая

 

 

новой угловой точке xø,вычисляется по старой матрице B−1 с использованием рекур - рентных соотношений,подобных(81), (82).

Пусть и ø соответственно базисы старой и новой угловых точек:

B B

ø

B = [a1, . . . , as, as+1, . . . am] , B = [a1, . . . , ak, as+1, . . . am] .

Пусть,кроме того,

−1 ø−1 ø ≤ ≤

B = [βij] , B = βij , 1 i, j m.

Формулы пересчета имеют следующий вид:

ø

βij

 

zik

 

= βij

 

 

βsj, i = s,

zsk

ø

1

 

βsj =

zsk

βsj

Справедливость этих формул проверяется путем умножения матрицы ø на матрицу

B

ø−1.

B

Одним из достоинств модифицированного симплекс-метода является то,что в случае разреженной матрицы A вычислительная схема может быть составлена так, что в ней участвуют лишь ненулевые элементы.

48

1.5.Методы минимизации на множествах простой структуры

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

1.5.1.Метод проекции градиента

 

Пусть требуется найти

(86)

f = min f(x),

x X

 

где X выпуклое замкнутое множество в Rn, f(x) дифференцируемая функция , определенная на некоторой области,содержащей множество X.Про такую задачу иногда говорят,что она является задачей с прямым ограничением,подчеркивая тем самым,что множество X здесь рассматривается как единое целое без уточнения его функционального описания.

Обозначим через X X множество оптимальных решений в задаче(86).Если x X ,то в силу необходимых условий минимума( ??) данная точка должна быть стационарной,т.е.быть решением вариационного неравенства с градиентным отображением fx(x),:

fx(x ), x − x ≥ 0 x X.

(87)

В задаче безусловной минимизации , когдаX = Rn,одним из основных методов решения был метод градиентного спуска,в котором строилась последовательность точек {xk} согласно следующей рекуррентной схеме

xk+1 = xk − αkfx(xk), k = 0, 1, . . . ,

(88)

где αk шаг спуска,определяемый по какому-либо правилу точной или приближенной одномерной минимизации.Однако,если X отлично от всего пространства Rn, то непосредственное применение градиентного метода затруднено,например,из-за возможного выхода точек за пределы множества X.

Рассмотрим теперь метод решения задачи(86),в котором все точки итеративного процесса принадлежат множеству X. В нем сочетаются идеи метода градиентного спуска и проектирования,поэтому он и получил название метода проекции градиен-

та.

В методе проекции градиента , как и в методе градиентного спуска , начальная точка x0 задается,причем x0 X,а последующие точки вместо(88)вычисляются

по рекуррентной схеме

xk+1 = πX (xk − αkfx(xk)) k = 0, 1, . . . ,

(89)

49

где πX(a) проекции точки a на множество X. Таким образом , вся последователь - ность {xk} оказывается принадлежащей допустимому множеству X. Шаг αk в (89) выбирается по одной из модификаций процедур одномерного поиска,обсуждаемых ниже.

Лемма3. Пусть x решение задачи (86). Пусть , кроме того X, выпуклое замкнутое множество.Тогда

x = πX (x − αfx(x ))

(90)

для любого α > 0.

Доказательство. На основании необходимых условий минимума дифференцируемой функции на выпуклом замкнутом множестве X, если x X решение задачи,то эта точка должна быть стационарной,т.е.для нее выполняется неравен-

ство(87).

Умножим неравенство(87)на α > 0 и перепишем в виде

x − (x − αfx(x )) , x − x ≥ 0 x X, α > 0.

Отсюда на основании утверждения ?? заключаем,что точка x является проекцией точки x − αfx(x ) на множество X. Таким образом , имеет место равенство (90).

Заметим,что если f(x) выпуклая дифференцируема функция,то опять же в силу утверждения ?? выполнение равенства(90)является не только необходимым, но и достаточным,для того,чтобы точка x X была решением задачи(86).

Обсудим вопрос о выборе шага αk в итеративном процессе (89). Возможно несколь - ко подходов,упомянем только три из них.

1)Правило постоянного шага.Согласно этому правилу шаг αk выбирается заранее,равным достаточно малой положительной величине.

2)Правило одномерной минимизации. Обозначим

φk(α) = f (xk(α)) , xk(α) = πX (xk − αfx(xk)) .

Согласно данному правилу шаг αk является решением задачи

φkk) = min φk(α).

α>0

3) Правило приближенной минимизации на отрезке [0, αˆ], где αˆ > 0 некоторый заданный максимально возможный шаг.Для приближенной минимизации может применяться правило Армихо,в котором путем дробления начального шага α = αˆ, добиваются выполнения неравенства:

f (xk(α)) − f(xk) ≤ ε fx(xk), xk(α) − xk ,

(91)

где 0 < ε < 1.Если неравенство(91)при данном α не выполняется,то его уменьшают, умножая на коэффициент 0 < θ < 1.

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]