The CPM Procedure

Example 2.1: Activity-on-Node Representation



cpmnet1.gif (5654 bytes)

Figure 2.6: 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 2.1.1. 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      Anal. Market  Write Specs 
    Drawings      10  Prototype     .             . 
    Anal. 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 2.1.1: 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 Anal. Market Write Specs 5 0 5 0 5 0 0
2 Drawings Prototype     10 5 15 5 15 0 0
3 Anal. 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 output data set. Output 2.1.2 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 
    Anal. 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; 
  
    options ls=90; 
  
    title2 'Project Schedule'; 
    proc print; 
       id descrpt; 
       var dept e_: l_: t_float f_float; 
       run;
 

Output 2.1.2: 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
Test Product in 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



Previous Page | Next Page | Top of Page