The CPM Procedure

Example 4.1 Activity-on-Node Representation

Output 4.1.1: Network Showing Task Relationships in Activity-on-Node Format

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

Widget Manufacture: Activity-On-Node Format
Critical Path

Obs task succ1 succ2 succ3 days E_START E_FINISH L_START L_FINISH T_FLOAT F_FLOAT
1 Approve Plan Drawings Study Market Write Specs 5 0 5 0 5 0 0
2 Drawings Prototype     10 5 15 5 15 0 0
3 Study Market Mkt. Strat.     5 5 10 35 40 30 0
4 Write Specs Prototype     5 5 10 10 15 5 5
5 Prototype Materials Facility   15 15 30 15 30 0 0
6 Mkt. Strat. Test Market Marketing   10 10 20 40 50 30 30
7 Materials Init. Prod.     10 30 40 30 40 0 0
8 Facility Init. Prod.     10 30 40 30 40 0 0
9 Init. Prod. Test Market Marketing Evaluate 10 40 50 40 50 0 0
10 Evaluate Changes     10 50 60 55 65 5 5
11 Test Market Changes     15 50 65 50 65 0 0
12 Changes Production     5 65 70 65 70 0 0
13 Production       0 70 70 70 70 0 0
14 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

Widget Manufacture: Activity-On-Node 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
Engineering Changes Engineering 04FEB04 08FEB04 04FEB04 08FEB04 0 0
Begin Full Scale Production Manufacturing 09FEB04 09FEB04 09FEB04 09FEB04 0 0