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

Жолобов Ввведение в Математическое 2008

.pdf
Скачиваний:
294
Добавлен:
16.08.2013
Размер:
2.42 Mб
Скачать

2.4.3. Метод Лэнд и Дойг

Дана задача линейного частично-целочисленного программирования:

n

 

 

 

 

 

 

 

 

c j x j

max

(2.32)

j 1

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

aij xj ai , i

1, m

 

(2.33)

j 1

 

 

 

 

 

 

 

 

x j 0,

j

 

 

 

(2.34)

1, n

x j целые, j

 

 

, n1 n .

(2.35)

1, n1

Тот факт, что (2.32)-(2.34) – задача линейного программирования, сразу наталкивает на мысль, что границу (верхнюю) удобнее всего вычислять, решая именно эту задачу. Действительно, ведь всегда имеет место

Z1,2,3opt Z1,2,3,4opt .

Вопрос вычисления границы решен.

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

Рекордом будем называть допустимое решение задачи ЛЦП, доставляющее ЦФ значение, не меньшее, чем на любом известном на данный момент допустимом решении.

Шаг 1. Решим задачу ЛП (2.32)-(2.34). Если задача неразрешима, то и ЛЦП-задача (2.32)-(2.35) неразрешима. Полагаем N=1 и в предварительно очищенный список задач S заносим задачу ЛП

(2.32)-(2.35), дав ей обозначение З1 . В этот же список заносим оптимальное решение задачи, которое принимается в качестве верхней границы 1 .

Шаг 2. Имеем список задач S, в котором задачи упорядочены по невозрастанию оценок:

S {З1 ( 1 ), З2 ( 2 ), ... , ЗN ( N )}.

Если список пуст (S= ), ЛЦП-задача не имеет решения. Ко-

нец.

291

В противном случае из списка выбирается задача З1 – задача, имеющая максимальную оценку.

Шаг 3. Если оптимальный план выбранной задачи X1 удовлетворяет требованию целочисленности (2.35), то X1 – оптимальное решение исходной задачи, 1 – оптимальное значение ЦФ. Конец.

Шаг 4. Выбираем нецелую координату решения X1 . Пусть это бу-

дет координата x , имеющая в решении

X1 значение x . Форми-

руем и последовательно решаем две задачи – З1

и

З2

(рис. 2.23):

 

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

З1

 

З1

 

З2

 

 

 

З1

 

 

 

 

 

 

 

 

1

 

x [ x ]+1

 

1

 

 

x

[ x ]

 

 

 

 

 

 

 

 

 

 

Рис.2.23. Задачи, получаемые в результате ветвления

По результатам решения каждой из задач З11 и З12 выполня-

ются следующие действия.

Если задача имеет решение, то она вместе со своим оптимальным решением заносится в список задач S – в позицию, соответствующую полученному значению ЦФ (оценки). Таким образом, все задачи в новом списке S' упорядочиваются по невозрастанию оценок.

Шаг 5. Проводится сквозная перенумерация задач в новом списке. Этот список приобретает вид:

S {З1 ( 1 ), З2 ( 2 ), ..., Зl ( l ),..., ЗN ' ( N ' )}1 2 ... l ... N ' .

Из списка удаляются все бесперспективные задачи. Задача Зr считается бесперспективной, если в списке есть задача Зl , имеющая целочисленное решение и r > l , т.е., l r . Таким образом, срабатывает механизм рекордов. А именно, задача Зl , имеющая

целочисленное решение (если таковая есть), в новом списке будет занимать последнюю позицию. Этой задаче будет соответствовать рекорд.

В новом, очищенном от бесперспективных задач списке будет N задач (N N'). Принимаем S= S' и переходим к шагу 2.

292

Пример 2.17

Дана задача ЛЦП с целевой функцией Z=2x1+x2 max. Область допустимых решений соответствующей ЛП-задачи задана графически.

Приведенная ниже диаграмма иллюстрирует начало формирования списка задач по методу Лэнд и Дойг: из исходной задачи формируются две задачи. Ветвление осуществляется по координате x2, которая в оптимальном решении исходной задачи имеет нецелое значение (7/2) .

На следующей диаграмме представлена полная схема процесса решения задачи.

5

 

 

 

 

5

4

 

 

 

 

4

 

 

 

 

 

3

 

 

З1

 

3

=131/2 X=(5,7/2)

 

2

 

 

 

 

2

1

 

C

 

 

1

 

 

 

 

 

1

2

3

4

5

З21: x2 4

=13 X=(9/2, 4)

З11: x2 3=121/2 X=() 29/6, 3

C

1

2

3

4

5

293

З1:

1=131/2; X1=(5, 7/2)

 

 

 

З21: x2 4

 

 

 

 

 

 

 

 

 

 

З11: x2 3

 

 

 

 

=13; X1=(9/2, 4)

 

 

 

 

 

=122/3;

X=(29/6, 3)

 

 

 

 

 

 

З1

 

 

 

 

 

 

 

 

 

 

 

 

 

З2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З1:

 

 

 

 

 

З11: x2

4

9

 

 

 

 

З21: x2

5

2

29

/

 

 

 

 

 

1

 

 

 

 

/

 

 

 

Не имеет решения

 

=12

/3

; X=(

6, 3)

 

=12

/2

; X=(4,

 

2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З1

 

 

З2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З1:

 

 

 

 

 

З21: x1

4

 

 

 

 

 

З11: x1

5

=121/2; X=(4, 9/2)

 

=11;

X=(4, 3) Рек!

 

 

Не имеет решения

 

 

 

З1

 

 

 

 

 

 

 

З2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З21: x2 4

 

 

 

 

 

З21: x2

5

 

 

 

 

 

З11: x1

5

=12;

X=(4, 4) Рек!

 

 

=12; X=(7/2, 5)

 

 

=11; X=(4, 3)

 

 

 

З1

 

 

 

 

 

 

 

З2

 

 

 

 

 

 

 

 

З3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оптимальное решение

 

 

 

 

Бесперспективные задачи

 

2.4.4. Использование штрафов в методе Лэнд и Дойг

Допустим, решена некоторая задача из списка задач, и получено нецелочисленное решение этой задачи.

Оптимальная симплекс-таблица имеет вид (рис. 2.24):

Баз

Cбаз

А0

 

ср

 

 

 

сj

 

 

 

 

 

 

 

 

Ар

 

 

 

Aj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ар

 

ср

 

xp0

 

1

 

 

 

xpj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z0

 

0

 

 

 

j 0

 

 

Рис.2.24. Оптимальная симплекс-таблица

Пусть xp0 – значение некоторой базисной переменной xp в оптимальном решении, не удовлетворяющее требованию целочис-

294

ленности. Для определенности примем, что p {1,2,...,m}; а xj , где j {m+1,m+2,...,n} – небазисные переменные.

В p-й строке последней симплекс-таблицы записано следующее уравнение:

n

 

xp0= xp+ xpj x j

 

j m 1

 

или

 

n

 

xp= xp0 - xpj x j .

(2.36)

j m 1

Что означает ветвление по переменной xp ?

Это означает, что необходимо сформировать две новые задачи, в систему ограничений одной из которых должно войти огра-

ничение xp [xp0 ] + 1.

В систему ограничений другой задачи должно войти ограни-

чение xp [xp0 ] (рис. 2.25).

 

 

 

 

 

 

 

[xp0]

 

xp

[xp0 ]

+ 1

 

 

{ xp0}

 

1 - { xp0}

 

 

Случай

Б

 

Случай

А

Рис.2.25. Задачи, получаемые при ветвлении

Случай А. Переменная xp должна принять значение, не меньшее, чем [xp0 ] + 1. Следовательно, эта переменная должна быть увеличена, по крайней мере, на величину:

1 - { xp0}.

Как поведут себя свободные переменные?

n

xp= xp0 - xpj x j . j m 1

По крайней мере, одна из этих переменных (пусть это будет xj, для которой xpj < 0) должна увеличиться на некоторую величину

, которую можно найти из уравнения (2.36):

xp+(1 - { xp0})= xp0 - xpj(0 + ).

Здесь "0" – старое значение xj ; " " – новое значение. Ввиду того, что xp= xp0 , имеет место

295

1 - { xp0}= - xpj

Отсюда определяется :

= 1 {xp0 }

xpj

В разделе 1.2.15 было показано, что оценки свободных переменных – это взятые с обратным знаком коэффициенты, с которыми свободные переменные входят в целевую функцию, если базисные переменные выразить через свободные. То есть, справедливо следующее выражение:

 

 

 

 

n

 

 

 

 

Z = Z0 - j x j .

 

 

 

 

j m 1

 

Пусть теперь переменная xj увеличивается на величину =

1

{xp0

}

. Пусть при этом остальные свободные переменные не из-

 

xpj

 

 

 

 

 

 

меняют своих значений – остаются нулевыми. Следовательно, це-

левая функция должна уменьшиться на величину j

1 {xp0 }

(пом-

 

 

xpj

ним, что xpj < 0, а все j 0 ).

Теперь можно сделать вывод о том, что минимальная величина, на которую должно уменьшиться (ухудшиться) значение целе-

вой функции в результате наложения ограничения xp [xp0 ] + 1, определяется следующим образом:

Z p min{

 

1 {xp0 }

 

 

} .

 

 

U xpj 0

j

xpj

 

 

 

 

Эту величину принято называть штрафом сверху.

Следует подчеркнуть важное обстоятельство: для определения этого штрафа задачу можно не решать.

Всегда ли можно вычислить штраф сверху? Нет, не всегда. Действительно, может оказаться, что p-я строка симплекс-таблицы не имеет ни одной отрицательной координаты xpj < 0.

n

Вернемся к выражению xp= xp0 - xpj x j . Ограничение

j m 1

xp [xp0 ] + 1 эквивалентно следующему ограничению: 296

 

n

 

 

xp0 - xpj x j [xp0

] + 1.

 

j m 1

 

 

n

 

 

 

Отсюда следует xpj x j

-1+ xp0

- [xp0 ] .

Но xp0 - [xp0 ] = { xp0},

j m 1

т.е.

n

xpj x j -1+ { xp0}.

j m 1

Для того чтобы работать по симплекс-методу, это ограничение нужно привести к виду уравнения путем введения дополни-

тельной переменной yp 0. Соответствующая строка симплекстаблицы будет иметь вид:

n

 

-1+ { xp0} = xpj x j

+ yp .

j m 1

 

Левая часть этого уравнения – отрицательное число. Оценки остались неотрицательными. То есть теперь в симплекс-таблице записан псевдоплан: нужно работать по двойственному симплексметоду. В столбце A0 есть единственный отрицательный элемент (-1+ { xp0} ), но в соответствующей этому элементу строке нет ни одной отрицательной координаты.

Это – тот случай, когда в двойственном симплекс-методе срабатывает признак недопустимости задачи.

Таким образом, если штраф сверху не удается найти, соответствующую задачу можно не решать – она недопустима.

Случай Б. Переменная xp должна принять значение, не большее, чем [xp0 ] . Следовательно, эта переменная должна быть уменьшена, по крайней мере, на величину {xp0}.

Как "поведут себя" свободные переменные?

n

xp= xp0 - xpj x j j m 1

Эти переменные могут только увеличиваться. По крайней мере, одна из этих переменных (пусть это будет xj ), для которой

xpj > 0 , должна увеличиться на некоторую величину . Эту величину можно найти из уравнения (2.36):

xp - { xp0}= xp0 - xpj(0 + ).

Здесь "0" – старое значение xj ; " " – новое значение. 297

Ввиду того, что xp= xp0 , имеет место:

- { xp0}= - xpj .

Отсюда определяется :

=

{xp0

}

.

 

 

xpj

 

 

 

 

 

 

 

 

Как было показано ранее:

n

 

 

 

 

 

 

 

 

 

Z = Z0 - j x j .

 

 

 

j m 1

 

 

Пусть переменная xj увеличивается на величину =

{xp0}

.

 

 

 

 

 

xpj

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

функция должна уменьшиться на величину j

{xp0}

(помним, что

 

xpj

xpj > 0).

Теперь можно сделать вывод о том, что минимальная величина, на которую должно уменьшиться (ухудшиться) значение целе-

вой функции в результате наложения ограничения xp [xp0 ], опре-

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

 

 

 

 

Z p

 

 

{xp0 }

 

min{

 

} .

 

 

D

xpj 0

j

xpj

 

 

 

 

 

Эту величину принято называть штрафом снизу.

Так же, как и в предыдущем случае, для определения штрафа снизу задачу можно не решать.

Всегда ли можно вычислить штраф снизу? Нет, не всегда. Действительно, может оказаться, что p-я строка симплекс-таблицы не имеет ни одной положительной координаты xpj > 0.

n

Вернемся к выражению xp= xp0 - xpj x j . Ограничение

j m 1

xp [xp0 ] эквивалентно следующему ограничению:

n

xp0 - xpj x j [xp0 ].

j m 1

298

n

 

 

Отсюда следует xp0 - [xp0 ] xpj x j . Но xp0

- [xp0 ] = { xp0}, т.е.

j m 1

 

 

 

n

 

{xp0}

xpj x j .

 

j m 1

Для того чтобы работать по симплекс-методу, это ограничение нужно привести к виду уравнения путем введения дополнительной переменной yp 0. Соответствующая строка симплекстаблицы будет иметь вид:

n

 

- {xp0} = - xpj x j

+ yp

j m 1

 

Левая часть этого уравнения – отрицательное число. Оценки остались неотрицательными. То есть теперь в симплекс-таблице записан псевдоплан: нужно работать по двойственному симплексметоду. В столбце A0 есть единственный отрицательный элемент (- { xp0} ), но в соответствующей этому элементу строке нет ни од-

ной отрицательной координаты (так как все xpj 0).

В двойственном симплекс-методе срабатывает признак недопустимости задачи.

Таким образом, если штраф снизу не удается найти, соответствующую задачу можно не решать – она недопустима.

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

Следующий вопрос – это использование механизма штрафов для отсеивания бесперспективных ветвей.

Допустим, в результате решения серии задач ЛП в списке задач имеется некоторая задача, оптимальное решение которой удовлетворяет требованию целочисленности, и на этом решении целевая функция имеет значение R.

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

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

299

Пусть вычислены штрафы ZUp (сверху) и Z Dp (снизу).

Тогда открывается возможность установить "бесперспективность" соответствующих новых задач:

1. Z* - ZUp R – решать задачу, которая порождается введением

ограничения xp [xp0 ] + 1 не имеет смысла: оценка будет заведомо плохой;

2. Z* - Z Dp R – решать задачу, которая порождается введением

ограничения xp [xp0 ] не имеет смысла: оценка будет заведомо плохой.

Отсюда естественным образом вытекает следующее правило: если max{ Z* - ZUp , Z* - Z Dp } R , следует вообще отказать-

ся от ветвления по переменной xp (соответствующая ветвь просто отбрасывается).

Ветвление имеет смысл осуществлять по той переменной, которая имеет максимальный штраф.

Штраф переменной xp (p=1,2,...,m) определяется следующим образом:

Z p = max{ ZUp , Z Dp }.

Таким образом, для ветвления выбирается переменная с максимальным штрафом – ускоряется процесс уточнения оценки.

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

чи.

Впервую очередь решается та задача, которая обладает минимальным штрафом (сверху или снизу).

Эта задача, если, конечно, она перспективна, решается и помещается в список.

Затем исследуется вторая задача (если она есть). Если она перспективна (первая решенная задача может сделать вторую бесперспективной), то решается и помещается в список задач.

Вобщем случае перспективность той или иной задачи проверяется два раза: до и после решения.

Взаключение этого раздела о приближенном решении задач

ЛЦП методом Лэнд и Дойг.

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

300