2012-03-28 29 views
2

我有一個關於調度的問題。 我需要爲約會製作一個時間表生成器。 這是目前的情況。哪些算法可用於生成時間表/時間表?

P1與P2有約定A.
P3與P4有預約B.
等等...

預約甲大約需要15分鐘
預約乙大約40分鐘
(持續時間的時間取決於主題數,1個主題= 5分鐘)

我需要將其納入一個時間表中,並附上其他一些限制條件,並安排有限的時間安排所有會議。

我的問題是:哪些算法可以用於此?

在此先感謝。

+0

什麼是指標/約束條件?我可以在中午每天準確地安排一次約會 - 但我懷疑這是你真正想要的。 – amit 2012-03-28 14:41:43

+0

早上(09.00-13.00)和中午(13.00-16.00)爲2天。 我只需要知道該學什麼才能解決此問題 – 2012-03-28 14:43:56

+0

您能否提供更多關於問題來自何處的背景知識?我擔心,即使「會議」每次會議只需要一個人 - 你就會得到一個[裝箱問題](http://en.wikipedia.org/wiki/Bin_packing_problem),它是[NP-Hard ](http://en.wikipedia.org/wiki/NP-hard),並且每個會議約束添加2個人只會讓事情變得更加困難。 – amit 2012-03-28 14:52:15

回答

2

只要數據集很小,你應該看看什麼是典型的backtracking algorithm,它可以通過暴力破解來解決問題。但是,如果數據集越來越多,算法效率就會降低。在這種情況下,您應該看看artificial intelligence,如genetic algorithms來解決問題。

+0

謝謝我認爲我將基於我的研究基於遺傳算法來解決這個問題。總共有6個約束,所以我不知道一個經典算法是否能解決這個問題。儘管前向狀態空間搜索用於與我的問題類似的飛機時刻表。 – 2012-03-28 14:54:24

+0

遺傳算法將是最有希望的,並且有6個約束條件,您將很快達到回溯極限(尤其是如果解決方案空間非常狹窄的話) - 對於前向空間搜索也是如此。好處是,您可以將Backtracking實現爲決策樹並緩衝狀態以應對變化。我猜遺傳算法也是這裏的方法。 – Lars 2012-03-28 18:18:49