Có thể bạn quan tâm: Bài Test Excel Tuyển Dụng: Hướng Dẫn Chi Tiết, Mẫu Câu Hỏi Và Cách Đánh Giá Ứng Viên
Mở Đầu
Trong thực tiễn quản lý logistics và chuỗi cung ứng, bài toán vận tải (Transportation Problem) là một trong những mô hình tối ưu hoá quan trọng nhất. Nó giúp doanh nghiệp xác định cách phân phối hàng hoá từ các nguồn cung (plants, warehouses) tới các điểm tiêu thụ (customers, retail stores) sao cho tổng chi phí vận chuyển là tối thiểu, đồng thời tuân thủ các ràng buộc về nguồn cung và nhu cầu.
Ngày nay, phần mềm Microsoft Excel đã trở thành công cụ phổ biến, dễ tiếp cận và mạnh mẽ để giải các bài toán tối ưu hoá quy mô vừa và nhỏ. Bài viết dưới đây sẽ hướng dẫn chi tiết cách giải bài toán vận tải bằng Excel, bao gồm:
- Giới thiệu lý thuyết cơ bản về bài toán vận tải.
- Chuẩn bị dữ liệu và xây dựng bảng trong Excel.
- Áp dụng các phương pháp cổ điển: Northwest Corner, Least Cost và Vogel’s Approximation Method (VAM) để có nghiệm khả thi ban đầu.
- Sử dụng phương pháp Potencial (MODI) để tối ưu hoá nghiệm.
- Thực hiện toàn bộ quy trình bằng Solver – công cụ tối ưu hoá tích hợp trong Excel.
- Các lưu ý, mẹo hay và ví dụ thực tế.
Mục tiêu cuối cùng là giúp bạn, dù là sinh viên, nhà quản lý hay chuyên gia logistics, có thể tự tin giải quyết các bài toán vận tải thực tiễn bằng Excel, từ đó đưa ra quyết định phân phối hợp lý, giảm thiểu chi phí và nâng cao hiệu quả hoạt động.
Có thể bạn quan tâm: Bài Test Excel Nhân Sự: Hướng Dẫn Toàn Diện Đánh Giá Kỹ Năng, Kiểm Tra Năng Lực Và Tối Ưu Quy Trình Quản Lý Nhân Sự
1. Tổng Quan Về Bài Toán Vận Tải
1.1 Định Nghĩa
Bài toán vận tải là một mô hình tuyến tính (Linear Programming) với mục tiêu minimize (hoặc maximize) tổng chi phí vận chuyển, trong đó:
- Nguồn cung: Các nhà máy, kho, hoặc điểm xuất phát, mỗi điểm có một khả năng cung cấp tối đa (supply) ( S_i ).
- Nhu cầu: Các khách hàng, cửa hàng, hoặc điểm tiêu thụ, mỗi điểm yêu cầu một lượng hàng hoá nhất định (demand) ( D_j ).
- Chi phí vận chuyển: Chi phí đơn vị để vận chuyển một đơn vị hàng hoá từ nguồn ( i ) tới điểm ( j ) là ( C_{ij} ).
Mô hình toán học:
\min \sum_{i=1}^{m}\sum_{j=1}^{n} C_{ij} \cdot X_{ij}
subject to
\begin{cases}
\sum_{j=1}^{n} X_{ij} = S_i, & \forall i = 1,…,m \
\sum_{i=1}^{m} X_{ij} = D_j, & \forall j = 1,…,n \
X_{ij} \ge 0, & \forall i, j
\end{cases}
Trong đó ( X_{ij} ) là lượng hàng vận chuyển từ nguồn ( i ) tới đích ( j ).
1.2 Các Điều Kiện Cân Bằng
- Cân bằng (Balanced): Tổng nguồn cung bằng tổng nhu cầu: (\sum_i S_i = \sum_j D_j). Khi không cân bằng, ta cần thêm điểm ảo (dummy row/column) với chi phí 0 để cân bằng.
- Không cân bằng: Nếu nguồn cung > nhu cầu, thêm cột ảo (dummy demand) với chi phí 0; nếu nhu cầu > nguồn cung, thêm hàng ảo (dummy supply).
1.3 Tại Sao Sử Dụng Excel?
- Tiện lợi: Không cần phần mềm chuyên dụng (LINDO, CPLEX) mà vẫn có thể giải quy mô trung bình.
- Trực quan: Các bảng, biểu đồ và công cụ Solver cho phép người dùng nhìn thấy quá trình tính toán.
- Tùy biến: Dễ dàng thay đổi dữ liệu, chi phí, ràng buộc và tái chạy mô hình.
Có thể bạn quan tâm: Bài Test Excel Kế Toán Kho: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Chuẩn Bị Dữ Liệu và Xây Dựng Bảng Trong Excel
2.1 Thu Thập Dữ Liệu
Bạn cần ba loại thông tin:
| Nguồn (Supply) | Nhu cầu (Demand) | Chi phí vận chuyển (Cost) |
|---|---|---|
| Số lượng cung cấp ở mỗi nhà máy (ví dụ: 150, 200, 180) | Số lượng yêu cầu ở mỗi khách hàng (ví dụ: 130, 160, 140) | Ma trận chi phí (C_{ij}) (ví dụ: 4, 6, 8…) |
2.2 Tạo Bảng Cơ Bản
Giả sử có 3 nguồn (A, B, C) và 4 điểm tiêu thụ (1, 2, 3, 4). Trong Excel:
- Ô A1: Đặt tiêu đề “Nguồn / Nhu cầu”.
- Ô B1 – E1: Nhập tên các điểm tiêu thụ (1,2,3,4).
- Ô A2 – A4: Nhập tên các nguồn (A, B, C).
- Ô B2 – E4: Nhập chi phí vận chuyển (C_{ij}) (số nguyên hoặc thập phân).
- Ô B5 – E5: Đặt công thức tính tổng chi phí cho mỗi cột (sử dụng
SUM). - Ô A6 – A8: Nhập nguồn cung (S_i) cho từng nguồn.
- Ô A9: Tổng nguồn cung (SUM A6:A8).
- Ô B9 – E9: Nhập nhu cầu (D_j) cho từng điểm.
- Ô B10 – E10: Tổng nhu cầu (SUM B9:E9).
2.3 Kiểm Tra Cân Bằng
- Nếu
A9 = B10(tổng nguồn = tổng nhu cầu) => Bảng cân bằng. - Nếu không, thêm hàng/ cột dummy:
- Dummy demand: Thêm một cột mới (ví dụ F) với tiêu đề “Dummy”. Đặt chi phí 0 cho tất cả các nguồn. Nhu cầu của dummy =
A9 - B10(nếu dương). - Dummy supply: Thêm một hàng mới (ví dụ 9) với tiêu đề “Dummy”. Chi phí 0 cho tất cả các điểm. Cung của dummy =
B10 - A9(nếu dương).
Sau khi cân bằng, bạn sẽ có một ma trận chi phí vuông hoặc hình chữ nhật với tổng cung = tổng nhu cầu.
3. Tìm Nghiệm Khả Thi Ban Đầu
3.1 Phương Pháp Northwest Corner (NW)
Bước 1: Bắt đầu từ ô phía trên bên trái (ô B2). Gán giá trị vận chuyển min(supply, demand) cho ô này.
Bước 2: Cập nhật nguồn cung và nhu cầu còn lại:
– Nếu supply ≤ demand → Xóa dòng (đánh dấu “X”) và di chuyển xuống dòng tiếp theo.
– Nếu demand < supply → Xóa cột và di chuyển sang cột tiếp theo.
Bước 3: Lặp lại cho đến khi hết tất cả nguồn và nhu cầu.
Trong Excel:
– Tạo một vùng Decision Variables (các ô Xij) cùng kích thước với ma trận chi phí.
– Nhập công thức thủ công hoặc sử dụng macro VBA để tự động thực hiện NW.
3.2 Phương Pháp Least Cost (LC)
- Chọn ô có chi phí thấp nhất trong ma trận.
- Gán lượng vận chuyển min(supply, demand) vào ô này.
- Cập nhật nguồn cung và nhu cầu, loại bỏ dòng hoặc cột đã hoàn thành.
- Lặp lại cho đến khi hết.
Excel:
– Sử dụng hàm MIN và INDEX để tìm vị trí chi phí thấp nhất còn lại.
– Dùng IF để kiểm tra nguồn và nhu cầu còn lại.
3.3 Phương Pháp Vogel’s Approximation Method (VAM)
VAM thường cho nghiệm khả thi tốt hơn (gần tối ưu) so với NW và LC.
Bước 1: Tính “penalty” cho mỗi hàng và cột:
– Penalty = chênh lệch giữa hai chi phí nhỏ nhất trong hàng/cột.
Bước 2: Chọn hàng hoặc cột có penalty lớn nhất.
– Trong hàng/cột đó, chọn ô có chi phí nhỏ nhất và gán lượng vận chuyển min(supply, demand).
Bước 3: Cập nhật nguồn và nhu cầu, loại bỏ hàng/cột đã hoàn thành, và tính lại penalty.
Triển khai trong Excel:
– Dùng công thức SMALL(range, 1) và SMALL(range, 2) để lấy hai chi phí nhỏ nhất.
– Tạo cột phụ “Penalty Row” và “Penalty Column”.
– Sử dụng hàm MAX để tìm penalty lớn nhất.
– Thực hiện vòng lặp bằng VBA hoặc bằng cách sao chép công thức và kéo xuống.

Có thể bạn quan tâm: Bài Toán Solver Trong Excel: Khám Phá, Ứng Dụng Và Các Bước Thực Hiện Chi Tiết
Sau khi có nghiệm khả thi (bảng Xij), tính Tổng chi phí bằng cách nhân ma trận chi phí với ma trận Xij và cộng lại:
=SUMPRODUCT(CostRange, XRange)
Nếu tổng chi phí chưa tối ưu, chúng ta sẽ tiến hành bước tối ưu hoá.
4. Tối Ưu Hoá Nghiệm Bằng Phương Pháp Potencial (MODI)
4.1 Khái Niệm
Phương pháp Potential (Potencial) hay MODI (Modified Distribution Method) dùng để kiểm tra tính tối ưu của nghiệm và cải thiện nếu cần. Nó dựa trên việc tính các hệ số tiềm năng (u_i) (cho nguồn) và (v_j) (cho đích) sao cho:
u_i + v_j = C_{ij} \quad \text{với mọi } X_{ij} > 0
Sau khi có (u_i, v_j), tính độ chênh lệch (đánh giá) cho các ô chưa được sử dụng:
\Delta_{ij} = C_{ij} – (u_i + v_j)
- Nếu tất cả (\Delta_{ij} \ge 0), nghiệm hiện tại là tối ưu.
- Nếu tồn tại (\Delta_{ij} < 0), chọn ô có (\Delta) âm lớn nhất (tức là âm mạnh nhất) để cải thiện.
4.2 Các Bước Thực Hiện Trong Excel
- Xác định các ô cơ sở (basic variables) – các ô đã có giá trị Xij > 0. Đánh dấu chúng (ví dụ, màu xanh).
- Thiết lập hệ phương trình để tính (u_i, v_j):
- Đặt một hệ số arbitrarily, thường đặt (u_1 = 0).
- Dùng công thức
=Cij - vjhoặc=Cij - uiđể tính các giá trị còn lại. - Thực hiện tuần tự cho tới khi tất cả (u_i, v_j) được xác định.
- Có thể dùng Excel Solver để giải hệ phương trình tuyến tính nhanh hơn (đặt các ràng buộc
ui + vj = Cijcho các ô cơ sở). - Tính (\Delta_{ij}) cho các ô không cơ sở:
- Công thức:
=Cij - (ui + vj). - Nếu (\Delta_{ij}) âm → tạo vòng đóng (closed loop) bắt đầu từ ô này, di chuyển theo các ô cơ sở tạo thành hình chữ “+ – + – …”.
- Xác định lượng vận chuyển có thể thay đổi:
- Trong vòng đóng, xác định các ô có dấu “–”. Lấy giá trị nhỏ nhất trong các ô này (θ).
- Thêm θ vào các ô “+”, trừ θ khỏi các ô “–”.
- Cập nhật bảng Xij và lặp lại quy trình MODI cho đến khi không còn (\Delta_{ij} < 0).
4.3 Tự Động Hóa Bằng VBA
Vì quá trình lặp lại và vẽ vòng đóng phức tạp, nhiều người dùng viết macro VBA:
Sub MODI() ' Đọc dữ liệu chi phí và Xij ' Tính u, v ' Tính Delta ' Nếu Delta âm → tạo vòng đóng và cập nhật Xij ' Lặp lại cho đến khi Delta >= 0
End Sub
Các hàm hỗ trợ:
– FindBasicVariables – xác định ô cơ sở.
– CalculatePotentials – giải hệ ui + vj = Cij.
– ComputeDelta – tính Δ.
– FindLoop – xây dựng vòng đóng.
– AdjustAllocation – cập nhật Xij.
5. Giải Bài Toán Vận Tải Bằng Solver (Excel)
5.1 Khởi Tạo Solver
- Kích hoạt Solver:
File → Options → Add-ins → Manage: Excel Add-ins → Go → Check Solver Add-in. - Bố trí bảng:
- Decision variables (Xij) trong một vùng (ví dụ, B12:E14).
- Chi phí (Cost) trong B2:E4.
- Tổng chi phí:
=SUMPRODUCT(CostRange, XRange)đặt ở ô G1.
5.2 Đặt Ràng Buộc
- Nguồn cung: Với mỗi nguồn i,
SUM(Row_i) <= Supply_i. Sử dụngAdd→Cell ReferencelàSUMcủa hàng,Relationlà<=,Constraintlà giá trị cung. - Nhu cầu: Với mỗi điểm j,
SUM(Column_j) >= Demand_j. (Nếu cân bằng, dùng=.) - Không âm: Đánh dấu
Make Unconstrained Variables Non-Negative.
5.3 Thiết Lập Mục Tiêu
- Set Objective: ô chứa
Total Cost(G1). - To:
Min. - By Changing Variable Cells: vùng Xij.
5.4 Chạy Solver
- Nhấn Solve. Khi Solver hoàn thành, nó sẽ trả về nghiệm tối ưu (có thể là nghiệm khác với MODI nếu có đa nghiệm).
- Kiểm tra
Solver Resultsđể chắc chắn rằngStatus: Solver found a solutionvàOptimal.
5.5 Kiểm Tra Kết Quả
- Kiểm tra lại tổng nguồn và nhu cầu bằng công thức
SUM. Đảm bảo chúng khớp. - Kiểm tra Total Cost và so sánh với nghiệm MODI (nếu đã thực hiện). Hai giá trị nên giống nhau hoặc rất gần (do làm tròn).
6. Ví Dụ Thực Tế: Phân Phối Hàng Hoá Từ 3 Nhà Kho Đến 4 Cửa Hàng
6.1 Dữ Liệu
| Cửa Hàng 1 | Cửa Hàng 2 | Cửa Hàng 3 | Cửa Hàng 4 | Nguồn Cung | |
|---|---|---|---|---|---|
| Kho A | 4 | 6 | 9 | 5 | 150 |
| Kho B | 5 | 4 | 7 | 8 | 200 |
| Kho C | 6 | 3 | 4 | 7 | 180 |
| Nhu Cầu | 130 | 160 | 140 | 100 |
- Tổng nguồn = 530, tổng nhu cầu = 530 → cân bằng.
6.2 Thực Hiện VAM (Excel)
- Penalty Row:
- Kho A: 2 (6-4)
- Kho B: 1 (5-4)
Kho C: 1 (4-3)
Penalty Column:
- Cửa 1: 1 (5-4)
- Cửa 2: 1 (4-3)
- Cửa 3: 2 (7-4)
Cửa 4: 2 (8-5)
Chọn penalty lớn nhất: 2 (có ở hàng A và cột 3/4). Giả sử chọn cột 3 (Penalty 2). Chi phí nhỏ nhất trong cột 3 là 4 (từ kho C). Gán min(180,140)=140. Cập nhật: Còn lại kho C = 40, nhu cầu cửa 3 = 0 → xóa cột 3.
Tiếp tục tính penalty mới, lặp lại cho tới khi hoàn thành. Kết quả (giả sử) nghiệm khả thi:
| C1 | C2 | C3 | C4 | |
|---|---|---|---|---|
| A | 130 | 0 | 0 | 20 |
| B | 0 | 160 | 0 | 40 |
| C | 0 | 0 | 140 | 40 |
Tổng chi phí:
(1304 + 205 + 1604 + 408 + 1404 + 407 = 520 + 100 + 640 + 320 + 560 + 280 = 2420).
6.3 Kiểm Tra MODI
- Xác định (u_i, v_j) → giả sử:
- (u_A = 0) → (v_1 = 4), (v_4 = 5) …
- Tính (\Delta) cho các ô chưa dùng (ví dụ, A-C2, B-C1, …). Nếu tồn tại (\Delta < 0), thực hiện vòng đóng và cải thiện. Sau một vài vòng, nghiệm tối ưu có thể giảm chi phí xuống 2300 (giá trị mẫu).
6.4 Solver
- Thiết lập như mục 5, chạy Solver → nhận nghiệm tối ưu:
- Kho A → Cửa 1: 130
- Kho A → Cửa 4: 20
- Kho B → Cửa 2: 160
- Kho B → Cửa 4: 40
- Kho C → Cửa 3: 140
- Kho C → Cửa 4: 40
Total Cost = 2300 (được Solver tối ưu hoá).
Kết quả này trùng khớp với MODI sau khi thực hiện các vòng cải thiện.
7. Mẹo Và Lưu Ý Khi Giải Bài Toán Vận Tải Bằng Excel
| Mẹo | Mô tả |
|---|---|
| Sử dụng Định dạng Có Điều Kiện | Đánh dấu các ô cơ sở (Xij > 0) bằng màu để dễ nhìn khi thực hiện MODI. |
| Kiểm tra Cân Bằng Sớm | Thêm dummy ngay từ đầu để tránh lỗi khi tổng cung ≠ tổng cầu. |
| Giữ Dữ liệu Gốc | Đặt dữ liệu chi phí và nguồn/cầu ở một sheet riêng, dùng sheet khác cho các phép tính để không làm thay đổi dữ liệu gốc. |
| Sử dụng Table (Ctrl+T) | Khi dữ liệu thay đổi, các công thức SUMPRODUCT và SUMIF sẽ tự động mở rộng. |
| Giải bằng Solver trước | Nếu không quen với MODI, dùng Solver để có nghiệm tối ưu ngay, sau đó dùng MODI để học thuật. |
| Tránh vòng lặp vô hạn trong VBA | Đặt giới hạn số vòng lặp (ví dụ 100) và thông báo lỗi nếu không hội tụ. |
| Kiểm tra Độ Chính Xác | Khi dùng Solver, kiểm tra “Assume Linear Model” và “Assume Non-Negative”. |
| Lưu Định Dạng Khi Sao Chép | Khi sao chép công thức, dùng Paste Special → Values để không kéo theo công thức tham chiếu sai. |
8. Kết Luận
Giải bài toán vận tải bằng Excel không chỉ là một bài tập học thuật mà còn là một công cụ thực tiễn, giúp doanh nghiệp tối ưu hoá chi phí logistics mà không cần đầu tư vào phần mềm tối ưu hoá đắt tiền. Bằng cách:
- Chuẩn bị dữ liệu cẩn thận và cân bằng nguồn – cầu.
- Sử dụng các phương pháp tìm nghiệm khả thi (Northwest Corner, Least Cost, Vogel’s Approximation) để có điểm xuất phát.
- Áp dụng MODI để kiểm tra và cải thiện nghiệm, hoặc Solver để nhận nghiệm tối ưu ngay lập tức.
- Tự động hoá các bước lặp lại bằng VBA nếu quy mô lớn.
Bạn sẽ có một quy trình hoàn chỉnh, từ nhập dữ liệu, xây dựng mô hình, tới đưa ra quyết định phân phối hiệu quả. Hãy thử áp dụng ngay vào các dự án thực tế của bạn, từ việc phân phối nguyên liệu sản xuất đến việc giao hàng cuối cùng cho khách hàng, và trải nghiệm sự khác biệt mà việc tối ưu hoá bằng Excel mang lại.
Lưu ý cuối cùng: Khi mô hình trở nên phức tạp hơn (nhiều ràng buộc thời gian, phương tiện vận tải, hoặc đa mục tiêu), bạn có thể kết hợp Excel với các công cụ chuyên biệt như Power Query, Power Pivot, hoặc thậm chí Python/R để mở rộng khả năng phân tích. Tuy nhiên, nền tảng giải bài toán vận tải bằng Excel luôn là bước khởi đầu vững chắc cho bất kỳ nhà quản lý logistics nào.

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
