logo
Методичка_ММИО_2006

Подробное описание метода

Рассмотрим частично целочисленную задачу следующего вида:

F( )= ( ) ;

A = , ;

;

xj – целочисленная переменная при j  I,

где I – множество индексов целочисленных переменных задачи.

В качестве первого шага необходимо решить сформулированную задачу как задачу ЛП, рассматривая все ее переменные как непрерывные. Получаемая таким образом задача ЛП обозначается через ЛП-1, оптимальное значение ее целевой функции – через F( ). Пусть в оптимальном решении задачи ЛП-1 некоторые целочисленные переменные принимают дробные значения; тогда оптимальное решение исходной задачи не совпадает с оптимальным решением ЛП-1. В этом случае величина F( ) представляет собой верхнюю границу оптимального значения исходной задачи.

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

Пусть ветвление происходит по целочисленной переменной xj, значение которой в оптимальном решении ЛП-1 равно . Далее рассматриваются две новые задачи ЛП, обозначаемые через ЛП-2 и ЛП-3. Они получаются путем введения ограничений [ ] и  [ ] + 1 соответственно. Условия задач ЛП-2 и ЛП-3 можно записать следующим образом:

ЛП-2 ЛП-3

F( )= ( ) F( )= ( )

A = , A = ,

 [ ]  [ ] + 1

Допустим, что оптимальные решения задач ЛП-2 и ЛП-3 также содержат дробные значения целочисленных переменных и поэтому не являются допустимыми для исходной задачи.

На следующем шаге необходимо выбрать задачу ЛП-2 или ЛП-3 и произвести ветвление в соответствующей вершине, вводя новое ограничение. Выбор вершины (задачи ЛП) для дальнейшего ветвления часто осуществляется с использованием оптимального значения целевой функции, т.е. выбирается вершина, соответствующая наибольшему оптимальному значению целевой функции задачи ЛП.

После выбора вершины для дальнейшего ветвления выбирается целочисленная переменная, которая имеет в оптимальном решении соответствующей задачи ЛП дробное значение, и производится ветвление по этой переменной. Процесс ветвления и решения задач ЛП продолжается до получения целочисленного оптимального решения одной из задач ЛП. «начение Z0 в полученной точке представляет собой текущую нижнюю границу оптимального значения целевой функции исходной задачи ЦЛП. На этом этапе отбрасываются все вершины (задачи ЛП), для которых оптимальное значение F( ) не превосходит полученной нижней границы. Про такие вершины также говорят, что они являются прозондированными, поскольку в соответствующих им допустимых областях нет целочисленных решений, лучших, чем уже полученное, следовательно, промежуточная вершина (задача ЛП) является прозондированной (явным или неявным образом) в том случае, если она удовлетворяет хотя бы одному из следующих условий.

1. Оптимальное решение, соответствующее данной вершине, целочисленно.

2. «адача ЛП, соответствующая рассматриваемой вершине, не имеет допустимых решений.

3. Оптимальное значение F( ) соответствующей задачи ЛП не превосходит текущей нижней границы Z0.

Дальнейшее ветвление можно производить только в вершинах, для которых F( )  Z0.  ак только полученное допустимое целочисленное решение одной из задач ЛП окажется лучше имеющегося текущего значения Z0, оно фиксируется вместо зафиксированного ранее (т.е. меняется значение Z0).

При использовании метода ветвей и границ выбор вершин для дальнейшего ветвления происходит до тех пор, пока остается хотя бы одна непрозондированная вершина. Прозондированная вершина с наилучшим значением Z0 дает решение исходной задачи ЦЛП.

ЗАМЕЧАНИЕ: Получение перед реализацией метода ветвей и границ допустимого целочисленного решения может оказаться весьма полезным, так как сразу дает начальную нижнюю границу.

Домашнее задание №15

Решите ЗЦЛП методом ветвей и границ.

1. max(3x1 + 4x2) 2. max(3x1 + 4x2)

4x1 + 5x2  20 3x1 + 7x2  21

x1 + 6x2  12 x1 + x2  4

0 x1 5 0 x1 4

0 x2 4 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

3. max(x1 + x2) 4. max(4x1 + x2)

3x1 + 4x2  12 2x1 - 3x2  6

3x1 + 2x2  9 4x1 + 9x2  18

0 x1 4 0 x1 2

0 x2 2 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

5. max(3x1 + x2) 6. max(x1 + 2x2)

4x1 + 3x2  18 x1 + x2  5

x1 + 2x2  6 3x1 + 8x2  24

0 x1 5 0 x1 5

0 x2 3 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

7. max(2x1 + x2) 8. max(3x1 - 2x2)

5x1 + 2x2  30 2x1 + 3x2  6

3x1 + 8x2  48 x1 - x2  2

0 x1 6 0 x1 3

0 x2 6 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

9. max(3x1 + 2x2) 10. max(x1 + 2x2)

2x1 + x2  7 5x1 + 9x2  45

4x1 + 3x2  18 x1 + 3x2  12

0 x1 3 0 x1 9

0 x2 4 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

11. max(2x1 + 5x2) 12. max(4x1 + 6x2)

4x1 + 5x2  20 3x1 + 7x2  21

x1 + 6x2  12 x1 + x2  4

0 x1 6 0 x1 5

0 x2 5 0 x2 4

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

13. max(2x1 + 3x2) 14. max(5x1 + 2x2)

3x1 + 4x2  12 2x1 - 3x2  6

3x1 + 2x2  9 4x1 + 9x2  18

0 x1 6 0 x1 3

0 x2 3 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

15. max(4x1 + 2x2) 16. max(2x1 + 5x2)

4x1 + 3x2  18 x1 + x2  5

x1 + 2x2  6 3x1 + 8x2  24

0 x1 6 0 x1 4

0 x2 4 0 x2 4

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

17. max(3x1 + 2x2) 18. max(5x1 - 3x2)

5x1 + 2x2  30 2x1 + 3x2  6

3x1 + 8x2  48 x1 - x2  2

0 x1 7 0 x1 3

0 x2 6 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

19. max(4x1 + 3x2) 20. max(x1 + 3x2)

2x1 + x2  7 5x1 + 9x2  45

4x1 + 3x2  18 x1 + 3x2  12

0 x1 4 0 x1 8

0 x2 4 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

21. max(4x1 + 4x2) 22. max(3x1 + 3x2)

4x1 + 5x2  20 3x1 + 7x2  21

x1 + 6x2  12 x1 + x2  4

0 x1 6 0 x1 4

0 x2 5 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

23. max(2x1 + 3x2) 24. max(5x1 + x2)

3x1 + 4x2  12 2x1 - 3x2  6

3x1 + 2x2  9 4x1 + 9x2  18

0 x1 4 0 x1 2

0 x2 2 0 x2 3

x1 , x2  0 x1 , x2  0

x1 , x2 – целые. x1 , x2 – целые.

  1. max(4x1 + x2)

4x1 + 3x2  18

x1 + 2x2  6

0 x1 5

0 x2 3

x1 , x2  0

x1 , x2 – целые.