0% found this document useful (0 votes)
18 views

Chapter09 V2

The document describes algorithms for scheduling jobs with time constraints and resource constraints. It provides a heuristic algorithm that assigns priorities and schedules jobs based on their weight, processing time and available resources. An example applies the algorithm and shows the scheduling of 7 jobs across 3 resources over time.

Uploaded by

Trúc Ly
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

Chapter09 V2

The document describes algorithms for scheduling jobs with time constraints and resource constraints. It provides a heuristic algorithm that assigns priorities and schedules jobs based on their weight, processing time and available resources. An example applies the algorithm and shows the scheduling of 7 jobs across 3 resources over time.

Uploaded by

Trúc Ly
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Chapter 9: Interval Scheduling, Reservations, and

Timetabling

Phan Nguyen Ky Phuc

December 22, 2023

Contents

1 Reservation with Slack 2

1.1 Heuristic Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 Iteration 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 Job 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2.3 Job 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.4 Job 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.5 Job 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.6 Job 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3 Multiple Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4 Job 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5 Job 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.6 Job 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.7 Job 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Timetabling with Operator or Tooling Constraints 9

2.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Algorithm Application . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.2 Step 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

2.1.3 Step 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.4 Step 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.5 Step 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.6 Final Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 Assignment 13

1 Reservation with Slack

1.1 Heuristic Algorithm

• Let νit denote the number of activities that may be assigned to resource i during in-
terval [t − 1, t].

• This factor thus corresponds to a potential utilization of resource i in time slot t. The
higher this number is, the more flexible resource i is in this time slot.

• A second factor is the number of resources to which activity j can be assigned, i.e., the
number of resources in set Mj , which is denoted by | Mj |. The larger this number,
the more flexible activity j is.

• Define for activity j a priority index Ij that is a function of wj /pj and | Mj |, i.e.,
Ij = f (wj /pj , | Mj |)

• The activities can now be ordered in increasing order of their indices, i.e.,

I1 ≤ I2 ≤ ... ≤ In

• If the activity needs a resource over the period [t, t + pj ], then the selection of resource
i depends on a function of the factors νi,t+1 , ..., νi,t+pj i.e., g(νi,t+1 , ..., νi,t+pj ). For
example,
pj
!
X
g(νi,t+1 , ..., νi,t+pj ) = νi,t+l /pj
l=1

g(νi,t+1 , ..., νi,t+pj ) = max νi,t+1 , ..., νi,t+pj

Chapter 09 Page 2
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

Algorithm 1 Maximizing Weighted Number of Activities


Input:
Given job parameters pj , wj , rj , dj , Mj
Process:
1: Step 1
2: Set j=1
3:
4: Step 2
5: Take activity j and select, among the resources and time slots available, the resource
and time slots with the lowest g(νi,t+1 , ..., νi,t+pj ) rank. Discard activity j if it cannot be
assigned to any machine at any time.
6:
7: Step 3
8: If j = n ST OP , otherwise set j = j + 1 and return to Step 2.

Activities 1 2 3 4 5 6 7
pj 3 10 9 4 6 5 3
wj 2 3 3 2 1 2 3
rj 5 0 2 3 2 4 5
dj 12 10 20 15 18 19 14
Mj {1,3} {1,2} {1,2,3} {2,3} {1} {1} {1,2}

1.2 Example

1.2.1 Iteration 0

The index function is given by


| Mj |
Ij =
(wj /pj )
The indices for the activities are given by
The potential usage of for resource 1,2 and 3 are given through

Table 1: The activity indices Ii

Activities 1 2 3 4 5 6 7
Ij 3 6.67 9 4 6 2.5 2

Now assume that the job is assigned to the slot according to



g(νi,t+1 , ..., νi,t+pj ) = max νi,t+1 , ..., νi,t+pj

According to the index Ij calculated above, the job 7 is scheduled first.

Chapter 09 Page 3
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

Table 2: Potential Usage of Resource 1

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Job 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
Job 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
Job 3 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Job 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Job 5 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
Job 6 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
Job 7 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
Resource 1 1 1 3 3 4 6 6 6 6 6 5 5 4 4 3 3 3 3 2 1

Table 3: Potential Usage of Resource 2

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Job 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Job 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
Job 3 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Job 4 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
Job 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Job 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Job 7 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
Resource 2 1 1 2 3 3 4 4 4 4 4 3 3 3 3 2 1 1 1 1 1

Table 4: Potential Usage of Resource 3

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Job 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
Job 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Job 3 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Job 4 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
Job 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Job 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Job 7 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Resource 3 0 0 1 2 2 3 3 3 3 3 3 3 2 2 2 1 1 1 1 1

Table 5: Summary of Potential Usage of 3 Resources

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Resource 1 1 1 3 3 4 6 6 6 6 6 5 5 4 4 3 3 3 3 2 1
Resource 2 1 1 2 3 3 4 4 4 4 4 3 3 3 3 2 1 1 1 1 1
Resource 3 0 0 1 2 2 3 3 3 3 3 3 3 2 2 2 1 1 1 1 1

1.2.2 Job 7

Since the p7 = 3 the value of g7,5 = (ν7,5 + ν7,6 + ν7,7 ) /3

Job 7 is scheduled from 11 → 14

Chapter 09 Page 4
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

Table 6: Calculate g for job 7

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Res 1 1 1 3 3 4 6 6 6 6 6 5 5 4 4 3 3 3 3 2 1
Res 2 1 1 2 3 3 4 4 4 4 4 3 3 3 3 2 1 1 1 1 1
Res 3 0 0 1 2 2 3 3 3 3 3 3 3 2 2 2 1 1 1 1 1
J7, g1,t 0 0 0 0 0 6 6 6 5.7 5.3 4.7 4.3 0 0 0 0 0 0 0 0
J7, g2,t 0 0 0 0 0 4 4 4 3.7 3.3 3.0 3.0 0 0 0 0 0 0 0 0

Update the Resource Usage and order job 6

1.2.3 Job 6

Table 7: Calculate g for job 6

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Res 1 1 1 3 3 4 5 5 5 5 5 4 3 3 3 3 2 1
Res 2 1 1 2 3 3 3 3 3 3 3 2 2 1 1 1 1 1
Res 3 0 0 1 2 2 3 3 3 3 3 3 3 2 2 2 1 1 1 1 1
J6, g1,t 0 0 0 0 4.8 5 4.8 2.8

Job 6 is scheduled from 14 → 19


Update the Resource Usage and order job 1

1.2.4 Job 1

Table 8: Calculate g for job 1

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Res 1 1 1 3 3 4 4 4 4 4 4 3 1
Res 2 1 1 2 3 3 3 3 3 3 3 2 2 1 1 1 1 1
Res 3 0 0 1 2 2 3 3 3 3 3 3 3 2 2 2 1 1 1 1 1
J1, g1,t 4 4 4 3.7
J1, g3,t 3 3 3 3

Job 1 is scheduled from 8 → 10


Update the Resource Usage and order job 4

1.2.5 Job 4

Job 4 is scheduled from 3 → 6


Update the Resource Usage and order job 5

Chapter 09 Page 5
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

Table 9: Calculate g for job 4

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Res 1 1 1 3 3 3 3 3 3 1
Res 2 1 1 2 3 3 3 3 3 3 3 2 2 1 1 1 1 1
Res 3 0 0 1 2 2 2 2 2 3 2 2 2 1 1 1 1 1
J4, g2,t 3 3 0 0 0 0 0 0 0 0
J4, g3,t 2 2

1.2.6 Job 5

Table 10: Calculate g for job 5

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Res 1 1 1 3 3 3 3 3 3 1
Res 2 1 1 2 2 2 2 1 1 1 1 1 1 1
Res 3 0 0 1 1 2 1 1 1 1 1 1 1 1
J5, g1,t 3

Job 5 is scheduled from 2 → 7


Update the Resource Usage

Table 11: The resource usage after job 5 is assigned

Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Res 1 1 1 1
Res 2 1 1 2 2 2 2 1 1 1 1 1 1 1
Res 3 0 0 1 1 2 1 1 1 1 1 1 1 1

It is impossible to schedule the rest job. We stop here

1.3 Python code


1 #! / u s r / b i n / env python3
2 # −∗− c o d i n g : u t f −8 −∗−
3 """
4 Created on Thu Dec 21 1 2 : 5 9 : 1 1 2023
5

6 @author : kyphuc
7 """
8

9 import f u n c t o o l s
10 import i t e r t o o l s
11 import numpy a s np
12 import copy

Chapter 09 Page 6
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

13 c l a s s Job :
14 d e f __init__ ( s e l f , ∗ a r g s , ∗ ∗ kwargs ) :
15 s e l f . j o b I d=kwargs [ ’ j o b I d ’ ]
16 s e l f . pro=kwargs [ ’ pro ’ ]
17 s e l f . w e i g h t=kwargs [ ’ w e i g h t ’ ]
18 s e l f . r e l e a s e=kwargs [ ’ r e l e a s e ’ ]
19 s e l f . duedate=kwargs [ ’ duedate ’ ]
20 s e l f . machine=kwargs [ ’ machine ’ ]
21 s e l f . p r i o r i t y=sum ( s e l f . machine ) ∗ s e l f . pro / s e l f . w e i g h t
22 s e l f . i s S c h e d u l e d=F a l s e
23 s e l f . i s P r o c e s s e d=F a l s e
24 s e l f . b e g i n n i n g=None
25

26

27 d e f __str__( s e l f ) :
28 r e t u r n f " Job ID : { s e l f . j o b I d}−−b e g i n n i n g : { s e l f . b e g i n n i n g}−−i s P r o c e s s e d
: { s e l f . i s P r o c e s s e d }"
29

30

31 def initProblem ( jobList ) :


32 BEG=min ( [ j . r e l e a s e f o r j i n j o b L i s t ] )
33 END=max ( [ j . duedate f o r j i n j o b L i s t ] )
34 NUM_MACHINE=l e n ( j o b L i s t [ 0 ] . machine )
35 NUM_JOB=l e n ( j o b L i s t )
36 cur_res =[]
37 f o r m i n r a n g e (NUM_MACHINE) :
38 resMat=np . z e r o s ( (NUM_JOB+1,END+1) )
39 f o r j i n r a n g e (NUM_JOB) :
40 j o b=j o b L i s t [ j ]
41 i f not j o b . i s S c h e d u l e d and j o b . machine [m]==1:
42 resMat [ j ] [ j o b . r e l e a s e : ( j o b . duedate ) ]=1
43 resMat [NUM_JOB] [ : ] = np . sum ( resMat [ 0 :NUM_JOB ] [ : ] , a x i s =0)
44 c u r _ r e s . append ( resMat )
45

46 c u r _ s c h e d u l e=np . z e r o s ( (NUM_MACHINE,END+1) )
47 r e t u r n cur_res , c u r _ s c h e d u l e
48

49 d e f checkAssignment ( cur_res , cur_schedule , job , j o b L i s t ) :


50 cur_time=j o b . r e l e a s e
51 pro_time=j o b . pro
52

53 j o b _ f e a s i b l e=F a l s e
54 j o b _ l o s s =10000
55 job_from=None
56

57 f o r t i n r a n g e ( j o b . r e l e a s e , j o b . duedate−j o b . pro +1) :


58 f e a s i b l e F l g=i s F e a s i b l e ( cur_schedule , t , j o b . pro , j o b . machine )
59 l o s s=f i n d L o s s ( cur_res , t , j o b . pro , j o b . machine )

Chapter 09 Page 7
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

60 i f f e a s i b l e F l g and j o b _ l o s s >=l o s s :
61 job_from=t
62 j o b _ f e a s i b l e=True
63 j o b _ l o s s=l o s s
64

65 new_schedule , new_res=u p d a t e S t a t e ( cur_schedule , cur_res , job , j o b L i s t , job_from


, job_feasible , job_loss )
66 r e t u r n new_schedule , new_res
67

68 d e f u p d a t e S t a t e ( cur_schedule , cur_res , job , j o b L i s t , job_from , j o b _ f e a s i b l e ,


job_loss ) :
69 NUM_MACHINE=l e n ( j o b . machine )
70 NUM_DAY=c u r _ s c h e d u l e . shape [ 1 ]
71 NUM_JOB=c u r _ r e s [ 0 ] . shape [0] −1
72 i f job_feasible :
73 j o b . i s S c h e d u l e d=True
74 j o b . i s P r o c e s s e d=True
75 j o b . b e g i n n i n g=job_from
76 j o b . p r i o r i t y =10000
77 f o r m i n r a n g e (NUM_MACHINE) :
78 i f j o b . machine [m] :
79 c u r _ s c h e d u l e [m] [ job_from : job_from+j o b . pro ]= j o b . j o b I d
80 else :
81 j o b . i s S c h e d u l e d=True
82 j o b . i s P r o c e s s e d=F a l s e
83 j o b . p r i o r i t y =10000
84

85 cur_res =[]
86 f o r m i n r a n g e (NUM_MACHINE) :
87 resMat=np . z e r o s ( (NUM_JOB+1,NUM_DAY) )
88 f o r j i n r a n g e (NUM_JOB) :
89 c j o b=j o b L i s t [ j ]
90 i f not c j o b . i s S c h e d u l e d and c j o b . machine [m]==1:
91 resMat [ j ] [ c j o b . r e l e a s e : c j o b . duedate ]=1
92 resMat [NUM_JOB] [ : ] = np . sum ( resMat [ 0 :NUM_JOB ] [ : ] , a x i s =0)
93 c u r _ r e s . append ( resMat )
94 r e t u r n cur_schedule , c u r _ r e s
95

96 d e f i s F e a s i b l e ( cur_schedule , cur_time , pro , machines ) :


97 checkSum=0
98 NUM_MACHINE=l e n ( machines )
99 f o r m i n r a n g e (NUM_MACHINE) :
100 i f machines [m] :
101 checkSum+=np . sum ( c u r _ s c h e d u l e [m] [ cur_time : cur_time+pro ] )
102 i f checkSum==0:
103 r e t u r n True
104 else :
105 return False

Chapter 09 Page 8
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

106

107 d e f f i n d L o s s ( cur_res , cur_time , pro , machines ) :


108 resSum=0
109 NUM_MACHINE=l e n ( machines )
110 f o r m i n r a n g e (NUM_MACHINE) :
111 i f machines [m] :
112 r e s o u r c e=c u r _ r e s [m]
113 resSum+=np . sum ( r e s o u r c e [ − 1 ] [ cur_time : cur_time+pro ] )
114 r e t u r n resSum
115

116 i f __name__=="__main__" :
117 j o b 1=Job ( j o b I d =1, pro =3, w e i g h t =2, r e l e a s e =5, duedate =12 , machine = [ 1 , 0 , 1 ] )
118 j o b 2=Job ( j o b I d =2, pro =10 , w e i g h t =3, r e l e a s e =0, duedate =10 , machine = [ 1 , 1 , 0 ] )
119 j o b 3=Job ( j o b I d =3, pro =9, w e i g h t =3, r e l e a s e =2, duedate =20 , machine = [ 1 , 1 , 1 ] )
120 j o b 4=Job ( j o b I d =4, pro =4, w e i g h t =2, r e l e a s e =3, duedate =15 , machine = [ 0 , 1 , 1 ] )
121 j o b 5=Job ( j o b I d =5, pro =6, w e i g h t =1, r e l e a s e =2, duedate =18 , machine = [ 1 , 0 , 0 ] )
122 j o b 6=Job ( j o b I d =6, pro =5, w e i g h t =2, r e l e a s e =4, duedate =19 , machine = [ 1 , 0 , 0 ] )
123 j o b 7=Job ( j o b I d =7, pro =3, w e i g h t =3, r e l e a s e =5, duedate =14 , machine = [ 1 , 1 , 0 ] )
124 j o b _ l i s t =[ job1 , job2 , job3 , job4 , job5 , job6 , j o b 7 ]
125

126 NUM_MACHINE=l e n ( j o b 1 . machine )


127 p r i o =[ j o b . p r i o r i t y f o r j o b i n j o b _ l i s t ]
128 cur_res , c u r _ s c h e d u l e=i n i t P r o b l e m ( j o b _ l i s t )
129

130 f o r m i n r a n g e (NUM_MACHINE) :
131 p r i n t ( f " P o t e n t i a l r e s o u r c e u s a g e o f machine {m} : " )
132 p r i n t ( c u r _ r e s [m] )
133 p r i n t ( ’−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ’ )
134 unschedule_num=l e n ( j o b _ l i s t )
135

136 w h i l e unschedule_num >0:


137 j o b I n d=p r i o . i n d e x ( min ( p r i o ) )
138 a s s i g n e d _ j o b=j o b _ l i s t [ j o b I n d ]
139 new_schedule , new_res=checkAssignment ( cur_res , cur_schedule , a s s i g n e d _ j o b
, job_list )
140 p r i n t ( f "New s c h e d u l e a f t e r c o n s i d e r j o b { a s s i g n e d _ j o b . j o b I d } " )
141 p r i n t ( new_schedule )
142 p r i n t ( ’−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ’ )
143 r es _ u sa g e = [ ] ;
144 f o r m i n r a n g e (NUM_MACHINE) :
145 r es _ u sa g e . append ( l i s t ( new_res [m] [ − 1 ] [ : ] ) )
146 p r i n t ( f " Update P o t e n t i a l Usage : " )
147 p r i n t ( re s _ us a ge )
148 p r i n t ( ’−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ’ )
149 p r i o =[ j o b . p r i o r i t y f o r j o b i n j o b _ l i s t ]
150 unschedule_num−=1
151

152 f o r job in j o b _ l i s t :

Chapter 09 Page 9
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

153 print ( job )

1.4 Multiple Machines

The algorithm above can be extended to the case where number of each time of machine is
greater than 1
The number of machine type 1 and 2 are 2

Table 12: The data of example 2

Job 1 2 3 4
wj 3 2 2 1
pj 2 3 1 1
rj 0 2 1 2
dj 5 7 6 6
Machine 1 2 0 1 1
Machine 2 1 2 0 1

Calculate the index priority of each job


P 
K mjk
k=1 Nk × pj
Ij =
wj

where:
mjk : be the number of resource type k which is required by job j
Nk : be the maximum number of resource type k

(2/2 + 1/2) 2
I1 =
3

Table 13: The priority index

Job 1 2 3 4
Ij 1 1.5 0.25 1

Table 14: Summary of usage resource

Time 0 1 2 3 4 5 6
M1 2 3 4 4 4 2 0
M2 1 1 4 4 4 3 2
RemainM1 2 2 2 2 2 2 2
RemainM2 2 2 2 2 2 2 2

Chapter 09 Page 10
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

Table 15: Summary of usage resource of Job 3

Time 0 1 2 3 4 5 6
M1 2 3 4 4 4 2 0
M2 1 1 4 4 4 3 2
Remain M1 2 2 2 2 2 2 2
Remain M2 2 2 2 2 2 2 2
J3,M1 usage 1.5 2 2 2 1

1.5 Job 3

Job 3 is assigned to time slot 5

1.6 Job 4

Then resource is updated


Assume that job 4 is selected next

Table 16: Summary of usage resource of Job 4

Time 0 1 2 3 4 5 6
M1 2 2 3 3 3 1 0
M2 1 1 4 4 4 3 2
RemainM1 2 2 2 2 2 1 2
RemainM2 2 2 2 2 2 2 2
J4, M1 usage 1.5 1.5 1.5 1
J4, M2 usage 2 2 2 2
Total 3.5 3.5 3.5 2.5

Job 4 is assigned to slot 5.

1.7 Job 1

Table 17: Summary of usage resource of Job 1

Time 0 1 2 3 4 5 6
M1 2 2 2 2 2 0 0
M2 1 1 3 3 3 2 2
Remain M1 2 2 2 2 2 0 2
Remain M2 2 2 2 2 2 1 2
J1, M1 usage 2 2 2 2
J1, M2 usage 0.5 0.5 1.5 1.5
Total 2.5 2.5 3.5 3.5

Job 1 is assigned to slot 0

Chapter 09 Page 11
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

1.8 Job 2

Table 18: Summary of usage resource of Job 2

Time 0 1 2 3 4 5 6
M1 0 0 0 0 0 0 0
M2 0 2 2 2 2 2 2
RemainM1 0 0 2 2 2 0 2
RemainM2 1 1 2 2 2 1 2
J2, M2 Usage 2
Total 2

Job 2 is assigned to slot 2

2 Timetabling with Operator or Tooling Constraints

Algorithm 2 Graph Coloring Heuristic


Input:
Given job parameters pj , wj , rj , dj , Mj
Process:
1: Step 1
2: Arrange the nodes in decreasing order of their degree.
3:
4: Step 2
5: Color a node of maximal degree with Color 1.
6:
7: Step 3
8: Choose an uncolored node with maximal saturation level.
9: If there is a tie, choose any one of the nodes with maximal degree in the uncolored
subgraph.
10:
11: Step 4
12: Color the selected node with the color with the lowest possible number.
13:
14: Step 5
15: If all nodes are colored, STOP. Otherwise go to Step 3..

• The degree of a node is the number of arcs connected to a node;

• The saturation level of a node in a partially colored graph, is the number of


differently colored nodes already connected to it. In the coloring process, the first
color to be used is labeled Color 1, the second Color 2, and so on.

Chapter 09 Page 12
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

2.1 Example

Gary, Hamilton, Izak and Reha are university professors attending a national conference.
During this conference seven one hour meetings have to be scheduled in such a way that
each one of the four professors can be present at all the meetings he has to attend. The goal
is to schedule all seven meetings in a single afternoon between 2 p.m. and 6 p.m.

Activities 1 2 3 4 5 6 7
Gary, 1 0 0 1 1 0 1
Hamilton 1 1 1 0 0 0 0
Izak 0 0 1 0 1 1 0
Reha 1 0 1 1 1 0 0

2.1.1 Algorithm Application

In this table, if activity i and j have the common resource, then there is an arc between
node i and node j
The degree of each node is

Figure 1: Example of Graph Coloring Algorithm

Table 19: Node Degree

Node 1 2 3 4 5 6 7
Degree 5 2 5 4 5 2 3

Chapter 09 Page 13
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

2.1.2 Step 1

Among node 1, 3, and 5 choose an arbitrarily node. For example, node 1 is selected.
Coloring node 1 with Color 1, then update the staturation and degree of other node

Table 20: Node Degree and Saturation

Node 1 (Color 1) 2 3 4 5 6 7
Saturation _ 1 1 1 1 0 1
Degree _ 1 4 3 4 2 2

2.1.3 Step 2

Among node 3, and 5 choose an arbitrarily node. Node 3 is selected.


Coloring node 3 with Color 2, then update the staturation and degree of other node

Table 21: Node Degree and Saturation

Node 1 (Color 1) 2 3 (Color 2) 4 5 6 7


Saturation _ 2 _ 2 2 1 1
Degree _ 0 _ 2 3 1 2

2.1.4 Step 3

Node 5 is selected.
Coloring node 5 with Color 3, then update the staturation and degree of other node

Table 22: Node Degree and Saturation

Node 1 (Color 1) 2 3 (Color 2) 4 5 (Color 3) 6 7


Saturation _ 2 _ 3 _ 2 2
Degree _ 0 _ 1 _ 0 0

2.1.5 Step 4

Node 4 is selected.
Coloring node 4 with Color 4

Chapter 09 Page 14
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

Table 23: Node Degree and Saturation

Node 1 (Color 1) 2 3 (Color 2) 4 (Color 4) 5 (Color 3) 6 7


Saturation _ 2 _ _ _ 2 2
Degree _ 0 _ _ _ 0 0

2.1.6 Final Schedule

Step 1 : Job 1 and 6 are scheduled at the same time. Time slot 1
Step 2 : Job 3 and 7 are scheduled at the same time. Time slot 2
Step 1 : Job 5 and 2 are scheduled at the same time. Time slot 3
Step 1 : Job 4 is scheduled at time slot 4
1 #! / u s r / b i n / env python3
2 # −∗− c o d i n g : u t f −8 −∗−
3 """
4 Created on F r i Dec 15 0 9 : 4 2 : 3 2 2023
5

6 @author : kyphuc
7 """
8

9 import f u n c t o o l s
10 import i t e r t o o l s
11 import copy
12 c l a s s Job :
13 d e f __init__ ( s e l f , ∗ a r g s , ∗ ∗ kwargs ) :
14 s e l f . j o b I d=kwargs [ ’ j o b I d ’ ]
15 s e l f . r e s o u r c e=kwargs [ ’ r e s ’ ]
16 s e l f . d e g r e e=None
17 s e l f . c o l o r=" "
18

19

20 d e f __str__( s e l f ) :
21 r e t u r n f " Job ID : { s e l f . j o b I d}−− c o l o r : { s e l f . c o l o r } "
22

23 def findConflictMatrix ( jobList ) :


24 numJob=l e n ( j o b L i s t )
25 confMatrix =[]
26 f o r i i n r a n g e ( numJob ) :
27 confVec = [ 0 ] ∗ numJob
28 f o r j i n r a n g e ( numJob ) :
29 i f i==j :
30 confVec [ j ]=0
31 i f i != j :
32 r e s=sum (map ( lambda x , y : x∗y , j o b L i s t [ i ] . r e s o u r c e , j o b L i s t [ j ] .
resource ) )
33 i f r e s >0:

Chapter 09 Page 15
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

34 confVec [ j ]=1
35 else :
36 confVec [ j ]=0
37 c o n f M a t r i x . append ( confVec )
38 # c a l c u l a t e the degree
39 f o r i i n r a n g e ( numJob ) :
40 j o b L i s t [ i ] . d e g r e e=sum ( c o n f M a t r i x [ i ] )
41 # return the degree
42

43 d e g L i s t =[ j o b . d e g r e e f o r j o b i n j o b L i s t ]
44 return degList , confMatrix
45

46 d e f c o l o r G ra p h ( c onf Matr ix , j o b L i s t , d e g L i s t , colorNum ) :


47 numJob=l e n ( j o b L i s t )
48 c o l o r I n d=d e g L i s t . i n d e x (max( d e g L i s t ) )
49 j o b L i s t [ c o l o r I n d ] . d e g r e e=0
50 j o b L i s t [ c o l o r I n d ] . c o l o r=s t r ( colorNum )
51 print ( jobList [ colorInd ] )
52 updateMatrix=copy . deepcopy ( c o n f M a t r i x )
53 f o r i i n r a n g e ( numJob ) :
54 f o r j i n r a n g e ( numJob ) :
55 i f i==c o l o r I n d o r j==c o l o r I n d :
56 updateMatrix [ i ] [ j ]=0
57

58 f o r i i n r a n g e ( numJob ) :
59 j o b L i s t [ i ] . d e g r e e=sum ( updateMatrix [ i ] )
60

61 d e g L i s t =[ j o b . d e g r e e f o r j o b i n j o b L i s t ]
62 p r i n t ( f ’ Degree L i s t : \n{ d e g L i s t } ’ )
63 #p r i n t ( f ’ Update Matr : \n{ updateMatrix } ’ )
64 r e t u r n d e g L i s t , updateMatrix
65

66 i f __name__=="__main__" :
67 j o b 0=Job ( j o b I d =0, r e s = [ 1 , 1 , 0 , 1 ] )
68 j o b 1=Job ( j o b I d =1, r e s = [ 0 , 1 , 0 , 0 ] )
69 j o b 2=Job ( j o b I d =2, r e s = [ 0 , 1 , 1 , 1 ] )
70 j o b 3=Job ( j o b I d =3, r e s = [ 1 , 0 , 0 , 1 ] )
71 j o b 4=Job ( j o b I d =4, r e s = [ 1 , 0 , 1 , 1 ] )
72 j o b 5=Job ( j o b I d =5, r e s = [ 0 , 0 , 1 , 0 ] )
73 j o b 6=Job ( j o b I d =6, r e s = [ 1 , 0 , 0 , 0 ] )
74 j o b L i s t =[ job0 , job1 , job2 , job3 , job4 , job5 , j o b 6 ]
75 d e g L i s t , c o n f M a t r i x=f i n d C o n f l i c t M a t r i x ( j o b L i s t )
76 p r i n t ( f ’ C o n f l i c t matrix : \n{ c o n f M a t r i x } ’ )
77 p r i n t ( f ’ Degree l i s t \n{ d e g L i s t } ’ )
78 colorNum=1
79 d e g L i s t , updateMat=c o lo r G r a ph ( con fMat rix , j o b L i s t , d e g L i s t , colorNum )
80

81 w h i l e sum ( d e g L i s t ) >0:

Chapter 09 Page 16
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

82 colorNum+=1
83 d e g L i s t , updateMat=c ol o r G r a ph ( updateMat , j o b L i s t , d e g L i s t , colorNum )

3 Assignment

Q1 Consider the following reservation problem with 10 activities and zero slack. There are
three identical resources in parallel.
(a) Find the schedule that maximizes the total amount of processing (i.e., the sum of the

Table 24: Data given

Job 1 2 3 4 5 6 7 8 9 10
pj 6 1 4 2 3 3 6 2 1 3
rj 2 7 5 2 1 0 4 8 0 0
dj 8 8 9 4 4 3 10 10 1 3

durations of the activities done) using CPLEX)


(b) What is the minimum number of resources needed to satisfy the total demand? Write
down the mathematical model for this problem and solve using CPLEX

Q2 Consider the following instance with eight activities and three resources.
(a) Find the schedule that maximizes the total weight using CPLEX)

Table 25: Data given

Job 1 2 3 4 5 6 7 8
pj 4 3 10 9 4 6 5 3
wj 3 2 3 3 2 1 2 3
rj 8 5 0 2 3 2 4 5
dj 12 12 10 20 15 18 19 14
Mj {2} {1,3} {1,2} {1,2,3} {2,3} {1} {1} {1,2}

(b)Select appropriate index functions Ij and g(νi,t+1 , ..., νi,t+pj ) and apply proper Algorithm.

Q3 Consider a hotel with two types of rooms: suites and regular rooms. There are n1 suites
and n2 regular rooms. If someone wants a suite, then the hotel makes a profit of w1 dollars
per night. If someone wants a regular room, the hotel makes a profit of w2 dollars per night
(w2 < w1 ). If a person wants a regular room and all regular rooms are taken, then the hotel
can put that person up in a suite. However, the hotel makes then only w2 dollars per night.
Assume that the hotel cannot ask the guest to change rooms in the middle of his stay; once
assigned to a room or suite the guest will stay there until he leaves (i.e., preemptions are
not allowed). Given n1 = 1, n2 = 3 and w1 = 3, w2 = 2. The following data is given
(a) Develop the mathematical model and solve using CPLEX)

Chapter 09 Page 17
Ho Chi Minh City International University Scheduling
Industrial Systems Engineering Department Lecturer: Phan Nguyen Ky Phuc

Table 26: Data given

Guest 1 2 3 4 5 6 7 8 9
pj 4 3 10 9 4 6 5 3 4
type 1 1 2 2 2 2 2 2 2
rj 8 5 0 2 3 2 4 5 7
dj 12 12 10 15 15 15 13 14 13

Q4 Consider the following timetabling problem with tool sets.


(a) Can the tool sets be numbered in such a way that all the tools needed by each job are

Table 27: Data given

Job 1 2 3 4 5
pj 1 1 1 1 1
T ool1 1 0 0 1 0
T ool2 0 1 1 0 0
T ool3 1 1 0 1 1
T ool4 0 1 1 1 1

adjacent?
(b) Develop an algorithm for verifying whether the tool sets can be numbered in that way.
Q5 Consider the following timetabling problem with two types of personnel. The total
number of personnel of type 1 is W1 = 3 and the total number of personnel of type 2 is
W2 = 4. (a) Determine first which type of personnel is the most critical (the tightest).

Table 28: Data given

Job 1 2 3 4 5 6 7
pj 1 1 1 1 1 1 1
W1j 2 0 1 2 1 2 1
W2j 2 4 0 2 3 1 2

(b) Use the information under (a) to develop a heuristic for this problem with two types of
personnel

Chapter 09 Page 18

You might also like