Quản lý dự án · Chương 4 · Bài tập gốc trong slide
Slide bài giảng có 2 bài tập yêu cầu tự làm nhưng không kèm đáp án: "Workshop Kỹ năng mềm" (6 công việc) và "Bài tập 1" (10 công việc, gắn với biểu đồ Gantt). Trang này giải đầy đủ từng bước theo đúng quy trình 6 bước CPM/PERT đã học, để bạn đối chiếu bài tự làm của mình.
Phần 1 · Khung để giải mọi bài dạng này
Theo giáo trình (mục 4.3.1), CPM và PERT dùng chung một quy trình 6 bước. Mọi bài tập trong Chương 4 — dù đề bài khác nhau — đều giải theo đúng khung này:
Xác định các công việc cần thực hiện (đọc bảng đề bài).
Xác định mối quan hệ phụ thuộc và trình tự các công việc (cột "Công việc trước").
Vẽ sơ đồ mạng công việc (AOA hoặc AON).
Tính thời gian cho từng công việc / sự kiện: đi xuôi lấy ES (MAX), đi ngược lấy LS (MIN).
Xác định thời gian dự trữ: TF = LS − ES, TD = min(ES công việc sau) − EF.
Xác định đường găng: nối các công việc có TF = 0.
Phần 2 · Bài tập gốc — trang "BÀI TẬP" trong slide
| Mã | Công việc | Thời gian | Phụ thuộc |
|---|---|---|---|
| A | Lên ý tưởng | 2 ngày | – |
| B | Xin phê duyệt từ khoa | 1 ngày | A |
| C | Đặt phòng | 2 ngày | B |
| D | Thiết kế slide và tài liệu | 3 ngày | A |
| E | Chuẩn bị quà tặng | 1 ngày | B |
| F | Tập dượt | 1 ngày | C, D, E |
Đề yêu cầu: vẽ sơ đồ AON, tính ES, LS, dự trữ, xác định đường găng. Muốn xem sơ đồ AON đầy đủ và hoạt hình điền từng bước có tô màu công thức, sang trang Giải bài Workshop — hoạt hình từng bước.
| CV | Cách tính ES | ES | EF = ES+T |
|---|---|---|---|
| A | Không có việc trước → 0 | 0 | 2 |
| B | = EF(A) | 2 | 3 |
| C | = EF(B) | 3 | 5 |
| D | = EF(A) | 2 | 5 |
| E | = EF(B) | 3 | 4 |
| F | max( EF(C), EF(D), EF(E) ) = max(5, 5, 4) | 5 | 6 |
F cần cả ba C, D, E xong mới bắt đầu được — nên ES(F) phải lấy giá trị lớn nhất trong 3 mốc EF, không phải cộng dồn. Tổng thời gian dự án = EF(F) = 6 ngày.
| CV | Cách tính LF | LF | LS = LF−T |
|---|---|---|---|
| F | = tổng thời gian dự án | 6 | 5 |
| C | = LS(F) | 5 | 3 |
| D | = LS(F) | 5 | 2 |
| E | = LS(F) | 5 | 4 |
| B | min( LS(C), LS(E) ) = min(3, 4) | 3 | 2 |
| A | min( LS(B), LS(D) ) = min(2, 2) | 2 | 0 |
| CV | T | ES | EF | LS | LF | TF |
|---|---|---|---|---|---|---|
| A | 2 | 0 | 2 | 0 | 2 | 0 |
| B | 1 | 2 | 3 | 2 | 3 | 0 |
| C | 2 | 3 | 5 | 3 | 5 | 0 |
| D | 3 | 2 | 5 | 2 | 5 | 0 |
| E | 1 | 3 | 4 | 4 | 5 | 1 |
| F | 1 | 5 | 6 | 5 | 6 | 0 |
Tổng thời gian dự án = 6 ngày. Đường găng có TF=0 ở cả A, B, C, D, F — nghĩa là dự án này có 2 đường găng song song: A→B→C→F và A→B→D→F (cả hai đều dài 6 ngày: 2+1+2+1=6 và 2+1+3+1... khoan, D=3 nên 2+1+3+1=7?). Xem ghi chú dưới.
Cộng trực tiếp theo đường: A(2)+B(1)+D(3)+F(1) = 7 ngày, nhưng EF(F) tính ở trên chỉ là 6 — vì sao lệch? Vì D chạy song song với B→C, không nối tiếp sau B: D chỉ phụ thuộc A, không phụ thuộc B. Vậy ES(D)=EF(A)=2 (không phải EF(B)=3). Đường thật sự qua D là A→D→F = 2+3+1 = 6 ngày, đúng khớp với EF(F)=6. Đây là lỗi rất hay gặp: đừng nối nhầm D vào sau B chỉ vì nó đứng gần B trên bảng — luôn tra đúng cột "Phụ thuộc". Đường găng chính xác là hai nhánh cùng dài 6 ngày: A→B→C→F (2+1+2+1=6) và A→D→F (2+3+1=6).
Phần 3 · Bài tập gốc — trang "Bài tập 1" trong slide (mục 4.4.1)
| Công việc | Công việc trước | Thời gian (giờ) |
|---|---|---|
| A | – | 4 |
| B | – | 5 |
| C | A | 3 |
| D | A | 6 |
| E | A | 8 |
| F | C | 2 |
| G | D | 5 |
| H | B, E | 3 |
| I | H | 5 |
| J | F, G, I | 8 |
| CV | Cách tính ES | ES | EF |
|---|---|---|---|
| A | Không có việc trước | 0 | 4 |
| B | Không có việc trước | 0 | 5 |
| C | = EF(A) | 4 | 7 |
| D | = EF(A) | 4 | 10 |
| E | = EF(A) | 4 | 12 |
| F | = EF(C) | 7 | 9 |
| G | = EF(D) | 10 | 15 |
| H | max( EF(B), EF(E) ) = max(5, 12) | 12 | 15 |
| I | = EF(H) | 15 | 20 |
| J | max( EF(F), EF(G), EF(I) ) = max(9, 15, 20) | 20 | 28 |
EF(J) = 28 giờ — đây là con số sẽ dùng làm LF cho công việc cuối khi đi ngược.
| CV | Cách tính LF | LF | LS = LF−T |
|---|---|---|---|
| J | = tổng thời gian dự án | 28 | 20 |
| F | = LS(J) | 20 | 18 |
| G | = LS(J) | 20 | 15 |
| I | = LS(J) | 20 | 15 |
| H | = LS(I) | 15 | 12 |
| C | = LS(F) | 18 | 15 |
| D | = LS(G) | 15 | 9 |
| E | = LS(H) | 12 | 4 |
| B | = LS(H) | 12 | 7 |
| A | min( LS(C), LS(D), LS(E) ) = min(15, 9, 4) | 4 | 0 |
| CV | T | ES | EF | LS | LF | TF=LS−ES |
|---|---|---|---|---|---|---|
| A | 4 | 0 | 4 | 0 | 4 | 0 |
| B | 5 | 0 | 5 | 7 | 12 | 7 |
| C | 3 | 4 | 7 | 15 | 18 | 11 |
| D | 6 | 4 | 10 | 9 | 15 | 5 |
| E | 8 | 4 | 12 | 4 | 12 | 0 |
| F | 2 | 7 | 9 | 18 | 20 | 11 |
| G | 5 | 10 | 15 | 15 | 20 | 5 |
| H | 3 | 12 | 15 | 12 | 15 | 0 |
| I | 5 | 15 | 20 | 15 | 20 | 0 |
| J | 8 | 20 | 28 | 20 | 28 | 0 |
A → E → H → I → J = 4+8+3+5+8 = 28 giờ, khớp đúng EF(J). Đây là đường mà nếu bất kỳ công việc nào trong 5 việc này trễ dù 1 giờ, cả dự án trễ theo. B, C, D, F, G đều có dự trữ (TF > 0) nên có thể linh hoạt về lịch.
Muốn luyện vẽ biểu đồ Gantt sớm/muộn từ chính bảng ES/LS này (đúng như đề bài yêu cầu), sang trang Biểu đồ Gantt và biểu đồ đường chéo — có sẵn ví dụ mẫu dùng cùng kỹ thuật.
Phần 4 · Rút kinh nghiệm
Nhầm "gần nhau trên bảng" với "phụ thuộc nhau". Luôn tra đúng cột "Công việc trước" cho từng dòng, đừng suy đoán theo thứ tự liệt kê (xem lại ví dụ D trong bài Workshop).
Ở điểm hội tụ (nhiều việc trước) dùng MAX cho ES nhưng lại cộng dồn nhầm. ES của công việc sau = giá trị EF lớn nhất trong các việc đứng trước, không phải tổng.
Đi ngược quên đổi MIN. Ở điểm một công việc dẫn tới nhiều việc sau, LS/LF của nó phải lấy giá trị nhỏ nhất trong các LS của những việc sau, không phải lấy tùy ý một nhánh.
Đáp 1: C có T=2 nên EF(C)=5, còn E có T=1 nên EF(E)=4 — nhánh qua E "về đích" sớm hơn nhánh qua C 1 ngày, nên E dư ra đúng 1 ngày trước khi F cần đến nó.
Đáp 2: Không — vì TF(B) = 7 giờ, B được phép trễ tới 7 giờ mà không ảnh hưởng dự án. Trễ 5 giờ vẫn nằm trong hạn mức dự trữ.