public (DriversRating newSimulatorRating, DriversRating newClassRating, DriversRating newDifficultyRating) UpdateRatingsAsLoss(Dictionary <string, DriversRating> ratings, DriversRating difficultyRating, DriversRating simulatorRating, int difficulty, Driver player, string trackName) { DriverFinishState playerFinishState = new DriverFinishState(true, player.DriverName, player.CarName, player.ClassName, ratings.Count); GlickoPlayer newClassRating = CalculateNewAsLoss(ratings, ratings[player.DriverName], player); GlickoPlayer newSimRating = CalculateNewAsLoss(ratings, simulatorRating, player); ComputeNewRatingsAndNotify(newClassRating.FromGlicko(), difficultyRating, newSimRating.FromGlicko(), difficulty, playerFinishState, trackName); return(newSimRating.FromGlicko(), newClassRating.FromGlicko(), difficultyRating); }
public static DriversRating FromGlicko(this GlickoPlayer glickoRating) { return(new DriversRating() { Rating = (int)glickoRating.Rating, Deviation = (int)glickoRating.RatingDeviation, Volatility = glickoRating.Volatility, CreationTime = DateTime.Now, }); }
public void GlickoUpdateRatingDeviationNoOpponents() { var expectedValue = 200.27; var player1Opponents = new List <GlickoOpponent>(); player1 = GlickoCalculator.CalculateRanking(player1, player1Opponents); var actualValue = Math.Round(player1.RatingDeviation, 2); Assert.Equal(expectedValue, actualValue); }
public void GlickoUpdateNoOpponents() { var expectedValue = 0.06; var player1Opponents = new List <GlickoOpponent>(); player1 = GlickoCalculator.CalculateRanking(player1, player1Opponents); var actualValue = player1.Volatility; Assert.Equal(expectedValue, actualValue); }
public Persoon(int id, string naam, int positie, int stijging, int gespeeld, int gewonnen, int verloren, int gelijkspel, double score, bool aanwezig, GlickoPlayer glicko) { Id = id; Naam = naam; Positie = positie; Stijging = stijging; Gespeeld = gespeeld; Gewonnen = gewonnen; Verloren = verloren; Gelijkspel = gelijkspel; Score = score; Aanwezig = aanwezig; this.glicko = glicko; }
public void GlickoUpdateRatingDeviationCorrect() { var expectedValue = 151.52; var player1Opponents = new List <GlickoOpponent> { new GlickoOpponent(player2, 1), new GlickoOpponent(player3, 0), new GlickoOpponent(player4, 0) }; player1 = GlickoCalculator.CalculateRanking(player1, player1Opponents); var actualValue = Math.Round(player1.RatingDeviation, 2); Assert.Equal(expectedValue, actualValue); }
public void GlickoUpdateCorrect() { var expectedValue = 0.059995984286488495; var player1Opponents = new List <GlickoOpponent> { new GlickoOpponent(player2, 1), new GlickoOpponent(player3, 0), new GlickoOpponent(player4, 0) }; player1 = GlickoCalculator.CalculateRanking(player1, player1Opponents); var actualValue = player1.Volatility; Assert.Equal(expectedValue, actualValue); }
public (DriversRating newSimulatorRating, DriversRating newClassRating, DriversRating newDifficultyRating) UpdateRatingsByResults(Dictionary <string, DriversRating> ratings, DriversRating difficultyRating, DriversRating simulatorRating, SessionFinishState sessionFinishState, int difficulty) { DriverFinishState player = sessionFinishState.DriverFinishStates.First(x => x.IsPlayer); Logger.Info("---- CALCULATING NEW CLASS RATINGS ---"); GlickoPlayer newClassRating = CalculateNewRatingByResult(ratings, ratings[player.Name], sessionFinishState, player); Logger.Info("---- CALCULATING NEW SIM RATINGS ---"); GlickoPlayer newSimRating = CalculateNewRatingByResult(ratings, simulatorRating, sessionFinishState, player); Logger.Info("---- CALCULATING NEW DIFFICULTY RATINGS ---"); GlickoPlayer newDifficultyRating = CalculateNewRatingByResult(ratings, difficultyRating, sessionFinishState, player); ComputeNewRatingsAndNotify(newClassRating.FromGlicko(), newDifficultyRating.FromGlicko(), newSimRating.FromGlicko(), difficulty, player, sessionFinishState.TrackName); return(newSimRating.FromGlicko(), newClassRating.FromGlicko(), newDifficultyRating.FromGlicko()); }
static void Main(string[] args) { var player1 = new GlickoPlayer(ratingDeviation: 200); var player2 = new GlickoPlayer(1400, 30); var player3 = new GlickoPlayer(1550, 100); var player4 = new GlickoPlayer(1700, 300); var player1Opponents = new List <GlickoOpponent> { new GlickoOpponent(player2, 1), new GlickoOpponent(player3, 0), new GlickoOpponent(player4, 0) }; Console.WriteLine(String.Format("Player ranking: {0}", player1.Rating)); Console.WriteLine(String.Format("Player ranking deviation: {0}", player1.RatingDeviation)); player1 = GlickoCalculator.CalculateRanking(player1, player1Opponents); Console.WriteLine(String.Format("Player ranking: {0}", player1.Rating)); Console.WriteLine(String.Format("Player ranking deviation: {0}", player1.RatingDeviation)); Console.ReadKey(); }
public GlickoOpponent(GlickoPlayer opponent, double result) : base(opponent.Rating, opponent.RatingDeviation, opponent.Volatility) { Result = result; }
private GlickoPlayer CalculateNewRating(GlickoPlayer player, List <GlickoOpponent> opponents) { return(GlickoCalculator.CalculateRanking(player, opponents)); }