Program to implement Cafeteria problem in java


import java.io.*;
import java.util.*;
class cafe
{
public static void main(String args[])throws IOException
{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader bin=new BufferedReader(isr);
int i,j,k=0,kk,run,counter;
int n=6,m= 5,s=6;
double se[]=new double[10];
int seed=12345;
double r,iat=0,st=0,nat,wt=0,cwt;
double p[]={0.0,0.05,0.4,0.65,0.8,0.9,0.97,1.0};
double at[]={0,0.5,1,1.5,2,2.5,3};
double f[]={0,0.05,0.3,0.65,0.85,1.0};
double t[]={1,2,3,4,5};
Random randy = new Random(12345);

System.out.println("Enter the value of run:");
run=Integer.parseInt(bin.readLine());
for(j=0;j<=s;++j)
{

randy.nextInt(12345);
counter=0;
nat=0;
cwt=0;
for(i=1;i<=j;++i)
{
se[i]=0;
}
cwt=0;
counter=0;
for(counter=1;counter<=run;++counter)
{
r=randy.nextDouble()/32768.0;
for(i=0;i<=n;++i)
{
if(r>p[i] && r<=p[i+1])
iat=at[i];
}
r=randy.nextDouble()/32768.0;
for(i=0;i<=m;++i)
{
if(r>f[i]  && r<=f[i+1])
st=t[i];
}
nat=nat+iat;
double  min=99.9;
for(i=1;i<=j;++i)
{
if(se[i]<=min)
{
min=se[i];
k=i;
}
}
if(nat<=min )
{
se[k]=min+st;
wt=(float)min-nat;
}
else
se[k]=nat+st;
cwt=(float)cwt+wt;
}
System.out.println("server"+" "+" Total arrival" +" " +  "Average waiting time  ");
System.out.println(j+"     "+counter+"   "+(cwt/run)+"    ");
if((cwt/run)<=2)
break;
}
}
}
/*  OUTPUT
C:\java progs>javac cafe.java

C:\java progs>java cafe
Enter the value of run:
30
server  Total arrival Average waiting time
0     31   99.8999870300293
server  Total arrival Average waiting time
1     31   14.5
server  Total arrival Average waiting time
2     31   7.0
server  Total arrival Average waiting time
3     31   4.5
server  Total arrival Average waiting time
4     31   3.2666666666666666
server  Total arrival Average waiting time
5     31   2.5
server  Total arrival Average waiting time
6     31   2.0

C:\java progs>
*/