Штрафы и их использование в методе Лэнд и Дойг Выбор переменной для ветвления в методе Лэнд и Дойг
Допустим, решена некоторая задача из списка задач и получено нецелочисленное решение этой задачи.
Оптимальная симплекс-таблица имеет вид:
Баз. |
Cбаз |
А0 |
|
ср |
|
сj |
|
|
|
|
|
Ар |
|
Aj |
|
|
|
|
|
|
|
|
|
Ар |
ср |
xp0 |
|
1 |
|
xpj |
|
|
|
|
|
|
|
|
|
|
|
Z0 |
|
0 |
|
j0 |
|
Пусть xp0 - значение некоторой базисной переменной xp в оптимальном решении, не удовлетворяющее требованию целочисленности. Для определенности примем, что p{1,2,...,m}; а xj , где j {m+1,m+2,...,n} - небазисные переменные.
В p-той строке последней симплекс-таблицы записано следующее уравнение:
xp0= xp+
или
xp= xp0 - (*)
Что означает ветвление по переменной xp ?
Это означает, что необходимо сформировать две новые задачи, в систему ограничений одной из которых должно войти ограничение xp [xp0 ] + 1.
В систему ограничений другой задачи должно войти ограничение xp [xp0 ] .
Случай a) : Переменная xp должна принять значение, не меньшее, чем [xp0 ] + 1. Следовательно, эта переменная должна быть увеличена, по крайней мере, на величину:
1 - { xp0}.
Как "поведут себя" свободные переменные?
xp= xp0 -
По крайней мере, одна из этих переменных (пусть это будет xj), для которой xpj<0, должна увеличиться на некоторую величину , которую можно найти из уравнения (*):
xp+(1 - { xp0})= xp0 - xpj(0 + ).
Здесь "0" - старое значение xj ; "" - новое значение.
Ввиду того, что xp= xp0 , имеет место:
1 - { xp0}= - xpj .
Отсюда определяется :
=.
Известно, что оценки свободных переменных - это взятые с обратным знаком коэффициенты, с которыми свободные переменные входят в целевую функцию, если базисные переменные выразить через свободные. То есть, справедливо следующее выражение:
Z = Z0 - .
Пусть теперь переменная xj увеличивается на величину =. Пусть, при этом, остальные свободные переменные не изменяют своих значений - остаются нулевыми. Следовательно, целевая функция должна уменьшиться на величину j (помним, что xpj < 0; кр. того ).
Теперь можно сделать вывод о том, что минимальная величина, на которую должно уменьшиться (ухудшиться) значение целевой функции в результате наложения ограничения xp [xp0 ] + 1, определяется следующим образом:
.
Эту величину принято называть "ШТРАФОМ СВЕРХУ".
Следует подчеркнуть важное обстоятельство: для определения этого штрафа задачу можно не решать.
Всегда ли можно вычислить штраф сверху? Нет, не всегда. Действительно, может оказаться, что p-тая строка симплекс-таблицы не имеет ни одной отрицательной координаты xpj < 0.
Вернемся к выражению xp= xp0 -. Ограничение xp [xp0 ] + 1 эквивалентно следующему ограничению:
xp0 - [xp0 ] + 1. Отсюда следует:
-1+ xp0 - [xp0 ] . Но xp0 - [xp0 ] = { xp0}, то есть:
-1+ { xp0}.
Для того, чтобы работать по симплекс-методу, это ограничение нужно привести к виду уравнения путем введения дополнительной переменной yp 0. Соответствующая строка симплекс-таблицы будет иметь вид:
-1+ { xp0} = + yp .
Левая часть этого уравнения - отрицательное число. Оценки остались неотрицательными. То есть, теперь в симплекс-таблице записан псевдоплан: нужно работать по двойственному симплекс-методу. В столбце A0 есть единственный отрицательный элемент (-1+ { xp0} ), но в соответствующей этому элементу строке нет ни одной отрицательной координаты.
Это ‑ тот случай, когда в двойственном симплекс-методе срабатывает признак недопустимости задачи!
Таким образом, если штраф сверху не удается найти, соответствующую задачу можно не решать - она недопустима.
Случай b) : Переменная xp должна принять значение, не большее, чем [xp0 ] . Следовательно, эта переменная должна быть уменьшена, по крайней мере, на величину { xp0}.
Как "поведут себя" свободные переменные?
xp= xp0 -
Эти переменные могут только увеличиваться. По крайней мере, одна из этих переменных (пусть это будет xj ) , для которой xpj > 0 , должна увеличиться на некоторую величину . Эту величину можно найти из уравнения (*):
xp - { xp0}= xp0 - xpj(0 + ).
Здесь "0" - старое значение xj ; "" - новое значение.
Ввиду того, что xp= xp0 , имеет место:
- { xp0}= - xpj .
Отсюда определяется :
=.
Как было показано ранее:
Z = Z0 - .
Пусть переменная xj увеличивается на величину =. Пусть, при этом, остальные свободные переменные не изменяют своих значений - остаются нулевыми. Следовательно, целевая функция должна уменьшиться на величину j (помним, что xpj > 0).
Теперь можно сделать вывод о том, что минимальная величина, на которую должно уменьшиться (ухудшиться) значение целевой функции в результате наложения ограничения xp [xp0 ] определяется следующим образом:
.
Эту величину принято называть "ШТРАФОМ СНИЗУ".
Здесь, как и в предыдущем случае, для определения штрафа снизу задачу можно не решать.
Всегда ли можно вычислить штраф снизу? Нет, не всегда. Действительно, может оказаться, что p-тая строка симплекс-таблицы не имеет ни одной положительной координаты xpj > 0.
Вернемся к выражению xp= xp0 -. Ограничение xp [xp0 ] эквивалентно следующему ограничению:
xp0 - [xp0 ]. Отсюда следует: xp0 - [xp0 ] . Но xp0 - [xp0 ] = { xp0}, то есть:
{ xp0} .
Для того, чтобы работать по симплекс-методу, это ограничение нужно привести к виду уравнения путем введения дополнительной переменной yp 0. Соответствующая строка симплекс-таблицы будет иметь вид:
- { xp0} = - + yp .
Левая часть этого уравнения - отрицательное число. Оценки остались неотрицательными. То есть, теперь в симплекс-таблице записан псевдоплан: нужно работать по двойственному симплекс-методу. В столбце A0 есть единственный отрицательный элемент (- { xp0} ), но в соответствующей этому элементу строке нет ни одной отрицательной координаты (т. к. все xpj 0).
В двойственном симплекс-методе срабатывает признак недопустимости задачи!
Таким образом, если штраф снизу не удается найти, соответствующую задачу можно не решать - она недопустима.