예제 #1
0
        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();
                }
            }
        }
예제 #2
0
        // 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);
        }