我正在研究一個應用程序,我需要按照輪流計劃自動爲成員安排作業。我不是很擅長解釋規則,所以這裏有一些數據可以幫助您:作業調度問題
職位:職位名稱,每週一星期三和星期三。
類別:一組職位
分組:另一組職位。
成員:在指定日期分配給職位的用戶。
對於本月中的每個日期,成員被分配到職位(均按升序排列)。如果一個成員被分配到一個類別中的一個位置,下一次出現同一類別中的一個位置時,下一個成員按字母順序(或列表的開始)被賦值,例如。
成員:M1,M2,M3,M4
位置在C1類:P1,P2,P3
成員的位置P1:M1,M2,M3,M4
成員的位置P2:M1,M2, M3
位置P2中的成員:M1,M3,M4
如果M1分配給P1,如果P2接下來,M2將被分配。另外一層複雜性被引入,如果P3接下來,M3會被分配。系統必須跟蹤M2被「跳過」的事實,並且如果可用則指定M2,然後指派M4,或者等到它到達M2可用的位置(當跳過許多跳過時,這變得更復雜'成員)。
如果他表示他在該日期不能使用,則會員將被跳過。系統需要優先考慮跳過的成員,當他們出現時以某種方式識別他們,然後跳到列表中的下一個邏輯人員。由於日期衝突,跳過也適用於羣組。
我已經有一個臨時的[和凌亂]的解決方案,我不再理解,即使我有很多意見,在解釋每一步。它的弱點在於處理跳過的成員。
如果你打算編碼,你會怎麼做?我在PHP中實現這一點,但僞代碼也可以。
有沒有需要考慮職位的時間?當你說同一組中的職位不能在同一天進行分配時,你的意思是他們不能被分配給任何人(即在一天中只有一個職位可以被填補)或被分配到一個職位的人在一個組中不能被分配給任何其他? – outis 2009-12-19 22:29:26
我的意思是有人可以在同一天填補兩個職位,除非他們碰巧落在同一個團隊中。 – Zahymaka 2009-12-20 20:39:51