2013-12-08 18 views
1

我是一位Java/C/Python開發人員,他正在幫助管理定製產品商店的親戚。我是新來optaplanner和一般contraint編程,所以我的問題是:OptaPlanner中的多項目作業調度

1)低於在optaplanner 可能可解(或其替代品之一)調度問題?

2.)什麼樣的算法最適合這個問題?它似乎與(優秀的)OptaPlanner文檔中給出的Project job scheduling示例非常相似,但它具有在任何給定時間調度多個項目的附加約束。

簡化問題是:

  • 在任何給定時間,有1至Ñ項目。
  • 每個項目都有自己的最後期限。
  • 每個項目都有一系列排序的作業。
  • 就業的領域僅限於切割打磨,並
  • 任何給定的作業可以在序列中出現0到多次(即不是所有的項目都有一個「切割」的工作,但可以有多個「畫」作業)
  • 每個項目股份的全球資源,即員工,和ç
  • 員工只能執行切割砂光作業
  • 僱員只能執行切割砂光,和作業
  • 員工C只能執行打磨工作
  • 解決方案只需要是可行的,並非最佳
+1

您可以通過添加具有截止日期的節點將多項目問題映射到單個項目中。然後添加約束條件,即每組任務必須滿足截止日期。至於可行性,一旦遇到所有困難的約束,您可以選擇終止搜索;之後的一切都是肉汁。在你給出的例子中,每本書都可以看作是一個單獨的項目。 –

+0

「......每本書都可以看作是一個單獨的項目。」哇 - 我沒有仔細閱讀過這個問題。謝謝你指出!這些都是很好的建議。 – circwell

回答

1

以OptaPlanner的「項目工作調度」的例子,並相應調整:

  • 「有1到n個項目」:「項目作業調度」示例已經有多個項目。
  • 「每個項目都有自己的最後期限。」在項目截止日期之前添加一個硬約束,即項目的最後一項工作必須結束。確保懲罰時間太晚(請參閱文檔中的「分數陷阱」)。
  • 「測序一系列作業」:配置優先約束相應
  • 「的任何給定的作業可以出現0到序列中多次」:每個這些時間是在該示例中,術語一個單獨的作業。
  • 「每個項目共享全球資源,即員工A,B和C」:全球可再生資源
  • 解決方案只需要可行,不是最優的:然而,我仍然繼續使用軟約束來儘量減少完工時間。

注意:OptaPlanner 6.0已經很好地解決了「項目工作調度」的例子,但6.1版的改進計劃可能會進一步提高結果。