示例#1
0
        public void TestStintLengthOptimisation()
        {
            int   raceLaps    = 58;
            var   parameters  = new[] { 320F, -0.8F, 0.1F, 0.3F, 200F, 2.5F, 0.02F, 60F };
            float pitStopLoss = 21;

            PaceParameterCollection paceParameters = new PaceParameterCollection(parameters, pitStopLoss);
            Strategy strategy = new Strategy();

            strategy.PaceParameters = paceParameters;

            int primeStints          = Convert.ToInt32(TestContext.DataRow["Prime Stints"]);
            int optionStints         = Convert.ToInt32(TestContext.DataRow["Option Stints"]);
            int expectedPrimeLength  = Convert.ToInt32(TestContext.DataRow["Act Prime"]);
            int expectedOptionLength = Convert.ToInt32(TestContext.DataRow["Act Option"]);

            strategy.SetStintLengths(raceLaps, primeStints, optionStints);

            Assert.AreEqual(expectedPrimeLength, strategy.PrimeLaps);
            Assert.AreEqual(expectedOptionLength, strategy.OptionLaps);
        }
示例#2
0
        public void TestStrategyOptimisation()
        {
            int   primeStints  = 2;
            int   optionStints = 1;
            var   parameters   = new[] { 320F, -0.8F, 0.1F, 0.3F, 200F, 2.5F, 0.02F, 60F };
            float pitStopLoss  = 21;

            Data   data   = new Data();
            Driver driver = new Driver();
            PaceParameterCollection paceParameters = new PaceParameterCollection(parameters, pitStopLoss);

            driver.PaceParameters = paceParameters;
            Strategy strategy = new Strategy(primeStints + optionStints, primeStints, paceParameters, 0);

            driver.SelectedStrategy = driver.OptimiseStrategy(0, 0);

            for (int stintNo = 0; stintNo < primeStints + optionStints; stintNo++)
            {
                Assert.AreEqual(strategy.Stints[stintNo].stintLength, driver.SelectedStrategy.Stints[stintNo].stintLength);
                Assert.AreEqual(strategy.Stints[stintNo].tyreType, driver.SelectedStrategy.Stints[stintNo].tyreType);
            }
        }
            RaceStrategy[] SetupStrategiesForPitStopSimulation(int trackIndex, int numberOfStrategies)
            {
                var data = new Data();

                Driver[] drivers = new Driver[numberOfStrategies];
                PaceParameterCollection[] paceParameters = new PaceParameterCollection[numberOfStrategies];
                Strategy[]     strategies     = new Strategy[numberOfStrategies];
                RaceStrategy[] raceStrategies = new RaceStrategy[numberOfStrategies];
                MainForm       form           = new MainForm();
                var            parameters     = new[] { 320F, -0.8F, 0.1F, 0.3F, 200F, 2.5F, 0.02F, 60F };
                float          pitStopLoss    = 21;

                for (int strategyIndex = 0; strategyIndex < numberOfStrategies; strategyIndex++)
                {
                    paceParameters[strategyIndex]         = new PaceParameterCollection(parameters, pitStopLoss);
                    drivers[strategyIndex]                = new Driver();
                    drivers[strategyIndex].PaceParameters = paceParameters[strategyIndex];
                    drivers[strategyIndex].SetDriverIndex(strategyIndex);
                    strategies[strategyIndex]     = drivers[strategyIndex].OptimiseStrategy(strategyIndex, trackIndex);
                    raceStrategies[strategyIndex] = new RaceStrategy(strategies[strategyIndex], strategyIndex);
                }

                return(raceStrategies);
            }