レーシング ゲームのドライバーのリストがあり、それぞれ 3 人のドライバーのチームにドライバーを割り当てたいと考えています。各ドライバーにはレーティング (通常、およそ 500 から 5000 の間の数値で、高いほど良い) があり、このレーティングを使用してすべてのチームを均等に一致させたいと考えています。同様に、各チームのドライバーの平均レーティングが可能な限り近い値であることを意味します。
ただし、重要な追加の制約が 1 つあります。各チームを、高ランク (高評価) のドライバー 1 人、中ランクのドライバー 1 人、低ランクのドライバー 1 人で構成する必要があります。これは、レースの最終的なスコアに影響するため、重要です。中位のドライバー 3 人をチームに参加させることでチームは公平になりますが (平均レーティングは他のチームと同様になる可能性があります)、最終的なスコアリングは、毎回上位のドライバー 1 人と下位のドライバー 1 人がいるという仮定に基づいています。そうでない場合、採点は公平ではありません。
要約すると、要件は次のとおりです。
- 最大 39 個のドライバーのリストから始めます。
- ドライバーを 3 人のドライバーからなる最大 13 チームに割り当てます。
- 各チームの平均評価を他のチームとできる限り等しく保つ
- 毎回、高ランクのドライバー 1 人、中位のドライバー 1 人、低ランクのドライバー 1 人で構成されていることを確認してください。
追加の制約がなければ、各チームの平均評価を等しくしようとする最適化アルゴリズム (または力ずくの方法) を非常に簡単に思いつくことができます。しかし、その場合、同じランクのドライバーが 3 人いるチームが多くなる可能性がありますが、これは私が望んでいることではありません。この最適化問題に制約を追加するにはどうすればよいですか?
力ずくで解決できたとしても (13 チームで最大 39 人のドライバーが可能だと思いますか?)、どのソリューション (== チームと割り当てられたドライバーのリスト) が最適かを判断する方法はまだわかりません。各ソリューションの「スコア」または「適合性」を判断するにはどうすればよいですか?