Acton Adult Softball League Logo

Acton Adult Softball League
Sponsored by: Recreation Department in Acton, Massachusetts 01720
Hosted by: GoDaddy.com


Follow ActonASL on Twitter


Site maintained by
Matt Murphy
(matt@actonasl.com)
and Rich Gottesman
(rich@actonasl.com).
red line

How To Make the AASL Schedule

I figure I've been doing this for 7 years and should share how I try to make the schedule. Here's the plan:

Get the Permits

I review the season calendar from April to August and determine any/all available field slots we should request. This includes two adult-sized fields at Elm Street and NARA. These are available all week (NARA) and Monday-Friday (Elm). However, we try to be good citizens and share with the youth league in our request. We've developed a pattern over the years of which leagues get which fields when and we don't want to encroach. Thus, we put in two requests: what we think we need and want (based on past permits), and what we'd like if it's not assigned. The Rec Department doles out the permits in a massive field schedule.

We need to account for playoffs at this point too, making sure to have enough slots for whatever format we run this season.

Determine the Round-Robin Games

Rule 1: Everybody plays Everybody.The first year I tried to schedule (our second season), Rich and I tried to pair up teams and choose randomly to assign pairings to weeks. This worked well for the first 3 weeks, then we found that we had a tough time putting more pairings in. Thankfully, there are researchers who study these things, and I found this chart: http://www.cs.rochester.edu/u/ferguson/disc/upa-formats/upa-formats-16.html that gives the inside scoop on teams and rounds. This is the basis for all of the "rounds". If you run a league, definitely Google for something like this - it takes a lot of pressure off making sure everything is right round-by-round.

Determine the "rounds" of game slots

This is where it starts to get tricky: our 8-game rounds don't fit into individual weeks so well. I divide the schedule into Round A (first week, Mon-Thurs), Round B (second week Mon-Thurs) and so on through each of the first 12 weeks, skipping the July 4 week. Round M is the Sundays in May, Round N is the Sundays in June, and Round O is Sundays in July and the July 4 week.

Rule 2: Every team should be assigned a game in Rounds M, N, and O. If a week has 7 slots, I put one extra game aside for later.

First pass: Fill in the rounds

Since the 16-game chart is not completely randomly ordered (e.g., team 1 is the first game in each round), I assign a random order to the games in each round and then plug in as many fit in each week into the calendar. This includes 7 games in the Mon-Thurs slots in the first week, and I put the last game aside. I do this for all of the weekday games.

Next, I take the Sunday rounds. I find the teams that don't have games that week (because their pairing was left out of the weekdays) and try to assign a game to that Sunday. I look at these in blocks by round, and rearrange these 8 games across 4 Sundays until it seems to work. I repeat this for June, and then July.

Now I'm left with holes in the schedule in the entire last week and a few in the later weeks where there are 9 or 11 games per week. I try to fill these in with teams that have only one game that week, trying not to triple up.

The Reassignments

So now that we have the basic grid done, we start into the multi-game weeks. Rule 3: Each team will have 2 or 3 multigame weeks, there's no way to avoid it. However, teams shouldn't have 4 multigame weeks or 0 or 1 multigame weeks. So, I start figuring out who has what, and adjust accordingly by swapping a game with another game in the same Round (this is usually a game that was left over going into an earlier week and a game from that week going to the pile of "extras"). Note that when I came across a very difficult matrix of multigame weeks this year, I threw out the work I had done and started again. This is when I introduced the randomizing logic to rearrange the games in a given round.

I found out that last year I had a team off for over 3 weeks in a row, so this year I made sure that any weeks off do not touch another week off. Rule 4: no team will be idle for 2 in a row.

Next is Doubleheaders. Rule 5: No team should have a doubleheader in the schedule. This seems like a rule that could be broken with a team's permission, but we haven't had to do this except in make-up games a few times. If a team is scheduled twice on the same night, I swap the game with another from that week.

I forgot to mention Rule 6: Each team should have 7 or 8 home games. This is easy to rearrange, and since I rearranged it a few years back I haven't had to pay much attention to this when assigning games.

Captains' Requests

Now that the schedule has the basics in line, I start to review the captains' requests. This includes such requests (paraphrased) as:

  • Since many of our players coach other sports in the spring, we'd prefer our late games to be earlier in the season so they can coach and then play.
  • I'd prefer to have Wednesday games in the summer rather than the spring since I coach ABYB on Wednesdays.
  • I know my shift-work schedule for the next 4 months, so if you can avoid these days I can captain my team when I'm not working a 24-hour shift.
  • I want the first Sunday game at 4 PM so I can invite all the families to the game so the new players feel welcomed. (I like this request the best!)

I take these into account and then look at the days of the week. This is when I can begin assigning teams to these schedules. Rule 7: Assign days of the week in equal proportions, considering where possible the requests from captains. This is where it starts to get annoying. The schedule is fairly balanced at this point. Teams will have 2.75 Sunday games, 3.75 Monday games, 3.75 Tuesday games, 3.5 Wednesday games, and 1.25 Thursday games. Since we can't play .25 games, teams will get close to this number, or more on certain days that they requested are better (or fewer on days that are worse). So, if you have more than 5 games on a specific weekday, there's a reason for it based on the captains' request, either for that day or against other days. For the most part this works out. Some teams wanted more Sundays, some less, but in all cases teams have at least 2. I can get some teams assigned to specific schedules at this point, based on best days or days that they can't play.

As I go through and find schedules that will work for specific reasons, I tentatively assign a team to that schedule. I continue like this until I find all requests are reasonably met, then I fill in the rest of the teams who didn't have captains' restrictions.

Rule 8: Teams should all get an equal number of games "under the lights". We average 4.75 games under the lights at Elm per team, so with some finagling, each team can get 4, 5, or 6 games in that time slot. This requires some rearranging to pull games up and back on days, but works out with a bunch of minor switches. As indicated in preferences, captains who prefer late games in the spring can be accommodated to some extent with these types of switches.

Rule 9: Teams should play at Elm and NARA in proportion as much as possible. Some teams prefer Elm and others prefer NARA, but in any case we should balance out what is assigned. This means teams should average 5.375 NARA games (4 to 6 per team) and 9.625 Elm games (9 to 11 per team). The latter weeks of the season, where we have a 6 PM Elm game and a 6 PM NARA game, make these switches easy and things balance out.

Double-check It

With all of this, I'm sure to have screwed something up, so I go back through all of the metrics to make sure things are balanced, then I go through all of the requests to make sure I've kept what I though I had assigned. If it works out, great. If not, I can move things around, but that requires going through the double-check again from the beginning. Luckily, when I got to this point this year, it seemed correct.

Publish it

I can then take each "game" which is a game slot number, a home team, and an away team, and put it in the "games" table in the database. I have a "game slot" database that has the logistics of date, day, field, time. When these are rendered on the schedule, they provide the details for the game, and are easy to reassign if there's a reschedule request. I upload that to the website, and then hope I didn't royally screw something up.

Let's Play Ball!



Published on 4/18/2007 5:46:34 PM by Matt Murphy(matt@actonasl.com)