裏話
これが問題です。私は3人家族で暮らしており、長男は家事を一人でやるのに飽き飽きしています。私たちはさまざまなタスクのスケジュールを作成しようとしましたが、私たちの1人が家にいなくて雑用が取り残されたか、誰かが他の人よりも多くの仕事をしていると感じて、恨みや雑用を完了したくないという問題が常にありました。
問題
人間は間違いますが、コンピュータプログラムは間違いありませんよね?アイデアは、コンピュータプログラムを使用して、実行する雑用を公平に分散し、誰も自分がもっと仕事をしているように感じられないようにすることができるということです。私はこれらの基準に準拠した雑用を分散するアルゴリズムを考え出そうとしています。
- 長期的には約1/3の確率で家事を均等に分散する必要があります。
- 最初のリストが利用できない場合、2番目のリストがそれを完了することができるように、順序付けられた人々のリストを返す必要があります。
- 同じ日に1人あたり複数の雑用をスケジュールすることは避けてください。
- 同じ人に同じ雑用を複数回連続してスケジュールすることは避けてください。
- 偏差に耐える必要があります。予定された人が雑用をしなかった場合でも、実際に雑用をした人がフィードバックされれば、それは公正なままであるはずです。
- それは異なる頻度で異なる雑用で動作するはずです(あなたは毎日皿洗いをする必要がありますが、週に一度だけバスルームを掃除する必要があります...)
私の質問は、このアルゴリズムを実装するための最良/最もクール/最も公正な方法は何でしょうか? (ばかばかしいほど洗練されたソリューションは高く評価されています:D)
私は何を試しましたか?
このようなアルゴリズムを実装する簡単な方法は、さまざまな基準のコストテーブルを定義し、加重乱数を使用して人を選択することですが、これは長期的には公平ではないと思います(実際には制限する必要があります) 1人あたり1/3に向かって、またはそれは受け入れられません:))。