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

3.8. Алгоритмы управления проектами.

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

Для управления проектом разработан метод сетевого планирования и управления (СПУ), в основу которого положен метод критического пути (МКП). Этот метод позволяет:

1) планировать работу над проектом и предвидеть возможные затруднения и задержки в исполнении каждой работы и проекта в целом;

2) координировать и контролировать исполнение работ всеми исполнителями в заданные сроки и при заданном ресурсном обеспечении;

3) устанавливать последовательность и сроки использования ограниченных ресурсов в течении всего времени исполнения проекта;

4) выполнять анализ компромиссных решений между затратами и сроками выполнения работ с учетом резерва времени;

5) планировать ускоренное завершение всего проекта с учетом исполнения всех работ.

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

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

Рассмотрим фрагмент графа (см. рис. 50), включающий в себя пять вершин-событий и шесть дуг-работ. х0-начало проекта, хk-окончание проекта, 01 и 02- работы, которые могут быть начаты с началом работ над проектом. Событие х1 есть окончание работы 01 и определяет начало комплекса работ 12 и 13. Событие х2 есть окончание комплекса работ 02 и 12 и определяет начало работ 2k. Событие х3 есть окончание работы 13 и определяет начало работы 3k, и наконец, работы 2k и 3k обеспечивают завершение проекта, которые могут быть начаты только после окончание работ 12, 13, 02 и 01. Итак, существует три различных пути на графе, которые должны быть пройдены для завершение всех работ проекта:

1) (02+2k);

2) (01+12+2k);

3) (01+13+3k).

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

tp1)=4

x11,4=6

tp2)=7 tp4)=12

x22,4=5 x4

tp3)=5 3,4=3

x3

tp3)=5 3,4

tp2)=7 2,4

tp1)=4 1,4

5 10 t

Рис. 51. Ранний момент наступления события.

Так как каждое событие характеризуется временем его наступления, то при наличии комплекса работ для события хi можно рассматривать ранний момент наступления события tpi) и поздний момент наступления события tni). Для иллюстрации определения tpi) и tni) рассмотрим фрагмент сети (см. рис. 51 и 52). На рис. 51 события х1, х2 и х3 пусть имеют ранние моменты наступления: tp1)=4; tp2)=7; tp3)=5, т.е. любые работы, которые предшествовали событиям х1, х2 и х3, оказались законченными к указанным моментам времени tp1), tp2), tp3). Ранний момент наступления события tp4) определяется наиболее поздним окончанием одной из работ, предшествующих этому событию, т.е. (4+6)=10; (7+5)=12; (5+3)=8. Следовательно tp4)=12.

Обобщая эти рассуждения, можно сделать заключение:

tpj)=maxi{(tpi)+i,j)}, где

tpj)-ранний момент наступления события хj;

tpi)-ранние моменты наступления событий хi, определяющих начало работ, непосредственно предшествующих событию хj;

i,j-продолжительность работы, предшествующей событию хj;

Таким образом, если для начального события х0 принять известным ранний момент наступления события (например, tp0)=0), то можно найти ранние моменты наступления всех последующих событий до хk включительно.

На рис. 52 события х2, х3 и х4 имеют поздние допустимые моменты наступления tn2), tn3), tn4), т.е. работы 12, 13 и 14 должны быть закончены не позднее наступления tn2), tn3), tn4). Следовательно, при оценке позднего момента наступления tn1) события необходимо искать наиболее протяженные пути от конца проекта, т.е. продвигаяться в обратном направлении. Поздний момент наступления события х1 определяется наименьшим значением начала одной из работ, следующих после события х1, т.е. (12-7)=5; (15-7)=8; (10-3)=7. Следовательно, tn1)=5.

tn2)=12

х2

1,2=7

tn1)=5 1,3=7 tn3)=15

х1 х3

1,4=3 tn4)=10

х4

tn3)=15

1,3

tn2)=12

1,2

tn4)=10

1,4 t

5 10 15

Рис. 52. Поздний момент наступления события.

Обобщая эти рассуждения можно сделать заключение:

tnj)=mini{(tni)-j,i)}, где

tnj)-поздний момент наступления события хj, определяющего начало работ j,i;

tni)-поздний момент наступления событий хi, определяющего окончание работы j,i;

j,i-продолжительность работы j,i, обусловленной событием хj.

Таким образом, если для конечного события хk принять известным поздний момент наступления события (например, tnk)=tpk)), то можно найти поздний момент наступления всех предшествующих событий до х0 включительно.

Особое место в анализе сетевых графиков занимают фиктивные работы, к которым можно отнести ожидание. На рис. 53 дан фрагмент сети с ожиданием для одновременного исполнения работ 35 и 46.

tp1)=5 tp3)=10

х11,3=5 х33,5=4 х5

tp2)=2 tp4)=10

х22,4=6 х44,6=5 х6

2,4 4,6

tт6)=15

1,3 3,5

tт2)=15

tp1)=5 1,3 3,5

2,4 4,6

tp2)=2

t

5 10

Рис. 53. Фиктивная работа-ожидание.

Фиктивная работа имеет продолжительность равную нулю, но события связанные с ожиданием (х3, х4 на рис. 53) обуславливают возможность только одновременного начала работ (35 и 46 на рис. 53). На сетевых графах ожидание обозначают пунктирной линией. При расчетах раннего и позднего моментов наступления событий, связанных с ожиданием (х3, х4 на рис. 53), используют вышеприведенные соотношения, т.е.

tpожид.34)=max{tp3); tp4)},

tnожид.34)=min{tn3); tn4)}.

Максимально время, на которое можно задержать наступление некоторого события без задержки срока завершения всего проекта, называют резервом времени для данного события. Поэтому для каждого события резерв времени есть t0i)=tni)- tpi).

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

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

Очевидно, никакая работа i,j не может начаться ранее наступления события хi и не должна закончиться позже события хj. Таким образом, без задержки всего проекта можно выделить на исполнение операции (tnj)-tpi)) единиц времени.

Если i,j0=(tnj)- tpi)-i,j) равно нулю, то данная работа (i,j) не имеет резерва времени, т.е. находится на критическом пути. Величину i,j0=(tnj)- tpi)-i,j)0 называют полным резервом времени операции (i,j). На рис. 54 дан пример поиска полного резерва времени для трех операций. Все события для данного примера имеют нулевой резерв времени, но для поиска критического пути необходимо также найти резерв времени по работам. В данном примере резерв времени по работам равен:

1,20=(4-2-2)=0; 1,30=(8-2-4)=2; 2,30=(8-4-4)=0.

Следовательно, работы (х12) и (х23) лежат на критическом пути, а работа (х13) имеет резерв времени.

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

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

Таблица 16.

ранний момент события хj

tp(xj)

поздний момент события хj

tn(xj)

ранний момент события хi

tp(xi)

свободный резерв времени работы (хij)

i,j0 своб.

полный резерв времени работы (хij)

i,j0 полн.

поздний момент события хi

tn(xi)

независимый резерв времени работы (хij)

i,j0 незав.

гарантированный резерв времени работы (хij)

i,j0 гаран.

i,j0 полн.=(tnj)- tpi)-j,i);

i,j0 своб.=(tpj)- tpi)-j,i);

i,j0 незав.=(tpj)- tni)-j,i);

i,j0 гаран.=(tnj)- tni)-j,i).

Для иллюстрации возможностей сетевого планирования и управления рассмотрим сетевую модель (см. рис. 55). Для компактного изображения всех показателей каждого события каждую вершину графа представим в виде круга, разбитого на четыре сектора. В каждом секторе указаны четыре показателя: индекс вершины (i), ранний момент наступления события tp(xi), поздний момент наступления события tn(xi) и время ожидания события t0(i). Дуги графа изображают работы, а пунктирная линия-ожидание.

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

Алгоритм нумерации вершин графа:

шаг 1: присвоить начальной вершине сетевой модели индекс “0”; принять p=0, где p-шаг итерации;

шаг 2: присвоить на шаге итерации p любой неиндексированный вершине, смежной с индексированными вершинами, индекс (p+1);

шаг 3: если p=(n+1), то конец, при этом индекс (n+1)=k, иначе принять p=(p+1) и перейти к шагу 2 алгоритма.

Следует отметить, что нумерация вершин ациклического графа называется правильной на дуге (хij)G, если i<j, и правильной на графе G, если она правильна на всех его дугах.

Алгоритм расчета раннего момента наступления событий.

шаг 1: принять для начальной вершины графа tp(0)=0, p=0, где p-шаг итерации;

шаг 2: определить на шаге итерации p ранний момент наступления события j по формуле: tp(j)=(tp(i)+j,i), где tp(i)-события i с известным ранним моментом наступления; j,i-продолжительность работы (i,j) от события, имеющего tp(i);

а) если к вершине j подходит одна дуга (i,j), то принять tp(j)=(tp(i)+j,i),

б) если к вершине j подходит несколько дуг {(i,j)}, то сравнить и найти максимальное значение раннего момента наступления события j по формуле: tp(j)=maxi{tp(i)+i,j}.

Таблица 17.

pi

i

j=i

tp(j)={tp(i)+i,j}

tp(j)=maxi{tp(i)+i,j}

0

0

1

tp(1)=tp(0)+0,1=3

tp(1)=3

2

tp(2)=tp(0)+0,2=2

1

1

2

tp(2)=tp(1)+0,2=8

tp(2)=8

3

tp(3)=tp(1)+1,3=5

tp(3)=5

5

tp(5)=tp(1)+1,5=10

2

2

4

tp(4)=tp(2)+2,4=18

tp(4)=tp(5)=18

3

3

5

tp(5)=tp(3)+3,5=13

4

4

6

tp(6)=tp(4)+4,6=20

7

tp(7)=tp(4)+4,7=22

tp(7)=22

5

5

6

tp(6)=tp(5)+4,6=22

tp(6)=22

k

tp(k)=tp(5)+5,k=24

6

6

k

tp(k)=tp(6)+6,k=27

tp(k)=27

7

7

k

tp(k)=tp(7)+7,k=23

шаг 3: если p=(n+1), то конец, иначе принять p=(p+1) и перейти к шагу 2 алгоритма.

Результаты вычислений раннего момента наступления событий удобно представить таблицей (см. таблицу 17)

Рис. 55. Сетевая модель.

Алгоритм расчета позднего момента наступления события.

шаг 1: принять для конечной вершины графа tn(k)=tp(k); р=0, где р-шаг итерации;

шаг 2: определить на шаге итерации р поздний момент наступления события j по формуле: tn(j)=(tn(i)-j,i), где tn(i)-событие i с известным поздним моментом наступления; j,i-продолжительность работы (i,j) от события, имеющего tn(i);

а) если от вершины j отходит одна дуга (i,j),то принять tn(j)=(tn(i)-j,i);

б) если от вершины j отходит несколько дуг (i,j), то сравнить и найти минимальное значение позднего момента наступления события j по формуле: tn(j)=mini{(tn(i)-j,i)};

шаг 3: если р=(n+1), то конец, иначе принять р=(р+1) и перейти к шагу 2 алгоритма.

Результаты вычисления позднего момента наступления события удобно представить таблицей (см. таблицу 18).

Таблица 18.

pi

i

j=i-1

tn(j)=(tn(i)-j,i)

tn(j)=mini{(tn(i)-j,i)}

0

k

7

tn(7)=(tn(k)-k,7)=26

tn(7)=26

6

tn(6)=(tn(k)-k,6)=22

tn(6)=22

5

tn(5)=(tn(k)-k,5)=21

1

7

4

tn(4)=(tn(7)-4,7)=22

tn(5)=tn(4)=18

2

6

5

tn(5)=(tn(6)-5,6)=18

4

tn(4)=(tn(6)-4,6)=20

3

5

3

tn(3)=(tn(5)-3,5)=10

tn(3)=10

1

tn(1)=(tn(5)-1,5)=11

4

4

2

tn(2)=(tn(4)-2,4)=8

tn(2)=8

5

3

1

tn(1)=(tn(3)-1,3)=8

6

2

1

tn(1)=(tn(2)-1,2)=3

tn(1)=3

0

tn(0)=(tn(2)-0,2)=6

7

1

0

tn(0)=(tn(1)-0,1)=0

tn(0)=0

Алгоритм расчета резерва времени события.

шаг 1: принять р=0, где р-шаг итерации;

шаг 2: определить на шаге итерации р индекс события и резерв его ожидания по формуле: t0(i)=(tn(i)-tp(i));

шаг 3: если р=(n+1), то конец, иначе принять р=(р+1) и перейти к шагу 2.

Результаты вычислений резервов времени для событий удобно представить таблицей (см. таблицу 19).

Таблица 19.

pi

0

1

2

3

4

5

6

7

8

i

0

1

2

3

4

5

6

7

k

t0(i)

0

0

0

5

0

0

0

4

0

Алгоритм расчета резерва времени на работы.

шаг 1: принять р=1 и выделить любую дугу (i,j);

шаг 2: определить резерв времени для работы (i,j) по формулам:

а) полный резерв времени: i,j0 полн.=(tn(j)- tp(i)-j,i);

б) свободный резерв времени: i,j0 своб.=(tp(j)- tp(i)-j,i);

в) независимый резерв времени: i,j0 незав.=(tp(j)- tn(i)-j,i);

г) гарантированный резерв времени: i,j0 гаран.=(tn(j)- tn(i)-j,i);

шаг 3: если р=m, где m-число дуг сетевой модели, то конец, иначе р=(р+1), выделить новую дугу (i,j) и перейти к шагу 2 алгоритма.

Таблица 20.

(i,j)

i,j0 полн.

i,j0 своб.

i,j0 незав.

i,j0 гарант.

pi

(0,1)

0

0

0

0

1

(0,2)

6

6

6

6

2

(1,2)

0

0

0

0

3

(1,3)

5

0

0

5

4

(1,5)

8

8

8

8

5

(2,4)

0

0

0

0

6

(3,5)

5

5

0

0

7

(4,6)

2

2

2

2

8

(4,7)

4

0

0

4

9

(5,6)

0

0

0

0

10

(5,k)

3

3

3

3

11

(6,k)

0

0

0

0

12

(7,k)

4

4

0

0

13

Результаты расчетов резервов времени для выполнения работ приведены в таблице 20.

Выполненный анализ показывает, что

1) события, за которыми нужно следить с особым вниманием, имеют резерв времени равный нулю; это события 0;1;2;4;5;6;k;

2) работы, которые лимитируют продолжительность всего проекта, имеют полный резерв времени равный нулю; это работы (0;1); (1;2); (2;4); (5;6); (6;k);

3) работы, которые имеют резерв времени (полный, свободный, независимый и гарантированный), позволяют соответственно уменьшить затраты трудовых, финансовых или материальных ресурсов и продлить исполнение этих работ, но не более указанных резервов; это работы (0;2); (1;5); (4;6); (5;k);

4) работы, которые имеют свободный резерв времени равным нулю, определяют необходимость контроля за ранним моментом наступления событий, предшествующих данной работе и влияющих на начало последующих работ; это работы (1;3); (4;7);

5) работы, которые имеют независимый резерв времени равным нулю, определяют необходимость контроля за поздним моментом наступления событий, предшествующих данной работе, и влияющих на развитие последующих работ, что является удобным показателем свободы планирования; это работы (1;3); (3;5); (4;7); (7;k);

6) работы, которые имеют гарантированный резерв времени равным нулю, являются удобным показателем планирования работ проекта, т.к. они не влияют на исполнение всего проекта, но позволяют гарантированно отслеживать исполнение отдельных работ; это работы (3;5); (4;7).

Контрольные вопросы и задачи.

1. Что такое остов графа?

х2

х1 х3

х5 х4

2. Чему равно цикломатическое число графа и сколько можно построить покрывающих остовов?

3. Найти остов графа по алгоритму Дейкстра (см. приложение 1).

4. Найти остов графа по алгоритму Краскала (см. приложение 1).

5. Найти кратчайшие пути на графе по алгоритму Флойда (см. приложение 2).

6. Найти распределение максимального потока в сети по алгоритму Форда-Фалкерсона (см. приложение 3).

7. Найти критический путь по алгоритму управления проектом (СПУ) (см. приложение 4).

8. Определить числа графа (см. приложение 5).

118