public void Calculate( string season, string week ) { if ( week.Equals( "01" ) ) { SetupSeason( season ); Dump2Xml(); return; } var hp = new HillinPredictor(); var theSeason = new NflSeason( season ); foreach ( var team in theSeason.TeamList ) { // get teams game for the week Utility.Announce( string.Format( " Doing {0}", team.TeamCode ) ); var upcomingWeek = new NFLWeek( season, week ); var previousWeek = upcomingWeek.PreviousWeek( upcomingWeek, loadgames:false, regularSeasonGamesOnly:true ); var prevWeek = string.Format( "{0:0#}", previousWeek.WeekNo ); var oldPowerRating = team.GetPowerRating( prevWeek ); if ( oldPowerRating == 0 ) { return; } var newRating = new HillenPowerRating { Season = season, TeamCode = team.TeamCode, Week = week, Quantity = oldPowerRating }; var game = Utility.GetGameFor( season, prevWeek, team.TeamCode ); if ( game.GameDate != new DateTime( 1, 1, 1 ) ) { var predictedResult = hp.PredictGame( game, null, game.GameDate ); var predictedMarginForTeam = predictedResult.MarginForTeam( team.TeamCode ); //Utility.Announce( string.Format( "Predicted Margin for {0} is {1}", TeamCode, predictedMarginForTeam ) ); var actualMarginForTeam = game.Result.MarginForTeam( team.TeamCode ); //Utility.Announce( string.Format( " Result of {2} means Actual Margin for {0} is {1}", var newPowerRating = AdjustedPower( oldPowerRating, predictedMarginForTeam, actualMarginForTeam ); newRating.Quantity = newPowerRating; } PutRating( newRating ); } Dump2Xml(); }
public void PutRating( HillenPowerRating stat ) { if ( stat.Quantity == 0.0M ) return; IsDirty = true; if ( TheHt.ContainsKey( stat.FormatKey() ) ) { TheHt[ stat.FormatKey() ] = stat; #if DEBUG //Utility.Announce( string.Format( "HillenMaster:Putting Stat {0}", stat.FormatKey() ) ); #endif return; } TheHt.Add( stat.FormatKey(), stat ); #if DEBUG //Utility.Announce( string.Format( "HillenMaster:Adding Stat {0}", stat.FormatKey() ) ); #endif }
private static void WriteStatNode( XmlWriter writer, HillenPowerRating stat ) { writer.WriteStartElement( "stat" ); writer.WriteAttributeString( "season", stat.Season ); writer.WriteAttributeString( "week", stat.Week ); writer.WriteAttributeString( "team", stat.TeamCode ); writer.WriteAttributeString( "qty", stat.Quantity.ToString() ); writer.WriteEndElement(); }
public override decimal GetStat( string theKey ) { var season = theKey.Substring( 0, 4 ); var week = theKey.Substring( 5, 2 ); var teamCode = theKey.Substring( 8, 2 ); var stat = new HillenPowerRating { Season = season, Week = week, TeamCode = teamCode, Quantity = 0.0M }; #if DEBUG Utility.Announce( string.Format( "HillenMaster:Getting Stat {0}", stat.FormatKey() ) ); #endif var key = stat.FormatKey(); if ( TheHt.ContainsKey( key ) ) { stat = (HillenPowerRating) TheHt[ key ]; CacheHits++; } else { // new it up #if DEBUG Utility.Announce( string.Format( "HillenMaster:Instantiating Stat {0}", stat.FormatKey() ) ); #endif PutRating( stat ); IsDirty = true; CacheMisses++; } return stat.Quantity; }