Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 9
0
        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 );
            }
        }
Exemplo n.º 10
0
        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 ) );
        }
Exemplo n.º 11
0
        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;
        }