Escolar Documentos
Profissional Documentos
Cultura Documentos
By
December 2011
ABSTRACT
By
units. The problem is to find the job orders (operations belonging to a job) and the
List of Figures v
Problem Statement vi
Literature Review 2
O|Pmtn| 6
Methodology 7
References 16
Appendix A 17
LIST OF FIGURES
I would like to express my deepest appreciation to Dr. Wolfgang Bein for his help
has been very rewarding and satisfying experience to be able to work with a person of
such vast knowledge and experience. I would like to thank my Graduate Coordinator and
a member of the committee Dr. Ajoy K Datta for his moral support and guidance through
my Masters program and help me on my project. I would also like to thank Dr. Laxmi . P.
Gewali and Dr. V. Muthukumar for serving on the committee. For this and for being
generous with their time when I needed it, I am deeply indebted to them.
Last but not the least, I would like to thank my family and friends, and all the other
people whom I have not mentioned above but have helped me in some way through the
units. The problem is to find the job orders (operations belonging to a job) and the
The review of the literature for the proposed research includes the subject areas of
Scheduling Algorithms, in Computer Science, and the capabilities and limitations of the
Open Shop Scheduling Problem. The following is a short summary of the literature on
Peter Brucker et al (1995) (1) describes a fast branch and bound method for the
developed. Computational results show that this method yields to excellent results.
C.Y.Liu, R.L.Buflin (1987) (2) this paper discusses about the problem of
NP-hard, and the computational difficulty of a few special cases is unknown. In this
paper a polynomial algorithm is given to minimize the total tardiness and the number of
J.O.Achugbue and Francis Y. Chin (3) this paper shows that a problem of
mean flow time is NP-Complete even if the input length is measured by the sum f the
task lengths.
H.Brasel et al (1995) (4) an open-shop problem with unit processing times and
tree constraints (out-tree) between the jobs is the basic focus of this paper. A polynomial
algorithm is presented which decomposes the problem into sub problems by means of the
finish time schedule for a two processor open-shop coupled with a polynomial time
algorithm to obtain a minimum finish time of preemptive schedules for open-shops with
Any scheduling problem can be denoted in the form ||, where specifies the
machine environment, specifies the Job criteria, and specifies the optimization
criteria. For the classical problem discussed in this project, the fields will take on
the processing of a task may be preempted at any time to be continued at a later time.
If Preemption is not present, then each task must be processed continuously until
completion once it has begun processing on some machine. Finally, we have that is
function as defined above. The objective goal of the problems studied in this
Open Shop Schedules differ from Flow Shop and Job Shop Schedules, in an
Open Shop Schedule no restrictions are placed on the order in which the tasks for any
job are to be processed. It is easy to conceive of the situations where the tasks making
up a job can be performed in any order, even though it is not possible to carry out more
the order in which the operations of a job are to be performed, hence the term Open
Shop. Each job can be processed on at most one machine at a time, and either machine
can process at most one operation at a time. No processing can occur prior to time zero.
arbitrarily often be interrupted and resumed at a later time, the periods in which the
operations of a given job are performed may be interleaved in time. A schedule is said
completion. Note that all Non-Preemptive schedules are also Preemptive, while the
Each schedule defines a completion time for each , given a due date
Open Shop Scheduling Problems are also interesting from theoretical point of
view; they arise in many industrial situations. For example, consider a large aircraft
garage with specialized work centers. An airplane may require repairs on its engine and
electrical circuit system. These two tasks may be carried out in any order but it is not
determining optimal preemptive Schedules for Flow Shop and Job Shop is
NP-Complete.
O|PMTN|
This preemptive open shop problem can be formulated in the following way, n
jobs J1, Jn are given to be processed on m machines M1, . . , Mm. Each job Ji consists of
units. Preemption is allowed and the order in which the operations of Ji are processed is
arbitrary. The only restriction is that a machine cannot process two jobs simultaneously
and a job cannot be processed by two machines at the same time. We have to find a
n m
Tj := and Li := .
i=1 j=1
Clearly,
n m
i=1 j=1
is a lower bound for the Cmax value. Now we will use an algorithm which always
Suppose that there are n jobs and m machines, also given are the processing
times of the processes. These form the initial inputs of the matrix, where the
columns of the matrix will be machines and the rows of the matrix will be jobs and the
cells of the matrix take the values of. With the available values we then
calculated which is the maximum value of sum of rows or sum of columns of the
matrix. We, then construct an n+m by n+m matrix. The rows and columns of this newly
constructed matrix are jobs and machines respectively, there will be extra machines and
To these extra rows and columns, we assign those cells a value such that if each
row and each column is added, it will equal tod. Then we pick a cell in each row and
each column such that the row index and the column index do no match and put them
into appropriate machine. If a cell is picked which is in an extra row or extra column,
then we do not place them in the schedule, this completes the first iteration , we now
subtract 1 to all the cells which have been picked, including the cells of the extra rows
and extra columns. Then this process is repeated until the n+m by n+m matrix has no
= 0 , = 3 , = 2, = 1, = 0, = 1, = 0, = 1, = 0, =
2, =1.
M1 M2 M3
1 1 0 3
2 2 1 0
3 1 0 1
4 0 2 1
Cmax Value
in the schedule.
M1 M2 M3
j1 1 0 3 4
j2 2 1 0 3
j3 1 0 1 2
j4 0 2 1 3
4 3 5
Step 3: We then construct the 7 by 7 matrix shown below as follows, the 7 by 7 matrix is
split into 4 regions namely Top Left (TL), Top Right (TR), Bottom Left (BL), Bottom
Right (BR) by the thick horizontal and vertical lines. The TL of the matrix is the initial
input of the matrix. The portions TR and BL are only diagonal matrices, where the
diagonals of the matrix are filled by subtracting thed value from the sum of rows and
sum of columns of the TL matrix respectively. The most complex part of the problem is
filling the BR matrix, for filling this matrix we use the North west corner rule and we call
M M M M M
1 M2 3 4 5 M6 7
j1 1 0 3 1 0 0 0
j2 2 1 0 0 2 0 0
j3 1 0 1 0 0 3 0
j4 0 2 1 0 0 0 2
j5 1 0 0 4 0 0 0
j6 0 2 0 0 3 0 0
j7 0 0 0 0 0 2 3
Step 4 : Now we select 7 jobs on 7 different machines, keeping in mind the constraint that
the row index and column index do not match, we then place them in the schedule which
completes the first iteration. Now we have to subtract 1 to all the cells which are marked.
Then repeat this process until the 7 by 7 matrix has no more processing times left.
Iteration 1 :
M M M M M M M
1 2 3 4 5 6 7
j1 1 0 3 1 0 0 0
j2 2 1 0 0 2 0 0
j3 1 0 1 0 0 3 0
j4 0 2 1 0 0 0 2
j5 1 0 0 4 0 0 0
j6 0 2 0 0 3 0 0
j7 0 0 0 0 0 2 3
M
1 j1
M
2 j2
M
3 j3
M
j1 1
M
j2 2
M
j3 3
j4
M M M M M M M
1 2 3 4 5 6 7
j1 0 0 3 1 0 0 0
j2 2 0 0 0 2 0 0
j3 1 0 0 0 0 3 0
j4 0 2 1 0 0 0 1
j5 1 0 0 3 0 0 0
j6 0 2 0 0 2 0 0
j7 0 0 0 0 0 1 3
M
1 j1
M
2 j2
M
3 j3 j4
M
j1 1
M
j2 2
M
j3 3
M
j4 3
Iteration 3:
M M M M M M M
1 2 3 4 5 6 7
j1 0 0 3 0 0 0 0
j2 2 0 0 0 1 0 0
j3 1 0 0 0 0 2 0
j4 0 2 0 0 0 0 1
j5 0 0 0 3 0 0 0
j6 0 1 0 0 2 0 0
j7 0 0 0 0 0 1 2
M
1 j1 j3
M
2 j2
M
3 j3 j4 j1
M M
j1 1 3
M
j2 2
M M
j3 3 1
M
j4 3
Iteration 4:
M M M M M M M
1 2 3 4 5 6 7
j1 0 0 2 0 0 0 0
j2 2 0 0 0 0 0 0
j3 0 0 0 0 0 2 0
j4 0 2 0 0 0 0 0
j5 0 0 0 2 0 0 0
j6 0 0 0 0 2 0 0
j7 0 0 0 0 0 0 2
M
1 j1 j3 j2
M
2 j2 j4
M
3 j3 j4 j1 j1
M M M
j1 1 3 3
M M
j2 2 1
M M
j3 3 1
M M
j4 3 2
Iteration 5:
M M M M M M M
1 2 3 4 5 6 7
j1 0 0 1 0 0 0 0
j2 1 0 0 0 0 0 0
j3 0 0 0 0 0 1 0
j4 0 1 0 0 0 0 0
j5 0 0 0 1 0 0 0
j6 0 0 0 0 1 0 0
j7 0 0 0 0 0 0 1
M
1 j1 j3 j2 j2
M
2 j2 j4 j4
M
3 j3 j4 j1 j1 j1
M M M M
j1 1 3 3 3
M M M
j2 2 1 1
M M
j3 3 1
M M M
j4 3 2 2
M M M M M M M
1 2 3 4 5 6 7
j1 0 0 0 0 0 0 0
j2 0 0 0 0 0 0 0
j3 0 0 0 0 0 0 0
j4 0 0 0 0 0 0 0
j5 0 0 0 0 0 0 0
j6 0 0 0 0 0 0 0
j7 0 0 0 0 0 0 0
Final Schedule:
M
1 j1 j3 j2 j2
M
2 j2 j4 j4
M
3 j3 j4 j1 j1 j1
M M M M
j1 1 3 3 3
M M M
j2 2 1 1
M M
j3 3 1
M M M
j4 3 2 2
REFERENCES
1. Peter Brucker et al
Scheduling open shops with unit execution times to minimize functions of due dates.
A polynomial algorithm for an open shop problem with unit processing times and tree
constraints.
#include<stdio.h>
#include<conio.h>
void main()
int m,n,x,y,i,j,i1,j1,maxvalue;
scanf_s("%d%d",&m,&n);
for(x=1;x<m+1;++x)
for(y=1;y<n+1;++y)
scanf("%f", &s[x][y]);
for(x=1;x<m+1;++x)
s[x][n+1]=0;
for(y=1;y<n+1;++y)
s[x][n+1]=s[x][n+1]+s[x][y];
for(y=1;y<n+1;++y)
s[m+1][y]=0;
for(x=1;x<m+1;++x)
s[m+1][y]+=s[x][y];
printf("\nMatrix s, Row Sum (Last Column) and Column Sum (Last Row) : \n");
printf("\ns:\n");
for(x=1;x<m+2;++x)
for(y=1;y<n+2;++y)
printf("\n");
/*x=n+1;
for(y=1;y<m+1;++y)
printf("\n");
maxvalue = s[1][1];
maxvalue = s[x+1][y+1];
printf("\n");
printf("\nd1:\n");
for(i=1;i<=m;++i)
for(j=1;j<=m;++j)
if(i==j)
printf("\n");
printf("\nd2\n");
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
if(i==j)
printf("\n");
//row diff:
printf("\n\nRow diff:\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i == j)
printf("%f ",r[i]);
//col diff:
printf("\n\nCol diff:\n");
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
if(i == j)
}
}
//assignment matrix:
float am[20][20]={0};
i=j=1;
ITERATION1:
am[j][i]=c[i];
r[j]=r[j]-c[i];
c[i]=0;
i++;
am[j][i]=r[j];
c[i]=c[i]-r[j];
r[j]=0;
j++;
am[j][i]=r[j];
c[i]=r[j]=0;
i++;j++;
else
goto END;
for(int z=0;z<=n;z++)
if(c[z]==0)
continue;
else
goto ITERATION1;
for(int b=0;b<=m;b++)
if(r[b]==0)
continue;
else
goto ITERATION1;
END:
printf("\n\nASSIGNMENT MATRIX:\n");
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
}
printf("\n");
}
printf("\n\nf:\n");
for(i=1; i<(m+n)+1;++i)
for(j=1;j<(m+n)+1;++j)
f[i][j]=s[i][j];
if((i<=m)&&(j>n))
f[i][j] = d1[i][j-n];
if((i>m)&&(j<=n))
f[i][j] = d2[i-m][j];
if((i>m)&&(j>n))
f[i][j] = am[i-m][j-n];
printf("\n");
}
//printf("\n\nf1:\n");
for(i=1; i<(m+n)+1;++i)
for(j=1;j<(m+n)+1;++j)
f1[i][j]=f[i][j];
//printf("\n");
int cnt = 0;
ITERATION2:
for(i=1; i<(m+n)+1;++i)
for(j=1;j<(m+n)+1;++j)
f2[i][j] = -1;
for(i=1; i<(m+n)+1;++i)
{
for(j=1;j<(m+n)+1;++j)
{
if(f1[i][j]!=0 && f2[i][j]!=0)
f2[i][j] = f1[i][j];
for(j1=j+1;j1<(m+n)+1;++j1)
f2[i][j1] = 0;
for(i1=i+1;i1<(m+n)+1;++i1)
f2[i1][j] = 0;
//printf("\n\nf2:\n");
for(i=1; i<(m+n)+1;++i)
for(j=1;j<(m+n)+1;++j)
if(f2[i][j] == -1)
f2[i][j] = 0;
//printf("\n");
//printf("\n\nf1:\n");
for(i=1; i<(m+n)+1;++i)
for(j=1;j<(m+n)+1;++j)
{
if(f2[i][j] != 0)
f1[i][j] = f1[i][j] - 1;
//printf("\n");
cnt++;
printf("\n\Gant Chart:\n");
for(i=1; i<=m;++i)
for(j=1;j<=n;++j)
if(f2[i][j] != 0)
s2[i][cnt] = j;
printf("\n");
}
int sum = 1;
for(i=1; i<(m+n)+1;++i)
{
for(j=1;j<(m+n)+1;++j)
if(sum>1)
goto ITERATION2;
else
goto END2;
END2:
for(i=1; i<=m;++i)
for(j=0;j<=cnt;++j)
if(j == 0 )
else
if(s2[i][j] !=0)
else
}
}
printf("\n");
getch();
}
VITA
Degrees: