Skip to content
Snippets Groups Projects
Commit 53f96992 authored by dansl's avatar dansl
Browse files

Commit HW 4 Sloan - Complete

parent a97c9e07
No related branches found
No related tags found
No related merge requests found
......@@ -153,7 +153,6 @@ public class TransferLineComponent extends SimEntityBase {
fireIndexedPropertyChange(station, "delayInQueue", oldDelayInQueue[station], delayInQueue[station]);
part.incrementDelayInQueue(delayInQueue[station]);
waitDelay("EndProcessing", getProcessingTimeGenerator()[station].generate(), part, station);
}
......@@ -166,7 +165,7 @@ public class TransferLineComponent extends SimEntityBase {
*/
public void doEndProcessing(Part part, int station) {
int[] oldNumberAvailableMachines = getNumberAvailableMachines().clone();
getNumberAvailableMachines()[station]++;
numberAvailableMachines[station]++;
fireIndexedPropertyChange(station, "numberAvailableMachines", oldNumberAvailableMachines[station], getNumberAvailableMachines()[station]);
double[] oldTimeAtStation = getTimeAtStation().clone();
timeAtStation[station] = part.getElapsedTime();
......@@ -181,6 +180,7 @@ public class TransferLineComponent extends SimEntityBase {
waitDelay("StartProcessing", 0.0, station);
}
}
/**
* doPartComplete brings in argument part and assigns the value of
* totalTimeInSystem to the parts getAge() value. It also assigns the
......@@ -188,9 +188,14 @@ public class TransferLineComponent extends SimEntityBase {
* number of completed parts by one.
*/
public void doPartComplete(Part part) {
double oldTotalTimeInSystem = totalTimeInSystem;
totalTimeInSystem = part.getAge();
firePropertyChange("totalTimeInSystem", oldTotalTimeInSystem, getTotalTimeInSystem());
double oldTotalDelayInQueue = totalDelayInQueue;
totalDelayInQueue = part.getTotalDelayInQueue();
firePropertyChange("totalDelayInQueue", oldTotalDelayInQueue, getTotalDelayInQueue());
}
/**
* @return the totalNumberMachines
*/
......
......@@ -11,6 +11,7 @@ import simkit.random.RandomVariate;
import simkit.random.RandomVariateFactory;
import simkit.stat.MultipleCollectionSizeTimeVarying;
import simkit.stat.MultipleSimpleStatsTally;
import simkit.stat.SimpleStatsTally;
import simkit.util.SimplePropertyDumper;
/**
......@@ -49,8 +50,8 @@ public class RunTransferLineComponent {
= new MultipleCollectionSizeTimeVarying("queue");
transferLineComponent.addPropertyChangeListener("queue", numberInQueueStat);
MultipleCollectionSizeTimeVarying numberAvailableMachinesStat
= new MultipleCollectionSizeTimeVarying("numberAvailableMachines");
MultipleSimpleStatsTally numberAvailableMachinesStat
= new MultipleSimpleStatsTally("numberAvailableMachines");
transferLineComponent.addPropertyChangeListener("numberAvailableMachines", numberAvailableMachinesStat);
// Tally statistics are computed in the same way by "listening"
......@@ -64,26 +65,35 @@ public class RunTransferLineComponent {
transferLineComponent.addPropertyChangeListener("delayInQueue",
delayInQueueStat);
SimpleStatsTally totalTimeInSystemStat = new SimpleStatsTally("totalTimeInSystem");
transferLineComponent.addPropertyChangeListener(totalTimeInSystemStat);
SimpleStatsTally totalDelayInQueueStat = new SimpleStatsTally("totalDelayInQueue");
transferLineComponent.addPropertyChangeListener(totalDelayInQueueStat);
// arrivalProcess.addPropertyChangeListener(simplePropertyDumper);
// transferLineComponent.addPropertyChangeListener(simplePropertyDumper);
// Was "true" when debugging model
Schedule.setVerbose(false);
// Run for 500,000 time units
double stopTime = 500.0;
double stopTime = 500000.0;
Schedule.stopAtTime(stopTime);
// Initialized and Run
Schedule.reset();
//Start Running of Simulation
Schedule.startSimulation(); //Commented out because I couldn't get the code to run past the doArrival() method.
Schedule.startSimulation();
System.out.printf("%nSimulation ended at time %,.2f%n%n", Schedule.getSimTime());
System.out.printf("Number arrivals: %5s%n", arrivalProcess.getNumberArrivals());
System.out.printf("Number Completed: %4s%n%n", timeAtStationStat.getCount());
System.out.printf("Number Completed: %4s%n%n", totalTimeInSystemStat.getCount());
System.out.printf("%15s%15s%15s%15s%15s%n", "", "Avg", "Avg #", "Avg Delay", "Avg Time");
System.out.printf("%15s%15s%15s%15s%15s%n", "station", "util", "in Queue", "in Queue", "at Station");
double avgNumberInSystem = numberInQueueStat.getMean() + 11
- numberAvailableMachinesStat.getMean();
double arrivalRate = arrivalProcess.getNumberArrivals() / Schedule.getSimTime();
for (int i = 0; i < totalNumberMachines.length; i++) {
double utilization = 1.0 - numberAvailableMachinesStat.getMean(i) / transferLineComponent.getTotalNumberMachines(i);
double avgNumberInQueue = numberInQueueStat.getMean(i);
......@@ -97,14 +107,16 @@ public class RunTransferLineComponent {
System.out.printf("%15s%15s%15s%n", "", "Avg Delay", "Avg Time");
System.out.printf("%15s%15s%15s%n", "station", "in Queue", "at Station");
for (int i = 0; i < totalNumberMachines.length; i++) {
double avgNumberInQueue = numberInQueueStat.getMean(i);
double avgDelayInQueue = delayInQueueStat.getMean(i);
double avgTimeAtStation = avgDelayInQueue + timeAtStationStat.getMean() / transferLineComponent.getNumberComplete();
double avgTimeAtStation = avgNumberInQueue / arrivalRate;
System.out.printf("%15s%15.4f%15.4f%n", i, avgDelayInQueue, avgTimeAtStation);
}
System.out.println();
System.out.printf("Avg Time in System: %.4f (Using Little: %.4f)%n", timeAtStationStat.getMean() + delayInQueueStat.getMean(),
timeAtStationStat.getMean() + delayInQueueStat.getMean() - transferLineComponent.getTotalTimeInSystem());
System.out.printf("Avg total delay in queue: %.4f (Using Little: %.4f)%n", delayInQueueStat.getMean(),
delayInQueueStat.getMean() - transferLineComponent.getTotalTimeInSystem() * (1.0 - numberAvailableMachinesStat.getMean() / totalNumberMachines.length));
System.out.printf("Avg Time in System: %.4f (Using Little: %.4f)%n", totalTimeInSystemStat.getMean() + totalDelayInQueueStat.getMean(),
avgNumberInSystem / arrivalRate);
System.out.printf("Avg total delay in queue: %.4f (Using Little: %.4f)%n", totalDelayInQueueStat.getMean(),
totalDelayInQueueStat.getMean() - transferLineComponent.getTotalTimeInSystem() * ((1.0 - numberAvailableMachinesStat.getMean()) / totalNumberMachines.length));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment