From a97c9e07dbb416da2f2fdd107da3725a1e78f2a1 Mon Sep 17 00:00:00 2001 From: dansl <dansl@LAPTOP-SIKRVJU7.ern.nps.edu> Date: Tue, 25 Apr 2023 16:08:54 -0700 Subject: [PATCH] Commit HW 4 Sloan --- .../src/mv3302/PartArrivalProcess.java | 9 ++++ .../src/mv3302/TransferLineComponent.java | 47 +++++++++---------- .../mv3302/run/RunTransferLineComponent.java | 26 +++++----- 3 files changed, 44 insertions(+), 38 deletions(-) diff --git a/MV3302ClassCode/src/mv3302/PartArrivalProcess.java b/MV3302ClassCode/src/mv3302/PartArrivalProcess.java index fc00f2272f..30b3456d2d 100644 --- a/MV3302ClassCode/src/mv3302/PartArrivalProcess.java +++ b/MV3302ClassCode/src/mv3302/PartArrivalProcess.java @@ -14,6 +14,7 @@ import simkit.random.RandomVariate; */ public class PartArrivalProcess extends ArrivalProcess{ + public int numberPartsArrived; /** * Zero-argument constructor */ @@ -38,6 +39,14 @@ public class PartArrivalProcess extends ArrivalProcess{ public void doArrival() { super.doArrival(); Part part = new Part(); + numberPartsArrived +=1; waitDelay("Arrival", 0.0, part, 0); } + + /** + * @return the numberPartsArrived + */ + public int getNumberPartsArrived() { + return numberPartsArrived; + } } diff --git a/MV3302ClassCode/src/mv3302/TransferLineComponent.java b/MV3302ClassCode/src/mv3302/TransferLineComponent.java index 3522e8bef1..b46c066033 100644 --- a/MV3302ClassCode/src/mv3302/TransferLineComponent.java +++ b/MV3302ClassCode/src/mv3302/TransferLineComponent.java @@ -14,7 +14,7 @@ public class TransferLineComponent extends SimEntityBase { protected double[] timeAtStation; protected double totalDelayInQueue; protected double totalTimeInSystem; - private int numberComplete; + protected int numberComplete; /** * Constructor method for TransferLineComponent that passes in Array values @@ -74,11 +74,11 @@ public class TransferLineComponent extends SimEntityBase { * Init Event. */ public void doRun() { -// totalDelayInQueue = Double.NaN; -// totalTimeInSystem = Double.NaN; - firePropertyChange("totalDelayInQueue", getTotalDelayInQueue()); - firePropertyChange("totalDelayInSystem", getTotalTimeInSystem()); - firePropertyChange("numberAvailableMachines", getNumberAvailableMachines()); + totalDelayInQueue = Double.NaN; + totalTimeInSystem = Double.NaN; +// firePropertyChange("totalDelayInQueue", getTotalDelayInQueue()); +// firePropertyChange("totalDelayInSystem", getTotalTimeInSystem()); +// firePropertyChange("numberAvailableMachines", getNumberAvailableMachines()); waitDelay("Init", 0.0, 0); } @@ -95,20 +95,18 @@ public class TransferLineComponent extends SimEntityBase { * @param i */ public void doInit(int i) { - if (i < totalNumberMachines.length) { - this.numberAvailableMachines[i] = totalNumberMachines[i]; + this.numberAvailableMachines[i] = totalNumberMachines[i]; // fireIndexedPropertyChange(i, "numberAvailableMachines", getNumberAvailableMachines(i)); - queue.get(i).clear(); + queue.get(i).clear(); // fireIndexedPropertyChange(i, "queue", getQueue(i)); // double[] oldDelayInQueue = getDelayInQueue().clone(); - delayInQueue[i] = Double.NaN; + delayInQueue[i] = Double.NaN; // firePropertyChange("delayInQueue", oldDelayInQueue, getDelayInQueue()); // double[] oldTimeAtStation = getTimeAtStation().clone(); - timeAtStation[i] = Double.NaN; + timeAtStation[i] = Double.NaN; // firePropertyChange("timeAtStation", oldTimeAtStation, getTimeAtStation()); - if (i < totalNumberMachines.length - 1) { - waitDelay("Init", 0.0, i + 1); - } + if (i < totalNumberMachines.length - 1) { + waitDelay("Init", 0.0, i + 1); } } @@ -143,15 +141,19 @@ public class TransferLineComponent extends SimEntityBase { public void doStartProcessing(int station) { SortedSet<Part> oldQueue = queue.get(station); Part part = oldQueue.first(); + queue.get(station).remove(part); - fireIndexedPropertyChange(station, "queue", oldQueue, getQueue(station)); +//fireIndexedPropertyChange(station, "queue", oldQueue, getQueue(station)); int[] oldNumberAvailableMachines = getNumberAvailableMachines().clone(); - oldNumberAvailableMachines[station]--; + numberAvailableMachines[station]--; fireIndexedPropertyChange(station, "numberAvailableMachines", oldNumberAvailableMachines[station], getNumberAvailableMachines()[station]); - double[] oldDelayInQueue = getDelayInQueue().clone(); + double[] oldDelayInQueue = getDelayInQueue(); delayInQueue[station] = part.getElapsedTime(); - firePropertyChange("delayInQueue", oldDelayInQueue, getDelayInQueue()); - part.incrementDelayInQueue(oldDelayInQueue[station]); + + fireIndexedPropertyChange(station, "delayInQueue", oldDelayInQueue[station], delayInQueue[station]); + part.incrementDelayInQueue(delayInQueue[station]); + + waitDelay("EndProcessing", getProcessingTimeGenerator()[station].generate(), part, station); } @@ -168,8 +170,8 @@ public class TransferLineComponent extends SimEntityBase { fireIndexedPropertyChange(station, "numberAvailableMachines", oldNumberAvailableMachines[station], getNumberAvailableMachines()[station]); double[] oldTimeAtStation = getTimeAtStation().clone(); timeAtStation[station] = part.getElapsedTime(); - firePropertyChange("timeAtStation", oldTimeAtStation, getTimeAtStation()); - if (station < totalNumberMachines.length) { + fireIndexedPropertyChange(station, "timeAtStation", oldTimeAtStation[station], getTimeAtStation(station)); + if (station < totalNumberMachines.length - 1) { waitDelay("Arrival", 0.0, part, station + 1); } if (station == totalNumberMachines.length - 1) { @@ -179,7 +181,6 @@ 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 @@ -189,9 +190,7 @@ public class TransferLineComponent extends SimEntityBase { public void doPartComplete(Part part) { totalTimeInSystem = part.getAge(); totalDelayInQueue = part.getTotalDelayInQueue(); - numberComplete += 1; } - /** * @return the totalNumberMachines */ diff --git a/MV3302ClassCode/src/mv3302/run/RunTransferLineComponent.java b/MV3302ClassCode/src/mv3302/run/RunTransferLineComponent.java index 38a4e1eeb2..dbd08447ed 100644 --- a/MV3302ClassCode/src/mv3302/run/RunTransferLineComponent.java +++ b/MV3302ClassCode/src/mv3302/run/RunTransferLineComponent.java @@ -43,8 +43,7 @@ public class RunTransferLineComponent { arrivalProcess.addSimEventListener(transferLineComponent); // This was used for debugging model - SimplePropertyDumper simplePropertyDumper = new SimplePropertyDumper(true); - +// SimplePropertyDumper simplePropertyDumper = new SimplePropertyDumper(true); // This listener computes time-varying statistics for multiple Collection states MultipleCollectionSizeTimeVarying numberInQueueStat = new MultipleCollectionSizeTimeVarying("queue"); @@ -65,31 +64,30 @@ public class RunTransferLineComponent { transferLineComponent.addPropertyChangeListener("delayInQueue", delayInQueueStat); - arrivalProcess.addPropertyChangeListener(simplePropertyDumper); - transferLineComponent.addPropertyChangeListener(simplePropertyDumper); - +// arrivalProcess.addPropertyChangeListener(simplePropertyDumper); +// transferLineComponent.addPropertyChangeListener(simplePropertyDumper); // Was "true" when debugging model Schedule.setVerbose(false); // Run for 500,000 time units - double stopTime = 500000.0; + double stopTime = 500.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(); //Commented out because I couldn't get the code to run past the doArrival() method. System.out.printf("%nSimulation ended at time %,.2f%n%n", Schedule.getSimTime()); - System.out.printf("Number arrivals: %n", arrivalProcess.getNumberArrivals()); - System.out.printf("Number Completed: %n%n", transferLineComponent.getNumberComplete()); + System.out.printf("Number arrivals: %5s%n", arrivalProcess.getNumberArrivals()); + System.out.printf("Number Completed: %4s%n%n", timeAtStationStat.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"); for (int i = 0; i < totalNumberMachines.length; i++) { - double utilization = 1.0 - numberAvailableMachinesStat.getMean() / totalNumberMachines.length; - double avgNumberInQueue = numberInQueueStat.getMean(); - double avgDelayInQueue = delayInQueueStat.getMean(); + double utilization = 1.0 - numberAvailableMachinesStat.getMean(i) / transferLineComponent.getTotalNumberMachines(i); + double avgNumberInQueue = numberInQueueStat.getMean(i); + double avgDelayInQueue = delayInQueueStat.getMean(i); double avgTimeAtStation = timeAtStationStat.getMean(i); System.out.printf("%15d%15.4f%15.4f%15.4f%15.4f%n", i, utilization, avgNumberInQueue, avgDelayInQueue, avgTimeAtStation); } @@ -100,8 +98,8 @@ public class RunTransferLineComponent { System.out.printf("%15s%15s%15s%n", "station", "in Queue", "at Station"); for (int i = 0; i < totalNumberMachines.length; i++) { double avgDelayInQueue = delayInQueueStat.getMean(i); - double avgTimeInSystem = avgDelayInQueue + timeAtStationStat.getMean(i) / transferLineComponent.getNumberComplete(); - System.out.printf("%15s%15.4f%15.4f%n", i, avgDelayInQueue, avgTimeInSystem); + double avgTimeAtStation = avgDelayInQueue + timeAtStationStat.getMean() / transferLineComponent.getNumberComplete(); + 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(), -- GitLab