示例#1
0
        //meta! sender="AgentZasrtavok", id="38", type="Start"
        public void ProcessStart(MessageForm message)
        {
            var ms       = (MyMessage)message;
            var vozidlo  = ms.Vozidlo;
            var zastavka = vozidlo.Linka.Presuny[ms.Vozidlo.AktualnyPresun].ZastavkaStart;

            if (vozidlo.Typ == "A")
            {
                int a = 0;
                if (ms.Vozidlo.PocetDvery - vozidlo.PocetObsadenychDvery <= zastavka.PocetCestujucich)
                {
                    a = ms.Vozidlo.PocetDvery - vozidlo.PocetObsadenychDvery;
                }
                else
                {
                    a = zastavka.PocetCestujucich;
                }
                for (int i = 0; i < a; i++)
                {
                    if (!ms.Vozidlo.JePlny())
                    {
                        ms      = (MyMessage)message.CreateCopy();
                        ms.Code = Mc.NastupojeNiekto;
                        vozidlo.PocetObsadenychDvery++;
                        var ces = zastavka.Dequeue();
                        vozidlo.Nastup(ces);
                        Prerataj(vozidlo, ces);
                        Hold(TriangularRng.Sample(), ms);
                        // Hold(3.1, ms);
                    }
                }

                if (vozidlo.PocetObsadenychDvery == 0)
                {
                    ms.Addressee = MyAgent;
                    ms.Code      = Mc.KoniecNastupu;
                    Notice(ms);
                }
            }
            else
            {
                if (zastavka.PocetCestujucich != 0 && zastavka.Peek().DobaCakania(MySim.CurrentTime) > 360 && !vozidlo.JePlny())
                {
                    ms      = (MyMessage)message.CreateCopy();
                    ms.Code = Mc.NastupojeNiekto;
                    vozidlo.PocetObsadenychDvery++;
                    var ces = zastavka.Dequeue();
                    vozidlo.Nastup(ces);
                    Prerataj(vozidlo, ces);
                    Hold(UniformContinuousRNG.Sample(), ms);
                    //Hold(3.1, ms);
                }
                else
                {
                    ms.Addressee = MyAgent;
                    ms.Code      = Mc.KoniecNastupu;
                    Notice(ms);
                }
            }
        }
示例#2
0
        private void ProcesGen(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Code      = Mc.GenerujCestujuceho;
            ms.Addressee = MyAgent;
            ms.Generator.Kolko--;
            ms.Cestujuci = new Cestujuci()
            {
                Zastavka = ms.Generator.Nazov
            };
            Notice(ms);
            var cas = ms.Generator.ExponentialRng.Sample();

            //cas = 300;

            // if ((ms.Generator.MaxCasGen) *60 >= MySim.CurrentTime + cas)

            if ((ms.Generator.MaxCasGen) * 60.0 >= MySim.CurrentTime + cas && ms.Generator.Kolko > 0)
            {
                ms      = (MyMessage)message.CreateCopy();
                ms.Code = Mc.GenerujCestujuceho;
                Hold(cas, ms);
            }
            else
            {
                ms.Generator.GenerujeSa          = false;
                ((MySimulation)MySim).GenerujeSa = _generatory.Any(x => x.GenerujeSa);
            }
        }
示例#3
0
        //meta! sender="AgentVozidiel", id="30", type="Request"
        public void ProcessNastupenie(MessageForm message)
        {
            MyMessage ms       = (MyMessage)message.CreateCopy();
            var       vozidlo  = ms.Vozidlo;
            var       zastavka = vozidlo.Linka.Presuny[vozidlo.AktualnyPresun].ZastavkaStart;


            //Console.WriteLine("Prisiel na zastavku " + zastavka.Nazov + " "+ MySim.CurrentTime);
            if (zastavka.Nazov != "ST")
            {
                if (zastavka.PocetCestujucich == 0)
                {
                    OdchodAutobusu(ms);
                    return;
                }
                ms.Addressee = MyAgent.FindAssistant(SimId.ProcesNastupenie);
                StartContinualAssistant(ms);
            }
            else
            {
                //tuto
                ms.Addressee = MyAgent.FindAssistant(SimId.ProcesVystupenie);
                StartContinualAssistant(ms);
            }
        }
示例#4
0
        private void ProcessVystupujeNiekto(MessageForm message)
        {
            MyMessage ms = (MyMessage)message;

            var vozidlo = ms.Vozidlo;

            if (vozidlo.Typ == "A")
            {
                // var zastavka = vozidlo.Linka.Presuny[ms.Vozidlo.AktualnyPresun].ZastavkaStart;
                if (!vozidlo.JePrazdny())
                {
                    if (vozidlo.Obsadene != 0)
                    {
                        ms.Code = Mc.VystupujeNiekto;
                        var ces = vozidlo.Vystup();
                        if (MySim.CurrentTime > 6786)
                        {
                            Prerataj(vozidlo, ces);
                        }
                        //Hold(3.1, ms);
                        Hold(TriangularRng.Sample(), ms);
                        return;
                    }
                    vozidlo.PocetObsadenychDvery--;
                }
                else
                {
                    vozidlo.PocetObsadenychDvery--;
                }

                if (vozidlo.PocetObsadenychDvery == 0)
                {
                    ms.Addressee = MyAgent;
                    ms.Code      = Mc.KoniecVystupu;
                    Notice(ms);
                }
            }
            else
            {
                if (!vozidlo.JePrazdny())
                {
                    ms      = (MyMessage)message.CreateCopy();
                    ms.Code = Mc.VystupujeNiekto;
                    var ces = vozidlo.Vystup();
                    if (MySim.CurrentTime > 6786)
                    {
                        Prerataj(vozidlo, ces);
                    }
                    //Hold(3.1, ms);
                    Hold(4, ms);
                }
                else
                {
                    ms.Addressee = MyAgent;
                    ms.Code      = Mc.KoniecVystupu;
                    Notice(ms);
                }
            }
        }
示例#5
0
        //meta! userInfo="Process messages defined in code", id="0"
        public void ProcessDefault(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Code      = Mc.KoniecPresunu;
            ms.Addressee = MyAgent;
            Notice(ms);
        }
示例#6
0
        //meta! sender="AgentVozidiel", id="10", type="Request"
        public void ProcessPresun(MessageForm message)
        {
            //mam zacati presun jedneho auta
            MyMessage ms = (MyMessage)message.CreateCopy();

            ms.Addressee = MyAgent.FindAssistant(SimId.ProcesPresun);
            StartContinualAssistant(ms);
        }
示例#7
0
        private void ProcesKoniecPresunu(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Code      = Mc.Presun;
            ms.Addressee = MySim.FindAgent(SimId.AgentVozidiel);
            Response(ms);
        }
示例#8
0
        //meta! sender="AgentModelu", id="40", type="Notice"
        public void ProcessPrichodCestuVozidlo(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Addressee = MySim.FindAgent(SimId.AgentZasrtavok);
            ms.Code      = Mc.PrichodCestuZastavka;
            Notice(ms);
        }
示例#9
0
        private void OdchodAutobusu(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Addressee = MySim.FindAgent(SimId.AgentVozidiel);
            ms.Code      = Mc.Nastupenie;
            // ms.Vozidlo.Linka.Presuny[((MyMessage)message).Vozidlo.AktualnyPresun].ZastavkaStart.CakajuceVozidlo = null;
            Notice(ms);
        }
示例#10
0
        //meta! sender="AgentPresunu", id="20", type="Start"
        public void ProcessStart(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Addressee = this;
            ms.Code      = Mc.GeneujStat;
            ((MySimulation)MySim).SymCas = MySim.CurrentTime;
            Hold(1, ms);
        }
示例#11
0
        private void ProcessNastupijeNiekto(MessageForm message)
        {
            MyMessage ms = (MyMessage)message;

            var vozidlo  = ms.Vozidlo;
            var zastavka = vozidlo.Linka.Presuny[ms.Vozidlo.AktualnyPresun].ZastavkaStart;

            // Console.WriteLine(zastavka.Nazov + " Nastupi" + MySim.CurrentTime);
            if (vozidlo.Typ == "A")
            {
                if (!vozidlo.JePlny())
                {
                    if (zastavka.PocetCestujucich != 0)
                    {
                        ms.Code = Mc.NastupojeNiekto;
                        var ces = zastavka.Dequeue();
                        vozidlo.Nastup(ces);
                        Prerataj(vozidlo, ces);
                        Hold(TriangularRng.Sample(), ms);
                        //Hold(3.1, ms);
                        return;
                    }
                    vozidlo.PocetObsadenychDvery--;
                }
                else
                {
                    vozidlo.PocetObsadenychDvery--;
                }

                if (vozidlo.PocetObsadenychDvery == 0)
                {
                    ms.Addressee = MyAgent;
                    ms.Code      = Mc.KoniecNastupu;
                    Notice(ms);
                }
            }
            else
            {
                if (zastavka.PocetCestujucich != 0 && zastavka.Peek().DobaCakania(MySim.CurrentTime) > 360 && !vozidlo.JePlny())
                {
                    ms      = (MyMessage)message.CreateCopy();
                    ms.Code = Mc.NastupojeNiekto;
                    vozidlo.PocetObsadenychDvery++;
                    var ces = zastavka.Dequeue();
                    vozidlo.Nastup(ces);
                    Prerataj(vozidlo, ces);
                    Hold(UniformContinuousRNG.Sample(), ms);
                    //Hold(3.1, ms);
                }
                else
                {
                    ms.Addressee = MyAgent;
                    ms.Code      = Mc.KoniecNastupu;
                    Notice(ms);
                }
            }
        }
示例#12
0
        //meta! sender="AgentOkolia", id="8", type="Notice"
        public void ProcessNovyCestujuci(MessageForm message)
        {
            Cislo++;
            ((MySimulation)MySim).PocetVRepl++;
            var ms = (MyMessage)message.CreateCopy();

            ms.Addressee = MySim.FindAgent(SimId.AgentVozidiel);
            ms.Code      = Mc.PrichodCestuVozidlo;
            Notice(ms);
        }
示例#13
0
        private void ProcessNovyCest(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Addressee = MySim.FindAgent(SimId.AgentModelu);
            ms.Code      = Mc.NovyCestujuci;
            Notice(ms);
            //ms = (MyMessage)message.CreateCopy();
            //ms.Addressee =MyAgent.FindAssistant(SimId.PlanovacPrichodov);
        }
示例#14
0
        //meta! sender="AgentPresunu", id="10", type="Response"
        public void ProcessPresun(MessageForm message)
        {
            MyMessage ms = (MyMessage)message.CreateCopy();

            ms.Addressee = MySim.FindAgent(SimId.AgentZasrtavok);
            var vozidlo  = ms.Vozidlo;
            var zastavka = vozidlo.Linka.Presuny[ms.Vozidlo.AktualnyPresun].ZastavkaStart;

            vozidlo.Cesta = zastavka.Nazov;
            ms.Code       = Mc.Nastupenie;
            Notice(ms);
        }
示例#15
0
        //meta! userInfo="Process messages defined in code", id="0"
        public void ProcessDefault(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Code      = Mc.GeneujStat;
            ms.Addressee = this;
            ((MySimulation)MySim).SymCas = MySim.CurrentTime;
            Thread.SpinWait(((MySimulation)MySim).Spomalenie);
            PreratajStat();
            if (((MySimulation)MySim).GenerujeSa || ((MySimulation)MySim).PocetAut != 0)
            {
                Hold(1, ms);
            }
        }
示例#16
0
        //meta! sender="AgentPresunu", id="20", type="Start"
        public void ProcessStart(MessageForm message)
        {
            var ms = (MyMessage)message.CreateCopy();

            ms.Code = Mc.KoniecPresunu;
            var vozidlo = ms.Vozidlo;
            var linka   = vozidlo.Linka;
            var prestup = linka.Presuny[vozidlo.AktualnyPresun];

            vozidlo.Cesta = prestup.ZastavkaStart.Nazov + " - " +
                            prestup.ZastavkaKoniec.Nazov;
            vozidlo.Strat  = MySim.CurrentTime;
            vozidlo.Koniec = MySim.CurrentTime + prestup.CasPresunu;
            Hold(prestup.CasPresunu, ms);
            vozidlo.AktualnyPresun++;
            vozidlo.AktualnyPresun = vozidlo.AktualnyPresun % linka.Presuny.Count;
        }
示例#17
0
        //meta! sender="AgentOkolia", id="14", type="Start"
        public void ProcessStart(MessageForm message)
        {
            foreach (var gen in _generatory)
            {
                var ms = (MyMessage)message.CreateCopy();
                ms.Generator = gen;
                ms.Code      = Mc.GenerujCestujuceho;
                Hold(gen.Oneskorenie * 60 + gen.ExponentialRng.Sample(), ms);
                //Hold(gen.Oneskorenie * 60 + 300, ms);
            }



            //var gen = _generatory.Where(x => x.Nazov == "AB").FirstOrDefault();
            // var ms = (MyMessage)message.CreateCopy();
            // ms.Generator = gen;
            // ms.Code = Mc.GenerujCestujuceho;
            // Hold(0 * 60 + gen.ExponentialRng.Sample(), ms);
            //  gen = _generatory.Where(x => x.Nazov == "AC").FirstOrDefault();
            //  ms = (MyMessage)message.CreateCopy();
            // ms.Generator = gen;
            // ms.Code = Mc.GenerujCestujuceho;
            // Hold(0 * 60 + gen.ExponentialRng.Sample(), ms);
        }
示例#18
0
        //meta! sender="AgentZasrtavok", id="38", type="Start"
        public void ProcessStart(MessageForm message)
        {
            var ms      = (MyMessage)message;
            var vozidlo = ms.Vozidlo;

            // var zastavka = vozidlo.Linka.Presuny[ms.Vozidlo.AktualnyPresun].ZastavkaStart;
            if (vozidlo.Typ == "A")
            {
                int a = 0;
                if (ms.Vozidlo.PocetDvery <= vozidlo.Obsadene)
                {
                    a = ms.Vozidlo.PocetDvery;
                }
                else
                {
                    a = vozidlo.Obsadene;
                }
                for (int i = 0; i < a; i++)
                {
                    if (!ms.Vozidlo.JePrazdny())
                    {
                        ms      = (MyMessage)message.CreateCopy();
                        ms.Code = Mc.VystupujeNiekto;
                        vozidlo.PocetObsadenychDvery++;
                        var ces = vozidlo.Vystup();
                        if (MySim.CurrentTime > 6786)
                        {
                            Prerataj(vozidlo, ces);
                        }
                        Hold(TriangularRng.Sample(), ms);
                        //Hold(3.1, ms);
                    }
                }

                if (vozidlo.PocetObsadenychDvery == 0)
                {
                    ms.Addressee = MyAgent;
                    ms.Code      = Mc.KoniecVystupu;
                    Notice(ms);
                }
            }
            else
            {
                if (!vozidlo.JePrazdny())
                {
                    ms      = (MyMessage)message.CreateCopy();
                    ms.Code = Mc.VystupujeNiekto;
                    var ces = vozidlo.Vystup();
                    if (MySim.CurrentTime > 6786)
                    {
                        Prerataj(vozidlo, ces);
                    }
                    Hold(4, ms);
                    //Hold(3.1, ms);
                }
                else
                {
                    ms.Addressee = MyAgent;
                    ms.Code      = Mc.KoniecVystupu;
                    Notice(ms);
                }
            }
        }