You are on page 1of 9

Author : Bhalchandra Shirole

Dump Truck Problem


import java.io.*;
import java.util.*;
class event
{
String type;
int time;
int truck;
public event(String type,int time,int truck)
{
this.type=type;
this.time=time;
this.truck=truck;
}
public void display()
{
System.out.println("("+type+", "+time+", truck"+truck+")");
}
}
class fel
{
event e[]=new event[1000];
int size;
public fel()
{
size=0;
}
public void add(event a)
{
if(size<1000)
{e[size]=a;
size++;
}
else
System.out.println("FEL full");
}

public event remove()


{
int min=0;int pos=0;
for(int i=0;i<size;i++)
if(e[i]!=null)
{min=e[i].time;break;}
for(int i=0;i<size;i++)
if(e[i]!=null && e[i].time<=min)

{min=e[i].time;pos=i;}
event ret=new event(e[pos].type,e[pos].time,e[pos].truck);
e[pos]=null;
return ret;
}
public void display()
{
for(int i=0;i<1000;i++)
if(e[i]!=null)
e[i].display();
}

}
class queue
{
int q[];
int f,r;
public queue()
{
q=new int[100];
f=0;
}
public void add(int truck)
{
q[f]=truck;
f++;

}
public int remove()
{
for(int i=0;i<100;i++)
if(q[i]!=0)
{int temp=q[i];q[i]=0;return temp;}
return 0;
}
public void display()
{
for(int i=0;i<100;i++)
if(q[i]!=0)
System.out.print(" DT"+q[i]);
}

}
class state
{
static int lq,l,wq,w,clock;
}
class dump
{
public static void main(String args[])
{
System.out.println("Main started");
fel list=new fel();
queue lq=new queue() ;
queue wq=new queue() ;
initialise(list,lq,wq);
System.out.println("main ended");
}
public static void initialise(fel list,queue lq,queue wq)
{
event endevent=new event("end",100,0);
list.add(endevent);
state.lq=3;
state.wq=0;
state.l=2;
state.w=1;
state.clock=0;
lq.add(4);
lq.add(5);
lq.add(6);
list.add(new event("endload",5,3));
list.add(new event("endload",10,2));
list.add(new event("endwait",12,1));
start(list,lq,wq);
}
public static int loadtime()
{
Random rand=new Random(10);
int temp=rand.nextInt();
if(temp<3)
return 5;
if(temp<8)

return 10;
return 15;
}
public static int weightime()
{
Random rand=new Random(10);
int temp=rand.nextInt();
if(temp<7)
return 12;
return 16;
}
public static int traveltime()
{
Random rand=new Random(10);
int temp=rand.nextInt();
if(temp<4)
return 40;
if(temp<7)
return 60;
if(temp<9)
return 80;
return 100;
}
public static void start(fel list,queue lq,queue wq)
{
System.out.println("\n ------------------------------------------------- \n Clock
"+state.clock);
System.out.println("System states");
System.out.println("LQ(t) "+state.lq+" WQ(t) "+state.wq+" L(t) "+state.l+" W(t)
"+state.w);
System.out.print("loader queue ");
lq.display();
System.out.print("\n weigh queue ");
wq.display();
System.out.print("\n Fel \n");
list.display();
//System.out.println(list.size);
event emminent=list.remove();
state.clock=emminent.time;
if(emminent.type.equals("endload"))
endload(list,emminent,lq,wq);
if(emminent.type.equals("endwait"))
endwait(list,emminent,lq,wq);
if(emminent.type.equals("arrivalload"))

arrload(list,emminent,lq,wq);
if(emminent.type.equals("end"))
return;
start(list,lq,wq);
}
public static void endload(fel list,event emminent,queue lq,queue wq)
{
int next;
if(state.w<1)
{state.w++;state.l--;next=state.clock+weightime();list.add(new
event("endwait",next,emminent.truck));}
//add
if(state.w==1)
{state.wq++;state.l--;wq.add(emminent.truck);}
//add
if(state.lq!=0)
{state.l++;state.lq--;next=state.clock+loadtime();list.add(new
event("endload",next,lq.remove()));}
}
public static void endwait(fel list,event emminent,queue lq,queue wq)
{
int next;
state.w--;next=state.clock+traveltime();list.add(new
event("arrivalload",next,emminent.truck));
if(state.wq!=0)
{state.w++;state.wq--;next=state.clock+weightime();list.add(new
event("endwait",next,wq.remove()));}
}
public static void arrload(fel list,event emminent,queue lq,queue wq)
{
int next;
if(state.l<2)
{state.l++;next=state.clock+loadtime();list.add(new
event("endload",next,emminent.truck));}
//add
if(state.l==2)
{state.lq++;lq.add(emminent.truck);}
//add
}
}

OUTPUT
Main started
------------------------------------------------Clock 0
System states
LQ(t) 3 WQ(t) 0 L(t) 2 W(t) 1
loader queue DT4 DT5 DT6
weigh queue
Fel
(end, 100, truck0)
(endload, 5, truck3)
(endload, 10, truck2)
(endwait, 12, truck1)
------------------------------------------------Clock 5
System states
LQ(t) 2 WQ(t) 1 L(t) 2 W(t) 1
loader queue DT5 DT6
weigh queue DT3
Fel
(end, 100, truck0)
(endload, 10, truck2)
(endwait, 12, truck1)
(endload, 10, truck4)
------------------------------------------------Clock 10
System states
LQ(t) 1 WQ(t) 2 L(t) 2 W(t) 1
loader queue DT6
weigh queue DT3 DT4
Fel
(end, 100, truck0)
(endload, 10, truck2)
(endwait, 12, truck1)
(endload, 15, truck5)
------------------------------------------------Clock 10
System states
LQ(t) 0 WQ(t) 3 L(t) 2 W(t) 1
loader queue
weigh queue DT3 DT4 DT2
Fel
(end, 100, truck0)

(endwait, 12, truck1)


(endload, 15, truck5)
(endload, 15, truck6)
------------------------------------------------Clock 12
System states
LQ(t) 0 WQ(t) 2 L(t) 2 W(t) 1
loader queue
weigh queue DT4 DT2
Fel
(end, 100, truck0)
(endload, 15, truck5)
(endload, 15, truck6)
(arrivalload, 52, truck1)
(endwait, 24, truck3)
------------------------------------------------Clock 15
System states
LQ(t) 0 WQ(t) 3 L(t) 1 W(t) 1
loader queue
weigh queue DT4 DT2 DT6
Fel
(end, 100, truck0)
(endload, 15, truck5)
(arrivalload, 52, truck1)
(endwait, 24, truck3)
------------------------------------------------Clock 15
System states
LQ(t) 0 WQ(t) 4 L(t) 0 W(t) 1
loader queue
weigh queue DT4 DT2 DT6 DT5
Fel
(end, 100, truck0)
(arrivalload, 52, truck1)
(endwait, 24, truck3)
------------------------------------------------Clock 24
System states
LQ(t) 0 WQ(t) 3 L(t) 0 W(t) 1
loader queue
weigh queue DT2 DT6 DT5
Fel

(end, 100, truck0)


(arrivalload, 52, truck1)
(arrivalload, 64, truck3)
(endwait, 36, truck4)
------------------------------------------------Clock 36
System states
LQ(t) 0 WQ(t) 2 L(t) 0 W(t) 1
loader queue
weigh queue DT6 DT5
Fel
(end, 100, truck0)
(arrivalload, 52, truck1)
(arrivalload, 64, truck3)
(arrivalload, 76, truck4)
(endwait, 48, truck2)
------------------------------------------------Clock 48
System states
LQ(t) 0 WQ(t) 1 L(t) 0 W(t) 1
loader queue
weigh queue DT5
Fel
(end, 100, truck0)
(arrivalload, 52, truck1)
(arrivalload, 64, truck3)
(arrivalload, 76, truck4)
(arrivalload, 88, truck2)
(endwait, 60, truck6)
------------------------------------------------Clock 52
System states
LQ(t) 0 WQ(t) 1 L(t) 1 W(t) 1
loader queue
weigh queue DT5
Fel
(end, 100, truck0)
(arrivalload, 64, truck3)
(arrivalload, 76, truck4)
(arrivalload, 88, truck2)
(endwait, 60, truck6)
(endload, 57, truck1)
-------------------------------------------------

Clock 57
System states
LQ(t) 0 WQ(t) 2 L(t) 0 W(t) 1
loader queue
weigh queue DT5 DT1
Fel
(end, 100, truck0)
(arrivalload, 64, truck3)
(arrivalload, 76, truck4)
(arrivalload, 88, truck2)
(endwait, 60, truck6)
------------------------------------------------Clock 60
System states
LQ(t) 0 WQ(t) 1 L(t) 0 W(t) 1
loader queue
weigh queue DT1
Fel
(end, 100, truck0)
(arrivalload, 64, truck3)
(arrivalload, 76, truck4)
(arrivalload, 88, truck2)
(arrivalload, 100, truck6)
(endwait, 72, truck5)
------------------------------------------------Clock 64
System states
LQ(t) 0 WQ(t) 1 L(t) 1 W(t) 1
loader queue
weigh queue DT1
Fel
(end, 100, truck0)
(arrivalload, 76, truck4)
(arrivalload, 88, truck2)
(arrivalload, 100, truck6)
(endwait, 72, truck5)
(endload, 69, truck3)
------------------------------------------------Clock 69
System states
LQ(t) 0 WQ(t) 2 L(t) 0 W(t) 1
loader queue
weigh queue DT1 DT3
Fel

(end, 100, truck0)


(arrivalload, 76, truck4)
(arrivalload, 88, truck2)
(arrivalload, 100, truck6)
(endwait, 72, truck5)
------------------------------------------------Clock 72
System states
LQ(t) 0 WQ(t) 1 L(t) 0 W(t) 1
loader queue
weigh queue DT3
Fel
(end, 100, truck0)
(arrivalload, 76, truck4)
(arrivalload, 88, truck2)
(arrivalload, 100, truck6)
(arrivalload, 112, truck5)
(endwait, 84, truck1)
------------------------------------------------Clock 76
System states
LQ(t) 0 WQ(t) 1 L(t) 1 W(t) 1
loader queue
weigh queue DT3
Fel
(end, 100, truck0)
(arrivalload, 88, truck2)
(arrivalload, 100, truck6)
(arrivalload, 112, truck5)
(endwait, 84, truck1)
(endload, 81, truck4)
------------------------------------------------Clock 81
System states
LQ(t) 0 WQ(t) 2 L(t) 0 W(t) 1
loader queue
weigh queue DT3 DT4
Fel
(end, 100, truck0)
(arrivalload, 88, truck2)
(arrivalload, 100, truck6)
(arrivalload, 112, truck5)
(endwait, 84, truck1)

------------------------------------------------Clock 84
System states
LQ(t) 0 WQ(t) 1 L(t) 0 W(t) 1
loader queue
weigh queue DT4
Fel
(end, 100, truck0)
(arrivalload, 88, truck2)
(arrivalload, 100, truck6)
(arrivalload, 112, truck5)
(arrivalload, 124, truck1)
(endwait, 96, truck3)
------------------------------------------------Clock 88
System states
LQ(t) 0 WQ(t) 1 L(t) 1 W(t) 1
loader queue
weigh queue DT4
Fel
(end, 100, truck0)
(arrivalload, 100, truck6)
(arrivalload, 112, truck5)
(arrivalload, 124, truck1)
(endwait, 96, truck3)
(endload, 93, truck2)
------------------------------------------------Clock 93
System states
LQ(t) 0 WQ(t) 2 L(t) 0 W(t) 1
loader queue
weigh queue DT4 DT2
Fel
(end, 100, truck0)
(arrivalload, 100, truck6)
(arrivalload, 112, truck5)
(arrivalload, 124, truck1)
(endwait, 96, truck3)
------------------------------------------------Clock 96
System states
LQ(t) 0 WQ(t) 1 L(t) 0 W(t) 1
loader queue
weigh queue DT2

Fel
(end, 100, truck0)
(arrivalload, 100, truck6)
(arrivalload, 112, truck5)
(arrivalload, 124, truck1)
(arrivalload, 136, truck3)
(endwait, 108, truck4)
------------------------------------------------Clock 100
System states
LQ(t) 0 WQ(t) 1 L(t) 1 W(t) 1
loader queue
weigh queue DT2
Fel
(end, 100, truck0)
(arrivalload, 112, truck5)
(arrivalload, 124, truck1)
(arrivalload, 136, truck3)
(endwait, 108, truck4)
(endload, 105, truck6)
main ended
Process completed.

You might also like