私たちは20人のグループで、2対2のテニス試合をしたい。私たち一人一人が各試合を行い、合計5試合を行い、全員が5試合をプレーします。試合は、2つの制約があります。バランスの取れたテニスラウンドを作成する
- 誰もが(1〜5)異なるレベルを持っているので、マッチはバランスをとらなければならない:レベル5と5との2人の選手が間ので、2つのレベル1と一致することshoulnd't 2つのチームでは、レベル差は1.5以下にする必要があります。
レベル:レベル1.5およびレベル2対レベル2およびレベル2.5。チーム間のレベル差は1であるので、試合は受け入れられる。 - 2人のプレーヤーが1試合で一緒にプレーする場合、次の試合でもう一度試合をしてはいけません。
私は上記のようなpythonスクリプトを作成することができましたが、人のレベルによっては20分ほどかかります。私がしていることは、リストを1つずつシャッフルして、4人のリストから5つのリストに分け、条件が満たされているかどうかを確認し、毎回繰り返します。
リニアプログラミング(LP)で問題をモデリングしようとしましたが、どの機能が最適化するのかわかりません... LPの有無にかかわらず、どのようにするのですか?
ありがとうございます!
LPで十分でない場合は、(ミックスド)整数プログラミング(ミディアム配合難易度)が必要です。あるいは、Constraint-Programming(最も簡単な処方)またはSAT-solvers(最高の処方困難)を使用することもできます。 – sascha
私はそれを見てみましょう!ありがとう! – watxaut