Resource-Driven Durations and Negative Requirements (cpm31)
/************************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: CPM31 */
/* TITLE: Resource-Driven Durations and Negative Requirements (cpm31) */
/* PRODUCT: OR */
/* SYSTEM: ALL */
/* KEYS: CPM */
/* PROCS: CPM */
/* DATA: */
/* */
/* SUPPORT: UPDATE: */
/* REF: Example 31 from the CPM Chapter (PM User's Guide) */
/* MISC: */
/* */
/************************************************************************/
/* Create two orders of cards and ship them */
data TwoOrdersRD;
input Activity $ 1-14 succ $ 16-29 Duration work
Machine Mach1 Mach2 numboxes trucks _pattern;
cards;
First Order . 1 6 1 . . . . 1
Sched truck1 Delivery 1 0 . . . . 10000 . 1
Sched truck2 Delivery 2 0 . . . . 10000 . 1
Sched truck3 Delivery 3 0 . . . . 10000 . 1
Delivery 1 . 2 . . . . . 1 1
Delivery 2 . 2 . . . . . 1 1
Delivery 3 . 2 . . . . . 1 1
Second Order . 1 6 1 . . . . 2
Sched truck4 Delivery 4 0 . . . . 10000 . 2
Sched truck5 Delivery 5 0 . . . . 10000 . 2
Sched truck6 Delivery 6 0 . . . . 10000 . 2
Delivery 4 . 2 . . . . . 1 2
Delivery 5 . 2 . . . . . 1 2
Delivery 6 . 2 . . . . . 1 2
;
data TwoMachinesRD;
input per date7. obstype $ resid $
Machine Mach1 Mach2 numboxes trucks;
format per date7.;
cards;
. resrcdur . 1 1 1 . .
. restype . 1 1 1 2 1
. altrate Machine . 1 .5 . .
. auxres Mach1 . . . -5000 .
. auxres Mach2 . . . -10000 .
15aug04 reslevel . . 1 . . 3
24aug04 reslevel . . 0 1 . .
;
title 'Resource-Driven Durations';
title2 'Activity Data Set TwoOrdersRD';
proc print data=TwoOrdersRD heading=v;
run;
title 'Resource-Driven Durations';
title2 'Resource Data Set TwoMachinesRD';
proc print data=TwoMachinesRD;
run;
proc cpm data=TwoOrdersRD resin=TwoMachinesRD
out=TwoSchedRD rsched=TwoRschedRD resout=TwoRoutRD
date='15aug04'd;
act activity;
succ succ;
duration duration;
resource Machine Mach1 Mach2 numboxes trucks / period=per
obstype=obstype
resid=resid work=work
milestoneresource;
id _pattern;
run;
proc sort data=TwoSchedRD;
by s_start;
run;
pattern1 v=s c=red;
pattern2 v=s c=green;
title h=2 'Resource-Driven Durations';
title2 h=1.5 'Truck Schedule';
proc gantt data=TwoSchedRD(drop=e_: l:);
chart / act=activity succ=succ duration=duration
nolegend nojobnum compress pattern=_pattern
ctextcols=id cprec=blue scale=4 height=1.4;
id activity ;
run;
title2 'Resource Usage Data Set';
proc print data=TwoRoutRD;
id _time_;
run;