This is my first question on this forum, have tried to exhaust every possible research option I could think of or find. Actually this is the first time I've posted for help with this anywhere, so maybe I should have started here... :)
I am trying to build an automated scheduling solution for a pool league, right now the process is entirely manual. I will do my best to try to describe my situation:
There are usually approximately 20 teams that play in this league, but need to accommodate situations where there could be as few as 5 teams and as many as 50 teams. In addition to the number of teams, this is a traveling league so there are multiple venues, some of which that can house only one match (two teams) and some that can house up to 6 matches (12 teams). If there are an odd number of teams, I can add a bye of course, but would really like to limit it to a single bye if I can, unless absolutely required that multiple byes be added.
I need to devise a scheduling system that allows for teams to play each other based on a round robin formula, trying as best as possible to allow for a balanced alternating home and away, and not exceeding limits on number of matches that can be played in a venue. If there are a couple instances of a team playing home or away twice in a row to accommodate the venue limits or teams that play out of the same venue to play each other, that is ok, as long as it isn't frequent (hopefully no more than once per team for no more than 3 or 4 teams in a schedule). I can be flexible on this if the algorithm requires.
I have found similar solutions, including balanced home/away round-robin tournament algorithm, but this does not allow for venues that can play multiple matches but limits them.
If anyone can point me in a direction or provide some insight, I would greatly appreciate it. I'm hoping for an asp.net/vb.net solution to this, but if anyone has a formula that helps with this I can do my best to program it out in asp.net.
I should mention that the venue/team information is going to be stored in an MSSQL database (including the match limit per venue), as well as this schedule once it is created, and it will need to be called back on queue as well.
Thanks very much for your time and effort!
EDIT
I don't believe I was specific enough on this item:
Each team must pick a venue to play out of, and that's part of the alternating home and away requirement; if a venue can hold 4 home teams, then at least 2 of those teams must play away and 2 of those teams can play home every week. The reason I say 2 of those teams must play away is to ensure that no more than 2 teams play home in that venue and exceed the limits of that venu. And the teams can play each other, one as home and one as "away".