chap1
chap1
OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
DATA FLOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
The CPM Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
The GANTT Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
The NETDRAW Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
The PM Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Communication between Procedures . . . . . . . . . . . . . . . . . . . . . . 9
DECISION SUPPORT SYSTEMS . . . . . . . . . . . . . . . . . . . . . . . 10
DECISION ANALYSIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
The DTREE Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
EXAMPLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Example 1.1 Project Definition . . . . . . . . . . . . . . . . . . . . . . . . . 12
Example 1.2 Work Breakdown Structure . . . . . . . . . . . . . . . . . . . . 15
Example 1.3 Project Scheduling and Reporting . . . . . . . . . . . . . . . . 16
Example 1.4 Summary Report . . . . . . . . . . . . . . . . . . . . . . . . . 18
Example 1.5 Resource-Constrained Scheduling . . . . . . . . . . . . . . . . 20
Example 1.6 Multiple Projects . . . . . . . . . . . . . . . . . . . . . . . . . 24
Example 1.7 Sequential Scheduling of Projects . . . . . . . . . . . . . . . . 32
Example 1.8 Project Cost Control . . . . . . . . . . . . . . . . . . . . . . . 35
Example 1.9 Subcontracting Decisions . . . . . . . . . . . . . . . . . . . . . 42
PROJECT MANAGEMENT SYSTEMS . . . . . . . . . . . . . . . . . . . . 45
THE PROJMAN APPLICATION . . . . . . . . . . . . . . . . . . . . . . . 46
MDBTOPM MACRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2 Chapter 1. Introduction to Project Management
Data Flow
This section provides an overview of how project information is stored in the SAS
System in data sets and how these data sets are used by the CPM, GANTT, NET-
DRAW, and PM procedures. Maintaining the project information in SAS data sets
enables you to merge project information easily from several sources, summarize in-
formation, subset project data, and perform a wide variety of other operations using
any of the many procedures in SAS software. Each of the SAS/OR procedures also
defines a SAS macro variable that contains a character string indicating whether or
4 Chapter 1. Introduction to Project Management
not the procedure terminated successfully. This information is useful when the pro-
cedure is one of the steps in a larger program.
activity data
holiday data
?
– ORCPM–
Figure 1.1. Input and Output Data Sets in PROC CPM
The three output data sets produced by PROC CPM contain all the information about
the schedule and the resource usage; these data sets can be used as input to either
PROC GANTT or PROC NETDRAW or to any of the several reporting, charting, or
plotting procedures in the SAS System.
The Schedule data set can also contain additional project information such as project
id, department and phase information, accounting categories, and so on, in the form
of ID variables passed to it from the Activity input data set via the ID statement.
These variables can be used to produce customized reports by reordering, subsetting,
summarizing, or condensing the information in the Schedule data set in various ways.
- HTML output
- High Resolution graphics
-
-
Full-Screen mode
Line-Printer output
schedule data
calendar data
?
label data
– ORGANTT
the same project network is drawn several times during the course of a project. You
may want to see the updated information drawn on the network every week; you can
save computer resources by using the same node placement and arc routing, without
having the procedure recompute it every time. PROC NETDRAW defines the macro
variable – ORNETDR, which contains a character string indicating if the procedure
terminated successfully.
The NETDRAW procedure is also web-enabled (like PROC GANTT), and it supports
the HTML= and IMAGEMAP= options.
Figure 1.3 illustrates the flow of data in and out of PROC NETDRAW.
- HTML output
- High Resolution graphics
-
-
Full-Screen mode
Line-Printer output
activity data
-
-
or network data
PROC
-
schedule data
or NETDRAW imagemap data
network data
?
– ORNETDR
The PM Procedure
PROC PM is an interactive procedure that can be used for planning, controlling,
and monitoring a project. The syntax and the scheduling features of PROC PM are
virtually the same as those of PROC CPM; there are a few differences, which are
described in Chapter 6, “The PM Procedure.” As far as the flow of data is concerned
(see Figure 1.4), the PM procedure supports an additional data set that can be used to
save and restore preferences that control the project view. The scheduling engine used
by the PM procedure is the same as the one used by PROC CPM; the same macro
variable, – ORCPM– , is used to indicate if the schedule was computed successfully.
activity data
preference data
?
– ORCPM–
Figure 1.4. Input and Output Data Sets in PROC PM
- schedule data
-
Data manipulation:
sort, merge, subset
and so on
- resource usage data
Reporting procedures:
-
GANTT, NETDRAW, PRINT,
CALENDAR, PLOT, CHART,
GPLOT, GCHART, other
ways you display and
print your data
Of course, this is only one possible scenario of the use of these procedures. In addi-
tion, you may want to use PROC NETDRAW to check the logic of the network dia-
gram before scheduling the project using PROC CPM. Further, the data flow shown
in Figure 1.5 may represent only the first iteration in a continuous scheme for moni-
toring the progress of a project. As the project progresses, you may update the data
sets, including actual start and finish times for some of the activities, invoke PROC
CPM again, produce updated Gantt charts and network diagrams, and thus continue
monitoring the project.
For example, a project management system designed for scheduling and tracking a
major outage at a power plant may include the steps illustrated in Figure 1.6. In the
sequences of steps illustrated in both these figures, you can use PROC PM to update
most of the activity information using the procedure’s graphical user interface.
Thus, SAS/OR software provides four different procedures designed for performing
many of the traditional project management tasks; these procedures can be combined
in a variety of ways to build a customized comprehensive project management sys-
? Schedule and
- - -
Daily update PROC CPM
Start of activity to update resource
outage
6 information schedule
status reports
Decision Analysis
There are several stages in the course of a project when critical decisions are to be
made regarding the future path that is to be followed. In fact, the most crucial decision
might be to decide at the beginning whether to embark on the project or not. Other
important decisions that could benefit from using decision analysis tools may be sub-
contract awarding, subproject termination in a research and development (R&D) en-
vironment, what-if analysis, and so on. Decision analysis techniques can be used
effectively in such situations to help make decisions under uncertainty.
- HTML output
- High Resolution graphics
- Line-Printer output
stage data
You can use PROC DTREE to display, evaluate, and summarize your decision prob-
lem. The procedure can be used to plot the decision tree in line-printer or graphics
mode. The optimal decisions are highlighted on the output. Further, a summary table
can be displayed listing all paths through the decision tree along with the cumulative
reward and the evaluating values of all alternatives for that path. The summary table
indicates the optimal evaluating value for each path with an asterisk. The procedure
can also perform sensitivity analysis and what-if analysis. A simple decision problem
is described in Example 1.9.
Examples
In this section, a few simple examples illustrate some of the basic data flow concepts
described in this chapter. More detailed examples of each procedure are provided
in the corresponding chapters and can also be found in SAS/OR Software: Project
Management Examples.
data survey;
input id $ 1-20
activity $ 22-29
duration
succ1 $ 34-41
succ2 $ 43-50
succ3 $ 52-59
phase $ 61-69;
The data set survey can be input to PROC CPM, which calculates how long the
project will take given the current estimates of the durations. As a first step, you may
want to graph the project network using PROC NETDRAW. In the initial stages of
defining the tasks in a project, it is useful to see how the tasks relate to each other and
perhaps modify some of the relationships. The following program invokes PROC
NETDRAW; the ZONE= option is used to create a zoned network diagram with the
activities grouped according to the phase of the project to which they correspond.
The network diagram is shown in Output 1.1.1.
title ’ ’;
title2 h=3 c=black f=swiss ’Conducting a Market Survey’;
pattern1 v=e c=green;
pattern2 v=e c=red;
pattern3 v=e c=magenta;
data wbs;
input parent $ 1-10
child $ 12-21
style;
datalines;
Survey Plan 1
Survey Prepare 1
Survey Implement 1
Plan Plan S. 2
Plan Design Q. 2
Prepare Hire P. 3
Prepare Train P. 3
Prepare Select H. 3
Prepare Print Q. 3
Implement Conduct S. 4
Implement Analyze R. 4
Plan S. 2
Design Q. 2
Hire P. 3
Train P. 3
Select H. 3
Print Q. 3
Conduct S. 4
Analyze R. 4
;
goptions rotate=portrait;
goptions hpos=50 vpos=90 border;
data holidata;
format hol date7.;
hol = ’3jul98’d;
run;
holiday hol;
run;
proc sort;
by e_start;
run;
proc print;
run;
The schedule produced by PROC CPM is then graphed by invoking PROC GANTT,
as shown in the following code. The CALENDAR procedure or NETDRAW proce-
dure can also be used to display the schedule. The Gantt chart produced is shown in
Output 1.3.2. Note that the precedence relationships are displayed on the Gantt chart.
cprec=blue caxis=black ;
id id phase;
run;
data program;
input task $ 1-10
succ $ 11-20
dur
processor ;
datalines;
Sort A Merge 1 5 1
Sort B Merge 1 4 1
Sort C Merge 1 3 1
Sort D Merge 2 6 1
Sort E Merge 2 4 1
Sort F Merge 2 6 1
Merge 1 Compare 5 1
Merge 2 Compare 4 1
Compare 5 1
;
If the programming project is scheduled (in absolute units) without any resource con-
straints, it will take 15 time units for completion and will require a maximum avail-
ability of 6 processors. Suppose now that only 2 processors are available. The resin
data set limits the availability of the resource to 2, and PROC CPM is invoked with
two input data sets (Activity data set program and Resource data set resin) to pro-
duce a resource-constrained schedule.
PROC CPM produces two output data sets. The Schedule data set (progschd)
contains the resource-constrained schedule (S– START and S– FINISH variables)
in addition to the early and late start unconstrained schedules. The Usage data set
(progrout) shows the number of processors required at every unit of time, if the early
start schedule or the late start schedule or the resource-constrained schedule were
followed, in the variables eprocessor, lprocessor, and rprocessor, respectively;
the variable aprocessor shows the number of processors remaining after resource
allocation. The two output data sets are displayed in Output 1.5.1.
data resin;
input per processor;
datalines;
0 2
;
proc cpm data=program resin=resin
out=progschd resout=progrout;
activity task;
duration dur;
successor succ;
resource processor/per=per;
run;
title ’Scheduling Programming Tasks’;
title2 ’Data Set PROGSCHD’;
proc print data=progschd;
run;
title2 ’Data Set PROGROUT’;
proc print data=progrout;
run;
The Schedule and Usage data sets, displayed in Output 1.5.1, can be used to generate
any type of report concerning the schedules or processor usage. In the following
program, the unconstrained and constrained schedules are first plotted using PROC
GANTT (see Output 1.5.2).
p
r S E L
o S _ E _ L _
c _ F _ F _ F
e S I S I S I
t s s T N T N T N
O a u d s A I A I A I
b s c u o R S R S R S
s k c r r T H T H T H
1 Sort A Merge 1 5 1 0 5 0 5 0 5
2 Sort B Merge 1 4 1 6 10 0 4 1 5
3 Sort C Merge 1 3 1 10 13 0 3 2 5
4 Sort D Merge 2 6 1 0 6 0 6 0 6
5 Sort E Merge 2 4 1 11 15 0 4 2 6
6 Sort F Merge 2 6 1 5 11 0 6 0 6
7 Merge 1 Compare 5 1 13 18 5 10 5 10
8 Merge 2 Compare 4 1 15 19 6 10 6 10
9 Compare 5 1 19 24 10 15 10 15
1 0 6 3 2 0
2 1 6 4 2 0
3 2 6 6 2 0
4 3 5 6 2 0
5 4 3 6 2 0
6 5 3 4 2 0
7 6 2 2 2 0
8 7 2 2 2 0
9 8 2 2 2 0
10 9 2 2 2 0
11 10 1 1 2 0
12 11 1 1 2 0
13 12 1 1 2 0
14 13 1 1 2 0
15 14 1 1 2 0
16 15 0 0 2 0
17 16 0 0 2 0
18 17 0 0 2 0
19 18 0 0 1 1
20 19 0 0 1 1
21 20 0 0 1 1
22 21 0 0 1 1
23 22 0 0 1 1
24 23 0 0 1 1
25 24 0 0 0 2
Next, the GPLOT procedure is invoked using the Usage data set to compare the un-
constrained and the constrained usage of the resource (see Output 1.5.3).
Consider a publishing company that accepts manuscripts from different authors for
publication. The publication of each book can be treated as a project. Thus, at a
given point in time, several projects, almost identical in nature, may be in progress.
Some of the resources that may be needed are a technical editor, a copyeditor, and
a graphic artist. All the books that are currently being worked on share a common
pool of these resources. This example uses a simplified version of such a scenario to
illustrate some of the ways in which you can handle multiple projects competing for
the same pool of resources.
The network in Output 1.6.1 represents some of the tasks required to publish one
book and the precedence constraints among these tasks; the durations in the diagram
are in weeks. Suppose that the generic project data are in the data set book, which is
displayed in Output 1.6.2. This data set is used as a template for creating the Activity
data set for any book publishing project.
Suppose that the company is working on two books simultaneously. The editor and
artist must now allocate their time between the two books. The following program
uses the template data set book to create Activity data sets book1 and book2 corre-
sponding to the publication of each book. Any modifications to the generic project
data can be made in the DATA step or by using PROC PM. In this example, the
duration for the first activity, ‘Preliminary Edit’, is changed to two weeks for the
second book. The two Activity data sets book1 and book2 are also displayed in
Output 1.6.2.
data book1;
length act $6. succ $6.;
set book;
subproj = "Book 1";
act = "B1"||task;
if succ ^= " " then succ = "B1"||succ;
run;
data book2;
length act $6. succ $6.;
set book;
subproj = "Book 2";
act = "B2"||task;
if act = "B2PEDT" then dur = 2;
if succ ^= " " then succ = "B2"||succ;
run;
Output 1.6.2. Template and Activity Data Sets for Book Publishing Example
Publishing a Book
Template Data Set
Publishing Book 1
Publishing Book 2
As a next step, the data sets for the two subprojects are combined to form an Activity
data set for the entire project. A variable priority is assigned the value ‘1’ for activities
pertaining to the first book and the value ‘2’ for those pertaining to the second one.
In other words, Book 1 has priority over Book 2. The Resource data set specifies
the availability for each of the resources to be 1. The input data sets, books and
resource, are displayed in Output 1.6.3.
data books;
set book1 book2;
if subproj = "Book 1" then priority = 1;
else priority = 2;
run;
data resource;
input avdate date7. editor artist;
format avdate date7.;
datalines;
1jan99 1 1
;
Resources Available
1 01JAN99 1 1
PROC CPM is then invoked to schedule the project to start on January 1, 1999. The
PROJECT statement is used to indicate the subproject to which each activity belongs.
The data set bookschd (displayed in Output 1.6.4) contains the schedule for the
entire project. The ADDACT option on the PROC CPM statement adds observations
for each of the subprojects, ‘Book 1’ and ‘Book 2’, as well as one observation for the
entire project. These observations are added at the end of the list of the observations
corresponding to the observations in the input data set. The Usage data set booksout
is also displayed in Output 1.6.4.
P P
s R R S
u O O e a _
b J J d r S
p _ _ s t i t T
O r D L a u d a t i A
b o U E c c u i s o s R
s j R V t c r d k r t T
S E L
_ E _ L _ R D S
F _ F _ F _ E U
I S I S I D L P
N T N T N E A P
O I A I A I L Y L
b S R S R S A _ _
s H T H T H Y R R
1 01JAN99 1 0 0 1
2 08JAN99 1 0 1 0
3 15JAN99 1 0 1 0
4 22JAN99 1 0 1 0
5 29JAN99 1 0 0 1
6 05FEB99 1 0 1 0
7 12FEB99 1 0 1 0
8 19FEB99 1 0 1 0
9 26FEB99 1 0 0 1
10 05MAR99 1 0 0 1
11 12MAR99 1 0 0 1
12 19MAR99 0 1 0 1
13 26MAR99 0 1 0 1
14 02APR99 0 1 0 1
Compare the E– START and S– START schedules (in data set bookschd) and note
that on January 1, the activity ‘B1PEDT’ for Book1 is scheduled to start while the
preliminary editing of book 2 (activity B2PEDT) has been postponed, due to subpro-
ject ‘Book 1’ having priority over subproject ‘Book 2’. On January 22, there is no
activity belonging to subproject ‘Book 1’ that demands an editor; thus, the activity
‘B2PEDT’ is scheduled to start on that day. As a result, the editor is working on an
activity in the second project for two weeks starting from January 22, 1999; when
‘B1CEDT’ is ready to start, the editor is not available, causing a delay in this activity.
Thus, even though the first book has priority over the second book, the scheduling
algorithm does not keep a resource waiting for activities in the first project. However,
if you allow activity splitting, you can reclaim the resource for the first book by al-
lowing activities in the second project to be split, if necessary. For details regarding
the scheduling algorithm allowing splitting of activities, see Chapter 2, “The CPM
Procedure.”
Note: The entire project finishes on April 1, 1999; resource constraints have delayed
project completion by four weeks. The variable R– DELAY in the Schedule data set
bookschd indicates the amount of delay in weeks caused by resource constraints.
The value of R– DELAY does not include any delay in the activity that is caused by a
resource delay in one of its predecessors. See Example 2.15 in Chapter 2, “The CPM
Procedure” for more details about the R– DELAY variable.
The output data sets bookschd and booksout can be used to produce graphical re-
ports of the schedule and the resource usage. In particular, the Schedule data set can
be used to produce a zoned, time-scaled network diagram as shown in Output 1.6.5.
The program used to produce the network diagram is shown in the following code.
In this example, only the leaf tasks (those without any subtasks) are used to draw
the network diagram. Further, the activities are aligned according to the resource-
constrained start times and grouped according to the subproject.
The same project can also be scheduled using the PM procedure, as shown below. The
resulting PM Window (after sorting the activities by the Early Schedule) is shown
in Output 1.6.6. The advantage with using PROC PM is that you can use the PM
Window to edit the activity information, such as the durations, resource requirements,
and so forth.
1 01JAN99 1 0 0 1
2 08JAN99 1 0 1 0
3 15JAN99 1 0 1 0
4 22JAN99 0 1 1 0
5 29JAN99 1 0 0 1
6 05FEB99 1 0 0 1
7 12FEB99 0 1 0 1
8 19FEB99 0 1 0 1
9 26FEB99 0 1 0 1
The Usage data set produced by PROC CPM has two variables, Aeditor and Aartist,
showing the availability of the editor and the artist on each day of the project, after
scheduling subproject BOOK1. This data set is used to create the data set remres,
listing the remaining resources available, which is then used as the Resource input
data set for scheduling the subproject BOOK2. The following program shows the
DATA step and the invocation of PROC CPM.
The schedule for publishing BOOK2 is displayed in Output 1.7.2. The Usage data
set bk2out is also displayed in Output 1.7.2. Note that this method of scheduling has
ensured that BOOK1 is not delayed; however, the entire project has been delayed by
two more weeks, resulting in a total delay of six weeks.
artist=aartist;
keep avdate editor artist;
format avdate date7.;
run;
1 12FEB99 1 0 0 1
2 19FEB99 1 0 0 1
3 26FEB99 1 0 1 0
4 05MAR99 1 0 1 0
5 12MAR99 0 1 1 0
6 19MAR99 1 0 0 1
7 26MAR99 1 0 0 1
8 02APR99 0 1 0 1
9 09APR99 0 1 0 1
10 16APR99 0 1 0 1
Actual cost of work performed (ACWP) is the actual cost expended to perform
the work accomplished in a given period of time.
Budgeted cost of work performed (BCWP) is the budgeted cost of the work
completed in a given period of time.
Budgeted cost of work scheduled (BCWS) is the budgeted cost of the work
scheduled to be accomplished in a given period of time (if a baseline schedule
were followed).
Consider the survey example described earlier in this chapter. Suppose that it is
possible to estimate the cost per day for each activity in the project. The following
data set survcost contains the project data (activity, succ1–succ3, id, duration)
and a variable named cost containing the cost per day in dollars. In order to compute
the BCWS for the project, you need to establish a baseline schedule. Suppose the
early start schedule computed by PROC CPM is chosen as the baseline schedule.
The Resource data set costavl establishes cost as a consumable resource, so that the
CPM procedure can be used to accumulate costs (using the CUMUSAGE option).
The following program invokes PROC CPM with the RESOURCE statement and
saves the Usage data set in survrout. The variable ecost in this Usage data set
contains the cumulative expense incurred for the baseline schedule; this is the same
as the budgeted cost of work scheduled (or BCWS) saved in the data set basecost.
data survcost;
input id $ 1-20
activity $ 22-29 duration
succ1 $ 34-41
succ2 $ 43-50
succ3 $ 52-59 cost;
datalines;
Plan Survey plan sur 4 hire per design q 300
Hire Personnel hire per 5 trn per 350
Design Questionnaire design q 3 trn per select h print q 100
Train Personnel trn per 3 cond sur 500
Select Households select h 3 cond sur 300
Print Questionnaire print q 4 cond sur 250
Conduct Survey cond sur 10 analyze 200
Analyze Results analyze 6 500
;
data holidata;
format hol date7.;
hol = ’3jul98’d;
run;
data costavl;
input per date7. otype $ cost;
format per date7.;
datalines;
. restype 2
1jul98 reslevel 12000
;
Suppose that the project started as planned on July 1, 1998, but some of the activities
took longer than planned and some of the cost estimates were found to be incorrect.
The following data set, actual, contains updated information: the variables as and
af contain the actual start and finish times of the activities that have been completed
or are in progress. The variable actcost contains the revised cost per day for each
activity. The following program combines this information with the existing project
data and saves the result in the data set update, displayed in Output 1.8.1. The
Resource data set costavl2 (also displayed in Output 1.8.1) defines cost and actcost
as consumable resources.
data actual;
input id $ 1-20 as date9. af date9. actcost;
format as af date7.;
datalines;
Plan Survey 1JUL98 8JUL98 275
Hire Personnel 9JUL98 15JUL98 350
Design Questionnaire 10JUL98 14JUL98 150
Train Personnel 16JUL98 17JUL98 800
Select Households 15JUL98 17JUL98 450
Print Questionnaire 15JUL98 20JUL98 250
Conduct Survey 21JUL98 . 200
;
data update;
merge survcost actual;
run;
data costavl2;
input per date7. otype $ cost actcost;
format per date7.;
datalines;
. restype 2 2
1jul98 reslevel 12000 12000
;
1 . restype 2 2
2 01JUL98 reslevel 12000 12000
Next, PROC CPM is used to revise the schedule by using the ACTUAL statement
to specify the actual start and finish times and the RESOURCE statement to specify
both the budgeted and the actual costs. The resulting schedule is saved in the data set
updsched (displayed in Output 1.8.2) and the budgeted and the actual cumulative
costs of the project (until the current date) are saved in the data set updtrout. These
cumulative costs represent the budgeted cost of work performed (BCWP) and the
actual cost of work performed (ACWP), respectively, and are saved in the data set
updtcost. The two data sets basecost and updtcost are then merged to create a
data set that contains the three measures: bcws, bcwp, and acwp. The resulting data
set is displayed in Output 1.8.3.
a d
c u
t r S
i s s s a T A
v u u u t A _
O i c c c i T D
b t c c c o U U i
s y 1 2 3 n S R d
A S E L
a A _ S _ E _ L _
c _ F _ F _ F _ F
t S I S I S I S I
c c T N T N T N T N
O o o A I A I A I A I
b s s R S R S R S R S
s t t T H T H T H T H
1 300 275 01JUL98 08JUL98 01JUL98 08JUL98 01JUL98 08JUL98 01JUL98 08JUL98
2 350 350 09JUL98 15JUL98 09JUL98 15JUL98 09JUL98 15JUL98 09JUL98 15JUL98
3 100 150 10JUL98 14JUL98 10JUL98 14JUL98 10JUL98 14JUL98 10JUL98 14JUL98
4 500 800 16JUL98 17JUL98 16JUL98 17JUL98 16JUL98 17JUL98 16JUL98 17JUL98
5 300 450 15JUL98 17JUL98 15JUL98 17JUL98 15JUL98 17JUL98 15JUL98 17JUL98
6 250 250 15JUL98 20JUL98 15JUL98 20JUL98 15JUL98 20JUL98 15JUL98 20JUL98
7 200 200 21JUL98 . 21JUL98 03AUG98 21JUL98 03AUG98 21JUL98 03AUG98
8 500 . . . 04AUG98 11AUG98 04AUG98 11AUG98 04AUG98 11AUG98
1 01JUL98 0 0 0
2 02JUL98 300 300 275
3 06JUL98 600 600 550
4 07JUL98 900 900 825
5 08JUL98 1200 1200 1100
6 09JUL98 1650 1500 1375
7 10JUL98 2100 1850 1725
8 13JUL98 2550 2300 2225
9 14JUL98 3450 2750 2725
10 15JUL98 4350 3200 3225
11 16JUL98 5400 4100 4275
12 17JUL98 6150 5150 5775
13 20JUL98 6650 6200 7275
14 21JUL98 6850 6450 7525
15 22JUL98 7050 . .
16 23JUL98 7250 . .
17 24JUL98 7450 . .
18 27JUL98 7650 . .
19 28JUL98 7850 . .
20 29JUL98 8050 . .
21 30JUL98 8250 . .
22 31JUL98 8450 . .
23 03AUG98 8650 . .
24 04AUG98 9150 . .
25 05AUG98 9650 . .
26 06AUG98 10150 . .
27 07AUG98 10650 . .
28 10AUG98 11150 . .
29 11AUG98 11650 . .
The data set costs, containing the required cost information, is then used as input to
PROC GPLOT to produce a plot of the three cumulative cost measures. The plot is
shown in Output 1.8.4.
Note: BCWS, BCWP, and ACWP are three of the cost measures used as part of
Earned Value Analysis, which is an important component of the Cost/Schedule Con-
trol Systems Criteria (referred to as C/SCSC) that was established in 1967 by the
Department of Defense (DOD) to standardize the reporting of cost and schedule per-
formance on major contracts. Refer to Fleming (1988) for a detailed discussion of
C/SCSC. Similar methods, such as the ones described in this example, can be used to
calculate all the relevant measures for analyzing cost and schedule performance.
legend1 frame
value=(f=swiss c=black j=l f=swiss ’BCWS’ ’BCWP’ ’ACWP’)
label=(f=swiss c=black);
axis1 width=2
order=(’1jul98’d to ’1aug98’d by week)
length=60 pct
value=(f=swiss c=black)
label=(f=swiss c=black);
axis2 width=2
order=(0 to 12000 by 2000)
length = 55 pct
value=(f=swiss c=black)
label=(f=swiss c=black);
Subcontracting Decision
The Stage Data Set
Subcontracting Decision
The Probability Data Set
1 High 0.50
2 Low 0.50
3 On_Time 0.60
4 Delay 0.40
5 Consult1 Early 0.60
6 Consult1 Late 0.35
7 Consult1 Delay2 0.05
8 Consult2 Early 0.50
9 Consult2 Late 0.40
10 Consult2 Delay2 0.10
Subcontracting Decision
The Payoffs Data Set
The stages of the decision problem are identified by the STAGEIN= data set, stage,
displayed in Output 1.9.1. As a first step, the drug company needs to decide whether
to perform the analysis in-house or to assign it to one of two consulting firms. If the
in-house team is chosen, the resulting stage is a chance node, called ‘Complete’, with
two possible outcomes: ‘On-Time’ or ‘Delay’; if there is a delay, the resulting cost
to the drug company is $10; 000. For each of these two outcomes, there is a second
chance event corresponding to the cost of the analysis. For each of the two consulting
firms, the outcome can be one of three possibilities: ‘Early’, ‘Late’, or ‘Delay2’; if
there is a delay, the drug company imposes a delay penalty of $9; 000 on the firm,
resulting in a net reward of ,$1; 000 (cost of $10; 000 minus the penalty of $9; 000).
The PROBIN= data set, prob, identifies the various probabilities associated with the
different possible outcomes at each of the chance events. The prob data set is also
displayed in Output 1.9.1.
The rewards (or payoffs) associated with each of the end stages are listed in the PAY-
OFFS= data set, payoff (also listed in Output 1.9.1). For example, for the in-house
team, the high (low) cost associated with completing the analysis on time is $12; 000
($9; 500), and so on.
The following program invokes PROC DTREE to solve the decision problem. The
complete decision tree, displayed in Output 1.9.2, represents the various stages and
outcomes of the problem and identifies the optimal decision. In this example, the
drug company should award the consulting contract to the second consulting firm as
indicated by the red line for the corresponding branch of the tree.
See Chapter 3, “The DTREE Procedure,” for details about the DTREE procedure.
goptions ftext=swissbu;
symbol1 f=marker v=P c=blue;
symbol2 f=marker v=U c=green;
symbol3 f=marker v=A c=red;
MDBTOPM Macro
MDBTOPM is a SAS macro that converts Microsoft Project data saved in MDB
format to a form that is readable by the PM procedure. The macro generates the
necessary SAS data sets, determines the values of the relevant options, and invokes
an instance of the PM procedure with the converted project data. For details about
the macro, see the “MDBTOPM Macro” section on page 660 in Chapter 6, “The PM
Procedure.”
References
Cohen, M. (1990), “Decision Analysis in Project Management,” PMNetwork, IV, 3,
37–40.
Fleming, Q.W. (1988), Cost/Schedule Control Systems Criteria: The Management
Guide to C/SCSC, Chicago: Probus Publishing Company.
Moder, J.J., Phillips, C.R., and Davis, E.W. (1983), Project Management with CPM,
PERT and Precedence Diagramming, New York: Van Nostrand Reinhold Com-
pany.
SAS Institute Inc. (1993), SAS/OR Software: Project Management Examples, Cary,
NC: SAS Institute Inc.
Williams, G.A. and Boyd, W.L. (1990) “Decision Support Systems and Project Man-
agement,” PMNetwork, IV, 3, 31–36.