我正在爲一家工廠設計一個項目管理應用程序。該應用程序預計將生成草案項目計劃。要計劃任務,應用程序應該檢查三個條件:找到無資源插槽的算法
- 任務相關性 - 不要啓動前,
- 機器的可用性,並
- 輪班工作小時
我跟蹤機訂婚machine_allocations
表格:
machine_allocations
+------------+--------------+-----------------+---------------+
| machine_id | operation_id | start_timestamp | end_timestamp |
+------------+--------------+-----------------+---------------+
班次按照模式。
現在,找到最早可能日期時間的操作我想到一個功能:
function earliest_slot($machine_id, $for_duration, $no_sooner_than) {
// pseudo code
1. get records for the machine in question for after $no_sooner_than
2. put start and end timestamps into $unavailable array
3. add non-working times as new elements to the array
4. in a loop find timeslots which are not in the array
5. if a timeslot is found which is equal to or bigger than $for_duration, return that
}
我的問題是,這是一個好的方法嗎?有沒有簡單的方法來做到這一點?
謝謝你的建議。我知道這樣制定的計劃不會是最佳的,這就是爲什麼我稱之爲「草案計劃」。我不向客戶承諾,它可以讓他們擺脫手工調整時間表的需要。所以我正在接近它的方式來保持複雜性。因此,對於我計劃提供的*有限效用值*,您是否發現該算法是最簡單的? –
我認爲這個算法很簡單*對它沒有任何影響。如果你有一個簡單的解決方案,不要浪費時間尋找最簡單的解決方案,尤其是如果你的需求可能會改變...... – Artelius
*非常好的建議*。你是對的 - 我最好去實施它! - 我會記得最後一個(我保證;))。 –