public void Run() { SystemState.timeResetPerformance = 0; bool passed = false; while (EventList.eventList.First.Value.Time < endTime) { GeneralTime.MasterTime = EventList.eventList.First.Value.Time; Event nextEvent = Program.RemoveFirstNode(EventList.eventList); nextEvent.HandleEvent(); if (passed == false && GeneralTime.MasterTime > 60 * 3600) { passed = true; Reset.ResetPerformance(); } } }
// three dimensional arrays, one for each performance measure. public void LoopRun() { double[, ,] throuputs = new double[buffersize2.Length, buffersize3.Length, buffersize4.Length]; double[, ,] prodPerHour = new double[buffersize2.Length, buffersize3.Length, buffersize4.Length]; int repetition = 2; for (int b2 = 0; b2 < buffersize2.Length; b2++) { for (int b3 = 0; b3 < buffersize3.Length; b3++) { for (int b4 = 0; b4 < buffersize3.Length; b4++) { double averageThr = 0; double produtionPerHour = 0; double totalProdH = 0; for (int k = 0; k < repetition; k++) { if (buffersize3[b3] > buffersize4[b4]) { break; } SystemState.R = new Random(k); GeneralTime.MasterTime = 0; InitialiseMachines(b2, b3, b4); ScheduleEvents(); Run(); for (int i = 0; i < 4; i++) { SystemState.machines1[i].M1State = MachineState.State.idle; if (i < 2) { SystemState.machines2[i].M2State = MachineState.State.idle; SystemState.machines3[i].M3State = MachineState.State.idle; SystemState.machines4[i].M4State = MachineState.State.idle; } } averageThr += SystemState.averageThroughputTime; if (GeneralTime.MasterTime != 0) { produtionPerHour = SystemState.totalDVDFinished / ((GeneralTime.MasterTime - SystemState.timeResetPerformance) / 3600); } totalProdH += produtionPerHour; //Analyze(b2, b3, b4); //IdleBusyBrokenBlockedTimes(); Reset.ResetNew(); } if (averageThr != 0 && totalProdH != 0) { averageThr = (averageThr / repetition) / 3600; throuputs[b2, b3, b4] = averageThr; totalProdH = totalProdH / repetition; prodPerHour[b2, b3, b4] = totalProdH; //Console.WriteLine("average ThroughPut {0}", averageThr); //Console.WriteLine("average prod per hour {0}", totalProdH); } else { throuputs[b2, b3, b4] = 0; prodPerHour[b2, b3, b4] = 0; } } } } Read3DArray(throuputs); }