Example 4.17 INFEASDIAGNOSTIC Option and Aggregate Resource Type
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 4.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 4.17.2 displays the RESOURCEIN= data set, RESIN17.
Output 4.17.1
Data Set WIDGR17
Approve Plan |
5 |
1 |
2 |
1 |
1 |
1 |
200 |
Drawings |
10 |
2 |
3 |
1 |
. |
1 |
100 |
Study Market |
5 |
2 |
4 |
. |
1 |
1 |
100 |
Write Specs |
5 |
2 |
3 |
1 |
. |
1 |
150 |
Prototype |
15 |
3 |
5 |
1 |
. |
1 |
300 |
Mkt. Strat. |
10 |
4 |
6 |
. |
1 |
. |
150 |
Materials |
10 |
5 |
7 |
. |
. |
. |
300 |
Facility |
10 |
5 |
7 |
. |
. |
1 |
500 |
Init. Prod. |
10 |
7 |
8 |
. |
. |
. |
250 |
Evaluate |
10 |
8 |
9 |
1 |
. |
. |
150 |
Test Market |
15 |
6 |
9 |
. |
1 |
. |
200 |
Changes |
5 |
9 |
10 |
1 |
. |
1 |
200 |
Production |
0 |
10 |
11 |
1 |
. |
1 |
600 |
Marketing |
0 |
6 |
12 |
. |
1 |
. |
. |
Dummy |
0 |
8 |
6 |
. |
. |
. |
. |
Output 4.17.2
Resourcein Data Set RESIN17
. |
restype |
1 |
1 |
1 |
4 |
01DEC03 |
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 4.17.3 displays the resulting Schedule data set WIDGO17S, which shows that the project is delayed by five days because of this resource. 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='01dec03'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 4.17.3
Resource-Constrained Schedule: Single Resource
1 |
2 |
5 |
Approve Plan |
1 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
|
|
2 |
3 |
10 |
Drawings |
1 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
0 |
|
|
2 |
4 |
5 |
Study Market |
. |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
0 |
|
|
2 |
3 |
5 |
Write Specs |
1 |
22DEC03 |
29DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
10 |
deseng |
|
3 |
5 |
15 |
Prototype |
1 |
30DEC03 |
20JAN04 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
0 |
|
|
4 |
6 |
10 |
Mkt. Strat. |
. |
15DEC03 |
29DEC03 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
0 |
|
|
5 |
7 |
10 |
Materials |
. |
21JAN04 |
03FEB04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
5 |
7 |
10 |
Facility |
. |
21JAN04 |
03FEB04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
7 |
8 |
10 |
Init. Prod. |
. |
04FEB04 |
17FEB04 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
0 |
|
|
8 |
9 |
10 |
Evaluate |
1 |
18FEB04 |
02MAR04 |
11FEB04 |
24FEB04 |
18FEB04 |
02MAR04 |
0 |
|
|
6 |
9 |
15 |
Test Market |
. |
18FEB04 |
09MAR04 |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
0 |
|
|
9 |
10 |
5 |
Changes |
1 |
10MAR04 |
16MAR04 |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
0 |
|
|
10 |
11 |
0 |
Production |
1 |
17MAR04 |
17MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
0 |
|
|
6 |
12 |
0 |
Marketing |
. |
18FEB04 |
18FEB04 |
11FEB04 |
11FEB04 |
10MAR04 |
10MAR04 |
0 |
|
|
8 |
6 |
0 |
Dummy |
. |
18FEB04 |
18FEB04 |
11FEB04 |
11FEB04 |
11FEB04 |
11FEB04 |
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 (printed in Output 4.17.2) has missing values for the resources mktan and money. Further, the resource money is defined to be a consumable aggregate resource (its value is '4' in the first observation). Thus, this resource is used by the CPM procedure only for aggregation purposes and is not considered as a constraining resource during the scheduling process. The INFEASDIAGNOSTIC option enables CPM to assume an infinite supplementary level for all the constraining 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='01dec03'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 4.17.4 shows the new resource-constrained schedule. With a maximum delay of five days the procedure schedules the activity 'Study Market' on January 21, 2004, 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 4.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 contains only missing values for the resource money because it was used only for aggregation purposes. Further, since this resource is a consumable resource 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.
For the other resources, 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 21st and 27th of January, 2004. The negative values for Amktan indicate the days when a market analyst is needed for the project.
Output 4.17.4
Resource-Constrained Schedule: Multiple Resources
1 |
2 |
5 |
Approve Plan |
1 |
1 |
1 |
200 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
|
mktan |
2 |
3 |
10 |
Drawings |
1 |
1 |
. |
100 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
0 |
|
|
2 |
4 |
5 |
Study Market |
. |
1 |
1 |
100 |
21JAN04 |
27JAN04 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
30 |
prodeng |
prodeng |
2 |
3 |
5 |
Write Specs |
1 |
1 |
. |
150 |
22DEC03 |
29DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
10 |
deseng |
|
3 |
5 |
15 |
Prototype |
1 |
1 |
. |
300 |
30DEC03 |
20JAN04 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
0 |
|
|
4 |
6 |
10 |
Mkt. Strat. |
. |
. |
1 |
150 |
28JAN04 |
10FEB04 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
0 |
|
mktan |
5 |
7 |
10 |
Materials |
. |
. |
. |
300 |
21JAN04 |
03FEB04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
5 |
7 |
10 |
Facility |
. |
1 |
. |
500 |
21JAN04 |
03FEB04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
7 |
8 |
10 |
Init. Prod. |
. |
. |
. |
250 |
04FEB04 |
17FEB04 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
0 |
|
|
8 |
9 |
10 |
Evaluate |
1 |
. |
. |
150 |
18FEB04 |
02MAR04 |
11FEB04 |
24FEB04 |
18FEB04 |
02MAR04 |
0 |
|
|
6 |
9 |
15 |
Test Market |
. |
. |
1 |
200 |
18FEB04 |
09MAR04 |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
0 |
|
mktan |
9 |
10 |
5 |
Changes |
1 |
1 |
. |
200 |
10MAR04 |
16MAR04 |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
0 |
|
|
10 |
11 |
0 |
Production |
1 |
1 |
. |
600 |
17MAR04 |
17MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
0 |
|
|
6 |
12 |
0 |
Marketing |
. |
. |
1 |
. |
18FEB04 |
18FEB04 |
11FEB04 |
11FEB04 |
10MAR04 |
10MAR04 |
0 |
|
|
8 |
6 |
0 |
Dummy |
. |
. |
. |
. |
18FEB04 |
18FEB04 |
11FEB04 |
11FEB04 |
11FEB04 |
11FEB04 |
0 |
|
|
Output 4.17.5
Resource Usage: Multiple Resources
01DEC03 |
1 |
0 |
1 |
0 |
1 |
-1 |
0 |
. |
02DEC03 |
1 |
0 |
1 |
0 |
1 |
-1 |
200 |
. |
03DEC03 |
1 |
0 |
1 |
0 |
1 |
-1 |
400 |
. |
04DEC03 |
1 |
0 |
1 |
0 |
1 |
-1 |
600 |
. |
05DEC03 |
1 |
0 |
1 |
0 |
1 |
-1 |
800 |
. |
08DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1000 |
. |
09DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1100 |
. |
10DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1200 |
. |
11DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1300 |
. |
12DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1400 |
. |
15DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1500 |
. |
16DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1600 |
. |
17DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1700 |
. |
18DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1800 |
. |
19DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
1900 |
. |
22DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
2000 |
. |
23DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
2150 |
. |
24DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
2300 |
. |
26DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
2450 |
. |
29DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
2600 |
. |
30DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
2750 |
. |
31DEC03 |
1 |
0 |
1 |
0 |
0 |
0 |
3050 |
. |
02JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
3350 |
. |
05JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
3650 |
. |
06JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
3950 |
. |
07JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
4250 |
. |
08JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
4550 |
. |
09JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
4850 |
. |
12JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
5150 |
. |
13JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
5450 |
. |
14JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
5750 |
. |
15JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
6050 |
. |
16JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
6350 |
. |
19JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
6650 |
. |
20JAN04 |
1 |
0 |
1 |
0 |
0 |
0 |
6950 |
. |
21JAN04 |
0 |
1 |
2 |
-1 |
1 |
-1 |
7250 |
. |
22JAN04 |
0 |
1 |
2 |
-1 |
1 |
-1 |
8150 |
. |
23JAN04 |
0 |
1 |
2 |
-1 |
1 |
-1 |
9050 |
. |
26JAN04 |
0 |
1 |
2 |
-1 |
1 |
-1 |
9950 |
. |
27JAN04 |
0 |
1 |
2 |
-1 |
1 |
-1 |
10850 |
. |
28JAN04 |
0 |
1 |
1 |
0 |
1 |
-1 |
11750 |
. |
29JAN04 |
0 |
1 |
1 |
0 |
1 |
-1 |
12700 |
. |
30JAN04 |
0 |
1 |
1 |
0 |
1 |
-1 |
13650 |
. |
02FEB04 |
0 |
1 |
1 |
0 |
1 |
-1 |
14600 |
. |
03FEB04 |
0 |
1 |
1 |
0 |
1 |
-1 |
15550 |
. |
04FEB04 |
0 |
1 |
0 |
1 |
1 |
-1 |
16500 |
. |
05FEB04 |
0 |
1 |
0 |
1 |
1 |
-1 |
16900 |
. |
06FEB04 |
0 |
1 |
0 |
1 |
1 |
-1 |
17300 |
. |
09FEB04 |
0 |
1 |
0 |
1 |
1 |
-1 |
17700 |
. |
10FEB04 |
0 |
1 |
0 |
1 |
1 |
-1 |
18100 |
. |
11FEB04 |
0 |
1 |
0 |
1 |
0 |
0 |
18500 |
. |
12FEB04 |
0 |
1 |
0 |
1 |
0 |
0 |
18750 |
. |
13FEB04 |
0 |
1 |
0 |
1 |
0 |
0 |
19000 |
. |
16FEB04 |
0 |
1 |
0 |
1 |
0 |
0 |
19250 |
. |
17FEB04 |
0 |
1 |
0 |
1 |
0 |
0 |
19500 |
. |
18FEB04 |
1 |
0 |
0 |
1 |
1 |
-1 |
19750 |
. |
19FEB04 |
1 |
0 |
0 |
1 |
1 |
-1 |
20100 |
. |
20FEB04 |
1 |
0 |
0 |
1 |
1 |
-1 |
20450 |
. |
23FEB04 |
1 |
0 |
0 |
1 |
1 |
-1 |
20800 |
. |
24FEB04 |
1 |
0 |
0 |
1 |
1 |
-1 |
21150 |
. |
25FEB04 |
1 |
0 |
0 |
1 |
1 |
-1 |
21500 |
. |
26FEB04 |
1 |
0 |
0 |
1 |
1 |
-1 |
21850 |
. |
27FEB04 |
1 |
0 |
0 |
1 |
1 |
-1 |
22200 |
. |
01MAR04 |
1 |
0 |
0 |
1 |
1 |
-1 |
22550 |
. |
02MAR04 |
1 |
0 |
0 |
1 |
1 |
-1 |
22900 |
. |
03MAR04 |
0 |
1 |
0 |
1 |
1 |
-1 |
23250 |
. |
04MAR04 |
0 |
1 |
0 |
1 |
1 |
-1 |
23450 |
. |
05MAR04 |
0 |
1 |
0 |
1 |
1 |
-1 |
23650 |
. |
08MAR04 |
0 |
1 |
0 |
1 |
1 |
-1 |
23850 |
. |
09MAR04 |
0 |
1 |
0 |
1 |
1 |
-1 |
24050 |
. |
10MAR04 |
1 |
0 |
1 |
0 |
0 |
0 |
24250 |
. |
11MAR04 |
1 |
0 |
1 |
0 |
0 |
0 |
24450 |
. |
12MAR04 |
1 |
0 |
1 |
0 |
0 |
0 |
24650 |
. |
15MAR04 |
1 |
0 |
1 |
0 |
0 |
0 |
24850 |
. |
16MAR04 |
1 |
0 |
1 |
0 |
0 |
0 |
25050 |
. |
17MAR04 |
0 |
1 |
0 |
1 |
0 |
0 |
25250 |
. |