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

Задачи математического программирования

.pdf
Скачиваний:
0
Добавлен:
24.11.2025
Размер:
2.05 Mб
Скачать

0

0

0

0

0

0

1

6

0

 

 

0

0

1

1

0

0

3

 

0

0

 

 

0

0

1

0

0

1

3

 

0

0

 

3

0

1

0

0

0

0

0

0

D* = 1 0 1 0 0

0

0

0

0 .

 

2

1

1

0

0

0

0

0

 

 

0

0

2

0

0

0

0

0

0

0

 

 

0

0

0

0

0

0

0

 

0

0

 

 

0

0

4

2

4

2

0

 

0

0

После осуществления тернарных операций над матрицей C* получим C*89 = ∞ , т. е. задача решена, оптимальное решение

 

3

1

2

0

X

 

 

0

1

 

= 0

2

 

 

1

1

1

 

 

 

0

при значении целевой функции zmin = 23.

Задачи для самостоятельного решения

Ва р и а н т ы

1.a =(35, 25, 45), b =(30, 25,10, 20).

 

2

7

5

8

 

15

20

10

10

C =

 

 

 

 

 

 

5

5

 

7 3 8

2 ,

D = 10

6 .

 

 

11

8

 

 

 

10

20

 

 

7

6

 

10

10

15

16

0

4

 

 

 

 

 

 

 

5

4

 

,

z = 490.

 

 

 

Ответ. X = 10

6

 

 

 

 

5

4

6

 

 

 

 

 

 

 

10

 

 

 

 

 

30

2.

 

=(70, 20, 50),

 

=(40, 30, 30, 25).

 

 

 

a

b

 

 

 

 

 

2

7

6

4

 

 

10

20

20

25

 

 

 

 

6

 

,

D

 

20

10

10

 

 

 

C = 7 4

8

=

15 .

 

 

 

9 11

 

 

 

 

15

5

5

 

 

 

6

5

 

 

 

30

Ответ. Задача не имеет решения. Максимальный объем пере-

10

20

20

20

 

 

5

5

 

, z = 695.

мещаемого продукта 120 ед., план X = 10

0

 

5

5

 

 

15

5

 

3.

 

 

 

 

=(35, 30, 40),

 

 

 

=(30, 45,15, 30).

 

 

 

a

b

 

 

 

 

 

 

 

 

4

8 7 5

 

5 5 20

10

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C =

6 5 10

, D = 15 10 20

5 .

 

 

 

 

 

 

 

4

7

6

 

 

 

 

10

 

 

 

 

 

 

 

 

 

2

 

15 35

20

 

 

 

 

 

 

 

 

5

 

5

15

10

 

 

 

Ответ.

 

 

 

10

0

 

 

z = 620.

 

 

X = 15

 

5 ,

 

 

 

 

 

 

 

 

 

 

 

15

0

 

 

 

 

 

 

 

 

 

 

 

10

15

 

 

 

4.

 

 

=(20, 50, 35),

 

 

=(30, 10, 40,10).

 

 

 

a

b

 

 

 

 

 

 

 

 

2

6 3 5

 

5 5 15

5

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

C =

7 10 5

, D = 15 20

15 .

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7 5 3

 

15 15 25

5

 

 

 

 

 

 

 

 

5

 

0

15

 

0

 

 

 

Ответ.

 

 

 

10

5

 

 

z = 435.

 

 

X = 10

10 ,

 

 

 

 

 

 

 

 

 

 

 

 

0

20

 

 

 

 

 

 

 

 

 

 

 

15

 

 

0

 

 

 

31

5.

 

 

 

=(40, 25, 35),

 

 

 

=(20, 25, 40, 20).

 

 

 

a

b

 

 

 

 

 

 

 

7

 

5 9 4

10

5 20 10

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C =

 

2 5 5 ,

D = 10

5 10 5 .

 

 

 

 

 

8

12

 

10

7

 

 

15

15

 

 

 

 

 

 

 

 

5

10

 

 

 

 

10

 

5

15

10

 

 

 

 

 

 

 

 

 

5

 

5

10

 

 

, z = 730.

 

 

 

Ответ. X =

 

 

5

 

 

 

 

 

 

 

 

5

 

10

15

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

6.

 

 

=(30, 70, 40),

 

 

=(35, 10, 55, 45).

 

 

 

 

a

b

 

 

 

 

 

 

 

2

6 9 7

 

10

5 15 5

 

 

 

 

 

5

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

C =

8 2 3

D = 20

30 10 15 .

 

 

 

 

 

3

7

 

 

 

 

 

 

 

20

35

 

 

 

 

 

 

 

 

 

5 9

 

10

30

Ответ. Задача не имеет решения. Максимальный объем пере-

 

 

 

 

 

 

 

 

 

 

 

10

0

15

5

 

 

 

 

 

 

 

 

 

 

 

 

 

10

10

 

, z = 675.

мещаемого продукта 125 ед., план X = 20

15

 

 

 

 

 

 

 

 

 

 

 

 

0

30

 

 

 

 

 

 

 

 

 

 

 

 

 

5

5

 

7.

 

=(30, 65, 25),

 

 

=(30, 10,15, 45).

 

 

 

 

a

b

 

 

 

 

 

 

 

6

11

5

7

 

10

10

5

10

 

 

 

C

 

8

9

11

 

,

 

20

30

10

 

 

 

 

=

10

D =

10 .

 

 

 

 

2

6

5

 

 

 

10

20

10

 

 

 

 

 

 

3

 

 

30

 

10

0

5

10

 

 

 

 

10

10

 

,

z = 690.

Ответ. X = 20

10

 

0

0

0

 

 

 

 

25

 

 

32

8.

 

 

 

=(25,45, 30),

 

 

 

=(20, 40,10, 25).

 

 

 

a

b

 

 

 

 

 

 

 

4

5

 

 

9

3

 

10

10

15

10

 

 

 

 

 

5

2 5

 

, D

 

10 10

 

 

 

 

 

 

C =

6

=

20 10 .

 

 

 

 

 

8

9

 

 

5

 

 

 

20

25

15

 

 

 

 

 

 

 

 

4

 

 

10

 

 

 

 

10

10

 

0

5

 

 

 

 

 

 

 

 

 

 

 

10

 

10

 

 

 

 

 

 

Ответ. X = 10

 

10 , z =505.

 

 

 

 

 

 

 

 

0

20

 

0

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

9.

 

 

=(60, 80,10),

 

 

=(30, 55, 15, 30).

 

 

 

 

a

b

 

 

 

 

 

 

 

8

8

 

 

9

5

 

10

10

30

20

 

 

 

 

 

 

2 3

 

, D

 

25 15

 

 

 

 

 

 

C = 7

8

=

20 20 .

 

 

 

 

 

5

8

 

 

6

 

 

 

 

30

20

 

 

 

 

 

 

 

 

7

 

10

10

Ответ. Задача не имеет решения. Максимальный объем пере-

 

5

10

0

20

 

 

 

15

15

 

, z = 630.

мещаемого продукта 110 ед., план X = 25

10

 

0

10

0

 

 

 

0

 

10.

 

=(45, 25, 60),

 

=(20, 20, 35, 25).

 

 

 

a

b

 

 

 

 

 

 

5

9

4

8

 

15

10

20

10

 

 

C

 

 

 

 

 

,

 

20

10

10

 

 

 

= 9 2 7

5

D =

5 .

 

 

 

 

7

6

 

 

 

25

10

10

 

 

 

 

5

4

 

 

15

15

0

20

5

 

 

 

0

10

5

 

,

z = 445.

Ответ. X =

5

 

5

10

10

 

 

 

 

15

 

 

33

3. ЗАДАЧА О МАКСИМАЛЬНОМ ПОТОКЕ В СЕТИ

Тернарной операцией над матрицей dij n×n по индексу k называется операция dij = max(dij ,min(dik ,dkj )) для всех i j k .

Рассмотрим вспомогательную матрицу R = rij n×n , элементы ко-

торой rij = j, i =1,n . Одновременно с выполнением тернарной операции элементы матрицы R изменяются по следующему правилу:

r

,

если d

ij

min(d

ik

,d

kj

),

ij

 

 

 

 

 

rij = r

,

если d

 

< min(d

 

,d

 

).

 

 

 

 

ij

 

 

ik

 

 

kj

 

ik

 

 

 

 

 

 

 

 

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

Подготовительный этап. Для начальной потоковой матрицы

X =

 

 

 

xij

 

 

 

 

n×n

(как правило, на начало работы алгоритма xij = 0 для

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

всех i =

1,n

,

j =

1,n

) формируем модифицированную матрицу про-

пускных способностей D =

 

 

 

dij

 

 

 

n×n

, полагая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

x ,

i, j =

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

ij

ij

1,n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ij

 

 

 

l, p – индексы источника и стока соответственно.

Общая итерация. Осуществляем тернарные операции над мат-

рицей D =

 

d

 

 

 

и R =

 

r

 

 

последовательно по всем индексам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ij

 

n×n

 

 

ij

 

n×n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k = 1,

2,

 

 

…,

n.

Если в

 

полученной в результате матрице

D =

 

dij

 

 

 

 

n×n

 

dep = 0 , алгоритм заканчивает работу. В противном

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

случае переходим к шагу 1.

34

Шаг 1. dep = dlp > 0 . С помощью вспомогательной матрицы R = rij n×n находим путь

Llp ={(l,i1),(i1,i2 ),...,(ik , p)},

вдоль которого можно увеличить поток на максимально возможную

величину δlp . Здесь

 

i1`

= rlp ,

i2` = ri p ,

i3` = ri

p , ...,

ri p = p. Далее

полагаем

 

 

 

 

 

 

 

 

1

 

 

2

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

lp

,

x −δ

lp

, (i, j)

L ,

xij :=

 

ij

 

 

ij

 

 

lp

 

 

x

 

в остальных случаях;

 

 

 

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

ij

−d

lp

,

d

ij

+d

lp

, (i, j) L

,

dij :=

 

 

 

 

 

 

 

 

lp

 

 

d

 

в остальных случаях;

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D* = D .

Переходим к общей итерации. Проиллюстрируем работу алгоритма на следующем примере.

П р и м е р

Найти максимальный поток из вершины 1 в вершину 7 в сети, заданной матрицей пропускных способностей дуг

 

0

5

5

5

15

0

0

 

 

5

0

10

15

20

0

0

 

 

 

 

5

10

0

8

0

10

0

 

 

5 15

8

0

5 10 15

 

D =

.

 

15

20

0

5

0

10

10

 

 

0

0

10

10

10

0

6

 

 

 

 

0

0

0

15

10

6

0

 

 

 

35

Полагаем X = xij 7×7 = 0 , D* = D .

Итерация 1. Получаем

 

 

0

15

10

15

15

10

15

 

 

 

 

15

0

10

15

20

10

15

 

 

 

 

 

 

 

 

10

10

 

0

10

10

10

10

 

 

 

 

15

15

10

0

15

10

15

 

,

D* =

 

 

 

 

15

20

10

15

 

0

10

15

 

 

 

 

10

10

10

10

10

0

10

 

 

 

 

 

 

 

 

15

15

10

15

15

10

0

 

 

 

 

 

 

1

5

5

5

5

5

5

 

 

 

 

 

 

5

2

3

4

5

3

4

 

 

 

 

 

 

 

 

 

 

 

 

2

2

3

2

2

6

2

 

 

 

 

 

 

2 2 2 4 2 6 7

 

 

 

 

 

R* =

.

 

 

 

 

1

2

2

2

5

6

2

 

 

 

 

 

 

5

3

3

4

5

6

4

 

 

 

 

 

 

 

 

 

 

 

 

4

4

4

4

4

4

7

 

 

 

 

 

 

 

 

 

 

 

Так как d17 =15 , с помощью матрицы R* находим увеличивающий путь:

r17* =5, r57* = 2, r27* = 4, r47* = 7,

L17 ={(1, 5),(5, 2), (2, 4), (2, 7)}.

36

Находим матрицы:

 

 

 

 

0

5

5

 

5

0

0

0

 

 

 

 

 

 

 

 

 

 

 

5

0

10

0

35

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

10

0

8

0

10

0

 

 

 

 

 

 

 

 

 

 

 

5 30 8

0 5 10 0

 

 

 

 

 

 

 

 

 

D =

 

,

 

 

 

 

 

 

 

 

 

30

5

0

5

0

10

10

 

 

 

 

 

 

 

 

 

 

0

0

10

10

10

0

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

30

10

6

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

0

15

15

0

0

 

 

 

 

 

 

 

 

0

 

0

 

0

 

0

0

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

0

15

 

0

 

0

0

 

0

15

 

 

 

 

 

 

=

15

15

0

 

0

0

0

0

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

0

 

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

0

15

0

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D* = D .

 

 

 

 

 

 

 

 

 

Итерация 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 5 5 5 5 5 5

 

 

1

2 3 4 2 3 2

 

30 0 10 10 35 10 10

 

 

 

5

2

3

3

5

3

5

 

 

 

 

 

 

 

10 10

0 10 10 10 10

 

 

 

2

2

3

6

2

6

2

 

 

30 30 10 0 30 10 10

 

 

 

2 2 2 4 2 6 2

 

D* =

,

R* =

.

 

30 10 10 10

0 10 10

 

 

1

6

6

6

5

6

7

 

 

10 10 10 10 10

0 10

 

 

 

5

3

3

4

5

6

5

 

 

 

 

 

 

 

30 30 10 30 30 10

0

 

 

 

4

4

4

4

4

4

7

 

 

 

 

 

 

d17* =15 , L17 ={(1, 2),(2, 5), (5, 7)}.

37

Находим матрицы:

 

 

 

0

0

5

5

0

0

 

0

 

 

 

 

 

 

 

0

10

0

30

0

0

 

 

 

 

 

10

 

 

 

 

 

 

5

10

0

8

0

10

0

 

 

 

 

 

 

5 30 8

0 5 10 0

 

 

 

 

D =

,

 

 

 

 

 

30

10

0

5

0

10

5

 

 

 

 

 

 

0

0 10

10

10

0

6

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

30

15

6

 

0

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

 

0

15

0

0

 

 

 

0

0

0

 

15

15

0

0

 

 

 

 

 

 

 

 

 

0

0

0

 

0

0

0

0

 

 

 

 

0 15 0

 

0

0 0 15

 

 

 

X =

 

.

 

 

 

15

0

0

 

0

0

 

0

0

 

 

 

 

 

0

0

0

 

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

0

0

0

15

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

D* = D .

 

 

 

 

 

 

Итерация 3.

 

 

 

 

 

 

 

 

 

 

 

 

0 5 5

5 5 5 5

 

 

1

3 3 4 3 3 3

 

30 0 10 10 30 10 6

 

 

 

5 2 3

3 5 3 3

 

 

 

 

 

 

 

10 10 0 10 10 10 6

 

 

 

2 2 3

6 2 6 6

 

 

30 30 10

0 30 10 6

 

R*

 

2 2 2 4 2 6 6

 

D* =

,

=

.

 

30 10 10 10 0 10 6

 

 

1 2

2 6 5 6 6

 

 

10 10 10 10 10 0 6

 

 

 

3 3

3 4 5 6 7

 

 

 

 

 

 

 

30 30 10 30 30 10 0

 

 

 

4

4

4

4 4 4 7

 

 

 

 

 

 

d17* =5 , L17 ={(1, 3),(3, 6), (6, 7)}.

38

Находим матрицы:

 

 

 

0

0

0

5

0

0

0

 

 

 

 

 

 

10

0

10

0

30

0

0

 

 

 

 

 

 

 

 

 

 

 

 

10

10

0

8

0

5

0

 

 

 

 

 

 

5 30 8 0

5 10 0

 

,

 

 

D =

 

 

 

 

 

30

10

0

5

0 10

5

 

 

 

 

 

 

0

0

15

10

10

0

1

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

30

15

11

0

 

 

 

 

 

 

 

 

 

 

5

 

0

0

 

15

10

 

0

 

0

 

 

 

5

 

0

0

 

0

0

 

5

 

0

 

 

 

 

 

 

 

 

X

 

0

 

15

0

 

0

0

 

0

 

15

 

=

15

10

0

 

0

0

 

0

 

5

.

 

 

 

 

 

 

 

 

0

 

0

5

0

0

 

0

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

0

15

5 5 0

 

 

 

 

 

D* = D .

Итерация 4.

 

0

5 5

5

5 5

5

 

1

4 4 4 4 4 4

 

 

30

0 10

10 30 10

5

 

 

 

5

2 3 5 5 5 5

 

 

 

 

 

 

 

10 10 0

10 10 10

5

 

 

 

2

2

3

2

2

2

2

 

 

30 30 10

0 30 10

5

 

,

 

2

2

2

4

2

6

2

 

D* =

 

R* =

.

 

30 10 10

10 0 10

5

 

 

1

2 2 6 5 6 7

 

 

10 10 15

10 10 0

5

 

 

 

3

3 3 4 5 6 5

 

 

 

 

 

 

 

30

30 11

30 30 11

0

 

 

 

4

4

6

4

4

6

7

 

 

 

 

 

 

d17* =5 , L17 ={(1, 4),(4, 2), (2, 5), (5,7)}.

39