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

Рис. 5.3.
(В данном случае считается, что продолжительность каждой oпeрации известна и постоянна. На самом деле продолжительность операций часто меняется, и ее описывают некоторым распределением вероятности, общий вид которого известен, а оценки его параметров могут быть получены.)
Длина (т. е. сумма временных интервалов) любого пути из v1 в vi соответствует нижней границе времени, измеряемого от начала проекта до наступления события vi, после которого могут быть начаты операции, имеющие vi в качестве начальной вершины. При расчетах каждой вершине удобно поставить в соответствие число (время) следующим образом:
T( v1)=0, T( vi)=ш'ах{t(Р)} (i≠1),
где t(P) обозначает длину пути Р и максимум берется по всем путям из v1 к vi.
Заметим, что по своей природе граф, представляющий процесс выполнения операций, является ациклическим. (Наличие цикла создало бы невозможную ситуацию, в которой ни одна из операций, входящих в цикл, не могла бы начаться первой, так как ее начало зависело бы от выполнения другой операции цикла.) Поэтому можно найти покрывающее дерево с корнем в v1, используя известный метод. В результате мы сразу определим пути максимальной длины из v1 к любой другой вершине. (Предполагается, что каждая вершина графа достижима, по крайней мере, по одному пути.)
Соответствующее дерево показано на рис. 5.4, продолжительности операций для него даны на рис. 5.3, а значения T(vi) приведены в вершинах.

Рис. 5.4.
Как уже упоминалось, наиболее ранний возможный момент начала операции (vi, vj) удален, по крайней мере, на T(vi) единиц времени от начала проекта. С другой стороны, график выполнения проекта, основанный на T(vi), является практически реализуемым. Более точно, если мы запланируем, что каждая операция (vi, vj) начинается в момент T(vi) и заканчивается в момент T(vi)+tij, (где tij — длительность соответствующей операции), то ни одна операция не может быть начата раньше момента, определенного основными правилами, и проект в целом будет выполнен за T(v8) = 13 единиц времени, что соответствует наиболее раннему возможному моменту его окончания.
Упражнение 4. Доказать, что при предложенном способе планирования операций отношение предшествования операций не нарушается.
Длиннейший по времени путь от начального события v1 до конечного vn называется критическим путем. Его длина (в нашем примере 13) соответствует кратчайшему времени, за которое может быть выполнен проект. Минимальное время достигается только в случае, если каждая операция критического пути начинается сразу же после окончания предшествующей. Вообще говоря, критический путь не является единственным. (Читатель может заметить другой критический путь в нашем примере.) Операция называется критической, если она принадлежит одному или нескольким критическим путям. Если проект нужно выполнить за минимальное время, некоторые операции проекта остаются некритическими и существует определенная свобода в их планировании. Измерение этой свободы приводит к определению резерва времени операций. Задача нахождения резерва времени операций будет рассмотрена ниже.
Заметим, что каждое событие должно произойти (т. е. все операции, приводящие к нему, должны быть выполнены) достаточно рано, чтобы обеспечить последовательное выполнение всех операций некоторого пути от него до конечного события. С учетом этого всем событиям, кроме значений Т(vi), удобно сопоставить второе множество чисел (времен). Эти числа аналогичны T(vi), но их измерение должно производиться относительно конечного события, а не начального.
Таким образом, пусть
X(vn)=0, X(vi)=max{t(P)} для i≠п,
где t(P)—длина пути от vi до vn и максимум берется по всем возможным путям. Заметим, что в этом случае для определения X(vi) мы снова можем воспользоваться известным методом. Необходимо только временно поменять ориентацию каждой операции на обратную, найти длиннейшее покрывающее дерево с корнем vn, а затем восстановить первоначальную ориентацию дуг. На рис. 5.5 показано дерево, соответствующее нашему примеру.

Рис. 5.5
В вершинах графа указаны значения X(vi). Так как величины X(vi) измеряются от конца проекта, а время выполнения всего проекта T(vn), то удобно связать эти времена следующим соотношением:
L(vi)= T(vn)- X(vi),
где L(vi) определяет самое позднее время осуществления события vi, не увеличивающее длительности всего проекта. На рис. 5.6 показаны значения L(vi) для каждой вершины одновременно с определенными ранее значениями T(vi). Величины T(vi) и L(vi) удовлетворяют отношению T(vi) ≤ L(vi).

Рис. 5.6.
Упражнение 5. Доказать предшествующее утверждение. Кроме того, доказать, что T(vi)=L(vi) тогда и только тогда, когда vi принадлежит некоторому критическому пути.
Величины T(vi) и L(vi) позволяют определить резерв времени при планировании отдельных операций (при постоянном минимальном времени проекта). Например, время операции, соответствующей дуге от v2 к v3 (см. рис. 8.3), равно одной единице, и мы определили, что T(v2)=3, L(v2)=3, T(v3)=4, L(v3)=7. Следовательно, эту операцию можно было бы начать самое раннее в момент 3 и самое позднее в момент 6. При этом событие v3 наступило бы не позднее момента 7. Естественно, что если мы использовали некоторую часть резерва времени рассматриваемой операции, начав ее позже момента 3, то мы тем самым сократили резервы времени у последующих операций, в нашем случае у операций (v3, v7) и (v7, v8). Вообще говоря, каждое событие v будет происходить в интервале между T(v) и L(v) в зависимости от распределения резерва времени.
До сих пор мы предполагали, что на каждую операцию требуется постоянное время и что эта величина времени заранее известна. Если это не так (а на самом деле это почти всегда не так), то разумно предположить, что продолжительность каждой операции есть некоторая случайная величина, определяемая распределением вероятностей, соответствующим данной операции. Далее нужно получить возможно лучшие оценки параметров этого распределения и использовать их при последующем анализе. В первоначальном варианте метода ПЕРТ, например, предполагалось, что продолжительность операции получается из так называемого «бета-распределения» (природа «бета-распределения» для нас сейчас не существенна, интересующиеся могут найти подробности в литературе, посвященной ПЕРТ). При этом для каждой операции находятся три временные оценки: а, т и b, где а и b соответственно оптимистическая и пессимистическая оценка времени выполнения операции, а т —наиболее вероятная оценка. Среднее значение времени выполнения операций и ее стандартное отклонение оцениваются по следующим формулам:
По вычисленным средним временам, описанным выше способом, определяются T(vi), L(vi) и резерв времени. Кроме того, возможный разброс продолжительности операции можно использовать для оценки вероятности окончания проекта в заданный срок. При работе с переменной длительностью операций возникают серьезные математические трудности, даже если точно известно распределение, соответствующее каждой операции, и все распределения считаются независимыми. В этом случае приходится использовать различные приближенные методы. Проиллюстрируем одно из возможных осложнений общего характера. Предположим, что путь Р является критическим, а Р' — некоторый путь из начального события в конечное, очень мало отличающийся от Р. Пусть Р и Р' найдены на основе средних значений времен выполнения операций. Может оказаться, что времена операций пути Р имеют малый разброс, а пути Р'—большой. Например, соответствующие распределения могут иметь вид рис. 5.7.
Pис. 5.7
В этом случае существует достаточно большая вероятность того, что время выполнения проекта будет определяться путем Р', а не P и выводы, сделанные из расчета того, что Р. является критическим путем, окажутся неточными.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |


