ТРАНСПОРТНАЯ ЗАДАЧА

Рис. 4.2. Метод отсечения Гомори

 

Формирование правильного отсечения. После каждой итерации симплекс-метода система ограничений ЗЛП имеет вид

, (4.1)

где {БП} – множество базисных переменных.

Если выполняется условие оптимальности задачи, то все Находим оптимальное решение. Если все компоненты опти­мального плана целочисленны, то задача решена. Предпо­ложим, что некоторые β0 – нецелые. Пусть компонента i0 – нецелая. Рассмотрим i0-е равенство системы (4.1), для которой выполняется условие оптимальности, т. е.

. (4.2)

Перейдем к дальнейшему изучению уравнения (4.2). Найдем целую и дробную части его коэффициентов и . Т.к. по определению дробной части числа , получим:

. (4.3)

Так как первое слагаемое равенства (4.3) есть целое число, то, для того чтобы было целым, необходимо, чтобы второе слагаемое также было целым, т. е. величина

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

В самом деле, величинане может быть отрицательной. Из определения дробной части числа следует, что . Так как
– целое, то из предположения, что > 0, должно следовать , что противоречит определению дробной части числа.

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

. (4.4)

Теорема 4.1. Неравенство (4.4) определяет правиль­ное отсечение Гомори, т. е.: 1) является линейным; 2) отсе­кает найденное оптимальное нецелочисленное решение ЗЛП; 3) не отсекает ни одного целочис­ленного плана ЗЛП.

Доказательство.

1. Линейность соотношения (4.4) очевидна.

2. Пусть х*нц – оптимальный нецелочисленный план ЗЛП, причем, например, координата есть число нецелое. Покажем, что это решение не удов­летворяет условию (4.4). Поскольку х*нц оптимален,то. Поэтому

. (4.5)

Учитывая равенство (4.5), из условия (4.4) имеем , что противоречит определению дробной части чис­ла. Итак, оптимальное решение х*нц ЗЛП не удовлетворяет условию (4.4).

3. Требование 3 по существу доказано при формирова­нии условия (4.4). В самом деле, предположим, что существует целая точка х*ц ЗЛП, кото­рая не удовлетворяет условию (4.4), т. е.

. (4.6)

Так как и , то, учитывая неравенство (4.6), получаем

,

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

Таким образом, соотношение (4.4) определяет правильное отсечение Гомори.

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

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

Опишем алгоритм метода Гомори, использующий симплекс-метод.

1. С помощью симплекс-метода находится решение х* задачи линейного программирования без учета требования целочисленности. Если длях* условие целочисленности выполняется, то задача решена. В противном случае среди чисел последнего столбца симплекс-таблицы, определяющей решение х*, есть такие, что .

2. Среди нецелых элементов выбирается произвольный элемент (например, с максимальной дробной частью). По r-й строке симплекс-таблицы составляется дополнительное ограничение вида

(для определенности мы полагаем, что свободные переменные имеют номера т+1, …, п ). С помощью вспомогательной переменной это ограничение представляется в виде равенства

и вводится в симплекс-таблицу дополнительной строкой.

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

3. Для перехода к допустимому базисному решению произво­дятся следующие операции:

а) строка с отрицательным свободным членом считается разрешающей;

б) если все коэффициенты разрешающей строки , то задача не имеет реше­ния, в противном случае номер l разрешающего столбца нахо­дится из условия

,

где минимум берется по всем отрицательным ;

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

4. Если найденное в разделе 3 решение задачи линейного программирования удовлетворяет условию целочисленности,товычисления завершаются, а если нет, то продолжаются переходом к разделу 2 описания алгоритма.

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

Пример 4.1. В качестве примера решим следующую задачу целочисленного программирования методом Гомори:

,

Введя дополнительные переменные, запишем эту задачу в каноническом виде:

,

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

Одна из угловых точек допустимогомножества нецелочисленной задачи очевидна: (0, 0, 40, 29). Запишем симплекс-таблицу для этой угловой точки:

  х1 х2  
х3 -1 10
х4
  -20

 

Решение нецелочисленной задачи находится за две итерации симплекс-метода:

 

  х1 х3       х4 х2  
х2 -1/10 1/10   х3 1/42 4/42 9/2
х4 42/10 -2/10   х1 10/42 -2/42
  -1     10/42 82/42

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

 

  х4 х2       х5 х2  
х3 1/42 4/42 9/2   х3
х1 10/42 -2/42   х1 -1
x5 -1/42 -4/42 -1/2   х4 -42
  10/42 82/42    

Последняя симплекс-таблицане только соответствует допусти­мому базисному решению, но и дает решение рассматриваемой задачи:
х*=(0, 4), f*=-80.