|
Abstract
A significant
drawback of Activities on Arcs (AOA) networks, is having
several different possible networks describing the same
project. In contrast, the Activities on Nodes (AON)
representation is unique. Having both AOA and AON networks
of a project is an advantage since some planning and
optimisation techniques strictly require AOA format while
others require AON format. While previous AOA research has
been focusing on minimizing the number of dummy arcs, this
paper focuses on generating a meaningful consistent network.
Each AOA node in the proposed technique is related to a
specific row in the immediate predecessors table: its
incoming arcs represent the immediate predecessors, and its
outgoing arcs represent the activity/ies possessing this set
of precedence constraints. The proposed algorithm generates
a unique AOA network from a list of precedence constraints.
While it does not minimize the number of dummy arcs the
efficiency in dummies is a by-product of this approach. Two
equivalent mathematical expressions are developed for the
number of generated AOA dummies of a given precedence table.
The paper also presents some linear formulations that could
be directly derived from an AOA net. The algorithm is
explained through a detailed example that starts with an
immediate predecessors table and ends with an AOA network.
Introduction
Project
networks for planning and scheduling are based on two
representation types: Activities on Arcs (AOA) and
Activities on Nodes (AON). Each representation type (AOA or
AON) has desirable features that are unique to their type
[16] (see next section for a comparison of AOA to AON). For
example, some advantages of Activities on Arcs (AOA)
networks for project network planning are: (1) each AOA arc
has its origin and destination node, conforming with a
"from-to" matrix (incidence matrix), or with variables in a
node arc matrix. (2) AOA networks could be arranged in a
total unimodular "node-arc" matrix that ensures an integer
solution for integer data. (3) AOA is suitable for some
popular formulations that use pairwise subtractions of AOA
node variables.
While the
construction of AON is relatively easy, AOA networks may
contain dummy arcs and their construction is much more
problematic. However, due to their importance, AOA networks
have been drawing many research trials to generate AOA
networks with minimal number of dummy arcs. Examples of
dummy minimization heuristic methods can be found as early
as in [7, 11, 12]. In the 1970's Corneil et. al. [4],
claimed to have an optimal algorithm, but Syslo [20]
disproved their claim. Krishnamoorty and Deo [13] showed
that finding the minimum dummy problem is NP-hard. In
the 1980's [19, 20, 21] offered more heuristics. In the
1990's [1, 5] proposed AOA network-generating methods but
they did not consider the redundancy and other problems
brought up by dummy activities, and therefore, are
considerably impaired. A different direction was opened when
Elmaghraby and Herroelen [8] developed a complexity index as
a measurement tool for the complexity in activity networks.
Kamburowski et. al. [14, 15] developed a method that
generates minimal complexity-index AOA networks. Note
however, that a single AON network may be represented by
several different AOA networks with the same minimal
complexity index.
The
meaning of an AOA node in all of the above papers is an
event in time, that does not necessarily correspond to
anything expressed by the AON of the same project. Thus,
the resulted net is convoluted and it is difficult (and
sometimes impossible) to recover the original immediate
precedence constraints.
The
approach in this paper is different. We propose an AOA
network in which each node corresponds to a precedence
constraint. For this network, minimizing the dummy arcs is
much easier and is an inherent part of the algorithm
presented below. Although the algorithm logic is self
evident, we still verified and validated it by testing it on
a variety of different networks.
The
proposed algorithm enables both a systematic translation of
AON network to AOA network (and back to AON) and a
systematic construction process of AOA networks from the
corresponding immediate predecessor tables.
AOA vs.
AON Network Representation
The first
step in constructing an AOA network is to list the immediate
predecessors of each activity and to sequence the activities
in a table according to the precedence constraints. The
resulting precedence table, corresponds directly to an
Activities on Nodes (AON) network diagram [16]. In an AON
diagram, the activities are represented on nodes and the
precedence constraints by the arcs connecting the nodes.
Therefore, in AON the number of nodes is the number of
activities, and the number of arcs is the number of
immediate predecessors. AON representation is natural and
does not contain artificial elements on the network.
In
contrast, AOA nets are characterized by dummy arcs and
implicit precedence relations. As a result each project can
have multiple AOA representations [10]. The different
representations have actual and undesirable effect on the
slack measures (time flexibility measures) of certain
activities [6, 9].
On the
other hand, the structure of the AOA network is much more
suitable for certain analytical techniques and optimization
formulations. For example, AOA activities correspond to
entries in a matrix of origin to destination which in turn
suites some linear programming formulations. Most of the
network optimization techniques are based on either node arc
formulations or origin-destination matrix formulations
(i.e., AOA representation and not AON representation). Also,
most linear programming
formulations for finding the critical path or "crashing"
critical activities are based on AOA.
Another kind of formulations
utilize subtractions of
AOA node variables to express the arc (activity) value.
The
following are some examples of AOA based formulations:
I. A
time crashing formulation taken from [2, p. 181]:
Define: i,j
as pair of AOA nodes; tij=time for
activity (i,j); Sij=cost/time-unit for
activity (i,j).
Further
define: Mij=Crash duration for (i,j);
Nij=Normal duration for (i,j); Ei=time
of node i; O= Overhead $ per time unit; L=
index of last node; T=maximal specified time for the
project.
Subject to:
(1) Mij≤
tij ≤ Nij
for all pairs ( i,j) ("
i,j)
(2) Ei+
tij -Ej ≤ 0
for all pairs ( i,j) ("
i,j)
(3) EL
≤T
II.
Formulation for determination of the critical path from [6,
page 112].
Define:
i and j as indexes of AOA nodes, A=the set of all
activities, n=last node, dij=AOA
activity duration; Pj=set of predecessor
nodes of node j; Sj=set of
successor nodes of node j; xij= the
quantity flowing on arc (i,j) from node i
to node j. The formulation is given by:


Where Ti,j
is the time of an AOA activity that starts at node
i and finishes at node j. Ti is
the time for completing all the activities that lead to node
i.
While small
AOA networks can be easily drawn by hand, the construction
of large AOA network is a complex task that requires time,
rigor, and attention to details. An AOA construction
algorithm can save a great deal of work and mistakes.
Moreover, in many cases the user would like to go back and
forth between a AON representation and a AOA
representations. The logic of the following algorithm can
make this desire a reality.
The
Algorithm Logic
This
section briefly describes the logic of the algorithm that
generates a AOA network from a corresponding AON net or a
precedence table. A more elaborate discussion could be found
in [3]. However, the logic and its details are best
explained in section 6.
The
first step of
the algorithm presented below is almost trivial: to build a
simple precedence table, that lists the immediate
predecessors (activities) for each activity, and to
transform it into an "Activities on Nodes" network. For n
tasks, the complexity of the first step is O(n2)
The
second step
identifies the final AOA nodes. Each AOA node corresponds to
a unique precedence constraint. Each node in AOA marks the
starting event of the arcs that emanates from it. Thus, if
two or more activities have the same precedence constraint,
their arcs can emanate from the same node (which corresponds
to that constraint). Combining the starting point of all the
arcs that have the same precedence constraint, into one
node, helps in minimizing the number of nodes in the AOA
network. In the second step the algorithm generates a list
of unique precedence constraints, each of which becomes a
node in the final AOA diagram (including the start node for
activities with no predecessors). Finally, if more then one
activity does not have any successor, a dummy node should be
added symbolizing the end of the project.
The
third step
consists of identifying necessary dummies. A dummy arc is
necessary whenever an activity is playing part in more than
one unique precedence constraint (from step 2). The reason
for needing the dummy arc is having more than one end node
(each node represents the different precedence constraints
of its successors). Thus, the algorithm's third step is to
identify all these necessary dummies.
After the
third step we have all the AOA nodes (from step 2) and all
the AOA arcs (an arc for each activity and dummy arcs from
step 3). All that remains to be done is to assign each start
and finish pairs of nodes to their corresponding arcs. The
rest of the algorithm steps achieve this end. In addition,
giving the activities new names according to a 'from-to'
scheme facilitates the formulation of the optimization
problem and is also part of the algorithm. The algorithm
contains a total of seven steps. The results of each step
are summarized in a table as shown in the next section. Step
seven ends with a table suitable for forming an “Activities
on Arcs” network.
The
seven steps and their complexities are as follows:
(1)
Construct immediate predecessors table, O(n2);
(2) Find a list of unique precedence relations and number
them as the AOA nodes, O(n); (3) Find
necessary dummy activities, O(n); (4) Add
dummy activities to the table, O(n); (5)
Associate each AOA node with its incoming arcs, O(n2);
(6) Associate each node with its outgoing arcs, O(n);
(7) Mark the arcs (activities) with indexes by their start
and finish nodes, O(n). From the above
the overall complexity of the algorithm is O(n2).
The AON Case Study
The example detailed below
will assist in illustrating the algorithm. The example is
based on a construction project of casting concrete. The
data is provided in table 1, and an illustration of the data
is given in figure 1 using AON representation.
Table 1. An Example of Activities and their Precedence Constraints
|
The
Activity |
Short name |
Immediate
Predecessors |
|
A. Get
steel rods and beams |
Get steel |
None |
|
B. Get
wooden rods and beams |
Get wooden
rods |
None |
|
C. Get
beach sand |
Get beach
sand |
None |
|
D. Get
concrete-powder |
Get
concrete-powder |
None |
|
E. Get
tank for blending the concrete |
Get
blending tank |
None |
|
F. Prepare
the casting skeleton as a grid of steel rods
attached by wires and welding. |
Prepare
skeleton |
A |
|
G. Bend
the steel beams for frame support |
Bend
the steel beams |
A |
|
H.
Construct a concrete casting frame from wooden beams |
Construct
casting frame |
B |
|
I. Connect
(with a pipe) a water hose to the mixing tank |
Connect
water |
E |
|
J. Mix
concrete powder, sand and water in the tank |
Mix
concrete |
C,D,I |
|
K. Cover
the molding frame with plywood boards |
Cover
frame with boards |
H |
|
L. Attach
the internal skeleton of steel rods to the external
molding frame |
Attach
skeleton to frame |
F,H |
|
M. Support
the frame with steel beams |
Steel
beams frame support |
G,H |
|
N. Support
the plywood boards with steel beams |
Steel
beams boards' support |
G,K |
|
O. Cast
the concrete mix into the frame |
Cast the
concrete |
J,L,M,N |
Details of the Algorithm Steps
The steps
of the algorithm are detailed below and summarized as
follows: the first three steps are summarized in table 2,
steps four and five are summarized in table 3 and the last
steps are summarized in table 4. It is recommended to trace
the algorithm at the end of each consecutive step, by
comparing the step column/s and previous step column/s.
Step
1: Construct
Immediate Predecessors Column
Prepare a column
with the immediate predecessors of each activity. For
example, see column 1 in table 2.
Step
2: Identify
Activities with Identical Constraints (these activities will
turn into Arcs emanating from the same node.
5.2.1
Duplicate the immediate predecessor column (column 1) into
column 2.

Figure 1. AON
network for the precedence relations shown in Table 1.
Go over
column 2 and find repeating precedence constraints. For each
repeating constraint insert the mark “-“in column 2,
blocking the entry of the repeating constraint. We can see
in column 2 that the repeating constraints are the null
constraint (preceding activities A through E) and activity A
(preceding activities F and G). Therefore, the arcs of
activities A through E will originate from node 0 (in the
AOA net) and the arcs of activities F and G will originate
from the end node of activity A. Since column 2 must have a
unique list with no repetitions, the repeating occurrences
at rows B through E are blocked. The same is true for the
row of activity G in column 2.
Open a
third column (column 3) and number the unique precedence
constraints sequentially. Repetitions get the same number as
the first occurrence. Table 2 lists ten (0 through 9) unique
precedence constraints corresponding to AOA nodes. Thus, we
already know that together with the end node, the AOA
in the example cannot have less then 10+1=11 nodes.
Step 3:
Identify Necessary Dummy Arcs
Scan column
2 of table 2 (from step 2) and list activities that appear
more than once in that column. For example, list activity G
since it appears as a predecessor of activities M and N
(note that activities M and N have different precedence
constraints). Also, list activity H as it precedes
activities K, L and M. Since all non-blocked entries are
unique constraints, each of them represents an AOA node. The
repeating activities (i.e., G, H) are precedents to two or
more AOA nodes. Since an arc can only point to one of these
nodes, there is a need for dummy arcs pointing to the other
nodes.
If one of
the repetitions found in 3.1 above is a single activity, no
dummy is needed for this repetition/constraint. The end node
of the single predecessor activity becomes the starting
point of the successor. For example, H is the only immediate
predecessor of activity K. Thus, the arrow of activity K can
originate at the end node of activity H, and there is no
need for a dummy in this case. However, as H is a part of
two other precedence relations, dummies are necessary.
Repetitions
not conforming to 3.2 correspond to dummies. Rename these
dummies with letters. For example, activity H is a
predecessor of activities L and M. However, H is not the
only predecessor of L or of M. Thus, both repetitions (L, M)
do not conform to 3.2 and therefore, there is a need to use
two dummy arcs. In column 3, the two
appearances of H are numbered H1 and H2 to designate
them as dummies. Another example is activity G that precedes
activities M and N. Both repetitions do not conform to 3.2
and therefore are renumbered as G1 and G2 to designate them
as dummies.
The first 3
steps of the algorithm using the example are summarized in
table 2. Activities are marked by letters, and nodes are
marked by numbers.

Step
4: Add Rows
and Information for Dummy Arcs
For each
dummy activity (identified in step 3), add a row at the end
of table 2. Fill this row with the name of the dummy
activity and write the real activity as the predecessor (for
example, add a new row for activity G1, and make G its
predecessor). Column 1 of table 3 depicts the result of step
4.
Step
5:
Associate Activities with their End Nodes
In this
stage, we accept the work column as the new immediate
predecessor column.
Steps 3
and 4 were devoted to solving the following problem:
Whenever an activity is part of two or more different
constraints, an arc or arrow (that points to only one node)
is not enough for its representation. Thus, additional dummy
arcs are needed to model this activity.
Thus,
after steps 3 and 4 each activity has at most one non-dummy
succeeding node (if there had originally been other nodes,
they were assigned dummy arcs). From step 2 we know the
starting AOA node of each activity (table 2, column 3).
Since each activity has its own immediate predecessors, each
starting AOA node serve also as the end node of its
immediate predecessors. So for each activity we add two new
columns: a successors column (column 3, table 3), and a
successor start node column (column 4, table 3). The
successors starting node is also the end node of the
activity's arc.
Finding
successors (table 3, column 3)
For each
activity, scan column 1 in table 3 and find where the
activity appears as an immediate predecessor. This activity
is illustrated by arrows in table 3.
If an
activity still misses a successor, it is either because its
end node is followed by dummies only, or it is the project's
end node. For these missing end node entries add new node
numbers. For example, since activity G is followed by
dummies only, it needs an artificial node. Therefore, node
10 is added (see table 3, column 4). Also, node 11 is
added for the project end node (see table 3, column 4).
Finding
the successor start node (which is the activity end node -
table 3, column 4)
The start
node of any non-dummy activity (successor activities
included) is already in column 2 of table 3 (taken from
table 2, column 3). Once a successor has been found, its
start node must be the end node of the predecessor arc.
Looking up in column 2 of table 3 at the successor's row
gives the successor's start node. This start node is the end
node of the predecessor activity, which is the activity of
the current row. Thus, we go sequentially over all the rows
and find their corresponding end nodes in that fashion.

Step
6: Associate
Dummy Arcs with Their Start nodes
Each dummy
arc represents the end of its associated non-dummy activity.
Thus, the dummy arc should follow the end node of the
real arc of its activity. All end nodes are identified
in step 5. Therefore, step 5 is required before step 6 to
enable the designation of an origin node to each dummy arc.
To recapitulate, the start node of each dummy is the end
node of its corresponding real activity. For
example, dummy activity G1 starts where activity G ends.
Since activity G ends at node 10, the arc of activity G1
starts at node 10. The bottom of Column 2 in table 4 depicts
the results of step 6.



Step
7:
Check for necessity to add
nodes and dummies to compensate for the effect of a single
project start node, and a single project end node. Update
the table with the new activity names.
It is a
convention to have a start node for the start of a project.
Hence, when a project net starts with several parallel arcs
from the start node, some of these arcs may end at the same
end node, creating a situation where different arcs have the
same start and end nodes. For classic notations such as Aij
there is no way to differentiate between these arcs, and in
addition this is not a tolerable format for some LP
formulations. Therefore, dummy node and arc are added for
such cases (until there are no two arcs with the same start
and end nodes). For example, both activities C and D start
at node 0 and end at node 4. Therefore, a dummy node 12 is
added for activity 4 and a new dummy arc. Now activity 4
starts at node 0 but ends at node 12 (column 3 in table 4).
Next, we connect an additional dummy arc from node 12 to
node 4 (bottom of table 4).
The same
situation can arise at the end of the project (since it is
customary to have a single end node per project). Again, the
solution is to add dummy nodes and arcs as necessary. These
situations are easy to detect by scanning the columns of the
start and end nodes. If the same pair appears more then
once, then dummy node and arc are necessary for each
repetition. At the end of this process each arc should have
its unique start/end node combination.
After
making sure that each arc has its own unique combination of
start/end nodes, the arc names should refer to this
combination. The name of each activity is changed to a
letter and two indexes marking its start and end nodes (see
column 4 table 4).
Table 4 is
suitable for the construction of Activities on Arcs Network.
It contain every AOA activity (including the dummy
activities) and the start and end nodes associated with it.
Translating the Generated AOA to AON
The
construction of AON network from its precedence table (where
all the immediate predecessors of each activity are listed)
is a trivial task. Thus, describing the steps that generate
the precedence table from the generated AOA, is enough to
supply all the information needed for generating an AON
network. The steps that generate the precedence table from
the generated AOA are as follows:
1.
All real (non-dummy) activities are assigned AON node
numbers.
2.
Duplicate the AOA net with the new node number from step 1.
In the duplicated net, give the dummy arcs the same number
as their predecessors.
3.
For each AOA activity, find and list the numbers of its
immediate predecessors (numbers from step 2). The obtained
list is the precedence constraint of the activity.
The output
of step 3 is a precedence table. Thus, these three steps are
enough to accumulate all the information needed for
generating an AON network.
Characteristics of the generated AOA network
This
section focuses on two main subjects: (1) The number of
dummies, and (2) The correspondence between the precedence
table and the generated AOA.
So far the
method is presented in somewhat intuitive form. To add some
formality to the discussion, some definitions along with
propositions and their proofs are presented next:
Definitions:
N -
the number of
activities or AON nodes
P
- the number of AON arcs (the number of immediate precedence
relations)
X
- set of
all AON nodes having multiple emanating arcs
Y
- subset of X,
composed of nodes of X that all
their emanating arcs terminate in nodes that have other
incoming arcs (from other nodes).
Z
- number of AON nodes that all their incoming arcs are from
Y
A
- the number of emanating arcs of the subset Y
(A=2 in "Case B" of Figure 3).
di+
- the outbound degree of node i (number of emanating arcs
from node i AON)
D = E(d+)
= - the average
(expected value) outbound degree of a node in a AON network.
S
- number of dummies needed for keeping a unique pair of
nodes for activities artificially connected to the start or
end nodes.
Proposition 1. The
number of generated dummies in the generated AOA () is:
Number
of Dummies = S + P - N + A -
Z (1)

Proof
1. S is
added for correctly accounting for the addition of single
start and end nodes. The number of arcs in the AON (P)
is the number of pairwise precedence relationships each must
be expressed by an arc in the AOA. If all N real
activities would be used to express immediate precedence
then the number of dummies would have been P-N.
However, of the N real arcs, in (A-Z)
cases the real activity could not be used directly to convey
precedence (Z prevents duplicity). Thus, the number
of "real" AOA arcs that are used as direct predecessors, is
N-A+Z.
Since all
AOA arcs have to convey all (P) pairwise precedence
relationships, and since there are (N-A) real AOA
arcs that convey immediate precedence relationship, the
remaining (P-(N-A+Z)) = P - N + A
-Z precedence relationships must be dummies.
Lemma.
The number of
generated dummies in the generated AOA is also:
Number
of Dummies =S
+ N×(D-1)+A-Z
(2)
Proof.
Since the total
number of AON arcs (P) is also the total number of
AON outbound degrees:
we can
substitute P = N×D,
in P - N + A - Z (which is, from proposition
1, the number of dummy arcs). The result is: N×D-N+A-Z
= N×(D-1)+A-Z
. Q.E.D.
Example
(using figure 1
for AON and figure 2 for its corresponding AOA):
From
figure 1 we have: N=15, P=Sdi=18,
A=1 (activity G), D=18/15=1.2
Correctly
adding a single start node yields: S=1
Thus, from
proposition 1 we have: Number_ of_dummies =S+P-N+A-Z
= 1+18-15+1 = 5
And from
proposition 2 we have: Number_ of_dummies =S+N×(D-1)+A
=
1+15(1.2-1)+1= 1+15×(0.2)+1
=
5
This
indeed is the number of dummy arcs in figure 2.
Proposition 2. In
the generated AOA, each combination of: (1) AOA node
i, and (2) a non-dummy arc emanating from the node
i, corresponds to a row in the immediate predecessors
table.
Proof
2. In the
generated AOA, by definition, each non dummy arc corresponds
to a unique activity. Also, focusing on the starting node of
an activity i, the algorithm attaches (in step 5) the
incoming arcs into node i, which correspond to the
immediate predecessors of this activity, to node i.
In case a dummy is a predecessor, it is directly connected
to the end of its real activity.
One of the
important by-products of proposition 2 is that the generated
AOA net has the same early-start (ES) and late-finish
(LF) times for each activity as in the corresponding
AON net.
Also,
Each of the AOA arcs (real or dummy) corresponds to a
precedence relationship - that is an AON arc.
Conclusion
This paper
presents a new approach for generating AOA networks: instead
of trying to minimize the number of dummy arcs (and losing
the difference between immediate and not immediate
predecessors) an AOA network construction algorithm that
builds a network, in which the incoming arcs of each node
correspond to the immediate precedence constraints of the
nodes' outgoing arc/s. The method ensures the generation of
a unique AOA network for a given precedence table. While the
algorithm does not minimize the number of dummy arcs, it is
very efficient: the method adds dummies only for pointing at
more then one precedence constraint. Any dummy removal
destroys this immediate precedence logic, and any other
dummy arrangement destroys the analogy to the precedence
table. Expressions for the number of generated dummy arcs
are developed. The new method presented here enables a
systematic construction of a unique AOA network from a list
of tasks and precedence constraints. Thus, it enables a
systematic translation back and forth from an AON into an
AOA network.
References
[1] M. K.
Agarawal, S. E. Elmaghraby, W. S. Herroelen, 1996. DAGEN a
generator for test sets for project activity nets,
European Journal of Operational Research, 90, 376-382.
[2] N. H.
Ahuja, S. P. Dozzi, , S. M. Abourizk, , 1994. Project
Management Techniques in Planning and Controlling
Construction Projects (2nd Edition, John
Wiley and Sons Inc.).
[3] Y.
Cohen, 2003. A New Approach for Automated Construction of
Activities on Arcs (AOA) Networks, Research report - July
2003-1, Deposited at the library, The Open University of
Israel.
[4] D.G.
Corneil, C.C. Gotlieb, and Y.M. Lee, 1973. Minimal
event-node network of project precedence relations,
Communications of the SCM, 16, 296-298.
[5] E.
Demeulemeester, B. Dodin, and W. Herroelen, 1993. A random
activity network generator, Operations Research, 41
(5), 972-980.
[6] E.
Demeulemeester, L. W. Herroelen, and S. Willy, 2002.
Project Scheduling, A Research Handbook, Kluwer Academic
Publishing.
[7] D.
Dimsdale, 1963. Computer construction of minimal project
network, IBM systems journal, 2, 24-36.
[8] S. E.
Elmaghraby, and W. S. Herroelen, 1980. On measurement of
complexity in activity networks, European Journal of
Operational Research, 5, 223-234.
[9] S. E.
Elmaghraby, and J. Kamburowski, 1990. On project
representation and activity floats, Arabian Journal of
Science and Engineering, 15, 625-637.
[10] S. E.
Elmaghraby, 1995. Activity nets: A guided tour through some
recent developments, European Journal of Operational
Research, 82, 383-408.
[11] M.
Hayes, 1969. The role of activity precedence relations in
node-oriented networks. In H.J.M. Lombaers (ed.), Project
planning by network analysis, North-Holland Publishing
Company, Amsterdam, 128-146.
[12] A.C.
Fisher, D.S. Liberman, and G.L. Nemhauser, 1968. Computer
construction of project networks, Communications of the
ACM, 11, 493-497.
[13] M. S.
Krishnamoorty, and N. Deon, 1979. Complexity of
minimum-Dummy-Activities Problem in a Pert Network,
Networks, 9, 189-194.
[14] J. D.
Kamburowski, J. Michael, and M. Stallman , 1992. Optimal
construction of Project Activity Networks, Proceeding of
the Annual Meeting of the Decision Sciences Institute,
San-Francisco, CA, 1424-1426.
[15] J. D.
Kamburowski, J. Michael, and M. Stallman, 2000. Minimizing
the Complexity of an Activity Network, Networks, 36
(1), 47-52.
[16] P. J.
Lewis, 1995. Project Planning, Scheduling and Control,
McGraw-Hill.
[17] S.
Nahmias, 2001. Production and Operations Analysis, 4th
Edition., McGraw-Hill Irwin.
[18] A.
Shtub, J.Bard, S. Globerson, 1994. Project Management:
Engineering, Technology and Implementation,
Pearson Education.
[19] J.
Spinard, 1980. The Minimum Dummy Task Problem, Networks,
16, 331-348.
[20] M..M.
Syslo, 1981. Optimal Construction of Event-Node Networks,
RAIRO, 15, 241-260.
[21] M..M.
Syslo, 1984. On the Computational Complexity of the Minimum
dummy Activities Problem in PERT Network, Networks,
14, 37-45. |