Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты с теорией.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
4.45 Mб
Скачать

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

Он имеет дело с более широким классом задач. Рассматривается частично целочисленная задача линейного программирования.

Теорема: Пусть последовательность – оптимальный опорный план задачи и , , ,

(где = {0, 1, …, n}, = {индексы небазисных переменных}) – соответствующая симплексная таблица, , – не целое.

Тогда неравенство , (1)

или, что то же самое, (2)

(3)

является правильным отсечением. Здесь

, (4)

(5)

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

  1. Проверим условие отсечения. Действительно

  (;/  

(не удовлетворяется) и условие отсечения выполнено.

  1. Проверяем условие правильности (если  – план задачи  – то он удовлетворяет неравенству). Выпишем разложение по небазисным переменным .

Пусть

где –  некоторые целые числа, величины которых будут выбраны позже. Тогда

,

— целое.

Введём обозначения

,

.

Заметим, что , (6)

. (7)

(Это из того, что  – план задачи).

Эти неравенства можно переписать в следующем виде.

, (8)

. (9)

Далее получаем , – целое.

Возможны два случая:

  1. ,

  2. .

Случай 1. . Тогда

и в силу нецелочисленности ,

а в силу целочисленности , ,

так что

или из (9) (т.к. ).

Это неравенство можно записать в следующем виде (умножить и поделить)

. (10).

Случай 2.

.

Имеем ,

а в силу целочисленности , ,

так что .

Отсюда и из (6) ( ) получаем . (11)

Объединив в случае 1 неравенства (10) и (9), а в случае 2 –неравенства (11) и (8) получим

или, что то же самое, . (12)

Неравенство (12) имеет вид ,

где   0, причём ( ), а правая часть не зависит от выбора . Следовательно, каждое из чисел следует выбирать так, чтобы было наименьшим – в этом случае будет “отсечена” как можно большая часть многогранника.

Так как , , ,

так что

Сразу можно выделить случай, когда – целое число. Можно положить и тогда

=0.

Это минимум , т.к.   0. Теперь допустим, что –  не целое. Тогда

,

(напомним,  — целые). Какое из этих надо выбрать? Естественно, минимальное. Учитывая условие минимальности, получаем .

Рассмотрим линейную функцию , (0  x  1),

,

,  = 0 < 1, т.е.

Таким образом

Окончательно получаем:

Правило построения правильного отсечения: Пусть не удовлетворяет условию целочисленности и – соответствующая ему симплексная таблица.

Выбираем

(i  {1, …, n1}) и i  {0,1, …, n1} если гарантирована целочисленность целевой функции) и строим правильное отсечение   0; .

и определяется по (4) и (5) при .

Что важно, не требуется, чтобы было целым.

С помощью второго алгоритма можно решать и полностью целочисленные задачи ( ). Но в этом случае нельзя сравнивать его по эффективности с первым.

Пример. Тот же пример (при всех целых)

при , , 4,  0, .

– целые.

Третья таблица:

1

=

7

1

0

=

40/9

5/9

1/9

=

23/9

4/9

–1/9

=

1

–6

1

=

0

–1

0

=

0

0

–1

=

–20/45

–16/45

–5/45

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

Отсечение строится по строке для :

;

.

1

=

7

1

0

=

4

1/5

1

=

3

4/5

–1

=

–3

–46/5

9

=

0

–1

0

=

4

16/5

–9

1

=

307/46

5/46

45/46

=

184/46

1/46

55/46

=

63/23

2/23

–5/23

=

0

–1

0

=

15/46

–5/46

–45/46

=

68/23

8/23

–135/23

=

–31/46

–5/46

–45/46


Отсечение строится по строке . Так как 5/46 < 31/46, . На не наложено требование целочисленности, следовательно,

1

=

6

1

0

=

19/5

1/5

1

=

11/5

4/5

–1

=

31/5

–46/45

9

=

1

–1

0

=

4/5

16/5

–9

=

–4/5

–1/5

–1

Отсечение строится по строке . На и не наложено требование целочисленности.

–1

=

6

1

0

=

3

0

1

=

3

1

–1

=

–1

–11

9

=

1

–1

0

=

8

5

–9


Таблица недопустима.

1

=

65/11

1/11

9/11

=

3

0

1

=

32/11

1/11

–2/11

=

0

–1

0

=

12/11

–1/11

–9/11

=

83/11

5/11

–54/11

=

–10/11

–1/11

–9/11

Так как 1/11 < 10/11, . На   не наложено требование целочисленности: 9/11 > 0.

1

=

5

1

0

=

3

0

1

=

2

1

–1

=

10

–11

9

=

2

–1

0

=

3

5

–3


Найден оптимальный план.