override public void PrepareReplication() { base.PrepareReplication(); // Setup component for the next replication //SelectedCars = FormAgentSimulation.SelectedCars; MyMessage sprava = new MyMessage(MySim, SelectedCars); /* Hard setup of cars * int[] selectedCars = new int[5]; * selectedCars[0] = 1; * selectedCars[1] = 1; * selectedCars[2] = 1; * selectedCars[3] = 1; * selectedCars[4] = 1; */ //int[] selectedCars = new int[5] { 0, 20, 0, 0, 0 }; // MyMessage sprava = new MyMessage(MySim, selectedCars); sprava.Code = Mc.Inicializacia; sprava.Addressee = MySim.FindAgent(SimId.AgentModelu); MyManager.Call(sprava); }
private void ProcessPrichodVoz(MessageForm message) { MyMessage ms = (MyMessage)message; ms.Addressee = MySim.FindAgent(SimId.AgentPresunu); ms.Code = Mc.Presun; Request(ms); }
//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); }
private void ProcesKoniecPresunu(MessageForm message) { var ms = (MyMessage)message.CreateCopy(); ms.Code = Mc.Presun; ms.Addressee = MySim.FindAgent(SimId.AgentVozidiel); Response(ms); }
//meta! sender="AgentOkolia", id="116", type="Notice" public void ProcessOdvozMaterialu(MessageForm message) { MyMessage spravaDoprava = new MyMessage(MySim); spravaDoprava.Volume = ((MyMessage)message).Volume; spravaDoprava.Code = Mc.OdvozMaterialu; spravaDoprava.Addressee = MySim.FindAgent(SimId.AgentDopravy); Notice(spravaDoprava); }
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); }
//meta! sender="ProcesVykladacB", id="72", type="Finish" public void ProcessFinishProcesVykladacB(MessageForm message) { Vehicle auto = ((MyMessage)message).Car; if (auto.RealVolume == 0) { MyAgent.VykladacBIsOccupied = false; message.Code = Mc.VylozAuto; message.Addressee = MySim.FindAgent(SimId.AgentDopravy); Response(message); if (!MyAgent.AutaStavbaQueue.IsEmpty() && MyAgent.VykladacBIsWorking() && MyAgent.MaterialNaStavbe < Constants.MaxMaterialAtBuilding) { Vehicle naVylozenie; lock (Constants.Queue2Lock) { naVylozenie = MyAgent.AutaStavbaQueue.First.Value; MyAgent.AutaStavbaQueue.RemoveFirst(); } MyMessage msg = MyAgent.MessageStavbaQueue.First.Value; MyAgent.MessageStavbaQueue.RemoveFirst(); msg.Addressee = MyAgent.FindAssistant(SimId.ProcesVykladacB); msg.Code = Mc.VylozAuto; //msg.Addressee = MySim.FindAgent(SimId.AgentStavby); //Request(msg); // ukoncenie cakania naVylozenie.CasCakaniaNaStavbe = (MySim.CurrentTime - naVylozenie.ZaciatokCakania); // pridanie casu cakania na skladke do statistik MyAgent.WaitingTimePerCar.AddSample(naVylozenie.CasCakaniaNaStavbe); naVylozenie.ToUnload = LoadCarWith(naVylozenie.RealVolume); msg.Car = naVylozenie; MyAgent.VykladacBIsOccupied = true; StartContinualAssistant(msg); } } else { // je volna kapacita? if (MyAgent.VykladacBIsWorking() && MyAgent.MaterialNaStavbe < Constants.MaxMaterialAtBuilding) { ((MyMessage)message).Car.ToUnload = LoadCarWith(auto.RealVolume); message.Code = Mc.VylozAuto; message.Addressee = MyAgent.FindAssistant(SimId.ProcesVykladacB); MyAgent.VykladacBIsOccupied = true; StartContinualAssistant(message); } else { MyAgent.AutaStavbaQueue.AddFirst(((MyMessage)message).Car); MyAgent.MessageStavbaQueue.AddFirst((MyMessage)message); MyAgent.VykladacBIsOccupied = false; } } }
//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); }
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); }
//meta! sender="ProcessPresunNaSkladku", id="106", type="Finish" public void ProcessFinishProcessPresunNaSkladku(MessageForm message) { foreach (Vehicle car in ((MyMessage)message).cars) { MyMessage sprava = new MyMessage(MySim); sprava.Code = Mc.NalozAuto; sprava.Car = car; sprava.Addressee = MySim.FindAgent(SimId.AgentSkladky); Request(sprava); } }
//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); }
//meta! sender="PlanovacDovozMaterialu", id="55", type="Finish" public void ProcessFinishPlanovacDovozMaterialu(MessageForm message) { message.Code = Mc.DovozMaterialu; message.Addressee = MySim.FindAgent(SimId.AgentModelu); Notice(message); MyMessage sprava = new MyMessage(MySim); sprava.Name = ((MyMessage)message).Name; sprava.Addressee = MyAgent.FindAssistant(SimId.PlanovacDovozMaterialu); StartContinualAssistant(sprava); }
private void ProcessInicializacia(MessageForm message) { // vytvoria sa auta pre konkretny variant simulacie a poslu sa spravy na nakladanie auta agentovi skladky message.Addressee = MySim.FindAgent(SimId.AgentDopravy); Call(message); // v AgentOkolia sa nainicializuju generatory pre dovozcov materialu MyMessage sprava = new MyMessage(MySim); sprava.Code = Mc.Inicializacia; sprava.Addressee = MySim.FindAgent(SimId.AgentOkolia); Call(sprava); }
private void PreratajStat() { var ag = (AgentPresunu)MySim.FindAgent(SimId.AgentPresunu); foreach (var vozidlo in ag.ListVozideil) { vozidlo.Prerataj(MySim.CurrentTime); } var a = ((MySimulation)MySim).CasZapasu.TotalSeconds - 6786 + MySim.CurrentTime; ((MySimulation)MySim).AktualCas = TimeSpan.FromSeconds(a); }
//meta! sender="AgentModelu", id="91", type="Call" public void ProcessInicializacia(MessageForm message) { MyMessage sprava = (MyMessage)message; InicializujAuta(sprava.SelectedCars); foreach (Vehicle i in MyAgent.EnabledCars) { sprava = new MyMessage(MySim, i); sprava.Addressee = MySim.FindAgent(SimId.AgentSkladky); sprava.Code = Mc.NalozAuto; Request(sprava); } //ProcessNaplanujZaciatok(); }
//meta! sender="ProcessPresunNaStavbu", id="108", type="Finish" public void ProcessFinishProcessPresunNaStavbu(MessageForm message) { foreach (Vehicle car in ((MyMessage)message).cars) { MyMessage sprava = new MyMessage(MySim); sprava.Code = Mc.VylozAuto; sprava.Car = car; sprava.Addressee = MySim.FindAgent(SimId.AgentStavby); Request(sprava); /*car.RealVolume = 0; * message.Addressee = MyAgent.FindAssistant(SimId.ProcessPresunNaPrejazd); * sprava.Car = car; * StartContinualAssistant(sprava);*/ } }
//meta! sender="PlanovacOdvozMaterialu", id="125", type="Finish" public void ProcessFinishPlanovacOdvozMaterialu(MessageForm message) { // notice agentovi modelu -> dopravy -> Stavby MyMessage spravaDoprava = new MyMessage(MySim); spravaDoprava.Volume = ((MyMessage)message).Volume; spravaDoprava.Code = Mc.OdvozMaterialu; spravaDoprava.Addressee = MySim.FindAgent(SimId.AgentModelu); Notice(spravaDoprava); // naplanovat dalsi proces - ak je na stavbe dostatok materialu, TO-DO MyMessage novyOdvoz = new MyMessage(MySim); novyOdvoz.Code = Mc.OdvozMaterialu; novyOdvoz.Addressee = MyAgent.FindAssistant(SimId.PlanovacOdvozMaterialu); StartContinualAssistant(novyOdvoz); }
//meta! userInfo="Removed from model" public void ProcessNastupenie(MessageForm message) { MyMessage ms = (MyMessage)message; if (ms.Vozidlo.AktualnyPresun != ms.Vozidlo.Linka.Presuny.Count - 1) { ms.Addressee = MySim.FindAgent(SimId.AgentPresunu); ms.Code = Mc.Presun; Request(ms); } else { if (ms.Vozidlo.Linka.Presuny.Any(x => x.ZastavkaStart.PocetCestujucich != 0 || ((MySimulation)MySim).GenerujeSa)) { ms.Addressee = MySim.FindAgent(SimId.AgentPresunu); ms.Code = Mc.Presun; Request(ms); } else { ((MySimulation)MySim).PocetAut--; } } }
private void ProcessDovozMaterialu(MessageForm message) { message.Addressee = MySim.FindAgent(SimId.AgentSkladky); Notice(message); }
//meta! sender="AgentOkolia", id="35", type="Notice" public void ProcessDovozMaterialu(MessageForm message) { message.Addressee = MySim.FindAgent(SimId.AgentDopravy); Notice(message); }
//meta! sender="ProcesNakladacB", id="70", type="Finish" public void ProcessFinishProcesNakladacB(MessageForm message) { if (((MyMessage)message).Car.RealVolume != ((MyMessage)message).Car.Volume && MyAgent.MaterialNaSkladke == 0 && MyAgent.fullLoad) { MyAgent.AutaSkladkaQueue.AddFirst(((MyMessage)message).Car); MyAgent.MessageSkladkaQueue.AddFirst((MyMessage)message); MyAgent.NakladacBIsOccupied = false; return; } if (((MyMessage)message).Car.RealVolume == ((MyMessage)message).Car.Volume || MyAgent.MaterialNaSkladke == 0 || !MyAgent.NakladacBIsWorking()) { MyAgent.NakladacBIsOccupied = false; message.Addressee = MySim.FindAgent(SimId.AgentDopravy); message.Code = Mc.NalozAuto; Response(message); Vehicle naNalozenie; if (!MyAgent.AutaSkladkaQueue.IsEmpty() && MyAgent.NakladacBIsWorking() && MyAgent.MaterialNaSkladke != 0) { lock (Constants.QueueLock) { naNalozenie = MyAgent.AutaSkladkaQueue.First.Value; MyAgent.AutaSkladkaQueue.RemoveFirst(); } MyMessage zFrontu = MyAgent.MessageSkladkaQueue.First.Value; MyAgent.MessageSkladkaQueue.RemoveFirst(); zFrontu.Addressee = MyAgent.FindAssistant(SimId.ProcesNakladacB); zFrontu.Code = Mc.NalozAuto; // nalozime mnozstvo ktore je aktualne na skladke naNalozenie.ToUnload = (int)LoadCarWith(naNalozenie.Volume - naNalozenie.RealVolume); // ukoncenie cakania naNalozenie.CasCakaniaNaSkladke = (MySim.CurrentTime - naNalozenie.ZaciatokCakania); // pridanie casu cakania na skladke do statistik MyAgent.WaitingTimePerCar.AddSample(naNalozenie.CasCakaniaNaSkladke); zFrontu.Car = naNalozenie; MyAgent.NakladacBIsOccupied = true; BStartedWorking = MySim.CurrentTime; StartContinualAssistant(zFrontu); } } else { ((MyMessage)message).Car.ToUnload = LoadCarWith(((MyMessage)message).Car.Volume - ((MyMessage)message).Car.RealVolume); MyAgent.NakladacBIsOccupied = true; BStartedWorking = MySim.CurrentTime; message.Addressee = MyAgent.FindAssistant(SimId.ProcesNakladacB); message.Code = Mc.NalozAuto; StartContinualAssistant(message); } }
//meta! sender="ProcesNakladacA", id="64", type="Finish" public void ProcessFinishProcesNakladacA(MessageForm message) { //ak je spusteny mod fullLoad if (((MyMessage)message).Car.RealVolume != ((MyMessage)message).Car.Volume && MyAgent.MaterialNaSkladke == 0 && MyAgent.fullLoad) { MyAgent.AutaSkladkaQueue.AddFirst(((MyMessage)message).Car); MyAgent.MessageSkladkaQueue.AddFirst((MyMessage)message); MyAgent.NakladacAIsOccupied = false; return; } //ak je plny, na skladne nic nie je alebo je vypnuty, tak auto posle dalej if (((MyMessage)message).Car.RealVolume == ((MyMessage)message).Car.Volume || MyAgent.MaterialNaSkladke == 0 || !MyAgent.NakladacAIsWorking()) { MyAgent.NakladacAIsOccupied = false; message.Addressee = MySim.FindAgent(SimId.AgentDopravy); message.Code = Mc.NalozAuto; Response(message); // ak v rade niekto dalsi caka, zacne sa znova nakladanie Vehicle naNalozenie; if (!MyAgent.AutaSkladkaQueue.IsEmpty() && MyAgent.NakladacAIsWorking() && MyAgent.MaterialNaSkladke != 0) { lock (Constants.QueueLock) { naNalozenie = MyAgent.AutaSkladkaQueue.First.Value; MyAgent.AutaSkladkaQueue.RemoveFirst(); } MyMessage zFrontu = MyAgent.MessageSkladkaQueue.First.Value; MyAgent.MessageSkladkaQueue.RemoveFirst(); zFrontu.Addressee = MyAgent.FindAssistant(SimId.ProcesNakladacA); zFrontu.Code = Mc.NalozAuto; // nalozime mnozstvo ktore je aktualne na skladke naNalozenie.ToUnload = (int)LoadCarWith(naNalozenie.Volume - naNalozenie.RealVolume); // ukoncenie cakania naNalozenie.CasCakaniaNaSkladke = (MySim.CurrentTime - naNalozenie.ZaciatokCakania); // pridanie casu cakania na skladke do statistik MyAgent.WaitingTimePerCar.AddSample(naNalozenie.CasCakaniaNaSkladke); zFrontu.Car = naNalozenie; MyAgent.NakladacAIsOccupied = true; AStartedWorking = MySim.CurrentTime; StartContinualAssistant(zFrontu); } } else { //auto odoslane naspat na doplnenie ((MyMessage)message).Car.ToUnload = LoadCarWith(((MyMessage)message).Car.Volume - ((MyMessage)message).Car.RealVolume); MyAgent.NakladacAIsOccupied = true; AStartedWorking = MySim.CurrentTime; message.Addressee = MyAgent.FindAssistant(SimId.ProcesNakladacA); message.Code = Mc.NalozAuto; StartContinualAssistant(message); } }