2011-02-23 27 views
0

我正在使用來自爬山 家族的RSSHC算法處理Etp(員工時間表問題)問題。在C#中實現「表」

從這件事我需要創建一個「表」是這樣的:

s1 s2 s3 s4 s5 S6 
------ 
e1 5     8  
e2  3 4  
e3 
e4 
e5 

行代表員工(員工數量); 這些列表示班次(班次ID) ,值代表任務編號(任務ID)。 所有從數據庫中提取的數據。 在這張桌子上,我將需要在員工 之間切換任務,並在每次切換時執行約束檢查。 是否有任何數據類型支持這種佈局(我是C#新手)? 或者,也許它會更好地通過存儲過程在 我的數據庫?

約束條件將通過'成本函數' 進行計算,並給出每個約束違規的懲罰點。 例如:

E2在S3 在S2和任務4做任務2也許E2不能做任務2(能力) 或沒有足夠的工作量(我需要看看在E2載體上,並計算) 或者根據我的規定,員工不能連續做兩次輪班。 (我需要在s1和s3上查找值) 也許員工今天不能工作(首選) (我需要檢查一下)。 這是主要的限制。

+0

你的約束是什麼? – 2011-02-23 10:07:16

回答

1

如果您shiftIDs已知你可以創建一個類,如:

public class Employee 
{ 
    public int S1 { get; set; } 
    public int S2 { get; set; } 
    public int S3 { get; set; } 
    public int S4 { get; set; } 
} 

這個類將被放入List<Employee>。然後將此列表放入BindingSource.DataSource,最後但並非最不重要的是您將其放入DataTable.DataSource

有了這個,您可以簡單地在DataGrid中進行任何更改,這些更改將直接反映到您的List中。

+0

我需要像s1那樣的整數名稱根據數據庫中的班次名稱或ID號動態創建 – aristotaly 2011-02-23 10:26:21