Алгоритм Гомори для частично целочисленной задачи линейного программирования.

В частично целочисленных задачах требование целочисленности накладывается не на все переменные, а на одну или некоторые из них.

Пусть дана следующая задача:

max {F(x)=∑cixi|∑ajixi{≤=≥}bj, j = 1,m, xi≥0 для всех i = 1,n}, (1)

целочисленной должна быть только переменная xk.

Таблица 1- симплекс-таблица для задачи ЛП

базисные переменные Свободные члены Небазисные переменные
w1 w2 ... wn
v1 β1 α11 α12 ... α1n
v2 β2 α21 α22 ... α2n
. . . . . .
vm βm αm1 αm2 ... αmn
F β c1 c2 ... cn

В результате решения задачи с отброшенным условием целочисленности получена оптимальная симплекс-таблица (табл. 1) и переменной xk соответствует строка базисной переменной vk этой таблицы. Эта строка порождает равенство

∑αkiwi+vkk. (2)

Выделим в βk целую и дробную часть и преобразуем (2) к виду

vk-[βk]={βk}-∑αkiwi (3)

Если значение vk = βk оказалось дробным, то можно сказать, что интервал [βk]<vk<[βk ]+1 не содержит допустимых целочисленных компонентов решения. Тогда для целочисленной переменной vk должно выполняться одно из двух неравенств: либо vk≤[βk], либо vk≥ [βk ] + 1. Левая часть выражения (3) должна быть целой.

Рассмотрим условия, при которых правая часть (3) будет принимать целое значение.

Если vk≤[βk ], то из (3) для αki≥ 0 следует, что

k}-∑αkiwi≤0 или ∑αkiwi≥{βk} (4)

Если vk≥[βk] + 1, то vk - [βk ] ≥ 1, и из (3) для αki≤0 следует, что

k}-∑αkiwi≥1 или ∑αkiwi≤{βk} -1 (5)

Умножим обе части неравенства (5) на
k} <0
k}-1
, тогда
k} ·∑αkiwi≥{βk} (6)
k}-1

Так как соотношения (4) и (6) не могут выполняться одновременно, их можно объединить в одно ограничение вида

ограничение для задачи линейного программирования(7)

где I+ – множество значений i, для которых αki > 0 ; I- – множество значений i , для которых αki< 0.

Уравнение (7) определяет отсечение Гомори для частично целочисленной задачи и является дополнительным ограничением в расширенной задаче. Двойственный симплекс метод позволяет решать расширенную задачу одной заменой базисной переменной.

Пример 1.. Найти оптимальное решение F(x) = 6x1 + 8x2 + x3 + 2x4 (min) :

ограничения для примера задачи линейного программирования

xi≥0, i= 1,4; x1-целое

Процедура решения задачи с отброшенным условием целочисленности для x1 иллюстрируется симплекс-таблицами 2 – 4. Получено оптимальное, но не целочисленное решение.

Дополнительное ограничение составляем по строке, соответствующей переменной x1 табл. 4, на основании выражения (7).

дополнительное ограничение для примера задачи линейного программирования (8)

После преобразования (8), умножения его на (-1) и введения дополнительной переменной х7 получим дополнительное ограничение в виде

дополнительное ограничение для примера задачи линейного программирования (9)

Табл. 5 соответствует расширенной задаче и получена добавлением к табл. 4 ограничения (9). Выполняя симплекс-преобразования, переходим к табл. 6, которая соответствует оптимальному решению с целым значением x1:

оптимальное решение для примера задачи линейного программирования

Таблица 2 - симплекс-таблица для задачи ЛП

базисные переменные Свободные члены Небазисные переменные
x1 x2 x3 x4
x5 -3 -1 -2 1 0
x6 -4 -2 -1 -1 1
F 0 6 8 1 2

Таблица 3 - симплекс-таблица для задачи ЛП

базисные переменные Свободные члены Небазисные переменные
x1 x5 x3 x4
x2 3/2 1/2 -1/2 -1/2 0
x6 -5/2 -3/2 -1/2 -3/2 -1
F -12 2 4 5 2

Таблица 4 - симплекс-таблица для задачи ЛП

базисные переменные Свободные члены Небазисные переменные
x6 x5 x3 x4
x2 2/3 1/3 1/3 0 -1/3
x1 5/3 -2/3 1/3 1 2/3
F -46/3 4/3 10/3 3 2/3

Таблица 5 - симплекс-таблица для задачи ЛП

базисные переменные Свободные члены Небазисные переменные
x6 x5 x3 x4
x2 2/3 1/3 1/3 0 -1/3
x1 5/3 -2/3 1/3 1 2/3
x7 -2/3 -4/3 -1/3 -1 -2/3
F -46/3 4/3 10/3 3 2/3

Таблица 6 - симплекс-таблица для задачи ЛП

базисные переменные Свободные члены Небазисные переменные
x7 x5 x3 x4
x2 1/2 1/4 1/4 -1/4 -1/2
x1 2 -1/2 1/2 3/2 1
x6 1/2 -3/4 1/4 3/4 1/2
F -16 1 3 2 0

ДОБАВИТЬ КОММЕНТАРИЙ