float OptimisePrime(PaceParameterCollection PaceParameters, int primeStints, int optionStints, int lapsInRace) { int l = lapsInRace; float optionD = PaceParameters.PaceParameters[PaceParameterType.OptionDegradation]; float primeD = PaceParameters.PaceParameters[PaceParameterType.PrimeDegradation]; float delta = PaceParameters.PaceParameters[PaceParameterType.TyreDelta]; float optimumLength = 0; optimumLength += (l * optionD / (float)optionStints) + (delta) + (primeD / 2) - (optionD / 2); optimumLength /= ((primeD) + (optionD * (float)primeStints / (float)optionStints)); return(optimumLength); }
/// <summary> /// Starts a strategy from driver data and stint information and optimises the strategy /// </summary> /// <param name="NoOfStints">The number of stints to complete</param> /// <param name="PrimeStints">The number of prime tyre stints to be completed</param> /// <param name="_driverIndex">The index of the driver who is completing the stint</param> public Strategy(int NoOfStints, int PrimeStints, PaceParameterCollection PaceParameters, int DriverIndex) { this.DriverIndex = DriverIndex; int primeStints = PrimeStints; int optionStints = NoOfStints - PrimeStints; int trackIndex = Data.RaceIndex; t = Data.Tracks[trackIndex]; this.PaceParameters = PaceParameters; lapsInRace = Data.GetRaceLaps(); lapTimes = new float[lapsInRace]; SetStintLengths(lapsInRace, primeStints, optionStints); SetupStrategyStints(NoOfStints, primeStints); PopulateAllStints(); UpdateStrategyParameters(); }
public void SetPaceParameters(PracticeTimesCollection PracticeTimes) { this.PracticeTimes = PracticeTimes; PaceParameters = new PaceParameterCollection(PracticeTimes); }
public void SetPaceParameters() { PaceParameters = new PaceParameterCollection(this.PracticeTimes); }