示例#1
0
        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();
                }
            }
        }
示例#2
0
        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);
        }
示例#3
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--------");
            }
        }