The problem discussed in Example 4.1 can also be described in an AOA format. The network is illustrated in Output 4.2.1. The network has an arc labeled 'Dummy', which is required to accurately capture all the precedence relationships. Dummy arcs are often needed when representing scheduling problems in AOA format.
The following DATA step saves the network description in a SAS data set, WIDGAOA
. The data set contains the minimum amount of information required by PROC CPM for an activity network in AOA format, namely,
the TAILNODE and HEADNODE variables, which indicate the direction of each arc in the network and the DURATION variable which
gives the length of each task. In addition, the data set also contains a variable identifying the name of the task associated
with each arc. This variable, task
, can be identified to PROC CPM using the ACTIVITY statement. PROC CPM treats each observation in the data set as a new task,
thus enabling you to specify multiple arcs between a pair of nodes. In this example, for instance, both the tasks 'Drawings'
and 'Write Specs' connect the nodes 2 and 3; likewise, both the tasks 'Materials' and 'Facility' connect the nodes 5 and 7.
If multiple arcs are not allowed, you would need more dummy arcs in this example. However, the dummy arc between nodes 8 and
6 is essential to the structure of the network and cannot be eliminated.
As in Example 4.1, the data set DETAILS
containing additional activity information, can be merged with the Activity data set and used as input to PROC CPM to determine
the project schedule. For purposes of display (in Gantt charts, and so on) the dummy activity has been given a label, 'Production
Milestone'. Output 4.2.2 displays the project schedule.
/* Activity-on-Arc representation of the project */ data widgaoa; format task $12. ; input task & days tail head; datalines; Approve Plan 5 1 2 Drawings 10 2 3 Study Market 5 2 4 Write Specs 5 2 3 Prototype 15 3 5 Mkt. Strat. 10 4 6 Materials 10 5 7 Facility 10 5 7 Init. Prod. 10 7 8 Evaluate 10 8 9 Test Market 15 6 9 Changes 5 9 10 Production 0 10 11 Marketing 0 6 12 Dummy 0 8 6 ;
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 Dummy . Production Milestone ; data widgeta; merge widgaoa details; run;
/* The project is scheduled using PROC CPM */ /* The network information is conveyed using the TAILNODE */ /* and HEADNODE statements. The ID statement is used to */ /* transfer project information to the output data set */ proc cpm data=widgeta date='1dec03'd out=save; tailnode tail; headnode head; duration days; activity task; id dept descrpt; run; proc sort; by e_start; run; title 'Widget Manufacture: Activity-On-Arc Format'; title2 'Project Schedule'; proc print; id descrpt; var dept e_: l_: t_float f_float; run;
Output 4.2.2: Critical Path: Activity-on-Arc Format
Widget Manufacture: Activity-On-Arc Format |
Project Schedule |
descrpt | dept | E_START | E_FINISH | L_START | L_FINISH | T_FLOAT | F_FLOAT |
---|---|---|---|---|---|---|---|
Finalize and Approve Plan | Planning | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | 0 |
Prepare Drawings | Engineering | 06DEC03 | 15DEC03 | 06DEC03 | 15DEC03 | 0 | 0 |
Analyze Potential Markets | Marketing | 06DEC03 | 10DEC03 | 05JAN04 | 09JAN04 | 30 | 0 |
Write Specifications | Engineering | 06DEC03 | 10DEC03 | 11DEC03 | 15DEC03 | 5 | 5 |
Develop Marketing Concept | Marketing | 11DEC03 | 20DEC03 | 10JAN04 | 19JAN04 | 30 | 30 |
Build Prototype | Engineering | 16DEC03 | 30DEC03 | 16DEC03 | 30DEC03 | 0 | 0 |
Procure Raw Materials | Manufacturing | 31DEC03 | 09JAN04 | 31DEC03 | 09JAN04 | 0 | 0 |
Prepare Manufacturing Facility | Manufacturing | 31DEC03 | 09JAN04 | 31DEC03 | 09JAN04 | 0 | 0 |
Initial Production Run | Manufacturing | 10JAN04 | 19JAN04 | 10JAN04 | 19JAN04 | 0 | 0 |
Evaluate Product In-House | Testing | 20JAN04 | 29JAN04 | 25JAN04 | 03FEB04 | 5 | 5 |
Mail Product to Sample Market | Testing | 20JAN04 | 03FEB04 | 20JAN04 | 03FEB04 | 0 | 0 |
Begin Full Scale Marketing | Marketing | 20JAN04 | 20JAN04 | 09FEB04 | 09FEB04 | 20 | 20 |
Production Milestone | 20JAN04 | 20JAN04 | 20JAN04 | 20JAN04 | 0 | 0 | |
Engineering Changes | Engineering | 04FEB04 | 08FEB04 | 04FEB04 | 08FEB04 | 0 | 0 |
Begin Full Scale Production | Manufacturing | 09FEB04 | 09FEB04 | 09FEB04 | 09FEB04 | 0 | 0 |