テニス大会のタイムテーブルのプログラミングについて
テニス大会の乱数表(プログラミング)作成をお手伝いいただけませんか?
大会開催に関して、下記の比較的、複雑な条件下で大会を運営しています。
そこでテニス大会の乱数表(プログラミング)作成していただける方を探しています。
対戦表(~班~ペア vs ~班~ペア)×(85~100試合)
はこちらで作成いたします。
そこで、それらの試合を
以下の(1)~(17)の条件を満たしたうえで
試合投入できるようなスケジュール(順番と枠組みのみでOK)
を組めるプログラムを探しております。こちらOSはウインドウズ7です。
---------条件は以下です--------
(1)「3日」で完了する「ダブルス」のテニス大会
総人数は55~70名程のメンバーが、
あらかじめ「4つの班」 に分かれ、人数はほぼ均等に振り分けられている。
ここでは(o班、j班、n班、y班とする)
(2)班内でペアを作り、他班のペアとダブルスの試合する。
一人あたりの試合数がおおよそ6試合前後になるように私が組んでいるが、
各人の試合数はその人によって異なる。
(大会の総試合数はおおよそ80~100試合ぐらい)
レベル別に近い者同士がペアを組んで、他の班のおおよそ同レベルの相手と試合できるように事前に組んでいる。
なので、すべての対戦内容は(班内でのペアと、 その対戦相手の組み合わせ)は予め決まっているし、
各々の試合内容は大会内での他の試合の結果から変動することはない。
(3)大会プログラムは1日目、2日目、3日目ともに
・朝A (3試合)
・朝B (6~8試合)
・朝C (4試合)
・昼A (3試合)
・昼B (9~12試合)
・夜A (2試合)
以上のような予定で行うとする。
(4)コートについては、頃合いをみて運営スタッフが空いたコートに試合をコールする。
ゆえに最大のコート数や、コート番号はここでは無視する。
(5)3日目は、1、2日目のどちらよりも少ない試合数であるとする。
また、1日目と2日目の試合数の差は最大3つまでとする。
(6)1人が一日分として試合できる数は1~3試合である。
0試合と4試合以上は不可能とする。
(7)朝A,Bでの試合を禁止される人もいる。各人について入力欄を設け制約の変更がきくようにしたい
(8)一日分で3試合行うことがが禁止される人もいる。各人について入力欄を設け制約の変更がきくようにしたい
(9)個々人にについて
試合間隔は「自分の入っていない6試合」 を空けなければ次の試合に入ってはならない。
「6試合分の時間」ではなく「必ず6試合あける」こととする。
この条件(9)は日にちごとに有効だが、日は跨がない。
(10)「朝A、昼A、夜A」 の(2試合または3試合)は、条件(9)の試合間隔を計算する際には、
まとめて1試合分としてでカウントする
例えば、、、
・(朝A-1~朝A-3)のいずれかの試合に出場した選手は6試合の間隔をあけるため、
(朝B‐1 ~ 朝B-6)には出場できない。
・朝C-4に出場した選手は6試合の間隔をあけるため、
(昼A-1~昼A-3、昼B-1~昼B-5)には出場できない。
(11)夜Aで対戦を行うペアとその対戦相手ペアは初めから決まっていて固定である。
配置・内容は変動しない試合だが、試合出場者はその他の条件の対象としてカウントされる試合である。
(12)ある試合が「その試合の参加者(4名のうちの誰か1人、もしくは2~4人で複数の可能性もある)にとっての、
その大会内での最後の試合」となるように設定しなければならないことがある。
例えば、一人あたり6試合行う人がいたとしたら、その人にとって必ず6番目に持ってこなければならない試合
が存在する可能性がある。
(13)(n班のペア vs y班のペア)による対戦が3つ以上連続してはならない。
またこれは、(n班,o班,y班,j班) のすべての班同士についても同様とする。
ただし夜Aの試合については考慮しない
(14)n班全体で見たときに、 y班のペアとの対戦が一日分の試合の半分以上を占めてはならない 。
またこれは、(n班,o班,y班,j班) のすべての班同士についても同様とする。
(15)もし3日間の大会ではなく、 2日間の大会だと総試合数は60試合程度になる。
その場合、2日目の試合数が1日目より多くなってはいけない。
(16)大会が2日間のときでも、(1)~(17)を満たすスケジュールを出力できるプログラミングの仕様だと望ましい。
3日間用と2日間用が別々になっても大丈夫です。
(17)出力される3日間のスケジュールは以上の条件を満たす、ランダムに1パターンないしは、全パターンの出力が望ましい。
-------------条件は以上ですーーーーーーーーーーーーーー
8月31日の大会に間に合わせたいと考えています。
が、難しい場合については
(12)(13)(14)(15)の条件については,
手作業で満たしているかどうか確認を行うので省いても大丈夫です。
補足
コース数と参加人数を入力しておおまかな表を作って そこに条件付けできるようなタイムテーブルを作りたいんです。 例えば、男女混合の水泳大会ならば まず コース(場所)数入力 平均の試合時間を入力 して、自動的にタイムテーブルが作成でき 条件付け(ここでは男女を分ける)などの機能も付けたいのです。