摘要:是否存在符合以下约束条件的有效计划?如果是这样,生成它的一般算法是什么?
我正在安排一支由14支球队组成的联盟。每个星期每支球队都会打双头(两场比赛)。有7个领域。每个球队都应该每晚都打两场比赛。在7周内,没有球队应该第二次打同一个对手。 (上周只是一个标题,因为每个团队只需要13轮游戏就可以看到其他人。)
到目前为止一切顺利;我可以generate this schedule。每个团队都有独特的字母,其中一个表如下:
Week 1: AN BM CL DK EJ | FI GH
AM LN BK CJ DI | EH FG
Week 2: AL KM JN BI CH | DG EF
AK JL IM HN BG | CF DE
Week 3: AJ IK HL GM FN | BE CD
AI HJ GK FL EM | DN BC
Week 4: AH GI FJ EK DL | CM BN
AG FH EI DJ CK | BL MN
Week 5: AF EG DH CI BJ | KN LM
AE DF CG BH IN | JM KL
Week 6: AD CE BF GN HM | IL JK
AC BD EN FM GL | HK IJ
Week 7: AB CN DM EL FK | GJ HI
但上面的酒吧显示有皱纹。 5个字段位于一个位置,2个字段位于第二个位置。非常不希望团队在一个位置玩第一场比赛而在另一个位置玩第二场比赛。
G
和H
以及F
团队将留在第二个位置,但是E
和{{1}必须在游戏之间切换位置。 是否有可能制定一个时间表,其中位置2总是有四支队伍留在那里进行两场比赛?或者是否有限制使得这不可能(以及上述其他限制)?
如果有这样的时间表,是否有一般算法来生成它?
为了实现这一点,位置2的游戏需要看起来像:
I
由于我使用的循环算法,我上面生成的时间表没有任何这样的游戏对。在我看来它应该是可能的,但几十万次通过模拟退火算法按摩该时间表,我似乎无法达到一定数量的所需位置传输。