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

Зад лин прогр и мет их решения 16 12 08

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

 

 

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

Pɺ2P6P7P8

Pɺ2Pɺ6P7 P8

Pɺ2Pɺ6Pɺ7 P8

Pɺ2Pɺ6Pɺ7 Pɺ8

Pɺ2Pɺ6Pɺ7Pɺ8

Pɺ2Pɺ6Pɺ7 Pɺ8

− −

− −P

− −P P

 

 

 

 

 

 

 

 

− −Pɺ

P

 

− −Pɺ

Pɺ

 

 

 

 

 

2

2

6

2

6

2

6

 

 

 

 

 

 

 

 

 

 

 

 

 

− −

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

Р2: –

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

264

 

 

 

 

 

 

 

 

 

 

 

 

Р3: Р2

Pɺ2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р4: Р6

Pɺ6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р5: –

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р6: –

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р7: Р2

Pɺ2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р8: Р6

Pɺ6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р9: Р2Р7Р8

 

Pɺ2 P7 P8

 

Pɺ2 Pɺ7 P8

Pɺ2 Pɺ7 Pɺ8

Pɺ2 Pɺ7 Pɺ8

Pɺ2 Pɺ7 Pɺ8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

P P

 

 

Pɺ

P

 

 

 

Pɺ

Pɺ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

2

6

 

 

 

 

2

6

2

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

− −

 

 

 

Р10: Р2Р3Р5 Р6

Pɺ2 P3P5P6

Pɺ2Pɺ3P5P6

Pɺ2 Pɺ3Pɺ5P6

 

Pɺ2Pɺ3Pɺ5 Pɺ6

 

Pɺ2Pɺ3Pɺ5Pɺ6

 

 

 

 

 

 

P − −

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

P

 

 

 

 

 

 

Pɺ

− −

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

2

 

 

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р11: Р1Р7Р8

 

Pɺ

P P

 

Pɺ

Pɺ

P

 

 

 

Pɺ

Pɺ

Pɺ

 

 

 

 

 

 

 

 

 

 

 

 

1

7

 

8

 

1

7

8

 

 

1

7

8

 

 

 

 

 

 

 

 

 

 

 

 

 

P P P P

 

 

 

 

 

 

 

 

ɺ ɺ ɺ ɺ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P P P P P

P P P P P P

 

 

 

 

 

 

 

 

 

 

2

 

6

7

8

2

6

7

8

2

 

 

2

6

 

7

8

2

6

 

 

 

 

 

 

 

 

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

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

tП (i)
tP (i)

 

 

269

vN

= 0 ; vi

= max{v j + ti j }, j = N 1, N 2,...,1., N-номер конца проекта,

 

 

j

максимум берётся по всем дугам ( i, j ), выходящим из вершины i. v7=0;

v6=v7+t67=0+6=6;

v5=max{v7+t57, v6+t56}=max{0+3;6+7}=max{3;13}=13;

v4= max{v5+t45, v7+t47}=max{13+10;0+10}=max{23;10}=23;

v3=v7+ t37=0+24=24;

v2= max{v5+t25, v3+t23}=max{13+8;24+5}=max{21;29}=29; v1=max{v3+t13, v2+t12, v4+ t14}=max{24+5;29+6;23+16}=max{29;35;39}=39

Таким образом, критическое время Ткрит=39; критический путь 1,4,5,6,7; критические работы Р6 Р1 Р8 Р11. Найденные потенциалы выделим треугольниками.

39

1

24

3

5 5

29

6

2

16

23

 

4

13

8

5

0 1

24

 

 

3

7

6

 

6

10

6

0

7

Найдем временные параметры событий.

Ранним сроком события i называется наименьшее время после начала проекта, через которое событие i может наступить. Этот параметр как раз равен наименьшему времени, необходимому для завершения предшествующих работ, т.е.

tP (i) = Tкрит(i) = yi ,

где yi – потенциалы, рассчитанные с начала.

tp(1) = 0; tp(2) = 6; tp(3) = 11; tp(4) = 16; tp(5) = 26; tp(6) = 33; tp(7) = 39.

Поздним сроком события i называется наибольшее время (после начала проекта), после которого событие не должно наступить (иначе сорвётся проектное время). Проект необходимо завершить к моменту Tпр , а минимальное время для вычисления сле-

дующих за событием работ равно T ′′ (i) , поэтому

крит