Chapter Contents
Chapter Contents
Previous
Previous
Next
Next
The CPM Procedure

Example 2.17: Use of the INFEASDIAGNOSTIC Option

The INFEASDIAGNOSTIC option instructs PROC CPM to continue scheduling even when resources are insufficient. When PROC CPM schedules subject to resource constraints, it stops the scheduling process when it cannot find sufficient resources (primary or supplementary) for an activity before the activity's latest possible start time (L_START + DELAY). In this case, you may want to determine which resources are needed to schedule all the activities and when the deficiencies occur. The INFEASDIAGNOSTIC option is equivalent to specifying infinite supplementary levels for all the resources under consideration; the DELAY= value is assumed to equal the default value of +INFINITY, unless it is specified otherwise. The INFEASDIAGNOSTIC option is particularly useful when there are several resources involved and when project completion time is critical. You want things to be done on time, even if it means using supplementary resources or overtime resources; rather than trying to juggle activities around to try to fit available resource profiles, you want to determine the level of resources needed to accomplish tasks within a given time frame.

For the WIDGET manufacturing project, let us assume that there are four resources: a design engineer, a market analyst, a production engineer, and money. The resource requirements for the different activities are saved in a data set, WIDGR17, and displayed in Output 2.17.1. Of these resources, suppose that the design engineer is the resource that is most crucial in terms of his availability; perhaps he is an outside contractor and you do not have control over his availability. You need to determine the project schedule subject to the constraints on the resource deseng. Output 2.17.2 displays the RESOURCEIN= data set, RESIN17.

Output 2.17.1: Data Set WIDGR17

Use of the INFEASDIAGNOSTIC Option
Data Set WIDGR17

Obs task days tail head deseng mktan prodeng money
1 Approve Plan 5 1 2 1 1 1 200
2 Drawings 10 2 3 1 . 1 100
3 Anal. Market 5 2 4 . 1 1 100
4 Write Specs 5 2 3 1 . 1 150
5 Prototype 15 3 5 1 . 1 300
6 Mkt. Strat. 10 4 6 . 1 . 150
7 Materials 10 5 7 . . . 300
8 Facility 10 5 7 . . 1 500
9 Init. Prod. 10 7 8 . . . 250
10 Evaluate 10 8 9 1 . . 150
11 Test Market 15 6 9 . 1 . 200
12 Changes 5 9 10 1 . 1 200
13 Production 0 10 11 1 . 1 600
14 Marketing 0 6 12 . 1 . .
15 Dummy 0 8 6 . . . .

Output 2.17.2: Resourcein Data Set RESIN17

Use of the INFEASDIAGNOSTIC Option
Data Set RESIN17

Obs per otype deseng mktan prodeng money
1 . restype 1 1 1 2
2 02DEC91 reslevel 1 . 1 .


In the first invocation of PROC CPM, the project is scheduled subject to resource constraints on the single resource variable deseng. Output 2.17.3 displays the resulting Schedule data set WIDGO17S, which shows that the project is delayed by five days because of this resource. Note that the project finish time has been delayed only by five days, even though R_DELAY=`10' for activity `Write Specs'. This is due to the fact that there was a float of five days present in this activity.

   proc cpm date='02dec91'd interval=weekday
            data=widgr17 holidata=holdata resin=resin17
            out=widgo17s;
      tailnode tail;
      duration days;
      headnode head;
      holiday hol;
      resource deseng / period=per obstype=otype
                        delayanalysis;
      id task;
      run;

Output 2.17.3: Resource-Constrained Schedule: Single Resource

Use of the INFEASDIAGNOSTIC Option
Resource Constrained Schedule: Single Resource

Obs tail head days task deseng S_START S_FINISH E_START E_FINISH L_START L_FINISH R_DELAY DELAY_R SUPPL_R
1 1 2 5 Approve Plan 1 02DEC91 06DEC91 02DEC91 06DEC91 02DEC91 06DEC91 0    
2 2 3 10 Drawings 1 09DEC91 20DEC91 09DEC91 20DEC91 09DEC91 20DEC91 0    
3 2 4 5 Anal. Market . 09DEC91 13DEC91 09DEC91 13DEC91 22JAN92 28JAN92 0    
4 2 3 5 Write Specs 1 23DEC91 30DEC91 09DEC91 13DEC91 16DEC91 20DEC91 10 deseng  
5 3 5 15 Prototype 1 31DEC91 21JAN92 23DEC91 14JAN92 23DEC91 14JAN92 0    
6 4 6 10 Mkt. Strat. . 16DEC91 30DEC91 16DEC91 30DEC91 29JAN92 11FEB92 0    
7 5 7 10 Materials . 22JAN92 04FEB92 15JAN92 28JAN92 15JAN92 28JAN92 0    
8 5 7 10 Facility . 22JAN92 04FEB92 15JAN92 28JAN92 15JAN92 28JAN92 0    
9 7 8 10 Init. Prod. . 05FEB92 18FEB92 29JAN92 11FEB92 29JAN92 11FEB92 0    
10 8 9 10 Evaluate 1 19FEB92 03MAR92 12FEB92 25FEB92 19FEB92 03MAR92 0    
11 6 9 15 Test Market . 19FEB92 10MAR92 12FEB92 03MAR92 12FEB92 03MAR92 0    
12 9 10 5 Changes 1 11MAR92 17MAR92 04MAR92 10MAR92 04MAR92 10MAR92 0    
13 10 11 0 Production 1 18MAR92 18MAR92 11MAR92 11MAR92 11MAR92 11MAR92 0    
14 6 12 0 Marketing . 19FEB92 19FEB92 12FEB92 12FEB92 11MAR92 11MAR92 0    
15 8 6 0 Dummy . 19FEB92 19FEB92 12FEB92 12FEB92 12FEB92 12FEB92 0    


Now suppose that you have one production engineer available, but you could obtain more if needed. You do not want to delay the project more than five days (the delay caused by deseng). The second invocation of PROC CPM sets a maximum delay of five days on the activities and specifies all four resources along with the INFEASDIAGNOSTIC option. The resource availability data set has missing values for the resources mktan and money. The INFEASDIAGNOSTIC option allows CPM to assume an infinite supplementary level for all the resources, and the procedure draws upon this infinite reserve, if necessary, to schedule the project with only five days of delay. In other words, PROC CPM assumes that there is an infinite supply of supplementary levels for all the relevant resources. Thus, if at any point in the scheduling process it finds that an activity does not have enough resources and it cannot be postponed any further, it schedules the activity ignoring the insufficiency of the resources.

   proc cpm date='02dec91'd interval=weekday
            data=widgr17 holidata=holdata resin=resin17
            out=widgo17m resout=widgro17;
      tailnode tail;
      duration days;
      headnode head;
      holiday hol;
      resource deseng prodeng mktan money / period=per obstype=otype
                                            delayanalysis
                                            delay=5
                                            infeasdiagnostic
                                            cumusage
                                            rcprofile avprofile;
      id task;
      run;

The Schedule data set WIDGO17M (for multiple resources) in Output 2.17.4 shows the new resource-constrained schedule. With a maximum delay of five days the procedure schedules the activity `Anal. Market' on January 22, 1992, using an extra production engineer as indicated by the SUPPL_R variable. Note that the SUPPL_R variable indicates the first resource in the resource list that was used beyond its primary level. Note also that it is possible to schedule the activities with only one production engineer, but the project would be delayed by more than five days.

The Usage data set, displayed in Output 2.17.5, shows the amount of resources required on each day of the project. The data set contains usage and remaining resource information only for the resource-constrained schedule because PROC CPM was invoked with the RCPROFILE and AVPROFILE options in the RESOURCE statement. The availability profile in the Usage data set contains negative values for all the resources that were insufficient on any given day. This feature is useful for diagnosing the level of insufficiency of any resource; you can determine the problem areas by examining the availability profile for the different resources. Thus, the negative values for the resource availability profile Aprodeng indicate that, in order for the project to be scheduled as desired, you need an extra production engineer between the 22nd and 28th of January, 1992. The negative values for Amktan indicate the days when a market analyst is needed for the project. Since money is a consumable resource with 0 availability as per the RESOURCEIN= data set, and since the CUMUSAGE option is specified, the value for Rmoney in each observation indicates the cumulative amount of money that would be needed through the beginning of the date specified in that observation if the resource constrained schedule were followed.

Output 2.17.4: Resource-Constrained Schedule: Multiple Resources

Use of the INFEASDIAGNOSTIC Option
Resource Constrained Schedule: Multiple Resources

Obs tail head days task deseng prodeng mktan money S_START S_FINISH E_START E_FINISH L_START L_FINISH R_DELAY DELAY_R SUPPL_R
1 1 2 5 Approve Plan 1 1 1 200 02DEC91 06DEC91 02DEC91 06DEC91 02DEC91 06DEC91 0   mktan
2 2 3 10 Drawings 1 1 . 100 09DEC91 20DEC91 09DEC91 20DEC91 09DEC91 20DEC91 0   money
3 2 4 5 Anal. Market . 1 1 100 22JAN92 28JAN92 09DEC91 13DEC91 22JAN92 28JAN92 30 prodeng prodeng
4 2 3 5 Write Specs 1 1 . 150 23DEC91 30DEC91 09DEC91 13DEC91 16DEC91 20DEC91 10 deseng money
5 3 5 15 Prototype 1 1 . 300 31DEC91 21JAN92 23DEC91 14JAN92 23DEC91 14JAN92 0   money
6 4 6 10 Mkt. Strat. . . 1 150 29JAN92 11FEB92 16DEC91 30DEC91 29JAN92 11FEB92 0   mktan
7 5 7 10 Materials . . . 300 22JAN92 04FEB92 15JAN92 28JAN92 15JAN92 28JAN92 0   money
8 5 7 10 Facility . 1 . 500 22JAN92 04FEB92 15JAN92 28JAN92 15JAN92 28JAN92 0   money
9 7 8 10 Init. Prod. . . . 250 05FEB92 18FEB92 29JAN92 11FEB92 29JAN92 11FEB92 0   money
10 8 9 10 Evaluate 1 . . 150 19FEB92 03MAR92 12FEB92 25FEB92 19FEB92 03MAR92 0   money
11 6 9 15 Test Market . . 1 200 19FEB92 10MAR92 12FEB92 03MAR92 12FEB92 03MAR92 0   mktan
12 9 10 5 Changes 1 1 . 200 11MAR92 17MAR92 04MAR92 10MAR92 04MAR92 10MAR92 0   money
13 10 11 0 Production 1 1 . 600 18MAR92 18MAR92 11MAR92 11MAR92 11MAR92 11MAR92 0    
14 6 12 0 Marketing . . 1 . 19FEB92 19FEB92 12FEB92 12FEB92 11MAR92 11MAR92 0    
15 8 6 0 Dummy . . . . 19FEB92 19FEB92 12FEB92 12FEB92 12FEB92 12FEB92 0    

Output 2.17.5: Resource Usage: Multiple Resources

Use of the INFEASDIAGNOSTIC Option
Usage Profile: Multiple Resources

Obs _TIME_ Rdeseng Adeseng Rprodeng Aprodeng Rmktan Amktan Rmoney Amoney
1 02DEC91 1 0 1 0 1 -1 0 0
2 03DEC91 1 0 1 0 1 -1 200 -200
3 04DEC91 1 0 1 0 1 -1 400 -400
4 05DEC91 1 0 1 0 1 -1 600 -600
5 06DEC91 1 0 1 0 1 -1 800 -800
6 09DEC91 1 0 1 0 0 0 1000 -1000
7 10DEC91 1 0 1 0 0 0 1100 -1100
8 11DEC91 1 0 1 0 0 0 1200 -1200
9 12DEC91 1 0 1 0 0 0 1300 -1300
10 13DEC91 1 0 1 0 0 0 1400 -1400
11 16DEC91 1 0 1 0 0 0 1500 -1500
12 17DEC91 1 0 1 0 0 0 1600 -1600
13 18DEC91 1 0 1 0 0 0 1700 -1700
14 19DEC91 1 0 1 0 0 0 1800 -1800
15 20DEC91 1 0 1 0 0 0 1900 -1900
16 23DEC91 1 0 1 0 0 0 2000 -2000
17 24DEC91 1 0 1 0 0 0 2150 -2150
18 26DEC91 1 0 1 0 0 0 2300 -2300
19 27DEC91 1 0 1 0 0 0 2450 -2450
20 30DEC91 1 0 1 0 0 0 2600 -2600
21 31DEC91 1 0 1 0 0 0 2750 -2750
22 02JAN92 1 0 1 0 0 0 3050 -3050
23 03JAN92 1 0 1 0 0 0 3350 -3350
24 06JAN92 1 0 1 0 0 0 3650 -3650
25 07JAN92 1 0 1 0 0 0 3950 -3950
26 08JAN92 1 0 1 0 0 0 4250 -4250
27 09JAN92 1 0 1 0 0 0 4550 -4550
28 10JAN92 1 0 1 0 0 0 4850 -4850
29 13JAN92 1 0 1 0 0 0 5150 -5150
30 14JAN92 1 0 1 0 0 0 5450 -5450
31 15JAN92 1 0 1 0 0 0 5750 -5750
32 16JAN92 1 0 1 0 0 0 6050 -6050
33 17JAN92 1 0 1 0 0 0 6350 -6350
34 20JAN92 1 0 1 0 0 0 6650 -6650
35 21JAN92 1 0 1 0 0 0 6950 -6950
36 22JAN92 0 1 2 -1 1 -1 7250 -7250
37 23JAN92 0 1 2 -1 1 -1 8150 -8150
38 24JAN92 0 1 2 -1 1 -1 9050 -9050
39 27JAN92 0 1 2 -1 1 -1 9950 -9950
40 28JAN92 0 1 2 -1 1 -1 10850 -10850
41 29JAN92 0 1 1 0 1 -1 11750 -11750
42 30JAN92 0 1 1 0 1 -1 12700 -12700
43 31JAN92 0 1 1 0 1 -1 13650 -13650
44 03FEB92 0 1 1 0 1 -1 14600 -14600
45 04FEB92 0 1 1 0 1 -1 15550 -15550
46 05FEB92 0 1 0 1 1 -1 16500 -16500
47 06FEB92 0 1 0 1 1 -1 16900 -16900
48 07FEB92 0 1 0 1 1 -1 17300 -17300
49 10FEB92 0 1 0 1 1 -1 17700 -17700
50 11FEB92 0 1 0 1 1 -1 18100 -18100
51 12FEB92 0 1 0 1 0 0 18500 -18500
52 13FEB92 0 1 0 1 0 0 18750 -18750
53 14FEB92 0 1 0 1 0 0 19000 -19000
54 17FEB92 0 1 0 1 0 0 19250 -19250
55 18FEB92 0 1 0 1 0 0 19500 -19500
56 19FEB92 1 0 0 1 1 -1 19750 -19750
57 20FEB92 1 0 0 1 1 -1 20100 -20100
58 21FEB92 1 0 0 1 1 -1 20450 -20450
59 24FEB92 1 0 0 1 1 -1 20800 -20800
60 25FEB92 1 0 0 1 1 -1 21150 -21150
61 26FEB92 1 0 0 1 1 -1 21500 -21500
62 27FEB92 1 0 0 1 1 -1 21850 -21850
63 28FEB92 1 0 0 1 1 -1 22200 -22200
64 02MAR92 1 0 0 1 1 -1 22550 -22550
65 03MAR92 1 0 0 1 1 -1 22900 -22900
66 04MAR92 0 1 0 1 1 -1 23250 -23250
67 05MAR92 0 1 0 1 1 -1 23450 -23450
68 06MAR92 0 1 0 1 1 -1 23650 -23650
69 09MAR92 0 1 0 1 1 -1 23850 -23850
70 10MAR92 0 1 0 1 1 -1 24050 -24050
71 11MAR92 1 0 1 0 0 0 24250 -24250
72 12MAR92 1 0 1 0 0 0 24450 -24450
73 13MAR92 1 0 1 0 0 0 24650 -24650
74 16MAR92 1 0 1 0 0 0 24850 -24850
75 17MAR92 1 0 1 0 0 0 25050 -25050
76 18MAR92 0 1 0 1 0 0 25250 -25250

Chapter Contents
Chapter Contents
Previous
Previous
Next
Next
Top
Top

Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.