SRT nearly working (Need to fix waiting)

This commit is contained in:
Zach S-B 2021-08-27 20:19:05 +10:00
parent 0805a79ceb
commit b0b108aed6
2 changed files with 23 additions and 22 deletions

View File

@ -13,6 +13,9 @@ public class Process {
private int remainingTime; private int remainingTime;
public int hold = -1;
public int unhold = -1;
//Constructors //Constructors
public Process(){ public Process(){

View File

@ -64,53 +64,51 @@ public class SRT {
System.out.println("SRT:"); System.out.println("SRT:");
int processesFinished = 0; int processesFinished = 0;
boolean startNew = true; boolean startNew = true;
int shortestProcess = -1;
int lastRunProcess = -1;
//timeStep++; //timeStep++;
do do
{ {
if(startNew)
{
timeStep = timeStep+disp;
startNew = false;
}
checkForArrivals(); checkForArrivals();
shortestProcess = findShortestProcess();
if(waitingQueue.size()>0) if(waitingQueue.size()>0)
{ {
if(waitingQueue.getFirst().isDone()) if(lastRunProcess!=shortestProcess)
{ {
waitingQueue.removeFirst(); System.out.println("T"+timeStep+": "+waitingQueue.get(shortestProcess).getId());
timeStep = timeStep+disp;
}
runProcessTick(waitingQueue.get(shortestProcess));
if(waitingQueue.get(shortestProcess).isDone())
{
waitingQueue.remove(shortestProcess);
processesFinished++; processesFinished++;
startNew = true;
}
else
{
runShortestProcess();
} }
lastRunProcess = shortestProcess;
} }
}while(processesFinished!=processListFromFile.size()); }while(processesFinished!=processListFromFile.size());
//...
printResults();
} }
private void runShortestProcess() private int findShortestProcess()
{ {
int pos = 0; int listPos = 0;
int remaining = waitingQueue.get(0).getRemainingTime(); int remaining = waitingQueue.get(0).getRemainingTime();
for(int i = 1; i<waitingQueue.size(); i++) for(int i = 1; i<waitingQueue.size(); i++)
{ {
if(waitingQueue.get(i).getRemainingTime()<remaining) if(waitingQueue.get(i).getRemainingTime()<remaining)
{ {
pos = i; listPos = i;
remaining = waitingQueue.get(i).getRemainingTime(); remaining = waitingQueue.get(i).getRemainingTime();
} }
} }
runProcessTick(waitingQueue.get(pos)); return listPos;
} }
private void runProcessTick(Process input) private void runProcessTick(Process input)
@ -133,7 +131,7 @@ public class SRT {
{ {
for (int i = 0; i < processListFromFile.size(); i++) for (int i = 0; i < processListFromFile.size(); i++)
{ {
System.out.println("T"+processListFromFile.get(i).getStartTime()+": "+processListFromFile.get(i).getId()); //System.out.println("T"+processListFromFile.get(i).getStartTime()+": "+processListFromFile.get(i).getId());
} }
System.out.println("\nProcess \tTurnaround Time \tWaiting Time"); System.out.println("\nProcess \tTurnaround Time \tWaiting Time");