Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

519_8_E92_2015_Efromeeva_E_V__Efromeev_N_M_Metody_issledovania_operatsiy_v_mashinostroenii_primery_zadachi_2-e_izdanie

.pdf
Скачиваний:
233
Добавлен:
10.01.2021
Размер:
40.53 Mб
Скачать

Задача ЛП3 имеет целочисленное решение •

= 2, •! = 2 и

 

и,

следовательно порождает нижнюю границу (

# = 6

)

оптимального

значения

целевой функции задачи ЦЛП.

 

 

 

 

 

 

 

 

 

# = 6

 

Оптимальным решением задачи ЛП4 является •

 

= 1,6, •! = 3 и

 

 

Поскольку значение переменной •

 

не является целым

числом, задача

 

 

# = 6,2.

• ≤ 1 и •

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЛП4 исследуется дальше. Рассматриваем подзадачи ЛП5 и ЛП6, используя ветви

# = 2

• + •!

'(•,

# = 2

• + •!

'(•,

 

 

 

 

5

 

 

 

!

 

 

 

 

5

 

 

!

 

 

 

 

 

ЛП

 

 

 

 

 

 

Задача ЛП6

 

 

 

 

 

 

 

Задача≥ 25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

• + 4•

≤ 20,

 

 

 

 

 

 

• + 4• ≤ 20,

 

 

 

 

 

 

 

1, 136,

 

 

 

 

 

 

 

 

≤ 2,

136,

 

 

 

 

40• + 17•!

 

 

 

40• + 17•!

 

 

 

 

 

 

 

 

!

!3,

 

 

 

 

 

 

 

 

 

!

≥ 3,

 

 

 

# = 5, .

 

 

≥ 0,

≥ 0.

 

 

 

 

 

 

 

 

 

≥ 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

решением

5

 

# = 6

 

 

 

 

 

 

 

 

 

Оптимальным

 

задачи

ЛП5

 

является • = 1, •! = 3,75 и

75

При

значении

нижней

границы

 

 

 

 

нет возможности

получить

целочисленное решение задачи ЛП , которое будет лучше существующего. В результате мы отбрасываем подзадачу ЛП5 и считаем ее прозондированной.

Задача ЛП6 прозондирована, так как не имеет допустимых решений (ОДР – пустое множество).

# = 6,Оптимальным9412. решением задачи ЛП2 является • = 3, •! = 0,9412 и

Поскольку значение переменной •! не является целым числом, задача

ЛП≤2 исследуется0 ≥ 1 дальше. Рассматриваем подзадачи ЛП7 и ЛП8, используя ветви

! и •! .

# = 2

• + •!

'(•,

 

# = 2

• + •!

'(•,

 

 

 

 

 

!

 

 

 

!

 

 

 

Задача ЛП7

 

 

 

 

Задача ЛП8

 

 

 

 

 

 

 

 

• + 4• ≤ 20,

 

 

 

+ 4• ≤ 20,

 

 

 

 

≤ 0,

136,

 

8

 

 

 

136,

 

 

 

 

 

 

 

 

 

 

 

 

405• + 17•!

 

 

 

405• + 17•!

 

 

 

 

 

!

≥ 3,

 

 

 

 

!

≥ 3,

 

 

 

 

!

≥ 0.

 

 

 

 

 

 

≥ 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

Оптимальным решением задачи ЛП7 является •

= 3,4, •! = 0 и

Поскольку значение переменной • не является целым

числом, задача

 

# = 6, .

ЛП7 исследуется дальше. Рассматриваем подзадачи ЛП9 и ЛП10, используя

ветви • ≤ 3 и • ≥ 4.

151

• = 2 !

+5 "

 

→ $% ,

• = 2 ! +5

" → $% ,

 

 

 

Задача ЛП9

 

+ 4

" ≤ 20,

Задача ЛП10

 

" ≤ 20,

 

 

 

!

 

! + 4

 

 

 

40 !

+ 17

" ≤ 136,

40

!

+ 17

" ≤ 136,

 

 

 

 

! ≥ 3,

 

 

! ≥ 4,

 

 

 

 

 

 

" = 0,

 

 

" ≤ 0,

 

 

 

 

 

 

! ≤ 3.

 

 

" ≥ 0.

" = 0

 

 

Задача

ЛП

 

имеет целочисленное решение

 

 

и

.

Значение нижней

9границы остается неизменным (• = 6).! = 3,

 

• = 6

Задача ЛП10 прозондирована, так как не имеет допустимых решений (ОДР – пустое множество).

Задача ЛП8 прозондирована, так как не имеет допустимых решений (ОДР – пустое множество).

Так как все подзадачи прозондированы, оптимальным решением задачи ЦЛП• = 6является решение,= 2, соответствующее= 2 = 3, последней= 0 нижней границе, а именно в точках ! " и ! " . Схема вычислений показана

на рис. 42.

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

Пример.

Решить задачу ЦЛП.

8 = 2 ! +

"

: → $% ,

 

! + 7

" +

: ≤ 46,

2

4 ! −

" +

:

8,

!

+ 3

"

:

≤ 10,

 

!,

!,",: ≥ 0,

 

 

",

: − целые.

Начальная задача линейного программирования (ЛП0) получается путем

оптимальным решением будет ! = 2,43,

"

= 1,71,

: = 0

и 8 = 6,571.

отбрасывания условий целочисленности.

Решим

ее

симплекс-методом,

152

153

.Рис

 

42

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

Задача ЛП0

 

 

 

 

 

 

 

 

 

 

 

 

X1=2.72, X2=1.6, Z=7.04

 

 

 

 

 

 

 

 

 

X1 ≤ 2

 

 

 

 

 

 

 

 

 

 

 

X1 ≥ 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задача ЛП1

 

 

 

Задача ЛП2

 

 

 

X1=2, X2=2.5, Z=6.5

 

 

 

X1=3, X2=0.9412, Z=6.9412

 

 

X2 ≤ 2

 

 

X2 ≥ 3

X2

≤ 0

 

 

X2

1

 

 

 

 

 

 

 

 

 

 

3

Задача ЛП3

X1=2, X2=2, Z=6

нижняя граница (оптимум)

4

8

11

Задача ЛП4

Задача ЛП7

Задача ЛП8

X1=1.6, X2=3, Z=6.1

X1=3.4, X2=0, Z=6.8

Нет решений

 

 

 

 

X1 ≤ 3

X1 ≥ 4

 

 

X1 ≤ 1

 

X1 ≥ 2

 

 

 

 

 

5

 

 

6

9

10

Задача ЛП5

Задача ЛП6

Задача ЛП9

 

Задача ЛП10

X1=1, X2=3.75, Z=5.75

Нет решения

X1=3, X2=0, Z=6

 

 

Нет решения

 

 

 

 

нижняя граница (оптимум)

 

 

 

 

 

 

 

Провидим процедуру ветвления по переменной • . Задача ЛП0

разбивается на подзадачи ЛП1 и ЛП2. Рассматриваем подзадачи ЛП1 и ЛП2,

используя ветви

• ≤ 2 и •

.

 

 

• = 2, • = 2,

 

2

 

 

симплекс-методом получим оптимальное решение

Решив

задачу ЛП1

≥ 3

#

 

% = 0 и & = 6.

Задача ЛП

 

прозондирована, так как не имеет допустимых решений.

Схема вычислений показана на рис. 43:

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

Задача ЛП0

 

 

 

 

 

 

 

X1=2.72, X2=1.6, Z=7.04

 

 

 

 

 

 

 

 

 

 

 

 

 

X1 ≤ 2

 

 

X1 ≥ 3

 

 

 

 

 

 

 

 

3

 

2

 

 

 

 

 

 

 

 

 

 

 

Задача ЛП1

 

 

Задача ЛП2

X1=2, X2=2, X3=0, Z=6

 

 

Нет решения

нижняя граница (оптимум)

Рис. 43

9.3.2. Метод отсекающих плоскостей

Данный метод, как и метод ветвей и границ, начинает работу с оптимального решения ''обычной" (непрерывной) задачи линейного программирования. Однако вместо ветвления и построения границ этот метод видоизменяет пространство допустимых решений, последовательно прибавляя специальным образом построенные ограничения (именуемые отсечениями).

Пример.

Решить задачу ЦЛП.

• = ! + 2 " → $% ,

−0,75 ! + 4 " ≤ 12,

& 2,5 ! + 1 " ≤ 10,

!, ≥ 0, целые" ≥ 0,.

! "

154

Метод путем добавления отсечений преобразует пространство допустимых

решений ЗЛП в выпуклый многогранник, вершина которого соответствует

 

оптимуму.

= 3,49 и z =

9,581

Оптимальное решение непрерывной задачи x= 2,6, x

(рис. 44).

X2

5

4

2 . 5

X

1 +

X

2

= 1 0

Оптимум

(2.6; 3.49)

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

1

 

 

 

 

 

 

=

 

 

 

 

 

 

X2

 

 

 

 

 

 

4

 

 

 

 

 

 

+

 

 

 

 

 

 

X1

 

 

 

 

 

 

5

 

 

 

 

 

 

.7

 

 

 

 

 

 

 

-0

 

 

 

 

 

 

 

 

1

1

2

 

X1

 

 

 

 

 

Рис. 44

 

 

 

Прибавляем отсечение I, которое вместе с ограничениями исходной задачи

приводит к оптимальному решению x= 2,8, x

= 3

и z = 8,8

(рис. 45).

X2

5

4

1

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

X2

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

X1

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

.7

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

Отсечение I

Оптимум

(2.8; 3)

1

2

X1

 

Рис. 45

155

Прибавляем отсечение II, которое вместе с отсечениемx I и исходными ограничениями приводит к оптимальному решению = 2, x! = 3 и z = 8 (рис. 46). Это решение является целочисленным, что и требуется.

X2

5

Оптимум

(2; 3)

4

1

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

X2

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

X1

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

.7

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

Отсечение I

ОтсечениеI I

1

2

X1

 

Рис. 46

Прибавленные отсечения не отбрасывают ни одной исходной допустимой целочисленной точки, но должны проходить как минимум через одну целочисленную точку (допустимую или нет). Этим требованиям должно удовлетворять любое отсечение.

Вобщем случае может потребоваться любое (конечное) количество отсечений для достижения полностью целочисленной экстремальной точки.

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

Оптимальная симплекс-таблица исходной задачи имеет следующий вид:

 

j

x1

x2

 

x3

X4

Св.

i

 

 

чл.

 

 

 

 

 

 

x2

 

0

1

 

0.23

0.0698

3.49

 

 

 

 

 

 

 

 

x1

 

1

0

 

-0.093

0.37

2.6

 

 

 

 

 

 

 

 

z

 

0

0

 

0.37

0.51

9.581

 

 

 

 

 

 

 

 

 

 

 

 

156

 

 

Оптимальным

непрерывным решением является x= 2,6, x = 3,49,

x! = 0, x" = 0

и

z = 9,581. Целочисленное отсечение получается в

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

Информация, содержащаяся в симплекс-таблице, соответствующей

оптимальному решению, может быть записана в виде следующих уравнений: $ − уравнение: $ + 10023 $! + 5000349 $" = 3 10049 ,

$− уравнение: $100093 $! + 10037 $" = 2 106 ,

# − уравнение: # + 100037 $! + 10051 $" = 9 1000581 .

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

при условии, что дробная часть является строго положительной. Выберем (произвольно) для этой цели $ − уравнение. Разложение коэффициентов

приведет к следующему уравнению: $ + <0 + 10023 > $! + <0 + 5000349 > $" = (3 + 10049 )

Перенесем все целочисленные слагаемые в правую часть, а все дробные в

левую.

10023 $! + 5000349 $" 10049 = 3 − $

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

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

Так как

переменные $! и $" – неотрицательны, то выражение

!

$! +

!"B

$" является

•AA

CAAA

неотрицательным.

Поэтому

величина

 

 

!

$! +

!"B

$"

"B

,

будучи

 

 

•AA

CAAA

•AA

целочисленной, не может быть меньше −

"B

. Поэтому необходимое условие

•AA

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

 

 

 

 

 

 

 

23

$! +

349

 

49

 

 

 

 

 

 

 

 

 

 

 

100

5000 $"

100 ≥ 0

 

 

 

 

 

 

Это и есть отсечение,

порожденное

$ − строкой.

Ранее

найденное

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

157

 

 

 

 

 

 

23

!

349

#

 

49

 

 

 

 

 

 

 

 

 

23

 

100

 

5000

 

 

100

 

 

 

 

 

 

 

 

 

!

349

# + &

49

,

 

&

 

 

 

 

 

 

 

 

100

 

5000

 

% = − 100

 

 

% ≥ 0

 

 

 

 

i

j

 

x1

 

 

x2

 

 

x3

 

 

x4

 

 

 

s1

 

 

Св. чл.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

 

0

 

1

 

0.23

 

0.0698

 

 

0

 

3.49

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

1

 

0

 

-0.093

 

0.37

 

 

0

 

2.6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s1

 

 

0

 

 

0

 

 

-0.23

 

-0.0698

 

 

1

 

 

-0.6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

 

0

 

0

 

0.37

 

0.51

 

 

 

9.581

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица представляет оптимальное, но недопустимое решение. Для восстановления допустимости необходимо применить двойственный симплекс- метод (п. 6.4.1).

 

j

x1

x2

x3

x4

s1

Св. чл.

i

 

 

 

 

 

 

 

 

x2

 

0

1

0

0

1

3

 

 

 

 

 

 

 

 

x1

 

1

0

0

0.4

-0.4

2.8

 

 

 

 

 

 

 

 

x3

 

0

0

1

0.3

-4.35

2.13

 

 

 

 

 

 

 

 

z

 

0

1

0

0.4

1.6

8.8

 

 

 

 

 

 

 

 

Из-за дробного значения

 

последнее решение все еще нецелочисленное.

Выберем &-строку в качестве

производящей.

 

 

 

 

&

 

6

 

 

+ 8

&

 

 

4

 

# +

%& = (2

 

+ (0 + 10)

 

 

(−1 + 10)

 

 

10).

Соответствующее ограничение имеет вид:

%*

 

 

10

 

10 % + %* = − 10

,

 

 

4

#

 

6

 

&

8

 

 

≥ 0.

Присоединяем 2 отсечение к последней симплекс-таблице.

158

 

j

x1

x2

x3

x4

s1

s2

Св. чл.

i

 

 

 

 

 

 

 

 

 

x2

 

0

1

0

0

1

0

3

 

 

 

 

 

 

 

 

 

x1

 

1

0

0

0.4

-0.4

0

2.8

 

 

 

 

 

 

 

 

 

x3

 

0

0

1

0.3

-4.3

0

2.1

 

 

 

 

 

 

 

 

 

s2

 

0

0

0

-0.4

-0.6

1

-0.8

 

 

 

 

 

 

 

 

 

z

 

0

1

0

0.4

1.6

0

8.8

 

 

 

 

 

 

 

 

 

Таблица представляет оптимальное, но недопустимое решение. Для восстановления допустимости необходимо применить двойственный симплекс- метод.

 

j

x1

x2

x3

x4

s1

s2

Св. чл.

i

 

 

 

 

 

 

 

 

 

x2

 

0

1

0

0

1

0

3

 

 

 

 

 

 

 

 

 

x1

 

1

0

0

0

-1

1

2

 

 

 

 

 

 

 

 

 

x3

 

0

0

1

0

4.8

-0.75

1.5

 

 

 

 

 

 

 

 

 

x4

 

0

0

0

1

1.5

-2.5

2

 

 

 

 

 

 

 

 

 

z

 

0

1

0

0

1

1

8

Оптимальное решение (x= 2, x= 3, z = 8), определяемое последней симплекс-таблицей, является целочисленным.

Пример.

Решить задачу ЦЛП.

= !+ 2!→ #$!,

 

 

5!+ 7!≤ 21,

 

% −!+ 3!≤ 8,

 

!, !≥ 0, целые.

 

159

 

 

Приводим задачу к каноническому виду. Для

этого

в левую

часть

 

 

 

 

 

 

# =

% + 2•&

 

→ ()•,

0 и •" 0.

 

 

 

 

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

• ≥

 

 

 

 

 

 

 

 

*

 

5

%

+ 7•& + •"==21,8,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

% + 3•& +

0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

%

 

&

"

 

целые.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решим

задачу

симплексным

 

 

 

 

 

без

учета

требований на

 

 

 

 

 

 

, • , • , • методом

 

, •"

целочисленность переменных.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Считая

дополнительные

 

переменные

базисными,

запишем

начальную симплекс-таблицу:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базис

:;

 

 

 

:<

 

 

:>

 

 

 

 

Св.чл.

 

 

 

 

 

 

!

5

 

 

 

 

7

 

 

 

 

1

 

 

0

 

 

21

 

 

3

 

 

 

-1

 

 

 

 

3

 

 

 

 

0

 

 

1

 

 

8

 

 

2"#

 

 

 

z

-1

 

 

 

 

-2

 

 

 

0

 

 

0

 

 

0

 

 

 

 

Встроке “z” найдем наименьшее отрицательное значение (-2) – это будет разрешающий столбец. Затем для нахождения разрешающей строки разделим значения из столбца “Св. чл.” на неотрицательные и ненулевые значения разрешающего столбца (кроме строчки “z”) и найдем минимум из получившихся значений.

Внашем случае $%&(3; 2#") = 2#". Разрешающий элемент находится на пересечении разрешающего столбца (второй столбец) и разрешающей строки (вторая строка). Разрешающий элемент равен 3.

Вновой таблице, в качестве нового базисного элемента запишем *#.

Базис

+

,

!

Св.чл.

 

!

22/3

0

1

-7/3

7/3

7/22

,

-1/3

1

0

1/3

8/3

z

-5/3

0

0

2/3

16/3

 

Разрешающий элемент равен 22/3.

В новой таблице, в качестве нового базисного элемента запишем *0.

 

Базис

+

 

 

 

,

 

 

!

Св.чл.

 

 

+

1

 

 

 

0

 

 

3/22

7/22

7/22

 

 

,

0

 

 

 

1

 

 

1/22

5/22

61/22

 

 

z

0

 

 

 

0

 

 

5/22

3/22

129/22

 

 

В последней строке нет отрицательных оценок, значит оптимальное

решение найдено: * =

1

 

; * =

40

; 5 =

0#6

.

 

 

 

 

 

 

 

 

 

 

 

0

##

#

##

##

 

 

 

 

 

 

 

 

 

 

 

 

Однако, решение нецелочисленно. Продолжаем, используя метод отсекающих плоскостей.

160