Select Your Region
Americas
Europe
Middle East & Africa
Asia Pacific
/****************************************************************/ /* S A S S A M P L E L I B R A R Y */ /* */ /* NAME: INTPM5 */ /* TITLE: Resource Constrained Scheduling (intpm5) */ /* PRODUCT: OR */ /* SYSTEM: ALL */ /* KEYS: */ /* PROCS: CPM, GANTT, GPLOT */ /* DATA: */ /* */ /* SUPPORT: UPDATE: */ /* REF: Example 5 from the chapter, Introduction to Project */ /* Management. */ /* MISC: Scheduling Programming Tasks */ /* */ /****************************************************************/ data program; format task $8. succ $8. ; input task & succ & 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 ; 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; pattern1 c=green v=s; /* duration of a non-critical activity */ pattern2 c=green v=e; /* slack time for a noncrit. activity */ pattern3 c=red v=s; /* duration of a critical activity */ pattern4 c=magenta v=e; /* slack time for a supercrit. activity */ pattern5 c=magenta v=s; /* duration of a supercrit. activity */ pattern6 c=cyan v=s; /* actual duration of an activity */ pattern7 c=black v=e; /* break due to a holiday */ pattern8 c=blue v=s; /* resource schedule of activity */ goptions hpos=80 vpos=43; title h=2.5 'Scheduling Programming Tasks'; title2 h=1.5 'Comparison of Schedules'; proc gantt data=progschd graphics; chart / height=1.5 increment=2 caxis=black; id task; run; /* Create a data set for use with PROC GPLOT */ data plotout; set progrout; label _time_='Time of Usage'; label processor='Number of Processors'; label resource='Type of Schedule Followed'; resource='Constrained'; processor=rprocessor; output; resource='Early Start'; processor=eprocessor; output; run; axis1 minor=none width=3; axis2 length=80 pct; symbol1 i=steplj c=red; symbol2 i=steplj l=3 c=green; title2 h=1.5 'Comparison of Processor Usage'; proc gplot data=plotout; plot processor * _time_ = resource/ vaxis=axis1 haxis=axis2 caxis=black; run;