There are four broad types of work in building a schedule.
- Define the matchups
This involves the layout of all the games/series. The circle method discussion of previous posts fall here. The layout is what I put in a spreadsheet with rows of matchups between pairs of teams to occur at the same time.
In the easier cases the matchups from when initially set down, in the sense that they have at any given time all of the teams playing. In the harder cases (the more odd numbers are involved, particularly in the number of teams in divisions), the definition of all the matchups is only a start as the matchups must then be organized into a valid layout - rather than being able to set out what every team does at once, each team's matchups are defined then they are organized into the rows. And in those more difficult cases this first step and second bleed together.
- Arrange the matchups
This involves sorting the sets of matchups into the order that they will actually be played. As mentioned above, in more difficult cases the initial layout may include ordering work. But in the easier cases the initial layout is probably too "mathematical" - e.g., all the matchups against one opponent may have been initially set down consecutively. The matchups need to be ordered to distribute the division/league/interleague matchups in a sensible and/or requested way.
- Refine the matchups
This involves adjusting the arrangement to sort of iron out wrinkles and make the "pretty" final schedule design. It means things like breaking up too long homestands and roadtrips and juggling exact offdays for teams. The most common action for these changes is swapping series. E.g., there is a 1 @ 2 series at some point, a 2 @ 1 series later, and trading the positions in the schedule of those series would make the schedule "better", so they get swapped.
- Build the schedule
This involves turning the final matchups design into the LSDL file that the OOTP game uses. But it also includes evaluation of the schedule to produce statistics that may be interesting for their own sake but also can be checked to make sure design parameters are satisfied. The refining step can have much of the same information available, but the computed stats here are a last check/confirmation. If something undesired is seen, further refinement can be done.
My planned immediate next step here is to get into the #2 "arrange the matchups". But then I also want to dive into the refine and build steps. The blue-sky thinking would have the tools I use somehow available for others. One small step at a time here though.