2011-12-30 19 views
2

是否有可以根據體重和日期優先考慮項目的公式或算法?例如,一個關鍵項目將始終位於列表的頂部,而兩個普通項目將根據其到期日期排列優先級。根據體重和日期劃分任務優先級的公式

+0

爲每個項目分配一個「優先值」。如果標記爲「關鍵」,則該值可以更大。如果日期更近,它也可以更大。按優先級排序項目。 – eboix 2011-12-31 00:01:24

回答

2

是的。這可以通過定義首先檢查優先級的比較函數來完成。即

// Returns n < 0, 0, or n > 1 if value1 is less than, equal to or greater 
compare(value1, value2) { 
    if(value1.priority != value2.priority) { 
    return value1.priority - value2.priority; 
    } 
    return value1.date - value2.date; 
} 

另外,該函數返回的日期和優先級計算的值,這可以用來比較的優先任務,並命令他們(及日期):

// Returns 
task.GetValue() { 
    return me.GetDateAsIntegerValue() + MAX_DATE_VALUE * me.GetPriority(); 
} 

但正如sarnold提到,這是一個高度研究的領域。

2

Scheduling是計算機科學研究最多的領域之一,這很方便,因爲它提供了很多可以學習的現有技術。

也許最簡單的方法是Earliest Deadline First - 您可以在第一個截止日期安排任務並開始工作,直到它阻止爲止。然後在下一個最早期限工作。缺點是需要很長時間的低優先級任務可能會導致優先級更高的任務失效。

確定您的日程安排是否必須是hard, firm, or soft - 有時完全放棄任務並按時完成幾乎所有事情比完成所有事情都要有意義,只是遲到了半秒。

1

查看此問題的另一種方式是排名問題。如果您將這兩個值,權重和優先級作爲輸入,您可以創建一個配對比較表,將項目分解爲其輸入(權重和優先級),輸出是相對排序。如果你有他們的權重和優先權(W42,P42)和(W69,P69),你想知道X42是否應該出現在X69之前(如果你有他們的權重和優先權(W42,P42)和(W69,P69) ,之後或者平等的位置。如果你有訓練集,你可以標記一個人是否比另一個人更喜歡。

我們這裏缺乏的是比較這些的方法。一個非常簡單的方法是對這個差異使用logistic迴歸,即在這個簡單函數f((W_A - W_B),(P_A - P_B))或者f((W42 - W69),(P42 - P69)案件。如果結果高於某個閾值,則A優先於B,否則B優先於A.您可以使用此值對結果進行排序。

像往常一樣,大多數在線結果對初學者來說都不是很方便。這裏有一個short chapter,這可能有助於理解邏輯迴歸。但是,如果您想更深入地解決這些問題,統計信息StackExchange站點會更好。 (1)如果你正在看的東西可以分解爲權重和優先級的加法函數,並且如果是的話,(2)你的損失函數或目標函數需要最小化,以便您可以獲得此附加功能的最佳參數。一個有序的邏輯模型是一個選擇,有序的邏輯模型是另一個選擇,還有其他的選擇。如果你不使用加法函數(即線性組合),那麼你將有一個具有挑戰性的可能性考慮範圍,所以最好從簡單的事情開始。

0

您可以通過評級的影響,1-10(10爲最高),需要1-10輸出(也10爲最難)

您用兩個加在一起的數量和鴻溝分開的任務。結果將是您的任務1-10(10個最重要)的優先級排名。

實施例:

  • 檢查電子郵件:衝擊2輸出1 = 1.5
  • 呼叫潛在顧客:衝擊10輸出2 = 6

從這個例子的客戶的呼叫會然後被放置在比檢查電子郵件更高的優先級。

+1

一個可能的解決方案,試圖根據所需努力和將產生的影響的綜合影響來確定優先順序,但這並不是我所要求的。像這樣的算法可能不適合最終用戶將要接觸的排序任務,因爲算術會使排序功能不透明。如果您正在爲最終用戶消費排序列表,最好根據用戶可以理解的內容進行排序,如重量,以及重量是否相同,然後按日期排序。嗯,聽起來很熟悉... – Rob 2012-12-10 16:53:19