私はレールでコールセンターソフトウェアを開発しており、顧客向けのコールを処理できるエージェントのアポイントをスケジュールする必要があります。コールセンターのソフトウェアを話したら、できるだけエージェントのスケジュール全体を利用してアポイントをスケジュールし、最低限のホール(エージェントにはアポイントがない)のスコープを残しておく必要があります。ルビー/レールでのアポイントメントスケジューリング
午後1時から午後1時30分までの昼休み30分の午前9時から午後5時30分までのエージェントのスケジュールを指定すると、約60分、約90分です。
何らかの理由で昼休みがスケジュールに穴が残っていると、昼休み30分+/-を移動できるはずですので、午後1時から午後1時30分ではなく午後1時30分 - 2:00 PMまたは12:30 PM - 1:00 PM。
私は、ランチブレイクを開始して、starts_at属性とfinishes_at属性を柔軟に移動できるようにする予定でした。そして、任命は30分の倍数であり、昼食も30分である60分か90分のいずれかであるので、私は30分のスロットにエージェントのスケジュールを分割し始めました。
私は自分のスケジュールを見て、それぞれのエージェントのスケジュールを見て、それぞれ30分の長さのスロットをインスタンス化し、starts_atとfinish_att属性は午前9時〜午前9時30分、 10:00 AMなど
私は、この予約スロットの配列をループし、60または90分間の予定に応じて2つの連続するスロットまたは3つの連続するスロットをプルするのに役立つ必要があります。ランチ+/- 30分を移動します。
ご迷惑をおかけして申し訳ありません。
@ vinceh-詳細な説明と関連する部分へのリンクありがとうございます。あなたが提供した貪欲なアルゴリズムのリンクを見るまで、私はこの問題の複雑さを理解していませんでした。また、最も単純なアプローチでは、特定のタイプのアポイントメント(ランチブレイクのようなものですが、ランチブレイクは低優先度とみなされます)を削除するという問題を提示しました。優先順位の高い予定。すべての要件を考慮すると、複雑さを想像することはできません。 – Dharam