private void RateGame(NFLGame g) { if (g.Played()) { if (AuditIt) { Utility.Announce(string.Format("Rating game {0}", g.ScoreOut())); } // workout the Average Score //AverageScore = Season.AverageScoreAfterWeek( g.WeekNo ); const int averageScore = 21; // this is pretty much fixed var adjustment = new NibbleGameRating(0, 0, 0, 0); var ff = FudgeFactor(); adjustment.HomeOff = (MaximumScore(g.HomeScore) - averageScore) / ff; adjustment.HomeDef = (MaximumScore(g.AwayScore) - averageScore) / ff; adjustment.AwayOff = (MaximumScore(g.AwayScore) - averageScore) / ff; adjustment.AwayDef = (MaximumScore(g.HomeScore) - averageScore) / ff; if (AuditIt) { Utility.Announce(string.Format(" Actual score {0} {1:00} v {2} {3:00}", g.HomeTeam, g.HomeScore, g.AwayTeam, g.AwayScore)); Utility.Announce(string.Format(" Adjustments H {0} {1} - {2}", g.HomeTeam, adjustment.HomeOff, adjustment.HomeDef)); Utility.Announce(string.Format(" Adjustments A {0} {1} - {2}", g.AwayTeam, adjustment.AwayOff, adjustment.AwayDef)); } AdjustRatings(adjustment, g.HomeTeam, g.AwayTeam); } }
private void AdjustRatings( NibbleGameRating startingGameRating, NibbleGameRating adjustment, string homeTeam, string awayTeam, string week) { Debug.Assert((Math.Abs(adjustment.HomeOff) < 10), "adjustment too big", $"Week {week} home team {homeTeam} adj={adjustment.HomeOff}"); var newHomeOff = startingGameRating.HomeOff + adjustment.HomeOff; var newHomeDef = startingGameRating.HomeDef + adjustment.HomeDef; var newAwayOff = startingGameRating.AwayOff + adjustment.AwayOff; var newAwayDef = startingGameRating.AwayDef + adjustment.AwayDef; var homeRating = new NibbleTeamRating(newHomeOff, newHomeDef); var awayRating = new NibbleTeamRating(newAwayOff, newAwayDef); var homeKey = KeyFor(homeTeam); var awayKey = KeyFor(awayTeam); UpdateRating( teamCode: homeKey, rating: homeRating, week: Int32.Parse(week)); UpdateRating( teamCode: awayKey, rating: awayRating, week: Int32.Parse(week)); }
private void RateGame(NFLGame g) { if (g.Played()) { Utility.Announce(string.Format("Rating game {0}", g.GameName())); // workout the Average Score //AverageScore = Season.AverageScoreAfterWeek( g.WeekNo ); AverageScore = 21; // this is pretty much fixed // workout adjustments to the previous ratings NibbleGameRating startingGameRating; if (g.Week.Equals("01")) { startingGameRating = new NibbleGameRating( ho: 0, hd: 0, ao: 0, ad: 0); } else { // Get previous rating startingGameRating = GetRating(g); } var projHome = (int)(AverageScore + ((startingGameRating.HomeOff + startingGameRating.AwayDef) / 2)); projHome += 3; // home field advantage var projAway = (int)(AverageScore + ((startingGameRating.AwayOff + startingGameRating.HomeDef) / 2)); var adjustment = new NibbleGameRating(0, 0, 0, 0); var ff = FudgeFactor(g.Week); adjustment.HomeOff = (MaximumScore(g.HomeScore) - projHome) / ff; adjustment.HomeDef = (MaximumScore(g.AwayScore) - projAway) / ff; adjustment.AwayOff = (MaximumScore(g.AwayScore) - projAway) / ff; adjustment.AwayDef = (MaximumScore(g.HomeScore) - projHome) / ff; Utility.Announce(string.Format(" Projected score {0} {1:00} v {2} {3:00}", g.HomeTeam, projHome, g.AwayTeam, projAway)); Utility.Announce(string.Format(" Actual score {0} {1:00} v {2} {3:00}", g.HomeTeam, g.HomeScore, g.AwayTeam, g.AwayScore)); Utility.Announce(string.Format(" Adjustments H {0} {1} - {2}", g.HomeTeam, adjustment.HomeOff, adjustment.HomeDef)); Utility.Announce(string.Format(" Adjustments A {0} {1} - {2}", g.AwayTeam, adjustment.AwayOff, adjustment.AwayDef)); AdjustRatings( startingGameRating: startingGameRating, adjustment: adjustment, homeTeam: g.HomeTeam, awayTeam: g.AwayTeam, week: g.Week); } }
private void AdjustRatings(NibbleGameRating adjustment, string homeTeam, string awayTeam) { Debug.Assert((Math.Abs(adjustment.HomeOff) < 10), "adjustment too big", string.Format("home team {0} adj={1}", homeTeam, adjustment.HomeOff)); var homeRating = new NibbleTeamRating(adjustment.HomeOff, adjustment.HomeDef); var awayRating = new NibbleTeamRating(adjustment.AwayOff, adjustment.AwayDef); UpdateRating(homeTeam, homeRating); UpdateRating(awayTeam, awayRating); }
private void AdjustRatings(NibbleGameRating startingGameRating, NibbleGameRating adjustment, string homeTeam, string awayTeam, string week) { Debug.Assert((Math.Abs(adjustment.HomeOff) < 10), "adjustment too big", string.Format("Week {0} home team {1} adj={2}", week, homeTeam, adjustment.HomeOff)); var newHomeOff = startingGameRating.HomeOff + adjustment.HomeOff; var newHomeDef = startingGameRating.HomeDef + adjustment.HomeDef; var newAwayOff = startingGameRating.AwayOff + adjustment.AwayOff; var newAwayDef = startingGameRating.AwayDef + adjustment.AwayDef; var homeRating = new NibbleTeamRating(newHomeOff, newHomeDef); var awayRating = new NibbleTeamRating(newAwayOff, newAwayDef); var homeKey = KeyFor(homeTeam); var awayKey = KeyFor(awayTeam); UpdateRating(homeKey, homeRating, Int32.Parse(week)); UpdateRating(awayKey, awayRating, Int32.Parse(week)); }
public NibbleGameRating GetRating(NFLGame g) { var homeKey = KeyFor(g.HomeTeam); var awayKey = KeyFor(g.AwayTeam); var prevWeek = g.WeekNo - 2; // one for zero based and one for the week var homeRatings = (NibbleTeamRating[])Rates[homeKey]; var homeRating = homeRatings[prevWeek]; var awayRatings = (NibbleTeamRating[])Rates[awayKey]; var awayRating = awayRatings[prevWeek]; var gameGameRating = new NibbleGameRating(homeRating.Offence, homeRating.Defence, awayRating.Offence, awayRating.Defence); Utility.Announce(string.Format(" Week {6:00} Game Rating {0} {1}-{2} v {3} {4}-{5}", g.HomeTeam, homeRating.Offence, homeRating.Defence, g.AwayTeam, awayRating.Offence, awayRating.Defence, g.WeekNo)); return(gameGameRating); }
private void AdjustRatings( NibbleGameRating adjustment, string homeTeam, string awayTeam ) { Debug.Assert( ( Math.Abs( adjustment.HomeOff ) < 10 ), "adjustment too big", string.Format( "home team {0} adj={1}", homeTeam, adjustment.HomeOff ) ); var homeRating = new NibbleTeamRating( adjustment.HomeOff, adjustment.HomeDef ); var awayRating = new NibbleTeamRating( adjustment.AwayOff, adjustment.AwayDef ); UpdateRating( homeTeam, homeRating ); UpdateRating( awayTeam, awayRating ); }
private void RateGame( NFLGame g ) { if ( g.Played() ) { if ( AuditIt ) Utility.Announce( string.Format( "Rating game {0}", g.ScoreOut() ) ); // workout the Average Score //AverageScore = Season.AverageScoreAfterWeek( g.WeekNo ); const int averageScore = 21; // this is pretty much fixed var adjustment = new NibbleGameRating( 0, 0, 0, 0 ); var ff = FudgeFactor(); adjustment.HomeOff = ( MaximumScore( g.HomeScore ) - averageScore ) / ff; adjustment.HomeDef = ( MaximumScore( g.AwayScore ) - averageScore ) / ff; adjustment.AwayOff = ( MaximumScore( g.AwayScore ) - averageScore ) / ff; adjustment.AwayDef = ( MaximumScore( g.HomeScore ) - averageScore ) / ff; if ( AuditIt ) { Utility.Announce(string.Format(" Actual score {0} {1:00} v {2} {3:00}", g.HomeTeam, g.HomeScore, g.AwayTeam, g.AwayScore)); Utility.Announce(string.Format(" Adjustments H {0} {1} - {2}", g.HomeTeam, adjustment.HomeOff, adjustment.HomeDef)); Utility.Announce(string.Format(" Adjustments A {0} {1} - {2}", g.AwayTeam, adjustment.AwayOff, adjustment.AwayDef)); } AdjustRatings( adjustment, g.HomeTeam, g.AwayTeam); } }
private void RateGame( NFLGame g ) { if ( g.Played() ) { Utility.Announce( string.Format( "Rating game {0}", g.GameName() ) ); // workout the Average Score //AverageScore = Season.AverageScoreAfterWeek( g.WeekNo ); AverageScore = 21; // this is pretty much fixed // workout adjustments to the previous ratings NibbleGameRating startingGameRating; if ( g.Week.Equals( "01" ) ) startingGameRating = new NibbleGameRating( 0, 0, 0, 0 ); else // Get previous rating startingGameRating = GetRating( g ); var projHome = (int) ( AverageScore + ( ( startingGameRating.HomeOff + startingGameRating.AwayDef )/2 ) ); projHome += 3; // home field advantage var projAway = (int) ( AverageScore + ( ( startingGameRating.AwayOff + startingGameRating.HomeDef )/2 ) ); var adjustment = new NibbleGameRating( 0, 0, 0, 0 ); var ff = FudgeFactor( g.Week ); adjustment.HomeOff = ( MaximumScore( g.HomeScore ) - projHome ) / ff; adjustment.HomeDef = ( MaximumScore( g.AwayScore ) - projAway ) / ff; adjustment.AwayOff = ( MaximumScore( g.AwayScore ) - projAway ) / ff; adjustment.AwayDef = ( MaximumScore( g.HomeScore ) - projHome ) / ff; Utility.Announce(string.Format(" Projected score {0} {1:00} v {2} {3:00}", g.HomeTeam, projHome, g.AwayTeam, projAway)); Utility.Announce(string.Format(" Actual score {0} {1:00} v {2} {3:00}", g.HomeTeam, g.HomeScore, g.AwayTeam, g.AwayScore)); Utility.Announce(string.Format(" Adjustments H {0} {1} - {2}", g.HomeTeam, adjustment.HomeOff, adjustment.HomeDef )); Utility.Announce(string.Format(" Adjustments A {0} {1} - {2}", g.AwayTeam, adjustment.AwayOff, adjustment.AwayDef)); AdjustRatings( startingGameRating, adjustment, g.HomeTeam, g.AwayTeam, g.Week ); } }
private void AdjustRatings( NibbleGameRating startingGameRating, NibbleGameRating adjustment, string homeTeam, string awayTeam, string week ) { Debug.Assert( ( Math.Abs(adjustment.HomeOff ) < 10 ), "adjustment too big", string.Format("Week {0} home team {1} adj={2}", week, homeTeam, adjustment.HomeOff)); var newHomeOff = startingGameRating.HomeOff + adjustment.HomeOff; var newHomeDef = startingGameRating.HomeDef + adjustment.HomeDef; var newAwayOff = startingGameRating.AwayOff + adjustment.AwayOff; var newAwayDef = startingGameRating.AwayDef + adjustment.AwayDef; var homeRating = new NibbleTeamRating( newHomeOff, newHomeDef ); var awayRating = new NibbleTeamRating( newAwayOff, newAwayDef ); var homeKey = KeyFor( homeTeam ); var awayKey = KeyFor( awayTeam ); UpdateRating( homeKey, homeRating, Int32.Parse( week ) ); UpdateRating( awayKey, awayRating, Int32.Parse( week ) ); }
public NibbleGameRating GetRating( NFLGame g ) { var homeKey = KeyFor( g.HomeTeam ); var awayKey = KeyFor( g.AwayTeam ); var prevWeek = g.WeekNo - 2; // one for zero based and one for the week var homeRatings = (NibbleTeamRating[]) Rates[ homeKey ]; var homeRating = homeRatings[ prevWeek ]; var awayRatings = (NibbleTeamRating[]) Rates[ awayKey ]; var awayRating = awayRatings[ prevWeek ]; var gameGameRating = new NibbleGameRating( homeRating.Offence, homeRating.Defence, awayRating.Offence, awayRating.Defence ); Utility.Announce(string.Format( " Week {6:00} Game Rating {0} {1}-{2} v {3} {4}-{5}", g.HomeTeam, homeRating.Offence, homeRating.Defence, g.AwayTeam, awayRating.Offence, awayRating.Defence, g.WeekNo ) ); return gameGameRating; }