を生成します。各従業員のための私は列を持つ従業員のスケジュールのcsvファイルを与えられていた従業員のスケジュールに基づいて、最も近いチームC#
employee ID, first last name, sunday schedule, monday schedule, ... , saturday schedule
1週間のスケジュールを。私はcsvファイルの一部のスクリーンショットを添付しました。総ファイル数は約300行です。
各チームの従業員がお互いに最も近いスケジュールを持っているように、私は(場所は関係ありません)従業員のスケジュールに基づいて、15のチームを生成する必要があります。スケジュールの配列に
解析csvファイル(私自身の構造体の定義)のチームに同じ正確なスケジュールを持っている
マッチ従業員は(〜5つのフルサイズのチームを作成し、私が試したものの擬似コード20〜25人の半分のチーム、誰もが一致しない〜50人のスケジュールを残す)
i = 1〜14の場合、サイズiのチームのそれぞれについて、全体)、メンバーをそのチームに追加します。チームが15に達すると、「完了」とマークします。
これは多少は機能しましたが、間違いなく私に最高のチームを与えてくれませんでした。私の質問は誰もこれを行うためのより良い方法を知っていますか?擬似コードまたは単に一般的なアイデアは、おかげで、感謝します。
EDIT:次の例は比較式の例です。 比較はエージェントのスケジュールの差が30分のブロックに基づいています。エージェント25はエージェント23と24とで8時間30分の差があるため、スコアは16です。チームの合計スコアは、一緒に追加されたすべてのスコアに基づいて32です。
わけではありませんすべてのエージェントは、8時間の日の仕事、そして多くは、彼らの「近さ」のスコアに最も大きな影響を持ってオフに別の日を、持っています。また、いくつかのエージェントは、通常のスケジュールよりもある日に異なるスケジュールを持っています。たとえば、あるエージェントは月曜日に午前7時から午後3時まで働くかもしれませんが、火曜日には午前8時から午後4時まで働きます。
"ベストチーム"をどのように定義しますか? – mrogers
各チームの従業員がそれぞれのスケジュールの差異が最も小さい場合。 – obl
@mrogers:これは本当の質問です。メトリックを取得したら、最適化を開始できます。 –