2012-02-29 52 views
1

我想寫一些代碼來安排一組用戶輸入的現實生活任務。這些任務存儲在一個sqlite數據庫中。而此刻,我考慮的唯一參數是,調度生命的調度算法

The project to which a task belongs to --> p
The name of the task itself --> t
And the due date for this task --> d

projectdue date參數都是可選的。但假設用戶總是至少輸入task namedue date爲每個任務..我想知道是否可以使用例如Completely Fair Scheduler (CFS)等調度程序來安排任務集。我意識到CFS是爲調度任務編寫的,它的粒度(納秒)要比爲此目的提出的任務集精細得多......但是我意識到如果我可以修改它以使用與我們對時間的感知時間尺度相同的任務。

數據庫中的典型條目將採用格式(p,t,d)。 'p'是可選的。這裏有幾個例子..

(_, 'Call home', 29/2/2012)
(Work, 'Meet boss', 14/3/2012)
(Work, 'Ask for raise', 18/3/2012)
(_, 'Book tickets', 10/3/2012)
(Work, 'Quit', 14/4/2012)
(Personal, 'Get botox injections', 10/3/2012)
(Personal, 'Get breast implants', 10/10/2012)
(_, 'Dad bday', 7/10/2012)

這裏是要考慮的情況。我想在早上醒來。在這組任務上運行這個「尚未編碼」的算法..就像上面給出的那些..我希望在接下來的一天裏收到一個時間表,以最大化吞吐量。在稍後階段,我想將這個算法的參數傳遞給我,讓我能夠根據當前情況控制調度程序返回一組任務。就像我在工作中一樣,我希望能夠將參數傳遞給算法,要求它只返回可以在工作中完成的任務。

我希望我能夠傳達它的要義。我明白僅憑due date就不足以使用CFS來安排任務......但如果還有其他參數需要考慮,請讓我知道。任何關於調度算法的建議都會有所幫助。

謝謝。

回答

1

cfs用於調度cpu上的任務片。你是一個人,不能像cpu那樣多任務。你完成一項任務要好得多。

通常用於解決人類調度任務的工具與constraint programming有關。他們允許您在各種限制條件下(比如一天中只有這麼多小時,並且無法做到兩個)來爲某些變量(生產力,在您的情況下,我認爲它與具有不同優先級的任務相關)進行優化事情在同一時間)。

事實證明,總的來說,這是一類難以解決的問題,並且沒有單一的,非常好的解決方案(儘管許多解決方案都以某種形式的引導式搜索爲基礎)。你需要調整方法,嘗試不同的算法等。正因爲如此,已經開發出了各種軟件包,它們提供了相當抽象的接口,可以用正式(ish)的術語描述問題,然後嘗試以各種方式解決問題。

說了這麼多,對於任何一個特定情況(比如你的),只需編寫一個直接解決方案(而不是學習其中一個複雜包)可能會更有成效。但我沒有看到使用cfs作爲任何合理解決方案的一部分。

不知道這是你要找的,還是有幫助的 - 對不起。如果我在你的位置,我想我會嘗試使用choco,因爲它是我有一些經驗的一個約束包。但你不是我,我懷疑這對你是一個很好的解決方案 - 你可能最好只是根據這裏的信息四處搜索,然後在你對可能的東西有更好的瞭解後再問另一個問題?