Scheduling teams in any league can be a daunting task. The objective of creating a schedule for team play is to create a piece of paper, or list showing; each team who they are playing against.., where the match will take place.., what time does the match begin.., who is the home team & the visiting team. Fundamentally, who, what, where, and when.
Calculating all the variables is difficult enough, but one more requirement needed to create "good" schedules is to make sure all teams are treated equally in the distribution in the playing fields, in the different time slots, as home & visitor (no more than 2 away and 2 home games in a row), in non-duplicating round robins, and all must have the same number of games. The reason most computer scheduling programs can't figure out how to program all these variables is a problem that has plagued computer programmers for years.
The problem can be identified as "permutations & combinations". The total number of possible match up scenarios for creating schedules for leagues with 4 to 24 teams in each division is in the hundreds of billions of possible patterns. For a 4 team division involving all the who, what, where, & when scenarios the number of possible patterns to put a schedule together is huge. But, here's where it gets interesting. If you add just one team to make it a 5 team division (creating a bye situation) the number of possible combinations magnifies by the power of 10. Now lets really make it interesting... When you add 1 more team to make it a 6 team division, you must also add 1 more time slot that is needed to physically play a game. Thus the number of possible ways to put a schedule together magnifies by the power of 10 twice. As you work your way up adding more teams and time slots, the total number of possible schedule arrangements, or patterns grows into hundreds of billions of possible combinations. What is most interesting is, for the number of teams in each particular division, there is only one pattern that will make everything happen correctly to create a balanced end to end round robin schedule for your whole season.
If you don't play each full round robin and only play 2.5 round robins, you will not have a balanced schedule, but it will be as close as you can get.
Check out http://www.league-scheduling.com (dead link)