Resources

LAN Selection Project

 /****************************************************************/
 /*          S A S   S A M P L E   L I B R A R Y                 */
 /*                                                              */
 /*    NAME: PMEX03                                              */
 /*   TITLE: LAN Selection Project                               */
 /* PRODUCT: OR                                                  */
 /*  SYSTEM: ALL                                                 */
 /*    KEYS: CPM                                                 */
 /*   PROCS: CPM, PRINT, NETDRAW, GANTT, SORT, GCHART, SUMMARY   */
 /*    DATA:                                                     */
 /*                                                              */
 /* SUPPORT:                             UPDATE:                 */
 /*     REF: Example 3 of Project Management Examples Book       */
 /*    MISC: Bostwick, Mini-Micro Systems, Feb. 14, 1986         */
 /*                                                              */
 /****************************************************************/

goptions border hpos=80 vpos=43
         fby=swiss
         ftitle=swiss
         htitle=2
         ftext=swiss
         htext=1.5;

pattern1 v=solid c=blue;
pattern2 v=e c=blue;
pattern3 v=solid c=red;
pattern4 v=e c=red;
pattern5 v=x2 c=red;
pattern6 v=solid c=green;
pattern7 v=e c=magenta;
pattern8 v=solid c=magenta;
pattern9 v=x1 c=cyan;

title 'LAN Selection Project';

data landata;
   format act $25. s1 $25. subproj $20.;
   input act & s1 & subproj & days;
cards;
Begin                      Measure Current Volume     BEGIN PROCUREMENT      1
Begin                      Literature Survey          BEGIN PROCUREMENT      1
Begin                      Determine Current Users    BEGIN PROCUREMENT      1
Measure Current Volume     Forecast Future Volume     NEEDS ASSESSMENT       2
Literature Survey          Manufacturer Demos         MARKET SURVEY          5
Determine Current Users    Forecast Future Needs      NEEDS ASSESSMENT       2
Forecast Future Volume     Prepare Network Spec       NEEDS ASSESSMENT       2
Manufacturer Demos         Identify Vendors           MARKET SURVEY          5
Forecast Future Needs      Prepare Network Spec       NEEDS ASSESSMENT       2
Identify Vendors           Prepare Network Spec       MARKET SURVEY          2
Prepare Network Spec       Prepare RFQ                NEEDS ASSESSMENT       2
Prepare Network Spec       Prepare Cable Plan         NEEDS ASSESSMENT       2
Prepare RFQ                Evaluate Vendor Responses  VENDOR SELECTION       4
Prepare Cable Plan         Procure Cable              SITE PREPARATION       4
Evaluate Vendor Responses  Notify Final Candidate     VENDOR SELECTION      15
Procure Cable              Install Cable              SITE PREPARATION      22
Notify Final Candidate     Negotiate Price/Config     VENDOR SELECTION       1
Install Cable              Install LAN Hardware       SITE PREPARATION      10
Negotiate Price/Config     Prepare Purchase Order     VENDOR SELECTION       3
Prepare Purchase Order     Server Functional Spec     VENDOR SELECTION       1
Prepare Purchase Order     Procure LAN Hardware       VENDOR SELECTION       1
Server Functional Spec     Server Detail Design       SPECIAL HARDWARE       5
Procure LAN Hardware       Receive Network Hardware   NETWORK INSTALLATION  25
Server Detail Design       Server Coding              SPECIAL HARDWARE      10
Receive Network Hardware   Install LAN Hardware       NETWORK INSTALLATION   4
Server Coding              Test Server Code           SPECIAL HARDWARE      10
Install LAN Hardware       Test Network               NETWORK INSTALLATION   7
Test Server Code           Install/Integrate Server   SPECIAL HARDWARE       5
Test Network               LAN Available              NETWORK INSTALLATION   5
Install/Integrate Server   LAN Available              SPECIAL HARDWARE       2
LAN Available                       .                 NETWORK AVAILABLE      1
;


data lholiday;
format holista date7. holifin date7.;
input holista date7. @9 holifin date7.;
cards;
28nov91 29nov91
24dec91 27dec91
01jan92 01jan92
;

proc cpm data=landata out=lanout1 collapse
interval=workday date='04nov91'd
holidata=lholiday;
activity act;
duration days;
id subproj;
successor s1;
holiday holista/holifin=(holifin);
run;

proc sort data=lanout1;
     by e_start;
run;

title2 'Initial Schedule (with Holidays)';

proc print data=lanout1 noobs;
     var act days e_start e_finish l_start
     l_finish t_float;
     format e_start l_start e_finish l_finish
     datetime7.;
run;

proc gantt graphics data=lanout1
holidata=lholiday;
chart/compress nojobnum
holiday=(holista) holifin=(holifin);
id act;
run;

proc cpm data=landata out=lanout
interval=workday date='04nov91'd
holidata=lholiday;
activity act;
duration days;
id subproj;
successor s1;
holiday holista/holifin=(holifin);
run;

title2 'Timescaled Network';

pattern1 v=e;
pattern2 c=red;

proc netdraw graphics data=lanout;
format e_start e_finish datetime7.;
actnet/activity=act succ=(s1) nodefid
id=(act e_start e_finish)
duration=days timescale linear
mininterval=dtmonth compress font=simplex;
run;

proc netdraw graphics data=lanout;
format e_start e_finish datetime7.;
actnet/activity=act succ=(s1) nodefid
id=(act e_start e_finish)
duration=days timescale linear
mininterval=dtmonth;
run;

pattern1 v=s;
pattern2 c=blue;

 /* Resource Codes:  S  System Engineer I   */
 /*                  E  System Engineer II  */
 /*                  A  Purchasing Agent    */
 /*                  O  Operations Manager  */
 /*                  T  Technician          */
 /*                  M  Maintenance         */
 /*                  R  Receiving Inspector */
 /*                  P  Programmer          */

data resource;
   input act & $25. s e a o t m r p;
cards;
Begin                      .  .  .  .  .  .  .  .
Begin                      .  .  .  .  .  .  .  .
Begin                      .  .  .  .  .  .  .  .
Measure Current Volume     .  8  .  .  .  .  .  .
Literature Survey          40 .  .  .  .  .  .  .
Determine Current Users    8  .  .  .  .  .  .  .
Forecast Future Volume     .  8  .  .  .  .  .  .
Manufacturer Demos         10 10 .  .  .  .  .  .
Forecast Future Needs      .  8  .  .  .  .  .  .
Identify Vendors           16 16 .  .  .  .  .  .
Prepare Network Spec       16 16 .  .  .  .  .  .
Prepare Network Spec       16 16 .  .  .  .  .  .
Prepare RFQ                32 32 32 .  .  .  .  .
Prepare Cable Plan         32 32 .  32 .  .  .  .
Evaluate Vendor Responses  60 60 60 .  .  .  .  .
Procure Cable              .  .  16 .  .  .  .  .
Notify Final Candidate     .  .  8  .  .  .  .  .
Install Cable              .  .  .  80 80 80 .  .
Negotiate Price/Config     24 24 24 .  .  .  .  .
Prepare Purchase Order     .  .  8  .  .  .  .  .
Prepare Purchase Order     .  .  8  .  .  .  .  .
Server Functional Spec     40 .  .  .  .  .  .  40
Procure LAN Hardware       .  .  8  .  .  .  .  .
Server Detail Design       .  .  .  .  .  .  .  80
Receive Network Hardware   .  .  24 .  .  .  24 .
Server Coding              .  .  .  .  .  .  .  80
Install LAN Hardware       .  56 .  .  56 56 .  .
Test Server Code           .  .  .  .  .  .  .  40
Test Network               40 40 .  .  40 .  .  .
Install/Integrate Server   16 .  .  .  .  .  .  16
LAN Available              .  .  .  .  .  .  .  .
;


data landata;
merge landata resource;
s = s/(8*days);
e = e/(8*days);
a = a/(8*days);
o = o/(8*days);
t = t/(8*days);
m = m/(8*days);
r = r/(8*days);
p = p/(8*days);
run;


data lreslvl;
format date date7.;
input s e a o t m r p date date7.;
cards;
1 1 1 1 1 1 1 1 04nov91
;

proc cpm data=landata out=lanout2 collapse
interval=workday date='04nov91'd
holidata=lholiday resin=lreslvl resout=lresusg;
activity act;
duration days;
id subproj;
successor s1;
holiday holista/holifin=(holifin);
resource s e a o t m r p/period=date delayanalysis;
baseline / set=resource;
run;

proc sort data=lanout2;
     by s_start;
run;

title2 'Schedule with Resource Limitations';

proc print data=lanout2 noobs;
var act days s_start s_finish r_delay delay_r;
format s_start s_finish datetime7.;
run;


data delay (keep=res r_delay);
     set lanout2;
     res=delay_r;
     if delay_r=' ' then res='NONE';
     label res='Delaying Resource';
run;

title2 h=1.5 'Distribution of Delaying Resources';

goptions htext=1.2;

proc gchart data=delay;
     pie res / type=freq
               percent=outside
               value=outside
               slice=outside
               explode='NONE'
               noheading;
run;

goptions htext=1.5;

title2 'Total (and Average) Workdays of Delay';

proc gchart data=delay;
     vbar res / midpoints= 'a' 's'
                mean width=30
                type=sum
                sumvar=r_delay;
run;

proc sort data=landata;
by act;
run;

proc sort data=lanout2;
by act;
run;

data split;
merge landata lanout2 (keep=act b_start b_finish);
by act;
mindur=1;
run;

proc cpm data=split out=lanout3 collapse
interval=workday date='04nov91'd
holidata=lholiday resin=lreslvl resout=lresusg1;
activity act;
duration days;
id subproj;
successor s1;
holiday holista/holifin=(holifin);
resource s e a o t m r p/period=date
minsegmtdur=mindur noe_start nol_start;
baseline / compare=resource;
run;

data temp;
set lanout3;
retain tstart;
if segmt_no = . then tstart=s_start;run;

proc sort data=temp;
by tstart;
run;

title2 'Schedule Allowing Activity Splitting';

proc gantt graphics holidata=lholiday data=temp;
chart/compress nojobnum
holiday=(holista) holifin=(holifin);
id act;
run;


title2 'Subproject Summary Schedule';

proc sort data=temp;
by subproj;
run;

proc summary data=temp;
by subproj;
output out=lsummary min(s_start)= max(s_finish)= ;
var s_start s_finish;
run;

proc sort data=lsummary;
by s_start;
format s_start s_finish datetime7.;
run;

proc gantt data=lsummary graphics holidata=lholiday;
chart/compress nojobnum nolegend
holiday=(holista) holifin=(holifin)
skip=3
ref='04nov91:09:00'dt to '30mar92:09:00'dt
by dtweek lref=2;
id subproj;
run;