//meta! sender="AgentDopravy", id="36", type="Request"
        public void ProcessNalozAuto(MessageForm message)
        {
            Vehicle naNalozenie = ((MyMessage)message).Car;

            // zaciatok cakania
            // to do dorobit ak cakalo cez noc tak +=
            naNalozenie.ZaciatokCakania = MySim.CurrentTime;

            // TO=DO - KOLKO SA BUDE NAKLADAT NA AUTO ak bude na skladke menej materialu? Pocka na dovoz????

            // ak nakladace prave niekoho nakladaju alebo nemaju pracovnu dobu
            if ((!(!MyAgent.NakladacBIsOccupied && MyAgent.NakladacBIsWorking()) && !(!MyAgent.NakladacAIsOccupied && MyAgent.NakladacAIsWorking())) || MyAgent.MaterialNaSkladke == 0)
            {
                lock (naNalozenie)
                {
                    naNalozenie.Activity = "Waiting";
                    naNalozenie.Position = "Queue at Loader";
                    MyAgent.AutaSkladkaQueue.AddLast(naNalozenie);
                    MyAgent.MessageSkladkaQueue.AddLast((MyMessage)message);
                }
            }
            else
            {
                // ak  B ma pracovnu dobu a nenaklada nikoho
                if (!MyAgent.NakladacBIsOccupied && MyAgent.NakladacBIsWorking())
                {
                    message.Addressee = MyAgent.FindAssistant(SimId.ProcesNakladacB);

                    MyAgent.NakladacBIsOccupied = true;
                    naNalozenie.Activity        = "Being loaded";
                    naNalozenie.Position        = "Loader B";
                    BStartedWorking             = MySim.CurrentTime;

                    // koniec cakania
                    naNalozenie.CasCakaniaNaSkladke = (MySim.CurrentTime - naNalozenie.ZaciatokCakania);
                    // nalozime mnozstvo ktore je aktualne na skladke
                    naNalozenie.ToUnload = (int)LoadCarWith(naNalozenie.Volume - naNalozenie.RealVolume);
                    // pridanie casu cakania na skladke do statistik
                    MyAgent.WaitingTimePerCar.AddSample(naNalozenie.CasCakaniaNaSkladke);
                    StartContinualAssistant(message);
                }
                else if (!MyAgent.NakladacAIsOccupied && MyAgent.NakladacAIsWorking())
                {
                    message.Addressee = MyAgent.FindAssistant(SimId.ProcesNakladacA);

                    MyAgent.NakladacAIsOccupied = true;
                    naNalozenie.Activity        = "Being loaded";
                    naNalozenie.Position        = "Loader A";
                    AStartedWorking             = MySim.CurrentTime;

                    // koniec cakania
                    naNalozenie.CasCakaniaNaSkladke = (MySim.CurrentTime - naNalozenie.ZaciatokCakania);
                    // nalozime mnozstvo ktore je aktualne na skladke
                    naNalozenie.ToUnload = (int)LoadCarWith(naNalozenie.Volume - naNalozenie.RealVolume);
                    // pridanie casu cakania na skladke do statistik
                    MyAgent.WaitingTimePerCar.AddSample(naNalozenie.CasCakaniaNaSkladke);
                    StartContinualAssistant(message);
                }
            }
        }
Exemplo n.º 2
0
        public void ProcessStart(MessageForm message)
        {
            MyMessage zaciatokPracovnejDobyA = new MyMessage(MySim);

            zaciatokPracovnejDobyA.Addressee = MyAgent;
            zaciatokPracovnejDobyA.Code      = Mc.ZaciatokPracovnejDoby;
            zaciatokPracovnejDobyA.Name      = ((MyMessage)message).Name;
            Notice(zaciatokPracovnejDobyA);


            MyMessage sprava = new MyMessage(MySim);

            sprava.Name = ((MyMessage)message).Name;
            double delTime;

            if (sprava.Name == "A")
            {
                delTime = Timer.NewWorkDayStartsAt(MySim.CurrentTime, Settings.Constants.NakladacAStartsAt);
            }
            else
            {
                delTime = Timer.NewWorkDayStartsAt(MySim.CurrentTime, Settings.Constants.NakladacBStartsAt);
            }
            sprava.Code      = Mc.KoniecPracovnejDoby;
            sprava.Addressee = MyAgent.FindAssistant(SimId.PlanovacPracovnejDoby);
            Hold(delTime, sprava);
        }
Exemplo n.º 3
0
        private static void Main(string[] args)
        {
            int    n   = 5;
            double sum = 0;

            Global.MyStopWatch = new Stopwatch();

            for (int t = 0; t < n; t++)
            {
                Console.WriteLine($"Trial {t + 1}");
                Global.NoMessages = 0;

                Global.MyStopWatch.Restart();

                //var env = new EnvironmentMas(noTurns: 10000, parallel: true);  // 10 mil msg, ~1516 ms => 6462.079 msg / ms
                var env = new EnvironmentMas(noTurns: 10000, parallel: false);  // ~1351129 msg, ~394 ms => 3395.464 msg / ms

                for (int i = 0; i < Global.NoAgents; i++)
                {
                    var a = new MyAgent(i);
                    env.Add(a, $"a{i}");
                }

                env.Start();

                Global.MyStopWatch.Stop();

                Console.WriteLine($"{Global.NoMessages} msg");
                Console.WriteLine($"{Global.MyStopWatch.ElapsedMilliseconds} ms\n");

                sum += (double)Global.NoMessages / (double)Global.MyStopWatch.ElapsedMilliseconds;
            }

            Console.WriteLine($"{sum / n:F3} msg/ms");
        }
        private double microbusUnboardingTime = 4; // TODO change distribution

        public UnboardingFinishedScheduler(int id, Simulation mySim, CommonAgent myAgent) :
            base(id, mySim, myAgent)
        {
            MyAgent.UnboardingFinishedScheduler = this;
            busUnboardingTimeGenerator          = new TriangularRNG(0.6, 1.2, 4.2);
            MyAgent.AddOwnMessage(Mc.PassengerUnboarded);
        }
Exemplo n.º 5
0
        private static void Main()
        {
            Console.WriteLine("Setup gameConfig");

            var gameConfig = new GameConfig()
            {
                StartPlayer = 1,
                // line for deck selection in here
                Player1HeroClass = CardClass.WARRIOR,
                Player2HeroClass = CardClass.WARRIOR,
                FillDecks        = true,
                Shuffle          = true,
                Logging          = false
            };

            Console.WriteLine("Setup POGameHandler");
            AbstractAgent player1     = new GreedyAgent();
            AbstractAgent player2     = new MyAgent();
            var           gameHandler = new POGameHandler(gameConfig, player1, player2, repeatDraws: false);

            Console.WriteLine("Simulate Games");
            //gameHandler.PlayGame();
            gameHandler.PlayGames(nr_of_games: 100, addResultToGameStats: true, debug: false);
            GameStats gameStats = gameHandler.getGameStats();

            gameStats.printResults();

            Console.WriteLine("Test successful");
            Console.ReadLine();
        }
Exemplo n.º 6
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);
            }
        }
        //meta! sender="AgentModelu", id="88", type="Call"
        public void ProcessInicializacia(MessageForm message)
        {
            // zaciatok planovania dovozu materialu
            message.Code              = Mc.NalozAuto;
            message.Addressee         = MyAgent.FindAssistant(SimId.PlanovacDovozMaterialu);
            ((MyMessage)message).Name = "A";
            StartContinualAssistant(message);

            MyMessage sprava2 = new MyMessage(MySim);

            sprava2.Code      = Mc.NalozAuto;
            sprava2.Addressee = MyAgent.FindAssistant(SimId.PlanovacDovozMaterialu);
            sprava2.Name      = "B";
            StartContinualAssistant(sprava2);

            MyMessage sprava3 = new MyMessage(MySim);

            sprava3.Code      = Mc.NalozAuto;
            sprava3.Addressee = MyAgent.FindAssistant(SimId.PlanovacDovozMaterialu);
            sprava3.Name      = "C";
            StartContinualAssistant(sprava3);

            MyMessage sprava4 = new MyMessage(MySim);

            sprava4.Code      = Mc.ExportZacaty;
            sprava4.Addressee = MyAgent.FindAssistant(SimId.PlanovacOdvozMaterialu);
            //StartContinualAssistant(sprava4);
            Notice(sprava4);
        }
Exemplo n.º 8
0
        private static void Main(string[] args)
        {
            Console.WriteLine("Setup gameConfig");

            //todo: rename to Main
            GameConfig gameConfig = new GameConfig
            {
                StartPlayer      = 1,
                Player1HeroClass = CardClass.MAGE,
                Player2HeroClass = CardClass.MAGE,
                FillDecks        = true,
                Logging          = false
            };

            Console.WriteLine("Setup POGameHandler");
            AbstractAgent player1     = new MyAgent();
            AbstractAgent player2     = new RandomAgent();
            var           gameHandler = new POGameHandler(gameConfig, player1, player2, debug: true);

            Console.WriteLine("PlayGame");
            //gameHandler.PlayGame();
            gameHandler.PlayGames(10);
            GameStats gameStats = gameHandler.getGameStats();

            gameStats.printResults();


            Console.WriteLine("Test successful");
            Console.ReadLine();
        }
Exemplo n.º 9
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);
        }
        private void ProcessEndWorkDay(MessageForm message)
        {
            MyMessage naplanujZaciatokPrace = new MyMessage(MySim);

            naplanujZaciatokPrace.Addressee = MyAgent.FindAssistant(SimId.PlanovacPracovnejDoby2);
            naplanujZaciatokPrace.Code      = Mc.Start;
            StartContinualAssistant(naplanujZaciatokPrace);
        }
Exemplo n.º 11
0
 private void ApplyDamage(int damage, MyAgent shooter)   //Applicazione danno
 {
     currentLP -= damage;
     if (currentLP <= 0)
     {
         Die(shooter);
     }
 }
 public BoardingFinishedScheduler(int id, Simulation mySim, CommonAgent myAgent) :
     base(id, mySim, myAgent)
 {
     MyAgent.BoardingFinishedScheduler = this;
     MyAgent.AddOwnMessage(Mc.PassengerBoarded);
     busBoardingTimeGenerator      = new TriangularRNG(0.6, 1.2, 4.2);
     microbusBoardingTimeGenerator = new UniformContinuousRNG(6, 10);
 }
        //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;
                }
            }
        }
Exemplo n.º 14
0
        private void ProcessKoniecNastupu(MessageForm message)
        {
            var ms       = (MyMessage)message;
            var vozidlo  = ms.Vozidlo;
            var zastavka = vozidlo.Linka.Presuny[ms.Vozidlo.AktualnyPresun].ZastavkaStart;

            if (vozidlo.Typ == "A")
            {
                if (vozidlo.JePlny())
                {
                    vozidlo.Caka = false;
                    if (zastavka.CakajuceVozidlo == vozidlo)
                    {
                        zastavka.CakajuceVozidlo = null;
                    }
                    OdchodAutobusu(message);
                    return;
                }
                if (((MySimulation)MySim)._cakanie && zastavka.CakajuceVozidlo == null)
                {
                    var ms2 = new MyMessage(MySim);
                    ms2.Vozidlo              = ms.Vozidlo;
                    ms2.Addressee            = MyAgent.FindAssistant(SimId.ProcesCakania);
                    zastavka.CakajuceVozidlo = vozidlo;
                    vozidlo.Caka             = true;
                    //dorobit nastupovanie pocas cakania
                    StartContinualAssistant(ms2);
                }
                else
                {
                    if (zastavka.CakajuceVozidlo != vozidlo)
                    {
                        vozidlo.Caka = false;
                        OdchodAutobusu(message);
                    }
                    else
                    {
                        if (vozidlo.Odchod && vozidlo.PocetObsadenychDvery == 0)
                        {
                            vozidlo.Caka             = false;
                            zastavka.CakajuceVozidlo = null;
                            vozidlo.Odchod           = false;
                            OdchodAutobusu(message);
                        }
                        else
                        {
                            ;
                        }
                    }
                }
            }
            else
            {
                OdchodAutobusu(ms);
            }
        }
Exemplo n.º 15
0
        //meta! sender="AgentSkladky", id="36", type="Response"
        public void ProcessNalozAuto(MessageForm message)
        {
            // auto skoncilo nakladanie

            MyMessage sprava = new MyMessage(MySim);

            sprava.Volume    = ((MyMessage)message).Volume;
            sprava.Car       = ((MyMessage)message).Car;
            sprava.Addressee = MyAgent.FindAssistant(SimId.ProcessPresunNaStavbu);
            StartContinualAssistant(sprava);
        }
Exemplo n.º 16
0
        protected void NaplanujObsluhu(MessageForm message)
        {
            var pracovnik = MyAgent.DajVolnehoPracovnika();

            ++MyAgent.PocetPracujucich;
            pracovnik.Utilization.AddSample(1);
            MyAgent.VytazeniePracovnikov.AddSample((double)MyAgent.PocetPracujucich / (MyAgent.PocetPracovnikov - MyAgent.PocetObedujucich));
            pracovnik.ZaciatokObsluhovania = MySim.CurrentTime;
            MyAgent.DostupniPracovnici.Set(pracovnik.IDPracovnika, false);
            ((Sprava)message).Pracovnik = pracovnik;
        }
        //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);
        }
Exemplo n.º 18
0
        /// <summary>
        /// 代理模式
        /// </summary>
        static void TestAgent()
        {
            SchoolGirl jiaojiao = new SchoolGirl();

            jiaojiao.Name = "李娇娇";

            MyAgent daili = new MyAgent(jiaojiao);

            daili.GiveDolls();
            daili.GiveFlowers();
            daili.GiveChocolate();
        }
        //meta! sender="AgentDopravy", id="37", type="Request"
        public void ProcessVylozAuto(MessageForm message)
        {
            Vehicle naVylozenie = ((MyMessage)message).Car;

            // zaciatok cakania v rade

            // to do - podmienka aby sa cakalo iba do konca pracovnej doby Vykladaca a potom sa prirataval cas od zaciatku pracovnej doby
            naVylozenie.ZaciatokCakania = MySim.CurrentTime;

            // ak A nepracuje alebo naklada a B nepracuje alebo naklada alebo je zakazany
            if ((!(!MyAgent.VykladacBIsOccupied && !MyAgent.VykladacBIsDisabled && MyAgent.VykladacBIsWorking()) && !(!MyAgent.VykladacAIsOccupied && MyAgent.VykladacAIsWorking())) || MyAgent.MaterialNaStavbe == Constants.MaxMaterialAtBuilding)
            {
                MyAgent.AutaStavbaQueue.AddLast(naVylozenie);
                MyAgent.MessageStavbaQueue.AddLast((MyMessage)message);
                naVylozenie.Activity = "Waiting";
                naVylozenie.Position = "Queue at unloader";
            }
            else
            {
                // ak B pracuje, nie je zakazany a nenaklada
                if (!MyAgent.VykladacBIsOccupied && !MyAgent.VykladacBIsDisabled && MyAgent.VykladacBIsWorking())
                {
                    message.Addressee           = MyAgent.FindAssistant(SimId.ProcesVykladacB);
                    MyAgent.VykladacBIsOccupied = true;
                    naVylozenie.Activity        = "Being unloaded";
                    naVylozenie.Position        = "Unloader B";
                    // koniec cakania
                    naVylozenie.CasCakaniaNaStavbe = (MySim.CurrentTime - naVylozenie.ZaciatokCakania);
                    // pridanie do statistik

                    naVylozenie.ToUnload = LoadCarWith(naVylozenie.RealVolume);
                    MyAgent.WaitingTimePerCar.AddSample(naVylozenie.CasCakaniaNaStavbe);
                    StartContinualAssistant(message);
                }
                // ak A pracuje a nenaklada
                else if (!MyAgent.VykladacAIsOccupied && MyAgent.VykladacAIsWorking())
                {
                    message.Addressee           = MyAgent.FindAssistant(SimId.ProcesVykladacA);
                    MyAgent.VykladacAIsOccupied = true;
                    naVylozenie.Activity        = "Being unloaded";
                    naVylozenie.Position        = "Unloader A";
                    // koniec cakania
                    naVylozenie.CasCakaniaNaStavbe = (MySim.CurrentTime - naVylozenie.ZaciatokCakania);
                    // pridanie do statistik

                    naVylozenie.ToUnload = LoadCarWith(naVylozenie.RealVolume);
                    MyAgent.WaitingTimePerCar.AddSample(naVylozenie.CasCakaniaNaStavbe);
                    StartContinualAssistant(message);
                }
            }
        }
        public void NejakaMetoda(MyMessage message)
        {
            Vehicle naNalozenie = null;

            // ak  B ma pracovnu dobu a nenaklada nikoho
            if (!MyAgent.NakladacBIsOccupied && MyAgent.NakladacBIsWorking() && MyAgent.MaterialNaSkladke != 0)
            {
                MyMessage sprava = MyAgent.MessageSkladkaQueue.First.Value;
                MyAgent.MessageSkladkaQueue.RemoveFirst();

                naNalozenie = MyAgent.AutaSkladkaQueue.First.Value;
                MyAgent.AutaSkladkaQueue.RemoveFirst();

                sprava.Addressee = MyAgent.FindAssistant(SimId.ProcesNakladacB);

                MyAgent.NakladacBIsOccupied = true;
                BStartedWorking             = MySim.CurrentTime;
                // koniec cakania
                naNalozenie.CasCakaniaNaSkladke = (MySim.CurrentTime - naNalozenie.ZaciatokCakania);
                // nalozime mnozstvo ktore je aktualne na skladke
                naNalozenie.ToUnload = (int)LoadCarWith(naNalozenie.Volume - naNalozenie.RealVolume);
                // pridanie casu cakania na skladke do statistik

                sprava.Car = naNalozenie;
                MyAgent.WaitingTimePerCar.AddSample(naNalozenie.CasCakaniaNaSkladke);
                StartContinualAssistant(sprava);
            }
            else if (!MyAgent.NakladacAIsOccupied && MyAgent.NakladacAIsWorking())
            {
                MyMessage sprava = MyAgent.MessageSkladkaQueue.First.Value;
                MyAgent.MessageSkladkaQueue.RemoveFirst();

                naNalozenie = MyAgent.AutaSkladkaQueue.First.Value;
                MyAgent.AutaSkladkaQueue.RemoveFirst();

                sprava.Addressee            = MyAgent.FindAssistant(SimId.ProcesNakladacA);
                MyAgent.NakladacAIsOccupied = true;
                AStartedWorking             = MySim.CurrentTime;

                // koniec cakania
                naNalozenie.CasCakaniaNaSkladke = (MySim.CurrentTime - naNalozenie.ZaciatokCakania);
                // nalozime mnozstvo ktore je aktualne na skladke
                naNalozenie.ToUnload = (int)LoadCarWith(naNalozenie.Volume - naNalozenie.RealVolume);
                // pridanie casu cakania na skladke do statistik

                sprava.Car = naNalozenie;
                MyAgent.WaitingTimePerCar.AddSample(naNalozenie.CasCakaniaNaSkladke);
                StartContinualAssistant(sprava);
            }
        }
Exemplo n.º 21
0
    // Use this for initialization
    void Start()
    {
        _agent = gameObject.GetComponent <MyAgent>();

        foreach (GameObject obj in GameObject.FindGameObjectsWithTag("PlayerMainShip"))
        {
            float squareDistance = (transform.position - obj.transform.position).sqrMagnitude;
            if (squareDistance < _smallestDistance)
            {
                _smallestDistance = squareDistance;
                _target           = obj;
            }
        }
    }
Exemplo n.º 22
0
 public void ReportCommand(FriendlyShipIntel agent, TaskType taskType, MyTuple <IntelItemType, long> targetKey, TimeSpan timestamp, CommandType commandType = CommandType.Override)
 {
     if (Host != null)
     {
         Host.ReportCommand(agent, taskType, targetKey, timestamp, commandType);
     }
     if (agent.ID == Context.Reference.CubeGrid.EntityId && MyAgent != null)
     {
         MyAgent.AddTask(taskType, targetKey, CommandType.Override, 0, timestamp + CanonicalTimeDiff);
     }
     else
     {
         Context.IGC.SendBroadcastMessage(agent.CommandChannelTag, MyTuple.Create((int)taskType, MyTuple.Create((int)targetKey.Item1, targetKey.Item2), (int)commandType, 0));
     }
 }
Exemplo n.º 23
0
        /// <summary>
        /// Decks to choose from:
        ///		Decks.AggroPirateWarrior
        ///		Decks.RenoKazakusMage
        ///		Decks.MidrangeJadeShaman
        /// Rules:
        ///		- an Agent class that inherist from Abstract Agent
        ///		- supporting files of up to 1GB(please contact us in case you need to load a bigger database or something like an extremely large Neural Network)
        ///		- the agent needs to finish the whole turn with a time limit of 75 seconds.Execution times for returned moves are removed from the time being used by the agent.In case the submitted agent exceeds this limit, it will lose the game.
        ///
        /// </summary>
        /// <param name="args"></param>
        private static void Main(string[] args)
        {
            int numberOfGamesGames = 100;
            int filesToWrite       = 1;
            var Rnd              = new Random();
            var watch            = System.Diagnostics.Stopwatch.StartNew();
            int exceptioncounter = 0;
            int turnsPlayed      = 0;

            for (int k = 0; k < filesToWrite; k++)
            {
                for (int i = 0; i < numberOfGamesGames; i++)
                {
                    //Console.WriteLine("Setup gameConfig");
                    try
                    {
                        GameConfig gameConfig = new GameConfig
                        {
                            StartPlayer      = -1,
                            Player1HeroClass = CardClass.WARRIOR,
                            Player2HeroClass = CardClass.WARRIOR,
                            Player1Deck      = Decks.AggroPirateWarrior,
                            Player2Deck      = Decks.AggroPirateWarrior,
                            Logging          = false
                        };

                        AbstractAgent player1     = new MyAgent(); gameConfig.Player1Name = "Player1";
                        AbstractAgent player2     = new RandomAgentLateEnd(); gameConfig.Player2Name = "Player2";
                        var           gameHandler = new POGameHandler(gameConfig, player1, player2, debug: false);
                        gameHandler.PlayGames(5, true);

                        turnsPlayed += gameHandler.getGameStats().TurnsPlayed;
                    }
                    catch
                    {
                        exceptioncounter++;
                        Console.Write("Ex:" + exceptioncounter + " ");
                        i--;
                    }
                    if (i % 100 == 0 && i != 0)
                    {
                        Console.WriteLine("\t" + watch.Elapsed.TotalMinutes.ToString("F2") + "min \t\tCount:" + i);
                    }
                }
                Console.WriteLine("Done  Turns:" + turnsPlayed);
            }
            Console.ReadLine();
        }
Exemplo n.º 24
0
        public override void PrepareReplication()
        {
            MyMessage sprava  = new MyMessage(MySim);
            double    delTime = Timer.NewWorkDayStartsAt(MySim.CurrentTime, Settings.Constants.NakladacAStartsAt);

            sprava.Name      = "A";
            sprava.Code      = Mc.KoniecPracovnejDoby;
            sprava.Addressee = MyAgent.FindAssistant(SimId.PlanovacPracovnejDoby);
            Hold(delTime, sprava);

            MyMessage sprava2  = new MyMessage(MySim);
            double    delTime2 = Timer.NewWorkDayStartsAt(MySim.CurrentTime, Settings.Constants.NakladacBStartsAt);

            sprava2.Name      = "B";
            sprava2.Code      = Mc.KoniecPracovnejDoby;
            sprava2.Addressee = MyAgent.FindAssistant(SimId.PlanovacPracovnejDoby);
            Hold(delTime2, sprava2);
        }
Exemplo n.º 25
0
        private static void Main(string[] args)
        {
            var sw = new Stopwatch();

            sw.Start();

            var env = new EnvironmentMas();  // 10000 => 3800 ms
            //var env = new EnvironmentMas(parallel: false);  // 10000 => 600 ms, 100000 => 92 s

            var a = new MyAgent(0, -1);

            env.Add(a, "a0");  // the root agent

            env.Start();

            sw.Stop();
            Console.WriteLine($"{sw.ElapsedMilliseconds:F3} ms");
        }
Exemplo n.º 26
0
        //meta! sender="AgentVozidiel", id="42", type="Notice"
        public void ProcessPrichodCestuZastavka(MessageForm message)
        {
            var ms       = (MyMessage)message;
            var zastavka = MyAgent.ZastavkaList.FirstOrDefault(x => ms.Cestujuci.Zastavka != null && x.Nazov == ms.Cestujuci.Zastavka);

            zastavka.Enqueue(ms.Cestujuci);
            ms.Cestujuci.ZaciatokCakania = MySim.CurrentTime;
            //if (zastavka.Nazov == "AB")
            //{
            //    Console.WriteLine("AB "+ MySim.CurrentTime);
            //}
            if (zastavka.CakajuceVozidlo != null)
            {
                ms.Addressee = MyAgent.FindAssistant(SimId.ProcesNastupenie);
                ms.Vozidlo   = zastavka.CakajuceVozidlo;
                StartContinualAssistant(ms);
            }
        }
Exemplo n.º 27
0
        internal static DataTable ListenAgent(MyAgent agent)
        {
            DataTable dt = new DataTable();

            agent.built_query = agent.query;
            using (MySqlConnection conexion = new MySqlConnection(agent.chain))
            {
                conexion.Open();
                MySqlCommand comando = new MySqlCommand();
                comando.Connection     = conexion;
                comando.CommandText    = agent.query;
                comando.CommandTimeout = 0;
                MySqlDataAdapter da = new MySqlDataAdapter(comando);
                da.Fill(dt);
                conexion.Close();
            }
            return(dt);
        }
        //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);
        }
Exemplo n.º 29
0
 void OnTriggerEnter(Collider collision)
 {
     if (collision.gameObject.CompareTag("Player"))
     {
         MyAgent player = collision.gameObject.GetComponent <MyAgent>();
         if (player.GetTeam() == team)
         {
             for (int i = player.GetCarrying() - 1; i > -1; i--)
             {
                 GameObject currentTarget = player.GetCarry(i);
                 capturedTargets.Add(currentTarget);
                 int     spot     = AddToFirstSpotInBase();
                 Vector3 position = GetPosition(spot);
                 currentTarget.GetComponent <Target>().AddToBase(spot, team, position);
                 player.RemoveCarry(currentTarget);
             }
         }
     }
 }
Exemplo n.º 30
0
            public override void Setup()
            {
                for (int i = 1; i <= _noChildren; i++)
                {
                    long newId = _id * 10 + i;

                    if (newId < _maxAgents)
                    {
                        var a = new MyAgent(newId, _id);
                        //Console.WriteLine($"Creating a{newId}");
                        this.Environment.Add(a, $"a{newId}");
                        _messagesLeft++;
                    }
                }

                if (_messagesLeft == 0)
                {
                    Send($"a{_parentId}", $"{_id}");  // send id to parent
                    Stop();
                }
            }