Logon | Search | Help

Home | Directory | Clubs | Fields | Links

How to Generate SchedulesPrintable

The website can generate schedules for PlayingLeagues. Schedules and standings are designed for intra-divisional play. There are no provisions for inter-divisional play. Schedule generation uses 'Pairing Grids'. Pairing grids are stored in the format of Week 1: Team 1 v Team 2, Team 3 v Team 4 ....; Week 2: Team 3 v Team 1, Team 4 v Team 2..... etc.

The pairing grids are designed to give each team the same number of home and away games. The pairing grids are also designed to minimize the number of home or away matches in a row. The pairing grids will not give a team 5 home matches followed by 5 away matches. There are many different pairing grids stored. They are designated in a # of Teams - # of Matches format. So PairingGrid 7-10 would be for a division of 7 teams playing 10 matches. See the FAQ PairingGrids for details.

Note a pairing grid should not have an odd number of teams and an odd number of matches. This odd-odd situation gives an odd number of match slots. Since each match 'consumes' two match slots, then one team would have one more or one less match than the other teams. However, there are some odd-odd pairing grids stored in the Options-Settings. Only use these odd-odd pairing grids if you realize that there will be an imbalance.

A division is a group of teams, typically sorted by PlayingLeague, Class, Gender, Age and Bracket. Examples: Redwood, Class3, BU10, Red; Abronzino, Class1, GU15, 1; Delgado, Class3, GU13. When a division has an odd number of teams, not every team can play on every play date. At least one team will have a bye. Byes are NOT designated as such in the database. Simply the team does not have a scheduled match on their bye date.


When a Division is selected (Division = combination of PlayingLeague, Age, Gender, Bracket) there are typically 5 - 11 teams in a Division. The teams in the division are listed in a 1 to n order and are listed in order of increasing Placement Key #. Using Placement Key # tends to randomize the order of teams. The permutation 'maps' the teams in the Division (ordered by Placement Key #) to the Team# in the PairingGrid.


Clubs and Teams can select dates where they can indicate: No Match on this date. No Home Match on this date. No Away Match on this date. This information is stored in the Unavailability Table. Teams can select these NoMatch dates during the registration. Examples: Half Moon Bay Soccer Club can designate the Pumpkin Festival weekend in October as a No Match date. With such a designation,, if a Half Moon Bay Team is in a division with an odd number of teams, each team will get a bye date. The Unavailability designation will try to give Half Moon Bay Team a bye the weekend of the Pumpkin Festival. Futhermore they can also designate the same dates as NoHomeMatch date. This will tend to give the team an Away game on this weekend. Consequently, the team will be traveling away from Half Moon Bay during the weekend. However, if the Half Moon Bay team is adament that they do NOT want to play this weekend, perhaps they should select NoAwayMatch on this weekend. This will tend to give the Half Moon Bay team the home match giving them more control in the reschedule of this match.


Two factors are used to optimize the Schedule

  1. Unavailability: Only the permutations with the lowest conflicts with the Unavailability Table are considered. All permuations are looked at and a conflict score computed. Those permutations with the lowest conflict score are further considered.

  2. Balance: The # home matches and # of away matches for each club on each play date are considered. A permutation is chosen which gives the best balance between home & away matches for the clubs and dates involved in this divsion.

Balance by Club and Date Table

This Table shows a grid between Clubs and PlayDates. For each grid point the number of home mathces and the number of away matches for that Club on that Date are counted. The first value is the Ratio used to calculate the Balance. The second value is called Phi See Administrator:Tools-Phi for a computation of Phi. The third value is called Robust. It is similar to Phi. Robust = ABS(H-A)*(MAX(0,(ABS(H-A)-1))*(MAX(0,(ABS(H-A)-2) Balance, Phi and Robust are different objective functions used to try to differentiate between different schedule permutations to identify the 'Best' permutation. Balance is the sum of all the Ratios (or InverseRatio) on all the grid points. For Ratio the highest Balance score is selected. For InverseRatio the best permutation would have the minimum value.

Balance Function - Ratio or InverseRatio

The Ratio is the Number of Home / Number of Away Matches (or the Number of Away / Number of Home Matches) such that the Ratio is less than 1 and is not divide by zero. The InverseRatio is the Number of Home / Number of Away Matches (or the Number of Away / Number of Home Matches) such that the InverseRatio is greater than 1. In the divide by zero situation, the value is set to the Maximum(Number of Away, Number of Home) + 1

Play dates

Go to Administrator:Options-Settings and edit the Setting=PlayDates. You will need to logoff and logon or click on the refresh icon in order for the change in Setting to take place on your computer. Divisions with odd number of teams will need more play dates. Number of Play Dates required is detailed in the FAQ PlayDates Factors to consider when selecting play dates

  • Saturday or Sundays: Redwood is primarily a Sunday League. Abronzino is primarily a Saturday League

  • District 2 Cup: Typically do not schedule matches on dates that the team may be playing in D2Cup

  • High School: U14 and older teams can have high school players. In our area, high school players can not play club matches after November 15.

  • SAT dates. U17+ (and maybe U16) can have high school juniors. They will not appreciate matches on test dates.

  • PSAT date. U16 and U17 teams can have high school juniors. Nearly 100% of the juniors in high school take the PSAT test in mid October. Matches can be scheduled for the late afternoon.

  • ODP dates. Class1 teams may have players in the ODP. They will not want matches scheduled on these dates.

  • Tournament weekends. CYSA sanctioned tournaments typically are on the last weekend of the month. Some teams will participate in these tournaments.

  • Labor day weekend. Some teams will be out of town or have their families out of town.

  • Columbus Day. Some schools / businesses have a holiday for Columbus day.

  • Thanksgiving.

  • School start. Schools can start from mid-August to mid-September. Some schools are on year long schedules and get time off in October.

  • Weather In general try to front load the schedule, in the event of a rainout, matches can be rescheduled later in the season.

How to generate a schedule

Below are the steps to generate a schedule for a Division (PlayingLeague, Gender, Age, Bracket)

  1. Decide which Division you wish to Schedule. ie Delgado Class3 BU11 Bracket A for example. This must be correct in all aspects.

  2. Go to LeagueOfficer:Tools-Set Brackets and make sure each Team in the Division of interest has been Accepted. It is possible to schedule Editing and Submitted teams, but you should look over the Status for the teams in the Division.

  3. Go to LeagueOfficer:FAQ-Schedules and read about the minimum number of play dates for different Pairing Grids. If nothing else glance at this page as some of the odd number divisions have some weirdness in the scheduling that you should be aware of.

  4. Go to LeagueOfficer:Tools-Schedule Enter ALL the data via the pulldowns. Playing Grids are in a #Team - # Matches format (ie Pairing Grid 7-10 is 7 teams playing 10 matches) Enter the Play dates - Pretty critical that they be in order from earliest to latest date. Otherwise you can have A vs B on Saturday and B vs A on Sunday of the same weekend. See below.

  5. Clear out the 'Grid Order' box. (Highlight and delete the entry. )

  6. Set Timeout time in seconds. (How long are you willing to wait for optimization routine to run?)

  7. Click 'Show' This checks if the division, and pairing grid and inputs are all consistent. Common errors are wrong pairing grid, wrong number of play dates, wrong size grid order (erase it).. Fix errors and hit 'Show' again..

    A Balance by Club Date Table will appear. See 'Balance by Club Date Table' below.

  8. Click 'Optimize' See below for what is happening. Depending on the size of the division you may have to wait till the procedure times out.

  9. Click 'Generate' This will load matches into the schedule. If you rerun this division, it will over write the existing Matches. Alternative Click 'Offline'. See below for Offline discussion. Note - Generate will delete any existing Matches for this division before generating the new matches.

  10. Select another Division. Change the inputs and repeat. I find it best to repeat the brackets with the same dates and pairing grids first and then change pairing grids and finally change dates.


Instead of 'Generate' you can click 'Offline'. Offline creates a Setting which stores the schedule generation criteria. At a specified time, the server looks for these Settings and will Optimize and then Generate the schedule specified by the Setting. Currently (January 2010) the Offline process runs once a day at 1 AM. At the conclusion of the Offline process for each Division, the matches are generated, a message is sent to the Administrator/Scheduler and the Setting is deleted. Note - Before generate any existing Matches for this division will be deleted before generating the new matches. If there is another Offline Setting, it will then start.


As of January 2010: A Division with 6 teams takes under 2 seconds to optimize. A Division with 7 teams takes under 20 seconds to optimize. A Division with 8 teams takes under 100 seconds to optimize. A Dvision with 10 teams takes under 10,000 seconds to optimize.(2.75 hours)

Offline Strategy

Schedule the largest division(s) first. The very first division that is run needs essentially no optimization. 50 seconds is sufficient in the event that two or more teams from the same club are in the division. Divisions with 11 or more teams should be next. These divisions are prohibitive to examine all the permutations. Select how long you want these divisions to run. It may be helpful to schedule 2 or 3 large divisions a night for several nights in a row. Try to avoid scheduling more than 24 hours of offline processing. Retain the 6 team divisions for the end as they are the easiest to optimize. Note: the optimization process has some hysterisis. Rerunning a division will not necessarily provide the same solution. Nor will rerunning a division necessarily improve a solution.

Manual Override

If you are so inclined, you can select a specific permutation. This can force a specific team to take a specific spot in the PairingGrid. Enter the selected permutation in the Permutation box and then click Generate.