Example 4.1 Activity-on-Node Representation
Output 4.1.1
Network Showing Task Relationships in Activity-on-Node Format
The following DATA step reads the project network in AON format into a SAS data set named WIDGET. The data set contains the minimum amount of information needed to invoke PROC CPM, namely, the ACTIVITY variable, one or more SUCCESSOR variables, and a DURATION variable. PROC CPM is invoked, and the Schedule data set is displayed using the PRINT procedure in Output 4.1.2. The Schedule data set produced by PROC CPM contains the solution in canonical units, without reference to any calendar date or time. For instance, the early start time of the first activity in the project is the beginning of period 0 and the early finish time is the beginning of period 5.
/* Activity-on-Node representation of the project */
data widget;
format task $12. succ1-succ3 $12.;
input task & days succ1 & succ2 & succ3 & ;
datalines;
Approve Plan 5 Drawings Study Market Write Specs
Drawings 10 Prototype . .
Study Market 5 Mkt. Strat. . .
Write Specs 5 Prototype . .
Prototype 15 Materials Facility .
Mkt. Strat. 10 Test Market Marketing .
Materials 10 Init. Prod. . .
Facility 10 Init. Prod. . .
Init. Prod. 10 Test Market Marketing Evaluate
Evaluate 10 Changes . .
Test Market 15 Changes . .
Changes 5 Production . .
Production 0 . . .
Marketing 0 . . .
;
/* Invoke PROC CPM to schedule the project specifying the */
/* ACTIVITY, DURATION and SUCCESSOR variables */
proc cpm;
activity task;
duration days;
successor succ1 succ2 succ3;
run;
title 'Widget Manufacture: Activity-On-Node Format';
title2 'Critical Path';
proc print;
run;
Output 4.1.2
Critical Path
Approve Plan |
Drawings |
Study Market |
Write Specs |
5 |
0 |
5 |
0 |
5 |
0 |
0 |
Drawings |
Prototype |
|
|
10 |
5 |
15 |
5 |
15 |
0 |
0 |
Study Market |
Mkt. Strat. |
|
|
5 |
5 |
10 |
35 |
40 |
30 |
0 |
Write Specs |
Prototype |
|
|
5 |
5 |
10 |
10 |
15 |
5 |
5 |
Prototype |
Materials |
Facility |
|
15 |
15 |
30 |
15 |
30 |
0 |
0 |
Mkt. Strat. |
Test Market |
Marketing |
|
10 |
10 |
20 |
40 |
50 |
30 |
30 |
Materials |
Init. Prod. |
|
|
10 |
30 |
40 |
30 |
40 |
0 |
0 |
Facility |
Init. Prod. |
|
|
10 |
30 |
40 |
30 |
40 |
0 |
0 |
Init. Prod. |
Test Market |
Marketing |
Evaluate |
10 |
40 |
50 |
40 |
50 |
0 |
0 |
Evaluate |
Changes |
|
|
10 |
50 |
60 |
55 |
65 |
5 |
5 |
Test Market |
Changes |
|
|
15 |
50 |
65 |
50 |
65 |
0 |
0 |
Changes |
Production |
|
|
5 |
65 |
70 |
65 |
70 |
0 |
0 |
Production |
|
|
|
0 |
70 |
70 |
70 |
70 |
0 |
0 |
Marketing |
|
|
|
0 |
50 |
50 |
70 |
70 |
20 |
20 |
Alternately, if you know that the project is to start on December 1, 2003, then you can determine the project schedule with reference to calendar dates by specifying the DATE= option in the PROC CPM statement. The default unit of duration is assumed to be DAY. The architecture of PROC CPM enables you to include any number of additional variables that are relevant to the project. Here, for example, you may want to include more descriptive activity names and department information. The data set DETAILS contains more information about the project that is merged with the WIDGET data set to produce the WIDGETN data set. The ID statement is useful to carry information through to the data set. Output 4.1.3 displays the resulting output data set.
data details;
format task $12. dept $13. descrpt $30. ;
input task & dept $ descrpt & ;
label dept = "Department"
descrpt = "Activity Description";
datalines;
Approve Plan Planning Finalize and Approve Plan
Drawings Engineering Prepare Drawings
Study Market Marketing Analyze Potential Markets
Write Specs Engineering Write Specifications
Prototype Engineering Build Prototype
Mkt. Strat. Marketing Develop Marketing Concept
Materials Manufacturing Procure Raw Materials
Facility Manufacturing Prepare Manufacturing Facility
Init. Prod. Manufacturing Initial Production Run
Evaluate Testing Evaluate Product In-House
Test Market Testing Mail Product to Sample Market
Changes Engineering Engineering Changes
Production Manufacturing Begin Full Scale Production
Marketing Marketing Begin Full Scale Marketing
;
/* Combine project network data with additional details */
data widgetn;
merge widget details;
run;
/* Schedule using PROC CPM, identifying the variables */
/* that specify additional project information */
/* and set project start date to be December 1, 2003 */
proc cpm data=widgetn date='1dec03'd;
activity task;
successor succ1 succ2 succ3;
duration days;
id dept descrpt;
run;
proc sort;
by e_start;
run;
title2 'Project Schedule';
proc print;
id descrpt;
var dept e_: l_: t_float f_float;
run;
Output 4.1.3
Critical Path: Activity-On-Node Format
Planning |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
0 |
Engineering |
06DEC03 |
15DEC03 |
06DEC03 |
15DEC03 |
0 |
0 |
Marketing |
06DEC03 |
10DEC03 |
05JAN04 |
09JAN04 |
30 |
0 |
Engineering |
06DEC03 |
10DEC03 |
11DEC03 |
15DEC03 |
5 |
5 |
Marketing |
11DEC03 |
20DEC03 |
10JAN04 |
19JAN04 |
30 |
30 |
Engineering |
16DEC03 |
30DEC03 |
16DEC03 |
30DEC03 |
0 |
0 |
Manufacturing |
31DEC03 |
09JAN04 |
31DEC03 |
09JAN04 |
0 |
0 |
Manufacturing |
31DEC03 |
09JAN04 |
31DEC03 |
09JAN04 |
0 |
0 |
Manufacturing |
10JAN04 |
19JAN04 |
10JAN04 |
19JAN04 |
0 |
0 |
Testing |
20JAN04 |
29JAN04 |
25JAN04 |
03FEB04 |
5 |
5 |
Testing |
20JAN04 |
03FEB04 |
20JAN04 |
03FEB04 |
0 |
0 |
Marketing |
20JAN04 |
20JAN04 |
09FEB04 |
09FEB04 |
20 |
20 |
Engineering |
04FEB04 |
08FEB04 |
04FEB04 |
08FEB04 |
0 |
0 |
Manufacturing |
09FEB04 |
09FEB04 |
09FEB04 |
09FEB04 |
0 |
0 |
Copyright © SAS Institute, Inc. All Rights Reserved.