Esempio n. 1
0
        private void ExecuteAction(Action nextAction)
        {
            long sss = StaticData.UpdatesSoFar;

            UpdateActionsIds.Add(new UpdateActionPair(StaticData.UpdatesSoFar, nextAction));
            Actions.Add(nextAction);
            Simulator.ActionsFrequency = GenSimAgent.GetActionsFrequency(nextAction);
            Simulator.RunEngine(new ActionsGenerator(nextAction));
        }
Esempio n. 2
0
        public static List <ActionTimePair> ConvertTLEventstoActionTimePair(List <TLEvent> events)
        {
            List <ActionTimePair> res = new List <ActionTimePair>();
            int tsNow = 15 * 60 + GenSimAgent.VoidInitCount * GenSimAgent.GetActionsFrequency(new VoidAction());

            foreach (TLEvent tlEvent in events)
            {
                res.Add(new ActionTimePair(tlEvent.eType, tsNow));
                tsNow += (int)((tlEvent.TTN / (float)1000) * 60);
            }
            return(res);
        }
Esempio n. 3
0
        public static List <CATimePair> ConvertTLEventstoCATimePair(List <TLEvent> events)
        {
            List <CATimePair> res = new List <CATimePair>();
            int tsNow             = 15 * 60 + GenSimAgent.VoidInitCount * GenSimAgent.GetActionsFrequency(new VoidAction());

            foreach (TLEvent tlEvent in events)
            {
                if (tlEvent.eType == EventType.RopeCut || tlEvent.eType == EventType.RocketPress ||
                    tlEvent.eType == EventType.BumperInteraction || tlEvent.eType == EventType.BlowerPress ||
                    tlEvent.eType == EventType.BubblePinch)
                {
                    res.Add(new ActionTimePair(tlEvent.eType, tsNow));
                }
                else
                {
                    res.Add(new CompTimePair(GetCompType(tlEvent.eType), tsNow)
                    {
                        Args = tlEvent.Args
                    });
                }
                tsNow += (int)((tlEvent.TTN / (float)1000) * 60);
            }
            return(res);
        }
        public void ScatterComps()
        {
            bool succeeded = false;
            int  attempts  = 0;

            if (_atPairs == null)
            {
                GenSimAgent agent = new GenSimAgent(_catPairs, _isDirRandomized, _isRopesRandomized);
                agent.IsTesting = _isTestingOn;
                agent.Shotter   = _isTestingOn ? new EngineShotsManager() : null;
                bool succeed = agent.ExecuteScatter();
                WAgent = agent;
            }
            else
            {
                while (attempts < MAXTRY && !succeeded)
                {
                    //for (int i = 0; i < 3; i++)
                    //{
                    //Thread t = new Thread(new ThreadStart(() =>
                    //{
                    GenSimAgent agent = _atPairs != null
                                            ? new GenSimAgent(_atPairs)
                                            : new GenSimAgent(_catPairs, _isDirRandomized, _isRopesRandomized);
                    agent.IsTesting = _isTestingOn;
                    agent.Shotter   = _isTestingOn ? new EngineShotsManager() : null;

                    agent.MAXTRY = MAXTRY;
                    if (agent.ExecuteScatter())
                    {
                        WAgent = agent;
                        WAgent.BestCTPPairs = WAgent.CATPairs;
                        succeeded           = true;
                    }
                    else
                    {
                        var fit = GenSimManager.GetFitness(agent);
                        if (fit < bestFitSoFar)
                        {
                            WAgent       = agent;
                            bestFitSoFar = fit;
                        }
                    }
                    //}
                    //));
                    //_cThreads.Add(t);
                    //t.Start();
                    //}
                    //while (true)
                    //{
                    //    foreach (Thread thread in _cThreads)
                    //    {
                    //        if (!thread.IsAlive)
                    //        {
                    //            _cThreads.Remove(thread);
                    //        }
                    //    }
                    //    if (_cThreads.Count != 0)
                    //    {
                    //        // wait
                    //        Thread.Sleep(100);
                    //    }
                    //    else
                    //    {
                    //        break;
                    //    }
                    //}
                    //attempts += 3;
                    attempts++;
                }
            }
        }