Thuật toán gán tài nguyên thực hiện công việc theo thứ tự

Một phần của tài liệu (LUẬN văn THẠC sĩ) giải thuật di truyền và ứng dụng trong quản lý dự án phần mềm (Trang 46 - 48)

Chương 2 Giải thuật di truyền và các ứng dụng

3.2. Thuật toán

3.2.5. Thuật toán gán tài nguyên thực hiện công việc theo thứ tự

Đầu vào:

- Danh sách các tasksT

- Danh sách các mã task theo thứ tự thỏa mãn bảng phân rã công việcTc. Hay còn gọi là đồ thị công việc thể hiện thứ tự thực hiện công việc.

- Cấu hình thời gian làm việc của dự án

- Thời gian bắt đầu dự án

Đầu ra:

- Tổng thời gian hoàn thành task

- Đồ thì grantchart

Các bƣớc thuật toán:

- Kiểm tra danh sách Txem có thỏa mãn Tckhông. Nếu không thỏa mãn thuật toán dừng lại.

- Nếu thỏa mãn tiến hành bước tiếp theo. Khởi tạo danh sách:

+DoingTask: Danh sách các task đang làm, các công việc đã được chỉ định tài nguyên thực.

+NeedToDo: Danh sách các task cần phải làm, danh sách các công việc cần phải làm, chưa chỉ định tài nguyên thực hiện.

+ Completed: Danh sách các task đã hoàn thành.

+ WorkingResources: Danh sách các resource đang làm việc

+ StartProjectDate: thời gian bắt đầu dự án Foreach t in T

Lấy danh sách Predtcủa task t If Predt ≠ ∅ then

Kiểm tra cácphầntửPredt xem đã được hoàn thành chưa (có nằm trong

Completedkhông).

If (toàn bộ phần tử Predt đã hoàn thành) then thêm t vào danh sách NeedToDo

Else

If (NeedToDoDoingTask)

Set StartDate= Min(thời gian kết thúc các công việc trong

Dịch chuyển thời gian tới StartDatesẽ được tập hợp các công

tdoing việc có thời gian tdoingEndDate<= StartDate. Các công việc này được chuyển trạng thái về kết thúc (IsCompleted) và được thêm vào danh sách Completedđồng thời giải phóng nguồn resources đang làm những công việc này. Loại bỏ các resources trên ra khỏi danh sách WorkingResources

End IF

Foreach task tNeedToDoNeedToDotNeedToDoDoingTask

Tính toán thời gian bắt đầu và kết thúc task tNeedToDo

Tính nguồn lực thực hiện công việc này. Nếu đủ nguồn lực thực hiện, thêm tNeedToDovào danh sách DoingTask. Thêm các tài nguyên thực hiện task này vào danh sách

WorkingResources.

Nếu không đủ nguồn lực thực hiện tNeedToDo

Set StartDate= Min(thời gian kết thúc các công việc trong

DoingTask).

Lấy danh sách các công việc trong DoingTaskđã hoàn thành và chuyển trạng thái thành IsCompleted,thêm những công việc này sang danh sách Completed, giải phóng các nguồn lực các công việc này chiếm giữ, gỡ bỏ các nguồn lực này trong danh sách WorkingResources.

End Foreach

Lùi phần tử tvề phần tử trước nó trong tập Tđể trong vòng lặp foreach tiếp theo thực hiện lại các thao tác tính toán ở trên áp dụng cho phần tử t.

End if Else

Thêm t vào NeedToDo

End if End Foreach

Loại bỏ những công việc đã hoàn thành trong danh sách NeedToDo

If Count(DoingTask)<Count(T) Then

Foreach task tNeedToDoNeedToDotNeedToDoDoingTask

Tính nguồn lực thực hiện công việc này. Nếu đủ nguồn lực thực hiện, thêm tNeedToDovào danh sách DoingTask. Thêm các tài nguyên thực hiện task này vào danh sách WorkingResources.

Nếu không đủ nguồn lực thực hiện tNeedToDo

Set StartDate= Min(thời gian kết thúc các công việc trong

DoingTask).

Lấy danh sách các công việc trong DoingTaskđã hoàn thành và chuyển trạng thái thành IsCompleted, thêm những công việc này sang danh sách Completed, giải phóng các nguồn lực các công việc này chiếm giữ, gỡ bỏ các nguồn lực này trong danh sách

WorkingResources. End Foreach

End If

Foreach tDoingTask chưa hoàn thành trongDoingTask

Hoàn thành các tDoingTaskvà thêm tDoingTaskvào danh sách Completed

End For

Set EndDate= Max(EndDatecủa các task trong DoingTask) Thời gian hoàn thành dự án được tính bằng

Total =EndDate– StartProjectDate

Danh sách tài phân bổ tài nguyên cho dự án chính là danh sách Completed

Một phần của tài liệu (LUẬN văn THẠC sĩ) giải thuật di truyền và ứng dụng trong quản lý dự án phần mềm (Trang 46 - 48)

Tải bản đầy đủ (PDF)

(110 trang)