如何開發一個高效的約束作業調度?在java中約束編程
調度應包括下列方法:
startBeforeEndOf(Job j)
startAfterEndOf(Job j)
startBeforeStartOf(Job j)
startAfterStartOf(Job j)
endBeforeEndOf(Job j)
endAfterEndOf(Job j)
endBeforeStartOf(Job j)
endAfterStartOf(Job j)
每個職業都有一個ID,時間參數。
這個問題的一個可能的解決方案,可能是基於技術回溯。作業被用作選擇點,時間瞬間作爲選擇(在最壞的情況下,活動的總持續時間是工作持續時間的總和,導致完全順序執行)。
或者,我應該充分表示數據,然後在時間軸上生成一個調度,將工作置於約束條件下,並在不滿足約束時將工作向前移動(以及所有依賴它的作業)。 但我不知道我在java中能做到這一點。
換句話說,我正在尋找一種方法來避免強烈的回溯方法,在所描述的作業管理中。
這是功課?你知道任何可用於此的算法嗎?您可以在搜索過程中添加啓發式算法,但回溯算法似乎是解決方案的一部分。除非你希望去詳盡的搜索當然:-) – 2012-03-24 09:49:28
我想使用各種列表來分隔每個工作,根據他的約束,例如私人列表 startBeforeEnd; \t私人列表 startAfterEnd; \t私人列表 startBeforeStart; \t私人清單 startAfterStart; \t私人清單 endBeforeEnd; \t私人清單 endAfterEnd; \t私人清單 endBeforeStart; \t私人清單 endAfterStart; \t私人清單受限;但我不知道如何能夠發展這一點。 –
AndreaF
2012-03-24 09:57:36