我正在開發一個交互式作業調度應用程序。給定一組具有相應容量/可用性配置文件的資源,一組要在這些資源上執行的作業以及一組確定作業順序的約束條件以及我想讓用戶手動移動的作業的最早/最近開始/結束時間周圍的工作。本質上,我希望用戶能夠「抓取」作業網絡的一個節點,並及時拖拽該作業網絡,而不會違反任何約束條件。調度應用程序中的約束圖轉換
該圖顯示了一個簡單的示例配置。最後的三角形工作表示所有工作的最後完成時間,工作之間的連接線對工作施加一個訂單,灰色/綠色條表示資源的可用性和負載。
您可以拖動任何作業來壓縮計劃。請注意,由於容量配置文件不同,作業的長度會發生變化。
我已經實現了一個ad-hock算法,它可以工作。但是,仍然會有失敗並違反一些限制的情況。然而,由於作業車間調度是一個經過深入研究的領域,有很多算法和啓發式方法來尋找一般NP難題的最佳(或較好)解決方案 - 我認爲解決方案應該適用於我的更容易的子集。我研究了約束編程主題,甚至基於物理學的解決方案(通過靜態關節連接的剛體),但到目前爲止找不到合適的東西。任何指針/提示/提示/搜索關鍵詞對我來說?
我完全不明白這個問題,對不起。爲什麼工作的長度會改變?當你說搶和移動節點時,你是什麼意思?工作是一個節點嗎?謝謝。 – 2010-01-04 01:14:56
上面顯示的網絡可以通過交互式拖放操作進行修改。點擊一個作業(圖中標記爲「作業」的節點)並將其移動到別處。由於作業持續時間取決於可用容量(灰色/綠色條),因此作業長度在移動時會發生變化。 – BuschnicK 2010-01-04 09:47:38
我也不明白。是否需要其他工作來滿足特定的工作運動 - 比如說,如果您將job032左移,job029和job031以某種方式重新安排自己,以便job031在job032啓動之前仍然完成?如果是這樣,你需要告訴我們我們可以做的其他工作 - 及時移動,改變資源等?是否簡單地分享資源(即,在同一資源上運行的兩個單元工作作業需要2個單位時間才能完成)? – 2010-01-05 06:21:59