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 |
|
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.