public void PrintResult() { Console.WriteLine("\n-------------RESULTS-------------"); foreach (Element e in list) { e.PrintResult(); Console.WriteLine(); if (e.GetType() == typeof(MassServiceSystem)) { MassServiceSystem p = (MassServiceSystem)e; Console.WriteLine("Name Theoretical average loading Theoretical average queue"); Console.WriteLine(p.Name + " " + theoreticalLoading[e.Id - 1] + " " + theoreticalAverageQueue[e.Id - 1]); Console.WriteLine("Name Real average loading Real average queue"); Console.WriteLine(p.Name + " " + ((long)p.DeltaTR / p.FinishTime) + " " + p.SumQueue / p.FinishTime); Console.WriteLine("Name Average loading fallibility Average queue fallibility"); Console.WriteLine(p.Name + " " + Math.Abs(((long)p.DeltaTR / p.FinishTime) - theoreticalLoading[e.Id - 1]) + " " + Math.Abs((p.SumQueue / p.FinishTime) - theoreticalAverageQueue[e.Id - 1])); Console.WriteLine(); } } }
static void Task1() { Create c = new Create(2.0); MassServiceSystem mss1 = new MassServiceSystem(0.6); MassServiceSystem mss2 = new MassServiceSystem(0.3); MassServiceSystem mss3 = new MassServiceSystem(0.4); MassServiceSystem mss4 = new MassServiceSystem(0.1); Channel channel11 = new Channel(); channel11.Name = "Channel11"; mss1.Channels = new List <Channel> { channel11 }; Channel channel21 = new Channel(); channel21.Name = "Channel21"; mss2.Channels = new List <Channel> { channel21 }; Channel channel31 = new Channel(); channel31.Name = "Channel31"; mss3.Channels = new List <Channel> { channel31 }; Channel channel41 = new Channel(); channel41.Name = "Channel41"; Channel channel42 = new Channel(); channel42.Name = "Channel42"; mss4.Channels = new List <Channel> { channel41, channel42 }; c.NextElement = mss1; mss1.NextMss.AddRange(new List <MassServiceSystem>() { mss2, mss3, mss4 }); mss2.NextMss.Add(mss1); mss3.NextMss.Add(mss1); mss4.NextMss.Add(mss1); c.Name = "CREATOR"; c.Distribution = "exp"; mss1.NextDespose = true; mss1.DesposeProbability = 0.42; mss1.Name = "SMO 1"; mss1.Distribution = "exp"; mss2.SelfProbability = 0.15; mss2.Name = "SMO 2"; mss2.Distribution = "exp"; mss3.SelfProbability = 0.13; mss3.Name = "SMO 3"; mss3.Distribution = "exp"; mss4.SelfProbability = 0.3; mss4.Name = "SMO 4"; mss4.Distribution = "exp"; List <Element> list = new List <Element> { c, mss1, mss2, mss3, mss4 }; Model model = new Model(list); model.Simulate(1000.0); }
override public void OutAct() { SetTCurrForChannels(); base.OutAct(); GetChannelByTNext().OutAct(); base.TNext = GetTNext(); if (CheckFreeChannels() == true) { base.State = 0; } if (this.Queue > 0 && CheckFreeChannels() == true) { Queue--; GetFreeChannel().InAct(); if (CheckFreeChannels() == false) { base.State = 1; } base.TNext = GetTNext(); } if (NextMss.Count > 0) { int index = 0; if (Name == "SMO 1") { Random random = new Random(); double a = random.NextDouble(); if (a < NextMss[0].SelfProbability) { index = 0; } else { if (a >= NextMss[0].SelfProbability && a < NextMss[0].SelfProbability + NextMss[1].SelfProbability) { index = 1; } else { if (a >= NextMss[0].SelfProbability + NextMss[1].SelfProbability && a < NextMss[0].SelfProbability + NextMss[1].SelfProbability + NextMss[2].SelfProbability) { index = 2; } else { index = 3; } } } } if (index == 3) { //Console.WriteLine("--------Dispose--------"); } else { MassServiceSystem nextProcess = NextMss[index]; nextProcess.InAct(); } } else { // Console.WriteLine("--------Dispose--------"); } }