Professional Documents
Culture Documents
Input
Machine 1
Machine 2
Output
Job Flow
Ai
Bi
Pi
= Machine 1
= Machine 2
= Processing Time
4
Example 1:
Consider a machine shop operation
in which each piece is first roughcut and shaped on the milling
machine and their ground to the
required tolerance and polished on
to the grinder. We have six jobs
that need processing, and we wish
to determined the optimum
sequence
to
minimize
the
makespan.
8
JOBS
Processing Time on
Milling Machine,
Pi1=Ai
Processing Time on
NC Grinder,
Pi2=Bi
15
20
18
25
17
20
22
30
9
Iteration 1:
_ _ _ _ _ 1
The minimum processing time is 3 on the second machine for job 1.
Hence, job 1 is placed in the last position, and job 1 and its processing
time are scratched.
Iteration 2:
_ _ _ _ 3 1
Processing time 5 for machine 2 associated with job 3 is next
smallest processing value. Job 3 is thus placed in the fifth position, the
latest possible position in the partial sequence developed so far.
Iteration 3:
2 _ _ 4 3 1
Minimum now is 8, associated with job 2 (machine 1) and job 4
(machine 2). Job 2 is placed in the first position and job 4 in the fourth
position.
Iteration 4:
2 5 6 4 3 1
Job 5, with 17 units on machine 1, has the lowest value. Place job 5
on position 2 and, the remaining job 6 is placed in position 3.
The final sequence is 2-5-6-4-3-1.
10
JOBS
Processing Time on
Milling Machine,
Pi1=Ai
Processing Time on
NC Grinder,
Pi2=Bi
15
20
18
25
17
20
22
30
SEQUENCE : 2-5-6-4-3-1
Machine 1
0
(2/8)
(5/17)
25
(6/22)
47
(4/25) 72
(3/18) 90
(1/15) 105
Machine 2
0/8 (2/20) 28/25 (5/20) 48/47 (6/30) 78/72 (4/8) 86/90 (3/5) 95/105 (1/3)
108
11
SUMMARY
On machine 1, start and completion times are determined by adding
processing times in job sequence.
Loading on machine 2 requires special attention. A job, when
completed in machine 1, goes to machine 2.
It is processed immediately if machine 2 is available.
However, it may have to wait in the buffer space if machine 2 is
still processing the previous job.
Thus, the starting time for a job in position j in the sequence on
the second machine is known by writing the completion time of the
previous machine.
This is easily visualized in the second machine by writing the
completion time on job (Cj-1, 2), first followed by the released time of job
j from machine 1 (Cj, 1).
For example, job 2 can start at time 8 (greater of values:
completion time on job j from machine 1).
Job 5 can start on machine 2 on the greater of times: when the
previous job completes its requirements on machine 2.
The start of job 1, for example, is delayed (and machine 2 is idle)
because job 1 is released from machine 1 at time 105 even though
machine 2 is available at time 95.
The makespan is 108 units.
12
Example 2:
The drilling and riveting times for 6 jobs are
given below. For every job, a hole is drilled first,
followed by riveting. Find the optimum sequence
that minimizes the makespan for all jobs.
JOB
Drilling
12
11
Riveting
11
10
10
13
13
Solution
We refer to the drilling and riveting machines as M1 and M2,
respectively. We also construct the following job sequence table. It
has six elements (number of jobs).
Sequence Table
3 _ _ _ _ _
Looking at the listed processing times for all jobs on M1 and M2,
notice that the smallest processing time is 3 for job 3. Since job 3 is
found in M1, it will be sequenced as early as possible. It will be
removed from the list of jobs to be scheduled.
JOB
Drilling
12
11
Riveting
11
10
13
14
Drilling
12
11
Riveting
10
13
15
Sequence Table 2
3 1 2 _ _ _
Drilling
12
11
Riveting
10
13
16
Sequence Table 2
3 1 2 _ _ 4
JOB
Drilling
11
Riveting
10
13
17
Sequence Table 2
3 1 2 6 5 4
18
Sequence 1 : 3-1-6-5-4-2
JOB
MACHINE 1
MACHINE 2
(3)
(4)
(10)
13
(11)
6
7
(9)
16
(11)
27
(12)
39
(7)
46
24 (13)
37
(10)
47
(8)
55
(7)
62
Sequence 2 : 3-1-2-6-5-4
JOB
MACHINE 1
MACHINE 2
(3)
(4)
(7)
14
(9)
23
(11)
34 (12)
46
(10)
13
(11)
24 (7)
31
(13)
44
(10)
54
62
(8)
19
Plotting it, well know the amount of idle time for the
machines
Sequence: 3-1-6-5-4-2
M1
M2
idle
Sequence: 3-1-2-6-5-4
M1
M2
idle
2
3
6
1
5
2
4
6
Since both sequences have the same idle time (3) units, we
chose the sequence with the smaller processing time which
is 3-1-2-6-5-4.
20
Example 3:
Problem
Job
M1
M2
1
5
2
2
2
6
3
1
2
4
7
5
5
6
6
6
3
7
7
7
2
8
5
1
Smallest Processing time is 1 for both J3 and J8. Position J3 in the earliest
sequence since it is in M1 and position J8 in the latest since it is in M2.
3 _ _ _ _ _ _ 8
The next smallest processing time is 2 for J1, J2, and J7. It is now possible to
have two sequence for this problem.
3 2 _ _ _ 7 1 8
3 2 _ _ _ 1 7 8
Position J6 as early as possible since it has the next minimum processing time.
3 2 6 _ _ 7 1 8
3 2 6 _ _ 1 7 8
The next job to be scheduled is J4 since it has 5 as the next lowest processing
time from M2. Position J4 as latest as possible then, the last slot will be
occupied by J5.
3 2 6 5 4 7 1 8
Sequence:
3 2 6 5 4 1 7 8
22
24
Grinding
Processing Time
Polishing
Processing Time
1
2
15
8
2
6
1
14
18
4
5
6
25
17
22
5
10
10
5
10
20
25
Ai and Bi factors
are found by
adding the
processing time
Milling and
Grinding and the
processing time
for Grinding and
Polishing
respectively.
Job
Ai = Pi1 + Pi2
Bi = Pi2 + Pi3
17
14
20
20
30
10
27
20
32
30
26
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
Iteration 6
27
SEQUENCE: 2-6-5-4-3-1
M1
0(2/8)
8(6/22)
30(5/17)
47(4/25)
72(3/18)
90(1/15)
105
M2
M3
Machine k idle time= (Ci-1, k- Ci, k-1) for Ci-1, k-Ci, k-1 < 0
Total waiting time on m/c k= Ci-1, 1- Ci, k-1 for Ci-1,1- Ci,k-1 0
0/8(2/6)
14/30(6/10)
40/47(5/10)
57/72(4/5)
77/90(3/2)
92/105(1/2)
107
29
Table 1.3
Machine 1
Machine 2
Machine 3
Job
Sequence
Processing
Complete
Processing
Complete
Processing
Complete
14
14
28
22
30
10
40
20
60
17
47
10
57
10
70
25
72
77
82
18
90
92
95
15
105
107
108
31
Example 2:
Find the optimal sequence for the following six jobs on M1, M2, and M3.
Job Number
32
SOLUTION:
First, we must check if it satisfies at least one of the conditions:
minj {tj1} maxj {tj2} or minj {tj3} maxj {tj2}.
Job
Machine
12
Machine 23
5+3 = 8
3+9 = 12
7+2 = 9
2+5 = 7
4+3 = 7
3+7 = 10
8+4 = 12
4+3 = 7
6+2 = 8
2+2 = 4
7+0 = 7
0+8 = 8
33
6-3-1-2-4-5
6-3-1-4-2-5
34
Sequence: 3-6-1-2-4-5
3
6
(5)16
(7)23
(8)31
M1 0(4)4
(7)11
M2 4(3)7/11
M3 7(7)14/16 (8)24
(9)33
(5)38
(3)41
(6)37
(2)43
Sequence: 3-6-1-4-2-5
3
M1 0(4)4
(7)11
(5)16
(8)24
(7)31
M2 4(3)7/11
M3 7(7)14/16 (8)24
(9)33
(3)36
(5)41
5
(6)37
(2)43
35
Sequence: 6-3-1-2-4-5
6
M1
0(7)7
(4)11
(5)16
(7)23
(8)31
M2
7(0)7/11
M3
7(8)15/16 (7)23
Sequence: 6-3-1-4-2-5
6
3
(9)32
(5)37
(3)40
(5)16
(8)24
(7)31
5
(6)37
(2)42
M1
0(7)7
(4)11
M2
7(0)7/11
M3
7(8)15/16 (7)23
(9)32
(3)35
(5)40
(6)37
(2)4236
We choose between
Sequence 6-3-1-2-4-5 and 6-3-1-4-2-5
m1
m2
m3
3
6
2
3
4
1
5
2
4 5
37
12
15
18
10
23
12
26
14
11
19
10
22
38
Job
M12
M23
12+6 = 18
6+9 = 15
15+7 = 22
7+18 = 25
7+4 = 11
4+10 = 14
23+12 = 35
12+26 = 38
14+7 = 21
7+11 = 18
19+10 = 29
10+22 = 32
6+3 = 9
3+3 = 6
39
JOB
M1
0(7)7
(15)22
(19)41
(23)64
(14)78
(12)90
(6)96
M2
7(4)11/22
(7) 29/41
(10)51/64
(12)76/78
(7)85/90
(6) 96
(3)99
M3
11(10)21/29 (18)47/51
(22)73/76
(26)102
(11)113
(9)122
(3)125
40
(2)
Equation (2) states that job n cannot start M3 until all jobs are completed
in M2. Also, note of the jobs that can starts on M2 until job 1 is completed on M1.
(3)
Which implies that none of the jobs can be processed on M3 until job 1 is
completed on M1 and M2.
42
LB (P) = LB (Jr) = lower bound on the makespan for any nodes that emanates
from node P.
After finding the lower bond on the nodes, we branch from the nodes with the
smallest lower bound, create a new nodes for every job that has not yet been scheduled.
This is done by attaching an unscheduled job to the end of the sequence of the scheduled
jobs. The lower bounds are then computed for every new node by using the equation
above. The process s repeated until a complete schedule is found and has the smallest
lower bound.
44
JOB
M1
M2
M3
1
2
3
4
14
8
10
16
6
11
13
15
15
4
17
5
45
Solution:
We branch from node 0. the lower bound on node 1, 2, 3, and 4 are
computed by using equation on the previous page. To calculate these lower
bounds, we need
TIME M1 (1)=14
TIME M2 (1)=20
TIME M3 (1)=35
TIME M1 (2)=8
TIME M2 (2)=19
TIME M3(2)=23
TIME M1(3)=10
TIME M2(3)=23
TIME M3(3)=40
TIME M1 (4)=16
TIME M2(4)=31
TIME M3(4)=36
0
1
1.
2
1.
3
1.
4
3.
1
3.1.2
3.
2
3.1.4
3.
4
3.4.
1
3.4.
2
46
63
8 + 40 + 20 = 68
LB (2) = max 19 + 34 + 5 = 58
23 + 37
= 60
68
10 + 38 + 15 = 63
LB (3) = max 23 + 32 + 4 = 59
40 + 24
= 64
64
16 + 32 + 15 = 63
LB (4) = max 31 + 30 + 4 = 65
36 + 36
= 72
72
47
Since LB (1) is the smallest lower bound, we branch from node 1. we need to calculate
the times of sequences (i= 2,3,4) as follows:
Time M1 (12) = time M1 (1) + t21 = 14 + 8 = 22
Time M2 (12) = max {Time M1 (12) + t22, Time M2 (1) + t 22}
= max {22 + 11, 20 + 11} = 33
Time M3 (12) = max {Time M2 (12) + t23, Time M3 (1) + t23}
= max {33 + 4, 35 + 4}= 39
Time M1 (13) = time M1 (1) + t31 = 14 + 10 = 24
Time M2 (13) = max {Time M1 (13) + t32, Time M2 (1) + t32}
= max {24 + 13, 20 + 13}= 37
Time M3 (13) = max {Time M2 (13) + t33, Time M3 (1) + t33}
= max {37 + 17, 35 + 17}= 54
48
68
24+ 24 + 25 = 63
LB (13) = max 37+ 26 + 4 = 67
23 + 37
= 63
67
30 + 18 + 15 = 63
LB (14) = max 45 + 24 + 4 = 73
54 + 9
= 71
73
49
Upon comparing all nodes at this stage, we find that LB (3) = 64 is the smallest lower
bound; therefore we branch from node 3.
Time M1 (31) = time M1 (3) + t11 = 10 + 14 = 24
Time M2 (31) = max {Time M1 (31) + t12, Time M2 (3) + t 12}
= max {24 + 6, 23 + 6} = 30
Time M3 (31) = max {Time M2 (31) + t13, Time M3 (3) + t13}
= max {30 + 15, 40 + 15}= 55
Time M1 (32) = time M1 (3) + t21 = 10 + 8 = 18
Time M2 (32) = max {Time M1 (32) + t22, Time M2 (3) + t22}
= max {18 + 11, 23 + 11}= 34
Time M3 (32) = max {Time M2 (32) + t23, Time M3 (3) + t23}
= max {34 + 4, 40 + 4}= 44
Time M1 (34) = time M1 (3) + t41 = 10 + 16 = 26
Time M2 (34) = max {Time M1 (34) + t42, Time M2 (3) + t42}
= max {26 + 15, 23 + 15}= 41
Time M3 (34) = max {Time M2 (34) + t43, Time M3 (3) + t43}
= max {41 + 5, 40 + 5}= 46
50
We now compute for the lower bounds for the sequence 31, 32 and 34.
22 + 24 + 15 = 63
LB (31) = max 30 + 26 + 4 = 60
64
55 + 9
= 64
18+ 30 + 20 = 68
LB (32) = max 34+ 21 + 5 = 60
44 + 20
= 64
64
26 + 22 + 15 = 63
LB (14) = max 41 + 17 + 4 = 62
46 + 49
= 65
65
51
52
32 + 16 + 20 = 68
LB (312) = max 43 + 15 + 5 = 63
59 + 5
= 64
68
40+ 8 + 15 = 63
LB (314) = max 55+ 11 + 4 = 70
60 + 4
= 64
70
66
34+ 14 + 21 = 69
LB (32) = max 52+ 6 + 15 = 60
56 + 15
= 71
73
The smallest lower bound on the tree, as shown is LB (341) = 66. We have an optimal
sequence 3 4 1 2 with a makespan of 66 units of time.
54
55
56
STEPS:
1. Find the sum of processing time for each job. Arrange the jobs in the
ascending order of their sum. Schedule the job with min. sum in the first
position. Calculate its completion time on each machine.
2. Select the three jobs, if available (the number has chosen somewhat
arbitrarily to minimize calculations), with the next min. sums of processing
times and list them in iteration table. List the last job confirmed in the
schedule developed and its completion times. Calculate the completion
times of each one of the testing jobs as if each job is the next one to be
scheduled.
3. Calculate the total machine idle time for each test jobs. The idle time on
machine only if job completion time (row i, column k 1) is greater than
machine free time (completion time for LJ column k). The value of the
machine idle time is the difference in these two values.
4. The next job to be put in sequence is the one with minimum total idle time.
If there is a tie, each schedule with tied jobs may be evaluated.
5. If all jobs are scheduled, stop. If not calculate the completion times for the
job added to the completion times for the job added to the schedule in step
4 and go back to step 2.
58
Example:
Flowshop with four machines and six jobs
Table 1.1 Processing
Times of each job on
Each machine and
Their sum
MACHINE
JOB
Pij
25
45
52
40
162
41
22
66
136
41
55
33
21
150
74
12
24
48
158
15
72
52
146
6
12
14
22
32
80
Processing Times of each job on each machine and their sum arranged in ascending job order.
SEQUENCE: 6 2 5 3 4- 1
First job sequence is Job 6 due to its minimum sum in first position. The next step is to
determine which job should follow job 6 in iteration table. List the last confirmed job in Sequence
and determine the next 3 jobs from ascending order as the test jobs.
59
CONFIRMED
6
12 12
MACHINE
2
3
14 26
22 48 32 80
TEST
JOBS
7 19
41 67
7 19
Two entries for each machine the processing time entry and jobs
completion for the second entry completion time on each machine.
Each test job is compared with the last confirmed job r (job 6) to
determine its completion times. For the job 2s completion time on
machine 3 is calculated as max (67, 48) + 22 = 89. Similarly,
completion time for jobs on machine 3 is max (108, 48) + 33 = 141. The
idle time of each machine as a job is sequenced is calculated and
added to get total idle time.
60
Since job 2 has the minimum machine idle time it is scheduled next and job
2 becomes confirmed job.
SEQ. 6 2 __ __ __ __
SEARCH FOR POSITION 3 MACHINE:
JOB
CONFIRMED
19
67
89
155
TEST
JOBS
213 161 - 155 = 6 min.idle time
26 15
82 72 161 52
41
60 55
122 33 155 21
176 122 - 89 = 33
74
93 12
105 24 129 48
SEQ: 6 2 5 __ __ __
61
Position 4:
MACHINE
JOB
TOTAL MACHINE
26
82
161
213
IDLE TIME
CONFIRMED
5
TEST JOBS
3
4
1
12
24
48
0
> 0, no need to calculate
0
Jobs 3 and 1 have zero machines idle time and should be tried in 4th position. We have
not continued calculation for job 4 because on 1st machine alone has the idle time of
(100 82) = 18, greater than zero machine idle time. Job 1 was placed in position 4.
Neither job 3 or 4 may be in position 5 with other in position 6.
62
POSITION 5:
JOB
51
IDLE
TIME
TEST JOB
3
41
92
55
182
33
246
21
274
74
125
12
139
24
237
48
301
POSITION 6:
MACHINE
JOB
41
92
55
182
33
246
21
274
74
166
12
194
24
270
48
322
MACHINE
JOB
74
125
139
24
24
137
48 301
41
166
55
122
33
270
21 322
64
PALMERS METHOD
Palmer's (1965) suggested developing the slope index for each job
given by:
Sj = (m 1) Pjm + (m 3) Pj (m 1) + (m 5) Pj (m 2) + . . . . . .- (m 5) Pj3 (m 3) Pj2 (m 1) Pj1
JOB
1
2
3
4
5
6
1
25
7
41
74
7
12
MACHINE
2
3
45
52
41
22
55
33
12
24
15
72
14
22
4
40
66
21
48
52
32
65
66
NAWAZ HEURISTIC
It is describes a heuristic that is easy to construct and gives good results. In
constructing no. of schedules needs evaluation and considered be a time consuming.
STEPS:
1. Calculate the sum of processing times for each job. Arrange the jobs in the
descending order of their sums. Denote the job order as a1, a2, a3, ,am
2. Select the first two jobs from the job list. Determine the best minimum makespan of
two sequences. First by placing job a, in the first place and a 2 in the second place
and then reversing order. Do not change the relative positions of two jobs with
respects to each other in remaining steps of algorithm.
3. Pick the job that is in the next position in the job list and find the best sequence
placing it in all possible position in partial sequence developed. Make sure not to
change the relative position of a job that are already assigned in sequence.
4. Repeats step 3 until all jobs are placed in sequence.
67
Table 2:
Jobs
pij
25
45
52
40
162
41
22
66
136
41
55
33
21
150
74
12
24
48
158
15
72
52
146
12
14
22
32
80
68
Sequence: 1 4 3 5 2 6
Select first two jobs, which is job 1 and job 4. The completion time for sequence 1-4 is 210
and for sequence 4-1 is 236. The best relative positions of these two jobs will remain as
job 1 ahead of job 4. Next job 3 is added to the sequence developed. The three possible
partials sequences that can be formed now are 3 1 4, 1 3 4 and 1 4 3. The best
orders of jobs are 1 and 4, already found remains and job 3 has been added from left to
right. The makespan added for each partial sequence are 281, 231 and 249 respectively.
The best sequence is 1 3 4.
Based on the job list, job 5 is the next one to be added to the partial sequence. The
sequences to examine are 5 1 3 4, 1 5 3 4, 1 3 5 4 and 1 3 4 5. The
partial makespan times the 255, 315, and 306 respectively. The partial sequence 5 1 3
4 with makespan of 255 is selected at this stage.
The next job to be add is job 2 sequences to examine are 2 5 1 3 4, 5 2 1 3
4, 5 1 2 3 4, 5 1 3 2 4 and 5 1 3 4 2 with 304, 320, 321, 321 and 321
as their respective makespan. Partial sequence are 2 5 1 3 4 with makespan value
of 304 be selected. The last job to add job 6 sequences are 6 2 5 1 3 4, 2 6 5
1 3 4, 2 5 6 1 3 4, 2 5 1 6 3 4, 2 5 1 3 6 4 and 2 5 1
3 4 6 with makespan of 322, 332, 336, 336, 336 and 336. S
69
Job
12/12
14/26
22/48
32/80
7/19
41/67
22/89
66/155
7/26
15/82
72/161
52/213
25/51
45/127
52/213
40/253
41/92
55/182
33/246
21/274
74/166
12/194
24/270
48/322
70
CAMPBELL ALGORITHM
Campbell developed algorithm that generates a series of sums
for each job similar to the two sets of sums generated in the n-job,
three-machine problem (M1 and M2). With M machines, M-1 two
column sets of job times can be developed and can then solved
using Johnsons Algorithm for n jobs, two machines.
Example 1:
Find the best sequence for four jobs to be processed on four
machines by using CAMPBELL ALGORITHM.
Job
Machine 1
Machine 2
Machine 3
Machine 4
1
71
Solution:
Developed the first set of machines or alternative:
Job
M1
M2
M1,2
ti1 + ti2
M3,4
ti3 + ti4
11
11
14
14
5
72
Again, apply Johnsons Algorithm to obtain the optimal sequence 12-3-4. The final set of machines is M1,2,3 and M2,3,4.
Job
M1,2,3
ti1 + ti2 + ti3
M3,4
ti2 + ti3 + ti4
15
15
14
15
19
13
18
13
Sequence: 1-2-3-4
JOB
M1
0(5) 5
(4)9
(9) 18
(6) 24
M2
5 (6) 11
(7) 18
(5) 13/24
(8)32
M3
11 (4) 15/18
(3) 21/23
(5) 28/32
(4) 36
M4
(15) 5 20/21
(5) 26/ 28
(3) 31/36
(10) 37
Sequence: 2-1-3-4
JOB
M1
0 (4) 4
(5) 9
(9) 18
(6)24
M2
4 (7) 11
(6) 17/18
(5) 23/24
(8) 32
M3
11 (30 14/17
(4) 21/23
(5) 28/32
(4) 36
M4
15 (5) 19/21
(5) 26/28
(3) 31/36
(10) 37
Therefore, since the 2 sequence has the same makespan, we can choose both sequence.
74
Example 2:
Find the best sequence for four jobs to be processed on four machines by
using Campbells Algorithm.
JOB
Machine 1
Machine 2
Machine 3
Machine 4
SOLUTION:
Develop the first set of machines as follows:
JOB
Machine 1
Machine 2
Apply Johnsons Algorithm, we obtain the optimal sequence 4-3-1-2. the second
75
set of machine to be constructed is M1,2 and M3,4.
JOB
10
13
17
12
11
15
10
13
17
12
11
15
M1
0 (4) 4
(5) 9
(6) 15
(8) 23
M2
4 (3) 7/9
(7) 16
(4) 20/23
(9) 32
M3
7 (6) 13/16
(3) 19/20
(6) 26/32
(5) 37
M4
13 (9) 22
(8) 30
(7) 37
(4) 41
M1
0 (4) 4
(6) 10
(5) 15
(8) 23
M2
4 (3) 7/10
(4) 14/15
(7) 22
(9) 31
M3
7 (6) 13/14
(6) 20/22
(3) 25/31
(5) 36
M4
13 (9) 22
(7) 29
(8) 37
(4) 41
Therefore, since the 2 sequence has the same makespan, we can choose
both sequence
77
Example 3:
Find the best sequence for four jobs to be processed on five
machines by using Campbells Algorithm.
JOB
Machine 5
Solution:
Develop the first alternative
JOB
14
24
15
11
13
12
78
14
24
15
11
13
12
M1
0 (4)4
(2) 6
(3) 9
(5) 14
M2
4 (2) 6
(8) 14
(5) 19
94) 23
M3
6 (5) 11/14
(4) 18/19
(4) 23
(3) 26
M4
11 (3) 16/18
(5) 23
(2) 25/26
(1) 29
M5
16 (3) 19/23
(6) 29
93) 32
(1) 33
M1
0 (4)4
(4) 6
(3) 9
(5) 14
M2
2 (8) 10
(2) 12
(5) 17
(4) 21
M3
10 (4) 14
(5)19
(4) 23
(3) 26
M4
14 (5) 19
(5)24
(2) 26
(3) 29
M5
19 (6) 25
(3) 28
(3) 31
(1)32
80