Need help with team bowling schedule.

I volunteered to make up the team bowling schedule and I’m having a heck of a time with it. It seems like there should be some sort of program online to do this but I can’t find one.

There are 8 bowlers but only 4 bowl each week and 30 weeks of bowling. Everyone wants to bowl half the time but also see all the other bowlers in a fairly equal amount. Only one person has asked for a special request and that is for every third week off. I have gotten close by hand but I always get one or two people who only see someone else 2 or 3 times.

Is there some mathematical way to do this? I can ignore the special request and deal with that when the schedule is done with some trading.

You can certainly ignore the special request to start. Just set out 30 schedules that give everyone 15 appearances and give as much variety in opponents as possible. Only after this is done do you have to decide which schedule goes for which week. That is when you satisfy the special request, and also, I presume, make sure that everyone has a reasonable balanced schedule – not having 3 off or more weeks in a row for example. I’d do this with entire weeks, not by swapping individuals.

Here is how I would do it. To give the one person their requested time off (factor of 3) and have them bowl half the games (factor of 2), you need a schedule with 6 week intervals (3x2=6). So, build a schedule for 6 weeks for 8 slots, then randomly fill each person into a different slot each interval. The person who made the request gets the same slot each time. Now, you are dealing with a 6 week schedule instead of a 30 week schedule. If your 6 week schedule has each slot playing with each other person at least once, then every one should get to play with everyone else at least 5 times during the season.

So, try this on for size. Slot A has every third week off, and every slot will see every other slot at least once. Its a simple logic puzzle, so you could try it yourself. The guidlines are that every slot needs 3 games, and every week needs 4 bowlers. Also, I tried to make sure no slot gets 3 days in a row on or off. That will be harder when assigning players to slots for the 5 intervals, but not impossible.



	1	2	3	4	5	6
A	x	x		x		
B	x		x		x	
C	x		x		x	
D	x			x		x
E		x	x			x
F		x		x	x	
G		x			x	x
H			x	x		x

It’s still somewhat unbalanced. B and C have the same schedule. In 30 weeks, they’ll bowl together 15 times, while some pairings will only happen 5 times.

Just have the first 4 bowl the first week, then each week remove one and add the next in line. Each person plays 4 weeks then sits 4 weeks. For players labeled A through H
ABCD
BCDE
CDEF
DEFG
EFGH
FGHA
GHAB
HABC

Because you’re doing 4 of 8, everybody will play everybody at least some. Yes, each player will play the folks nearest them in the circle more often than the folks directly opposite them, but that’s probably not a show stopper.

This is an 8 week cycle, so you’ll execute it 3-3/4ths times during the course of a 30-week season. Not ideal, but you’re not going to get any better with any other arrangement. The math dictates that each player participates in 15 sessions and has 7 possible opponents which they must meet in sets of 3. None of those numbers work well together.

I’m not suggesting my solution is the mathematically optimal one; I’m just suggesting it’s pretty close and dirt-simple to do. If people object to the 4 weeks on, 4 weeks off cycle, then just shuffle the order of matchups to get most people on a two-on / two off cycle, with (probably) an anomaly here or there.

It is called a balanced incomplete block experimental design. Here is one for 28 weeks:

1 2 3 4
5 6 7 8

1 2 7 8
3 4 5 6

1 3 6 8
2 4 5 7

1 4 6 7
2 3 5 8

1 2 5 6
3 4 7 8

1 3 5 7
2 4 6 8

1 4 5 8
2 3 6 7

Each person plays everyone else three times (I think, I didn’t double check). I’ll leave it to you to figure out what to do the last two weeks. And feel free to rearrange to get the other constraints working.

Obviously that is for 14 weeks. Missed the edit deadline.

Thanks, this could be exactly what I am looking for. I think I’ll start here and tweak it with some of the other suggestions. While totally random is good some of the people are more friends than others so I’ll change it to increase their times together.

Thank you everyone else too. I tried Amblydoper’s method a few times and it turned out too uneven by the time I got to the end of the season. I’m sure I’m being too perfectionist about it, everyone changes the schedule around so much after they get it. I also started to try LSLguy’s method then got too tired of the whole thing to check every pair’s frequency.

No, because “b” and “c” are not people. different people have the B and C schedules for different blocks of 6 weeks. So long as you never have, say, Alice in slot B and Anna in slot C in one interval, followed by Alice in slot C and Anna in slot B the next interval, it wont be a problem.

On that schedule, A and E never play together.

Damn. Actually, nobody plays the person directly opposite them in the circle. B never plays F, C never plays G and D never plays H.

Each person plays the three people ahead of them and the 3 people behind them. Which totals 6 opponents. Not 7.

Oh well. At least somebody provided the no-kidding answer.

mcgato really saved the day. I must have missed or slept through whatever math class that was from. I would like to know how he got the result in case I need this in the future. I looked online but got nowhere.

I had tried all the other ways before coming here to ask for help but it just got to the point that it took too long to keep track of who bowled with who.

I ended up not tweaking it at all. I’m so happy!

Thank you again everyone. It’s a fun puzzle if you’re not pressed for time.

I’m still so happy!

I looked it up in my copy of Experimental Designs by Cochran and Cox, published in 1957. It’s an old book.

I used mcgato’s post as a good place to solve a problem I’ve been attempting that’s similar to the bowling schedule problem.

It’s an 8 person bridge game with two tables of four players (with two teams of 2 at each table).
Each round, each person is paired with someone new.
After seven rounds, every person has paired once with everyone else AND played against each person an equal number of times.

I can map it out so that everyone is linked up with a new teammate. That’s pretty easy. But I simply cannot get it so that everyone plays against everyone else equally. After 7 rounds, it should work out that you average 2 meetings against each opponent. But that’s an average. I cannot get it so that everyone ACTUALLY meets 2 times. I’ll get something like 5 people meeting twice and then a 3 and a 1, and switching things around just messes everyone up.

I don’t know if it’s possible to do. I’ve been playing with it for awhile with no solution yet.

Damn, I missed out on a block design question.

Block designs, for the record, are a branch of combinatorics. A slightly more broad concept is that of a covering design: rather than demanding that every pair of players have exactly one match together, you just demand that they have at least one match together. There’s an online catalog of such designs if you ever need to look it up again. In your case, v is the total number of players, k is the number of players in each game, and t is 2 (since you’re demanding that every possible pair of players be in at least one match, rather than every possible trio of players, every possible quartet of players, etc.)

To Enderw24,

Would this work?

1&2 vs 3&4 and 5&6 vs 7&8
1&8 vs 2&7 and 3&6 vs 4&5
1&3 vs 6&8 and 2&4 vs 5&7
1&6 vs 4&7 and 2&5 vs 3&8
1&5 vs 2&6 and 3&7 vs 4&8
1&7 vs 3&5 and 2&8 vs 4&6
1&4 vs 5&8 and 2&3 vs 6&7

I’m assuming that it does, since I think everyone is paired with everyone else once. In the original design, everyone is in the same group (table in the bridge situation) three times, so they have to face everyone as an opponent twice.

Let me see check it out

All pairs allocated: check
No repeats or duplications of numbers: check
Meetings in opposition 2 each: Check

Crap man. That’s it. Thanks!