私は現在プロジェクトに取り組んでおり、このシナリオを解決するテクニックを探しています:
多くのテストのいずれかを受けるために部屋で待っている人がいます。各人に複数のテストを割り当てることができます。各テストは、指定された時間に 1 つまたは複数の場所で実施できますが、一度に指定された場所でテストを受けることができるのは 1 人だけです。
人々を無作為にテストに割り当て、最終的にはすべて完了するのは比較的簡単ですが、人々が比較的均等に待つようにするには、どのようなシステムを使用すればよいでしょうか? 無作為に割り当てると、1 つしか受けなくてよい人が 5 つ受けなければならない人の後ろに置かれる可能性があります。
テストの数が少ない人を最初に割り当てることを考えましたが、まだテストしていないので、まだ不公平だと思われます. 複雑さを増すために、優先度を変更できる機能を追加しています。
明確にするために、これは宿題ではありません。このプロジェクトはまだ論理的な開発段階にあるため、さまざまな手法を比較するためのプログラミングを実際に開始していません。私が考えた最も近いものは、スレッドプールのように機能するシステムを作成することですが、スレッドプールの背後にある技術の詳細な説明を提供するものは何も見つかりませんでした。スレッドプールを直接使用した場合でも問題が発生します。C# Queue クラスも調べましたが、その機能を拡張する方法は考えていませんでした。
アイデアや提案はありますか?