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

Задачи ЛП и методы их решения

.pdf
Скачиваний:
160
Добавлен:
29.03.2016
Размер:
7.64 Mб
Скачать

259

Проверяем текущий план на оптимальность.

u1 = 0

20

10

 

 

u2 = 7

27

20

16

 

u3 = 12

 

 

21

23

 

v1 = 20

v2 = 10

v3 = 13

 

v4 = 9

v5 = 11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Условия оптимальности

Клетки

 

(1,3)

 

 

u1 + v3

– с13 = 0

+ 10 – 13

= -3< 0

(1,4)

 

 

u1

+ v4

– с14

= 0

+ 9 – 13 = -4 < 0

(1,5)

 

 

u1

+ v5

– с15

= 0

+ 11 – 18

= -7 < 0

(2,2)

 

 

u2

+ v2

– с22

= 7

+ 10 – 19

= -2 < 0

(2,5)

 

 

u2

+ v5

– с25

= 7

+ 11 – 22

= -4 < 0

(3,1)

 

 

u3 + v1 – с31 = 12 + 20 – 26 = 6 > 0

(3,2)

 

 

u3 + v2 – с32 = 12 + 10 – 17 = 5 > 0

(3,3)

 

 

u3 + v3 – с33 = 12 + 13 – 19 = 6 > 0

Условие оптимальности нарушено в клетках (3,1), (3,2) и (3,3). Следовательно, имеющийся план перевозок можно улучшить.

Назначим в клетку (3,3) таблицы 2 перевозку θ =115. Уменьшаем на θ перевозку в заполненной клетке (2,3). В заполненной клетке (2,4) увеличиваем перевозку на θ и

уменьшаем на θ перевозку в клетке (3,4). Цикл перевозок построен. Новый план перевозок изобразим в таблице 3.

 

 

 

 

 

 

Таблица 3

200

50

150

 

 

 

 

 

 

 

 

 

300

160

 

5

-

135

+

 

 

 

 

250

 

 

115 -

 

135+

 

210

150

120

 

135

135

f2СЗУ = 50 20 + 150 10 + 160 27 + 5 20 + 135 16 + 115 19 + 135 23 = 14370

Проверяем текущий план на оптимальность.

 

 

260

 

u1 = 0

20

10

 

u2 = 7

27

20

16

u3 = 6

 

19

23

 

v1 = 20

v2 = 10

v3 = 13

 

v4 = 9

v5 = 17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Клетки

 

Условия оптимальности

(1,3)

 

 

u1 + v3

– с13 = 0 + 13 – 13

= 0 = 0

(1,4)

 

 

u1 + v4

– с14 = 0 + 9 – 13 = -4 < 0

(1,5)

 

 

u1 + v5

– с15 = 0 + 17

– 18

= -1 < 0

(2,2)

 

 

u2

+ v2

– с22

= 7 + 10

– 19

= -2 < 0

(2,5)

 

 

u2 + v5 – с25 = 7 + 17 – 22 = 2 > 0

(3,1)

 

 

u3

+ v1

– с31

= 6

+ 20

– 26

= 0 = 0

(3,2)

 

 

u3

+ v2

– с32

= 6

+ 10

– 17

= -1 < 0

(3,4)

 

 

u3

+ v4

– с34

= 6

+ 9 – 21 = -6 < 0

Условие оптимальности нарушено в клетке (2,5). Имеющийся план перевозок можно

улучшить.

Назначим в клетку (2,5) таблицы 3 перевозку θ =5. Уменьшаем на θ перевозку в за-

полненной клетке (2,3). В заполненной клетке (3,3) увеличиваем перевозку на θ и

уменьшаем на θ

перевозку в клетке (3,5). Цикл перевозок построен. Новый план изобра-

зим в таблице 4.

Таблица 4

200

50

150

 

 

 

300

160 -

 

 

135

+ 5

250

+

 

120

 

- 130

 

210

150

120

135

135

f3СЗУ = 50 20 + 150 10 + 160 27 + 135 16 + 5 22 + 120 19 + 130 23 = 14360

Проверяем текущий план на оптимальность.

 

 

261

 

 

 

 

 

u1 = 0

20

10

 

 

 

 

 

u2 = 7

27

 

 

16

 

22

u3 = 8

 

 

19

 

 

 

23

 

v1 = 20

v2 = 10

v3 = 11

v4 = 9

v5 = 15

Клетки

 

 

 

Условия оптимальности

(1,3)

 

 

u1 + v3

– с13 = 0 + 11 – 13 = -2 < 0

(1,4)

 

 

u1 + v4

– с14 = 0 + 9 – 13 = -4 < 0

(1,5)

 

 

u1 + v5

– с15 = 0 + 15 – 18 = -3 < 0

(2,2)

 

 

u2

+ v2

– с22

= 7 + 10 – 19 = -2 < 0

(2,3)

 

 

u2

+ v3

– с23

= 7 + 11 – 20 = -2 < 0

(3,1)

 

 

u3 + v1 – с31 = 8 + 20 – 26 = 2 > 0

(3,2)

 

 

u3 + v2 – с32 = 8 + 10 – 17 = 1 > 0

(3,4)

 

 

u3

+ v4

– с34

= 8 + 9 – 21 = -4 < 0

Условие оптимальности нарушено в клетках (3,1) и (3,2). Имеющийся план перево-

зок можно улучшить.

Назначим в клетку (3,1) перевозку θ =130. Уменьшаем на θ перевозку в заполнен-

ной клетке (2,1). В заполненной клетке (2,5) увеличиваем перевозку на θ и уменьшаем на

θ перевозку в клетке (3,5). Цикл перевозок построен.

Полученный план изобразим в таб-

лице 5.

Таблица 5

200

50

150

 

 

 

 

 

 

 

300

30

 

 

135

135

 

 

 

250

130

 

120

 

 

 

 

 

 

 

210

150

120

135

135

f0СЗУ = 50 20 + 150 10 + 30 27 + 135 16 + 135 22 + 130 26 + 120 19 = 14100

Проверяем текущий план на оптимальность.

 

 

262

 

 

 

u1 = 0

20

10

 

 

 

u2 = 7

27

 

 

16

22

u3 = 6

26

 

19

 

 

 

v1 = 20

v2 = 10

v3 = 13

v4 = 9

v5 = 15

Клетки

 

Условия оптимальности

(1,3)

u1 + v3

– с13 = 0

+ 13 – 13

= 0 = 0

(1,4)

u1 + v4

– с14 = 0

+ 9 – 13 = -4 < 0

(1,5)

u1 + v5

– с15 = 0

+ 15 – 18

= -3 < 0

(2,2)

u2 + v2

– с22 = 7

+ 10

– 19

= -2 < 0

(2,3)

u2

+ v3

– с23

= 7

+ 13

– 20

= 0 = 0

(3,2)

u3

+ v2

– с32

= 6

+ 10

– 17

= -1 < 0

(3,4)

u3

+ v4

– с34

= 6

+ 9 – 21 = -6 < 0

(3,5)

u3

+ v5

– с35

= 6

+ 15

– 23

= -1 < 0

Условия оптимальности выполнены для всех клеток, а значит, последний план перевозок является оптимальным планом (т.е. имеет наименьшие транспортные расходы).

Изобразим оптимальный план перевозок в виде графа.

Оптимальный план перевозок

Запас

продукции

200

300

250

Поставщики

Цена

210

Потребность в

перевозки

 

 

продукции

 

 

50

20

 

10

150

 

150

 

 

130

27

26

30

120

120

16

19

135

135

22

135

135 Потребители

Объем перевозки

263

ЗАДАНИЕ 3

ВЫПОЛНЕНИЕ ЭТОГО ЗАДАНИЯ РАССМОТРЕНО В ПРИМЕРЕ ИЗ РАЗДЕЛА 5

ЗАДАЧА 4

УСЛОВИЕ.

Дан список предшествования работ некоторого проекта и проектное время Tпр . Тре-

буется:

1.построить сетевой график проекта;

2.найти критический путь, критические работы, критическое время;

3.найти временные параметры событий и работ;

4.построить диаграмму Ганта по ранним срокам

Работа

Предшествующие работы

Время

 

 

 

Р1

Р2 Р6 Р7 Р8

7

Р2

6

Р3

Р2

5

Р4

Р6

10

Р5

5

Р6

16

Р7

Р2

8

Р8

Р6

10

Р9

Р2 Р7 Р8

3

Р10

Р2 Р3 Р5 Р6

24

Р11

Р1 Р7 Р8

6

 

 

 

 

Tпр= 42

 

 

 

 

РЕШЕНИЕ.

Построим сетевой график проекта. Для этого найдем все предшествующие для Pi

работы и непосредственно предшествующие для всех Pi:

 

 

&

 

& &

 

& & &

 

& & & &

 

& & & &

 

& & & &

Р1: Р2Р6Р7Р8

P2P6P7P8

P2P6P7 P8

P2P6P7 P8

P2P6P7 P8

P2P6P7P8

P2P6P7 P8

− −

− −P2

− −P2P6

&

& &

 

 

 

 

 

 

− −P2P6

 

− −P2P6

 

 

 

 

 

 

 

 

 

 

 

− −

P7P8 – непосредственно предшествующие; Р2Р6Р7Р8 – все предшествующие

Р2: –

264

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р3: Р2

P2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р4: Р6

P6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р5: –

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р6: –

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р7: Р2

P2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р8: Р6

P6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

& &

 

 

 

& & &

 

 

 

& & &

 

 

 

& & &

 

 

 

 

 

 

 

 

P P P

 

 

P P P

P P P

 

 

P P P

 

 

 

P P P

 

 

Р9: Р2Р7Р8

2 7 8

 

2 7 8

2 7 8

 

2 7 8

2 7 8

 

 

 

 

 

 

 

 

P2 P6

 

&

 

& &

 

 

 

 

 

 

 

 

 

 

 

P2

 

 

 

 

 

P2P6

 

 

 

P2P6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

− −

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

& &

 

 

 

 

& & &

 

 

& & & &

 

& & & &

 

 

 

 

 

P P P P

 

 

 

P P P P

 

 

P P P P

 

P P P P

 

P P P P

Р10: Р2Р3Р5 Р6

2 3 5 6

 

2 3 5 6

 

 

 

2 3 5 6

2 3 5 6

2 3 5 6

 

 

P2

 

 

 

 

 

 

P2 − −

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P2

 

 

 

P2 − −

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

&

&

 

 

 

 

 

 

& &

&

 

 

 

 

 

 

 

Р11: Р1Р7Р8

 

P1P7 P8

 

 

P1P7 P8

 

 

 

 

P1P7 P8

 

 

 

 

 

 

 

 

 

 

 

P2 P6 P7 P8P2

 

& & & &

 

 

 

 

 

 

 

 

 

 

 

 

 

P2 P6 P7 P8

 

 

 

P2 P6 P7 P8P2P6

 

 

 

 

 

P&2P&6 − −

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

 

Таблица 1

Таблица 2

Работа

Все предшествующие

работы

 

Р1

Р2

Р6

Р7 Р8

Р2

 

Р3

 

Р2

Р4

 

Р6

Р5

 

Р6

 

Р7

 

Р2

Р8

 

Р6

Р9

Р2

Р6

Р7 Р8

Р10

Р2

Р3

Р5 Р6

Р11

Р1 Р2 Р6 Р7 Р8

 

 

 

 

Работа

Непосредственно пред-

шествующие работы

 

Р1

Р7 Р8

Р2

Р3

Р2

Р4

Р6

Р5

Р6

Р7

Р2

Р8

Р6

Р9

Р7 Р8

Р10

Р3 Р5 Р6

Р11

Р1

 

 

События – {–} {P2}{P6}{P1}{P7P8}{P3 P5 P6}{P4 P9 P10 P11} Первыми работами являются P2, P5, P6.

Последними – P4, P9, P10, P11. Начало проекта – {–}

Конец проекта – {P4 P9 P10 P11}

265

Построим сетевой график проекта.

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

которая является множеством непосредственно предшествующих работ для данной работы. Конец изображаемой дуги обозначим как новую вершину. Название новой вершины дадим в соответствии с названием изображаемой работы.

P3P5P6

P4P9P10P11

P7P8

-P2

P1

P6

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

P3P5P6

p5

 

5

 

 

 

P

 

 

 

 

 

3

 

P2

 

P

 

 

 

-

p2

P2

P

 

 

 

7

 

P

 

 

 

6

 

 

 

p6

 

 

 

 

 

8

 

 

 

P

 

 

P6

P

 

 

 

4

P10

p10

p3 P7P8

p7

p8 P1

p4

P4P9P10P11

P

p1

1

 

P9

p9

P11

p11

Правильно пронумеруем вершины полученной сети.

11

12

P10

2P3P5P6 p10

 

p5

 

 

5

13

9

 

5

 

 

 

 

 

 

 

P

 

P

 

 

 

 

 

1

 

4

 

p3

 

 

3

 

3

P7P8

 

 

 

 

 

P2

 

P

 

P

 

 

 

 

 

1

 

 

 

 

 

 

-

p2

P2

P

 

 

 

 

 

 

7

 

 

 

P

 

 

 

p7

 

6

 

 

6

 

 

p6

7

8

 

 

 

 

 

 

8

p8

9

 

 

 

P

 

 

 

 

 

 

 

P6

P

 

 

 

 

 

4

 

 

 

 

 

 

p4

10

18

P4P9P10P11

14

p9

15

p1

17

11

 

P

p11

P1

16

Преобразуем.

5

2

P

 

P2

1 3

P6

7

266

 

 

 

 

P10

 

 

 

 

 

 

 

 

11

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

 

 

3

 

 

 

 

 

 

 

 

P

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

P

 

 

9

14

 

 

 

 

 

 

 

P

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

6

13

P

 

 

1

17

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

P

 

 

 

 

 

8

 

 

15

16

 

 

 

 

P

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

Сокращаем фиктивные дуги по правилам:

1.Если (i, j) – фиктивная дуга такая, что из i (начала фиктивной дуги) в j (конец фиктивной дуги) есть другой путь, то (i, j) удаляем.

2.Пусть (i, j) – фиктивная дуга, которая единственная среди дуг сети начинается в i (единственная выходящая из i) или же единственная среди дуг сети, заканчивается в j. Тогда эту фиктивную дугу можно сократить, объединив вершины i, j в одну (говорят, сжав фиктивную дугу), если при этом не образуются параллельные дуги. Для новой объединённой вершины обычно оставляют обозначение i или j.

3.Фиктивную дугу ( i, j ) можно сжать, объединив её начало i и конец j в одну вершину, если при этом не образуются лишние связи предшествования, т.е. связи, которых нет в проекте, и не образуются параллельные дуги.

Применяя эти правила, последовательно сократим фиктивные дуги до тех пор, пока в сетевом графике не останутся действительные работы и те фиктивные дуги, без которых нельзя обойтись.

P5

P2

1 P

6

 

11

P10

P

3

 

 

P

 

 

9

 

P7

 

4

13

 

8

P

 

P

1

 

8

16

 

P

 

 

4

P

1

1

 

18

Сделаем правильную нумерацию в полученной сети. Искомый сетевой график построен.

P5

P2

1

P6

 

 

267

 

3

P10

P

3

 

 

P9

 

 

 

P7

 

2

5

 

8

P

 

P

1

 

4

6

 

4

 

 

 

 

P

P

1

1

 

7

Для хранения полученного графика, т.е. логической структуры проекта запомним

набор записей: {(1,3), Р5}, {(1,2), Р2}, {(1,4), Р6}, {(2,5), Р7}, {(4,5), Р8}, {(5,7), Р9}, {(5,6),

Р1}, {(4,7), Р4}, {(6,7), Р11}, {(3,7), Р10}, {(2,3), Р3}.

Найдем критический путь, критические работы, критическое время.

Критическое время – наименьшее время, за которое можно выполнить все работы

проекта, Ткрит.

Работа

Обозначение на графике

Время в у.е.

 

 

 

Р1

(5,6)

7

Р2

(1,2)

6

Р3

(2,3)

5

Р4

(4,7)

10

Р5

(1,3)

5

Р6

(1,4)

16

Р7

(2,5)

8

Р8

(4,5)

10

Р9

(5,7)

3

Р10

(3,7)

24

Р11

(6,7)

6

 

 

 

Рассмотрим все пути проекта от 1 до 7.

5

3

24

 

 

 

5

 

3

 

 

68

1 2 5

1

6

0

7

1

 

 

 

 

 

 

4

6

 

 

0

 

 

 

 

 

 

1

6

7

1)(1,3) (3,7) сумма времен работ = 5 + 24 = 29

2)(1,2) (2,3) (3,7) сумма времен работ = 6 + 5 + 24 = 35

3)(1,2) (2,5) (5,7) сумма времен работ = 6 + 8 + 3 = 17

Tкрит

268

4)(1,2) (2,5) (5,6) (6,7) сумма времен работ = 6 + 8 + 7 + 6 = 27

5)(1,4) (4,5) (5,7) сумма времен работ = 16 + 10 + 3 = 29

6)(1,4) (4,5) (5,6) (6,7) сумма времен работ = 16 + 10 + 3 = 29

7)(1,4) (4,7) сумма времен работ = 16 + 10 = 26

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

суммой). Критическое время равно длине самого длинного пути из начала проекта в

конец проекта, т.е. Tкрит = max{ 29, 35,17, 27, 29, 39, 26} = 39 у.е.

Самый длинный путь из начала проекта в конец проекта в сетевом графике называется критическим путём. Критический путь будет (1,4) (4,5) (5,6) (6,7).

Критические работы будут Р6 Р8 Р1 Р11.

Найдем критический путь методом потенциалов. Потенциалы, рассчитанные с начала проекта по формуле:

y1=0; yj=max{yi+tij}, j=2,3,…,7 y2=y1+t12=0+6=6;

y3=max{y1+ t13, y2+ t23}=max{0+5;6+5}=11;

y4=y1+ t14=16+0=16;

y5=max{y2+ t25, y4+ t45}=max{6+8;16+10}=26;

y6=y5+ t56=26+7=33;

y7=max{y3+ t37, y5+ t57, y6+ t67, y4+ t47}=max{11+24;26+3;33+6;16+10}=max{35;29;39;26}=39

Таким образом, критическое время Ткрит=39; критический путь 1,4,75,6,7; критиче-

ские работы Р6 Р8 Р1 Р11. Найденные потенциалы выделим квадратиками.

5

0

6

6

1

16

 

11

 

3

5

26

 

8

2

5

 

0

 

1

4

16

24

 

 

3

 

 

7

33

 

 

6

10

6

39

7

Потенциалы, рассчитанные с конца проекта по формуле: