View Single Post
Old 04-21-2004, 03:39 AM   #36
fearofmimes
Minors (Rookie Ball)
 
Join Date: Dec 2002
Location: Minneapolis, MN
Posts: 31
Doubleheader tests and potential solution

I've been working through the doubleheader issue and I think I have a pretty good explanation of the problem as well as a reasonable proposal for a solution (Heads Up OOTP Developments!). Please note that in each of the scenarios being tested, I was simming an entire day rather than individual games. In past versions (haven't confirmed for OOTP6 yet), if you played a game and simmed the games in the background, the statistics from only one of the games in the doubleheader would be counted.

The one thing that can be said about doubleheaders in OOTP is that it has been difficult to infer the logic being used by the game when it encounters a matchup occurring twice on the same day. If this logic was more clear, it might be easier to come up with a way to massage the schedule to make the game behave in a somewhat more predictable manner.

What I have observed simming numerous situations with doubleheaders is that game time does not appear to make any difference in terms of the computer manager selecting pitchers. Whether games are scheduled to start at the same time or are staggered does not appear to influence the chances for what would appear to be reasonable selection of starting pitchers.

Scenario 1:

4/20/1903: Philadelphia (N) at Boston (N), both games scheduled for 3:05 ET. #1 starter is next scheduled starter for Boston with #3 day-to-day and #4 fatigued. #1 starter is next scheduled starter for Philadelphia with #4 fatigued and spot starter fatigued.

Same starters scheduled for each team in both games.

Game 1 had #1 starter for both teams (as expected). Game 2 had #2 starter for both teams (reasonable).

4/20/1903: Philadelphia (A) at Boston (A), first game scheduled for 1:05 ET and second game scheduled for 3:05 ET. This is the first game of the season for both teams.

Game 1 had #1 starter for both teams (as expected). Game 2 had #2 starter for both teams (reasonble).

Scenario 2:

5/30/1903: Philadelphia (N) at Brooklyn, first game scheduled for 1:05 ET and second game scheduled for 3:05 ET. Philadelphia (N) has #1 starter scheduled and both #1 and #2 are rested. Brooklyn has #1 starter scheduled and rested while #2 starter is fatigued, but spot starter is rested.

Prediction: Brooklyn #1 starter will pitch both games.
Result: Brooklyn #1 starter pitched both games while Philadelphia (N) used #1 starter in game 1 and #2 starter in game 2.

5/30/1903: Boston (N) at New York (N), first game scheduled for 1:05 ET and second game scheduled for 3:05 ET. Boston (N) has #2 starter scheduled and rested while #3 starter is fatigued, but spot starter is rested. New York (N) has #1 starter scheduled and rested while #2 starter is fatigued, but #4 starter is rested.

Prediction: Boston (N) #2 starter and New York (N) #1 starter will pitch both games.
Result: Boston (N) #2 starter and New York (N) #1 starter pitched in both games.

5/30/1903: Cincinnati at Pittsburgh, first game scheduled for 1:05 ET and second game scheduled for 3:05 ET. Cincinnati has #1 starter scheduled and both #1 and #2 are rested. Pittsburgh has #2 starter scheduled and both #2 and #3 are rested.

Result: Cincinnati used #1 starter in game 1 and #2 starter in game 2. Pittsburgh used #2 starter in game 1 and #3 starter in game 2.

5/30/1903: Washington at Boston (A), first game scheduled for 1:05 ET and second game scheduled for 3:05 ET. Washington has #3 starter scheduled and both #3 and #4 are rested. Boston (A) has #3 starter scheduled and both #3 and #4 are rested.

Result: Washington used #3 starter in game 1 and #4 starter in game 2. Boston (A) used #3 starter in game 1 and #4 starter in game 2.

5/30/1903: New York (A) at Philadelphia (A), first game scheduled for 1:05 ET and second game scheduled for 3:05 ET. New York (A) has #3 starter scheduled and both #3 and #4 are rested. Philadelphia (A) has #2 starter scheduled and rested while #3 starter is fatigued, but #4 starter is rested.

Prediction: Philadelphia (A) #2 starter will pitch both games.
Result: Philadelphia (A) #2 starter pitched in both games. New York (A) used starter #3 in game 1 and #4 starter in game 2.

5/30/1903: Chicago (A) at Cleveland, first game scheduled for 1:05 ET and second game scheduled for 3:05 ET. Chicago (A) has #2 starter scheduled and rested while #3 starter is fatigued, but #4 starter is rested. Cleveland has #1 starter scheduled and both #1 and #2 are rested.

Prediction: Chicago (A) #2 starter will pitch both games.
Result: Chicago (A) #2 pitched in both games. Cleveland used starter #1 in game 1 and starter #2 in game 2.

5/30/1903: Detroit at St. Louis (A), first game scheduled for 2:05 ET and second game scheduled for 4:05 ET. Detroit has #1 starter scheduled and rested while #2 starter is fatigued, but #3 starter is rested. St. Louis (A) has #2 starter scheduled and rested while #3 starter is fatigued, but #4 starter is rested.

Prediction: Detroit #1 starter and St. Louis (A) #2 starter will pitch both games.
Result: Detroit #1 starter and St. Louis (A) #2 starter pitched both games.

I added predictions for the second set of scenarios because it became clear in my testing that the main problem appears to be in the starter selection algorithm. All teams have their rotation mode set to "Start highest rested starter!" This is a problem with doubleheaders since fatigue is calculated/updated at the end of the day rather than at the end of the game. Therefore, the following sequence of events appear to produce the observed results:

1. Scheduled starter is rested and starts game 1 of doubleheader.
2. After the game, the next starter is incremented and a new scheduled starter is calculated.
3. If the new scheduled starter is fatigued, the game looks for the highest rested starter. In most cases, this is the starter that just pitched game 1 since fatigue has not been calculated/updated for the previous game yet.

This is exacerbated by what I consider to be incorrect or haphazard use of spot starters. What I have observed is that spot starters are used randomly (based on the assigned percentage from the pitching staff). I would prefer that spot starters be used a little more intelligently. When I'm managing, I will use spot starters and other marginal starters in situations where scheduled starters are tired or slumping. This does make rotation management a little more complex, but it is also more realistic in that it is consistent with historical major league patterns.

On a philosophical note, pitching rotations are an idealized abstraction. The key objective in most cases is for a team's best pitchers to get the most starts possible while also getting the rest they need. Usually the top two or three starters will take almost every pitching opportunity (barring injury) while the rest of the starts will be clustered among the remaining starters.

The single most frustrating thing for me is that OOTP remains ignorant of doubleheaders. I find this frustrating since doubleheader support is an issue that has been discussed consistently in the forums as long as I've known about OOTP.

I see two potential fixes for this issue, the first probably easier than the second:

1. Change the pitcher selection algorithm to make better use of spot starters as well as other potential starters. Major league history is scattered with cases where back-bench starters have been called on because of fatigue, injuries, slumps, or capriciousness. In OOTP, however, I've really only seen back-bench starters get called on by the computer manager in cases of injuries.

2. Calculate or update fatigue at the end of a game rather than at the end of the day. This does not appear to be entirely inconsistent with the game model since it does appear that next starter is incremented once the starter is selected (either when the game starts or after the game).

If something like this was done, I see the potential for moving toward full support of doubleheaders. Full support would include combining attendance for both games and perhaps allowing a slight upward adjustment for fan interest to increase attendance.

Finally, a note about what appears to be folklore that has grown around the relationship between game time and reasonable behavior for doubleheaders. When simming an entire day, it appears that OOTP handles each of the games in a serial manner, so the game time probably has no impact. When a human plays out a game with the other games playing in the background, OOTP takes the game time into account as it interleaves the games. In this case, however, I have seen that OOTP loses the statistics from one of the doubleheader games that it plays in the background. I think full support for doubleheaders would include a fix for this issue as well.

My research on this issue continues as I will try some more adjustments to game starting to see if my final conjecture holds.

I hope this helps.
fearofmimes is offline   Reply With Quote