View Single Post
Old Sep 29, 2011, 12:22 PM
n/a Posts
RE: F3J Flight Matrix Calculations

Jim, try gliderscore here...

Joe Wurts says it does a pretty good job of getting a non random, evenly distributed flight matrix developed. He says that it uses a program similar to one he designed to do just what you are attempting to do. Goal should be to get each pilot to fly against other pilots an even amount of times. So the software has to check for previous pilot matches and throw out recurrances.

Hope this helps. You could contact Joe directly, but I only have his RCGroups contact.



-------- Original Message --------
Subject: [RCSE] F3J Flight Matrix Calculations
From: "Jim Monaco" <>
Date: Thu, September 29, 2011 10:15 am
To: <>

#wmQuoteWrapper /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;}
#wmQuoteWrapper @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;}
#wmQuoteWrapper /* Style Definitions */ p.MsoNormal, #wmQuoteWrapper li.MsoNormal, #wmQuoteWrapper div.MsoNormal {margin:0in; margin-bottom:.0001pt; font-size:11.0pt; font-family:"Calibri","sans-serif";}
#wmQuoteWrapper a:link, #wmQuoteWrapper span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline;}
#wmQuoteWrapper a:visited, #wmQuoteWrapper span.MsoHyperlinkFollowed {mso-style-priority:99; color:purple; text-decoration:underline;}
#wmQuoteWrapper p.MsoPlainText, #wmQuoteWrapper li.MsoPlainText, #wmQuoteWrapper div.MsoPlainText {mso-style-priority:99; mso-style-link:"Plain Text Char"; margin:0in; margin-bottom:.0001pt; font-size:11.0pt; font-family:"Calibri","sans-serif";}
#wmQuoteWrapper span.PlainTextChar {mso-style-name:"Plain Text Char"; mso-style-priority:99; mso-style-link:"Plain Text"; font-family:"Calibri","sans-serif";}
#wmQuoteWrapper .MsoChpDefault {mso-style-type:export-only; font-family:"Calibri","sans-serif";}
#wmQuoteWrapper @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in;}
#wmQuoteWrapper div.WordSection1 {page:WordSection1;}
#wmQuoteWrapper /* List Definitions */ @list l0 {mso-list-id:358509765; mso-list-type:hybrid; mso-list-template-ids:453537062 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
#wmQuoteWrapper @list l0:level1 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l0:level2 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l0:level3 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; text-indent:-9.0pt;}
#wmQuoteWrapper @list l0:level4 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l0:level5 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l0:level6 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; text-indent:-9.0pt;}
#wmQuoteWrapper @list l0:level7 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l0:level8 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l0:level9 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; text-indent:-9.0pt;}
#wmQuoteWrapper @list l1 {mso-list-id:388187824; mso-list-type:hybrid; mso-list-template-ids:832891552 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
#wmQuoteWrapper @list l1:level1 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l1:level2 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l1:level3 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; text-indent:-9.0pt;}
#wmQuoteWrapper @list l1:level4 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l1:level5 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l1:level6 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; text-indent:-9.0pt;}
#wmQuoteWrapper @list l1:level7 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l1:level8 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;}
#wmQuoteWrapper @list l1:level9 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; text-indent:-9.0pt;}
#wmQuoteWrapper ol {margin-bottom:0in;}
#wmQuoteWrapper ul {margin-bottom:0in;}

As many of you know I regularly run F3J events and handle all the matrix and scoring tasks. In the past I have always generated the flight matrix using a random assignment and rarely have any complaints. However, I am now looking at generating the fairest possible matrix for the US F3J Team Selections and have run a number of tests and often see anomalies in the matrix where a pilot flies against another an inordinate number of times or very few times. I ain't the sharpest pencil in the box, so I could use some suggestions on how to improve the matrix from some of the smart math people in the group. I am a programmer so if I understand the algorithm I can program it.. :)

Here are the constraints:

1. There are 10 teams

2. Each team consists of 4 pilots (if there are less than 4 pilots a BYE will fill the empty slots).

3. Each pilot will fly once in a round (so there are 4 groups in a round)

4. Pilots on the same team are protected and will never fly against another team member.

5. We will schedule 24 total rounds in the matrix

Here is what I have attempted so far:

1. Pure random – for each round I process each team. On each team every pilot has a fixed pilot number between 1 and 4 (including BYES). I then compute a random sequence of the position numbers 1-4 and assign the flight group based on that sequence. Repeat for each team. When all teams have been computed for a round I go on to compute the next round.

2. Random with statistical preference – I do the above, but I calculate a factor to use in determining the variance in the matrix and run 1000 trials and select the one with the least variance. To do this I compute and record how many time each pilot flies against the other pilots. For each pilot I compute the standard deviation of these numbers. I then add all the pilots standard deviations together and compute the average standard deviation for the entire matrix. I pick the matrix that generates the lowest standard deviation in 1000 trials. Generally I see a minimum standard deviation of about 1.28. Some individual matrix SDs are 1.9 or so.

3. Random with statistical preference and permutiations – for this approach I calculate all the possible permutations of the sequence 1-4. Then for each team I generate a random sequence of those permutations (1-24). I then assign the group position for each pilot in a round based on that teams random set of permutations. I then do the same as #2 and calculate the minimum SD of all the matrixes and select the lowest. Interestingly this approach was nearly identical in minimum SD as the #2 approach.

It just feels to me like there should be a better way to get a more even distribution – I’m hoping one of you math heads out there can help me improve the matrix…

If not – it is what it is and I did my best…


You received this message because you are subscribed to the Google Groups "RCSE" group.
To post to this group, send email to
To unsubscribe from this group, send email to
For more options, visit this group at

You received this message because you are subscribed to the Google Groups "RCSE" group.
To post to this group, send email to
To unsubscribe from this group, send email to

For more options, visit this group at