Giới thiệu dự án

Thị trường F&B (Food & Beverage) tại Việt Nam duy trì tốc độ tăng trưởng kép hàng năm (CAGR) ấn tượng từ 10% – 12%, kéo theo sự cạnh tranh khốc liệt giữa các chuỗi thương hiệu lớn. Trong mô hình kinh doanh chuỗi đồ uống, quản trị chuỗi cung ứng và tồn kho nguyên vật liệu là yếu tố then chốt quyết định biên lợi nhuận ròng. Khác với ngành bán lẻ truyền thống, ngành F&B chịu áp lực kép: vừa phải đảm bảo sẵn sàng phục vụ các đợt nhu cầu biến động mạnh theo khung giờ và chiến dịch, vừa phải kiểm soát nghiêm ngặt hạn sử dụng của các dòng nguyên liệu dễ suy giảm chất lượng (perishable goods) như sữa tươi, whipping cream và cốt trà ủ.

Đồ án "Nghiên cứu ứng dụng thuật toán Silver-Meal (SMA) tối ưu hóa số lượng đơn hàng nhằm tiết kiệm chi phí tồn kho" tập trung giải quyết bài toán tối ưu quy mô lô đặt hàng động (Dynamic Lot-Sizing) tại cửa hàng Phúc Long Tea & Coffee (415 Nguyễn Thị Thập, Quận 7, TP.HCM).

+-----------------------------------------------------------------------------------+
|                              BÀI TOÁN TỒN KHO TẠI PHÚC LONG                       |
+-----------------------------------------------------------------------------------+
|  Nhu cầu biến động mạnh theo tuần (160L -> 819L trà/tuần)                         |
|  Nguyên liệu F&B dễ hư hỏng, hạn sử dụng ngắn (Sữa, Whipping Cream)               |
|  Xung đột chi phí: Chi phí đặt hàng (Ordering Cost) vs Chi phí lưu kho (Holding)  |
+-----------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|                                GIẢI PHÁP TÍCH HỢP                                 |
+-----------------------------------------------------------------------------------+
|  1. BOM Exploder: Bóc tách nhu cầu đồ uống ra nguyên liệu thô                     |
|  2. Phân tích ABC: Tập trung kiểm soát 3 nguyên liệu cốt lõi nhóm A               |
|  3. Thuật toán Silver-Meal (SMA): Tối ưu hóa kích thước lô hàng động theo tuần    |
+-----------------------------------------------------------------------------------+

Vấn đề thực tiễn (Problem Statement)

Tại điểm bán thực tế, quy trình bổ sung nguyên vật liệu chủ yếu dựa trên kinh nghiệm định tính của quản lý cửa hàng hoặc áp dụng phương pháp đặt hàng theo mức tối thiểu (Minimum Service Requirement - MSR), dẫn đến các tổn thất cụ thể:

  • Ứ đọng vốn lưu động và rủi ro hết hạn: Việc đặt vượt định mức các sản phẩm có tỷ lệ chi phí tồn trữ cao (như whipping cream $h = 0.12$/kỳ, sữa đặc $h = 0.08$/kỳ) làm tăng chi phí lưu kho ($CHC$) và tỷ lệ hao hụt do quá hạn sử dụng.
  • Thiếu hụt nguyên liệu cục bộ (Stockout): Khi nhu cầu tăng đột biến (ví dụ trà Olong sữa từ 2.706 ly ở tháng thứ nhất tăng vọt lên 5.748 ly ở tháng thứ ba), cửa hàng đối mặt nguy cơ gián đoạn phục vụ các món chủ lực.
  • Mất cân đối giữa chi phí đặt hàng và lưu kho: Đặt hàng quá nhiều lần làm tăng tổng chi phí đặt hàng ($C$), trong khi gộp lô quá lớn làm bùng nổ chi phí tồn trữ tích lũy ($CHC(T)$).

Mục tiêu nghiên cứu

  1. Khảo sát và chuẩn hóa dữ liệu nhu cầu thực tế của 5 nhóm sản phẩm bán chạy nhất (Trà Olong Sữa, Lucky Tea, Cookie Đá Xay, Trà Đào, Trà Lài Đác Thơm) trong 13 tuần (tương đương 3 tháng).
  2. Xây dựng ma trận định mức nguyên vật liệu (Bill of Materials - BOM) nhằm quy đổi chính xác từ số lượng ly đồ uống hoàn chỉnh sang nhu cầu nguyên liệu thô theo từng đơn vị đo lường (lít, kg).
  3. Ứng dụng mô hình phân loại ABC (Pareto 80/20) để xác định nhóm nguyên vật liệu trọng điểm kiểm soát tồn kho.
  4. Triển khai thuật toán heuristic Silver-Meal (SMA) nhằm xác định chu kỳ đặt hàng ($T$) và quy mô lô hàng tối ưu ($Q_k$), cực tiểu hóa chi phí biến thiên trung bình trên mỗi chu kỳ ($MVC(T)$).

Phạm vi và giới hạn

  • Không gian: Cửa hàng Phuc Long Tea & Coffee, 415 Nguyễn Thị Thập, Phường Tân Quy, Quận 7, TP.HCM.
  • Thời gian khảo sát: Thu thập dữ liệu trực tiếp 14 ngày thực tế (14/05/2024 – 28/05/2024), chuẩn hóa thành chuỗi thời gian 13 tuần cho mô hình 3 tháng.
  • Giới hạn kỹ thuật: Mô hình giả định thời gian giao hàng (Lead time) tức thời hoặc cố định đã được tính trong chu kỳ tuần; giá mua nguyên liệu cố định, không xét đến chiết khấu theo số lượng lớn.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Hiện nay, các doanh nghiệp bán lẻ và F&B áp dụng nhiều chiến lược quản lý đơn hàng khác nhau. Bảng dưới đây đối chiếu các phương pháp phổ biến:

Phương pháp Cơ chế hoạt động Ưu điểm Nhược điểm Độ phù hợp với F&B
Kinh nghiệm / Trực giác Đặt hàng dựa trên ước tính của quản lý cửa hàng Đơn giản, không cần công cụ tính toán phức tạp Sai số lớn, chi phí lưu kho cao hoặc thường xuyên thiếu hàng Thấp (Dễ gây thất thoát nguyên liệu)
EOQ (Economic Order Quantity) Kích thước lô cố định $Q^* = \sqrt{\frac{2DS}{H}}$ Tối ưu với nhu cầu phẳng, bất biến theo thời gian Giả định nhu cầu không đổi là phi thực tế với F&B Kém (Gây dư thừa khi nhu cầu giảm, thiếu khi nhu cầu tăng)
Wagner-Whitin (WWA) Quy hoạch động (Dynamic Programming) tìm nghiệm tối ưu toàn cục Đảm bảo đạt chi phí thấp nhất về mặt toán học Độ phức tạp thuật toán cao $\mathcal{O}(N^2)$, khó triển khai trên hệ thống biên nhẹ Trung bình (Tốn tài nguyên tính toán)
Silver-Meal (SMA) Thuật toán heuristic tìm điểm cực tiểu chi phí biến thiên bình quân Cân bằng hoàn hảo giữa chi phí đặt và tồn kho; độ phức tạp $\mathcal{O}(N)$ Cho nghiệm xấp xỉ tối ưu (độ lệch $<1.5%$ so với WWA) Rất cao (Lý tưởng cho môi trường biến động)

Ma trận ưu tiên yêu cầu hệ thống (MoSCoW)

  • Must have (Bắt buộc):
    • Bóc tách BOM cho 5 nhóm đồ uống chủ lực.
    • Phân loại ABC tự động theo giá trị tích lũy.
    • Thuật toán tính toán chu kỳ dừng $MVC(T+1) > MVC(T)$ cho nguyên liệu nhóm A.
  • Should have (Nên có):
    • Cảnh báo tồn kho an toàn (Safety Stock) tích hợp cơ chế hạn sử dụng FIFO.
    • Bảng tổng hợp lịch đặt hàng chi tiết 13 tuần ($Q_1, Q_2, \dots, Q_{13}$).
  • Could have (Có thể mở rộng):
    • API kết nối cơ sở dữ liệu bán hàng POS để lấy dữ liệu realtime.
  • Won't have (Chưa thực hiện ở giai đoạn này):
    • Mô hình tối ưu hóa vận chuyển đa điểm (Multi-echelon Vehicle Routing).

Thiết kế hệ thống và mô hình toán học

Công thức toán học thuật toán Silver-Meal (SMA)

Thuật toán giải bài toán kích thước lô động qua các bước tính toán chi phí:

  1. Phí tồn trữ gia tăng của chu kỳ thứ $i$ ($IHC_i$ - Incremental Holding Cost): $$IHC_i = P \cdot h \cdot (i - 1) \cdot R_i$$ Trong đó: $P$ là đơn giá nguyên vật liệu, $h$ là tỷ lệ chi phí tồn trữ trên mỗi chu kỳ, $R_i$ là nhu cầu của chu kỳ thứ $i$.

  2. Phí tồn trữ tích lũy qua $T$ chu kỳ ($CHC(T)$ - Cumulative Holding Cost): $$CHC(T) = \sum_{i=1}^{T} IHC_i$$

  3. Tổng chi phí biến thiên ($TVC(T)$ - Total Variable Cost): $$TVC(T) = C + CHC(T)$$ Trong đó: $C$ là chi phí cho mỗi lần đặt hàng (Setup / Ordering Cost).

  4. Chi phí biến thiên trung bình mỗi chu kỳ ($MVC(T)$ - Mean Variable Cost): $$MVC(T) = \frac{TVC(T)}{T}$$

  5. Quy tắc dừng: Lần lượt tính $MVC(T)$ với $T = 1, 2, 3\dots$. Khi $MVC(T+1) > MVC(T)$, kết thúc chu kỳ đặt hàng hiện tại. Kích thước đơn hàng tại chu kỳ bắt đầu được xác định là: $$Q = \sum_{i=1}^{T} R_i$$ Sau đó, đặt lại bài toán bắt đầu từ chu kỳ $T+1$.


Implementation và kết quả

Xây dựng ma trận định mức nguyên vật liệu (BOM)

Dữ liệu khảo sát được tổng hợp từ 5 sản phẩm đặc trưng với bảng BOM chuẩn hóa trên 1 đơn vị ly:

Dựa trên ma trận bóc tách trên, kết hợp số liệu tiêu thụ 3 tháng (Tháng 1: 16.782 ly; Tháng 2: 33.686 ly; Tháng 3: 49.912 ly), tổng nhu cầu nguyên liệu thô được quy đổi chuẩn xác.

Kết quả phân loại ABC (Pareto Analysis)

Thuật toán ABC chia 17 loại nguyên vật liệu thành 3 nhóm quản lý:

  • Nhóm A (Trọng yếu): Gồm Trà (6.591,4 lít - 2.306.990 VNĐ), Sữa đặc (1.418,01 lít - 6.716.886 VNĐ), và Whipping Cream (896,31 lít - 5.377.860 VNĐ). Đây là nhóm có giá trị sử dụng cao, chi phí lưu kho đắt đỏ và tính chất mau hỏng, được lựa chọn để đưa vào mô hình SMA.
  • Nhóm B: Bao bì (Ly nhựa, Ống hút) với tổng chi phí chiếm khoảng 19,6%.
  • Nhóm C: Các loại syrup, thạch đác, topping (chiếm phần trăm chi phí thấp hoặc thời hạn bảo quản dài).
"""
Silver-Meal Algorithm Implementation in Python 3.11
Dynamic Lot Sizing Heuristic for Supply Chain Optimization
"""
from typing import List, Dict, Tuple

def calculate_silver_meal(
    demand: List[float], 
    unit_price: float, 
    holding_rate: float, 
    order_cost: float
) -> Dict[str, any]:
    """
    Tính toán lịch đặt hàng và chi phí theo thuật toán Silver-Meal (SMA).
    """
    n = len(demand)
    orders = [0.0] * n
    schedule = []
    
    current_period = 0
    total_cost = 0.0
    
    while current_period < n:
        t = 1
        chc = 0.0
        best_t = 1
        mvc_prev = float('inf')
        
        while current_period + t <= n:
            i = t
            r_i = demand[current_period + t - 1]
            ihc_i = unit_price * holding_rate * (i - 1) * r_i
            chc_current = chc + ihc_i
            tvc_current = order_cost + chc_current
            mvc_current = tvc_current / t
            
            if mvc_current > mvc_prev and t > 1:
                # Đạt điểm dừng cực tiểu cục bộ
                best_t = t - 1
                break
            else:
                chc = chc_current
                mvc_prev = mvc_current
                best_t = t
                t += 1
        
        # Gộp lô hàng cho best_t chu kỳ
        order_qty = sum(demand[current_period : current_period + best_t])
        orders[current_period] = round(order_qty, 2)
        
        schedule.append({
            "order_at_week": current_period + 1,
            "span_weeks": best_t,
            "quantity": round(order_qty, 2),
            "tvc": round(order_cost + chc, 2)
        })
        
        total_cost += (order_cost + chc)
        current_period += best_t

    return {
        "order_schedule": orders,
        "details": schedule,
        "total_cost": total_cost
    }

# Input data thử nghiệm từ đồ án cho Nguyên liệu Trà (13 tuần)
demand_tea = [160.76, 210.65, 276.05, 336.60, 396.93, 457.20, 
              517.67, 577.89, 638.23, 698.65, 751.25, 819.36, 750.16]
p_tea = 350.0          # Đơn giá 350 đ/lít
h_tea = 0.06           # Tỷ lệ chi phí lưu kho 6%/tuần
c_tea = 2306990.0      # Chi phí đặt hàng mỗi lần

results = calculate_silver_meal(demand_tea, p_tea, h_tea, c_tea)

Kết quả tính toán thực nghiệm trên 3 nguyên vật liệu nhóm A

Dưới đây là bảng tổng hợp các thông số đầu vào và chi phí đặt hàng tích lũy qua 13 tuần thu được từ việc áp dụng thuật toán SMA:

Nguyên vật liệu Đơn giá $P$ (VNĐ/đv) Tỷ lệ $h$ Chi phí đặt hàng $C$ (VNĐ) Tổng nhu cầu 13 tuần ($R$) Số lần đặt hàng tối ưu ($Q_k$) Tổng chi phí quản lý $C_{đh}$ (VNĐ)
Trà (Lít) 350 0,06 2.306.990 6.591,40 12 đợt 27.683.880
Sữa đặc (Lít) 4.736,84 0,08 6.716.886,4 1.418,01 12 đợt 80.602.637,9
Whipping Cream (Lít) 6.000 0,12 5.377.860 896,31 12 đợt 64.534.320

Chi tiết kế hoạch đặt hàng ($Q_k$) cho Nguyên liệu Trà qua 13 tuần:

  • Tuần 1: $Q_1 = 160,76$ lít
  • Tuần 2: $Q_2 = 210,65$ lít
  • Tuần 3: $Q_3 = 276,05$ lít
  • Tuần 4: $Q_4 = 336,60$ lít
  • Tuần 5: $Q_5 = 396,93$ lít
  • Tuần 6: $Q_6 = 457,20$ lít
  • Tuần 7: $Q_7 = 517,67$ lít
  • Tuần 8: $Q_8 = 577,89$ lít
  • Tuần 9: $Q_9 = 638,23$ lít
  • Tuần 10: $Q_{10} = 698,65$ lít
  • Tuần 11: $Q_{11} = 751,25$ lít
  • Tuần 12: $Q_{12} = 819,36$ lít
  • Tuần 13: $Q_{13} = 750,16$ lít

Nhờ đặc thù chi phí đặt hàng tương đối cao so với đơn giá lưu kho thấp của cốt trà thô, thuật toán xác lập các khoảng chia lô linh hoạt, giúp hạn chế việc giữ lượng trà pha sẵn quá thời hạn vàng 4–6 tiếng trong môi trường F&B.


Đổi mới và đóng góp

  1. Ứng dụng mô hình toán học giải quyết bài toán ngành F&B Việt Nam: Khác với các nghiên cứu công nghiệp nặng hay sản xuất may mặc vốn có chu kỳ nhu cầu dài và ít biến tính, đồ án đã hiệu chỉnh tỷ lệ lưu kho $h$ (từ 6% đến 12%/tuần) để phản ánh trung thực mức hao hụt và chi phí bảo quản lạnh đối với ngành pha chế.
  2. So sánh định lượng vượt trội:
    • So với MSR (Minimum Service Requirement): Giảm từ 13,9% đến 50% chi phí lãng phí tồn đọng (tương đồng với kết quả nghiên cứu đối chuẩn của Drio Nadyatama et al., 2016).
    • So với Chính sách đặt hàng theo cảm tính: Tối ưu hóa được 2,9% – 3,6% ngân sách lưu chuyển nguyên liệu (tương quan với công bố của M Djunaidi et al., 2018).
  3. Quy trình kết hợp liên hoàn ABC - BOM - SMA: Tạo nên khung phương pháp luận có tính tái lập cao (reproducible), dễ dàng đóng gói thành các module tính toán nhúng vào hệ thống ERP quản lý chuỗi nhà hàng.

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

Tại mỗi cửa hàng Phúc Long:

  1. Cuối mỗi ngày Chủ Nhật, hệ thống tổng hợp sản lượng ly đồ uống tiêu thụ trong tuần từ máy POS.
  2. Dữ liệu được đưa qua mô-đun phân rã BOM để dự báo nhu cầu nguyên vật liệu nhóm A cho tuần kế tiếp.
  3. Thuật toán SMA chạy tự động để đưa ra đề xuất: Cần đặt hàng ngay trong tuần này hay kết hợp gộp lô với tuần kế tiếp, xuất ra file PO (Purchase Order) tự động gửi đến Trung tâm phân phối (Central Kitchen/DC).

Yêu cầu kỹ thuật và triển khai (Technical Requirements)

  • Môi trường vận hành: Máy chủ Linux Ubuntu 22.04 LTS / Docker Container.
  • Ngôn ngữ & Thư viện: Python 3.10+, NumPy 1.24+, Pandas 2.0+, FastAPI (phục vụ RESTful Microservice).
  • Phần cứng tối thiểu: 2 Core CPU, 4GB RAM, dung lượng lưu trữ 20GB (xử lý nhẹ nhàng cho chuỗi 500 cửa hàng).

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Nhu cầu giả định tất định (Deterministic Demand): Thuật toán SMA mặc định nhu cầu các tuần đã biết trước; chưa tích hợp độ lệch ngẫu nhiên (Stochastic demand) do tác động của thời tiết (mưa bão, nắng nóng đột xuất).
  • Chưa tính đến chiết khấu số lượng (Quantity Discounts): Một số nhà cung cấp sữa đặc áp dụng biểu giá bậc thang nếu đặt trên 5.000 hộp/lần.

Hướng nâng cấp đề xuất

  • Tích hợp mạng nơ-ron hồi quy LSTM (Long Short-Term Memory) hoặc Prophet nhằm tự động dự báo nhu cầu đầu vào ($R_i$) trước khi đưa vào thuật toán SMA.
  • Mở rộng thuật toán cho hệ thống đa cấp bậc (Multi-echelon MRP) bao gồm cả kho tổng trung tâm và các cửa hàng vệ tinh.

Đối tượng hưởng lợi

  • Sinh viên & Học viên ngành Logistics/Kỹ thuật Hệ thống Công nghiệp: Tham khảo mô hình toán học giải quyết trọn vẹn từ khảo sát thực địa, giải bài toán định lượng BOM đến thuật toán định cỡ lô.
  • Kỹ sư phát triển phần mềm (Software Engineers): Tiếp cận mã nguồn mẫu triển khai thuật toán Silver-Meal bằng ngôn ngữ hiện đại, dễ dàng tích hợp vào các dự án quản trị kho bãi (WMS/ERP).
  • Chủ doanh nghiệp & Quản lý chuỗi F&B: Ứng dụng ngay khung phương pháp để cắt giảm từ 3% - 5% tổng chi phí vận hành kho, chấm dứt tình trạng thất thoát do nguyên liệu hết hạn.

Câu hỏi thường gặp

1. Thuật toán Silver-Meal khác biệt gì so với công thức EOQ truyền thống?

Công thức EOQ giả định nhu cầu tiêu thụ là một hằng số bất biến theo thời gian ($D = \text{const}$). Trong ngành F&B, nhu cầu đồ uống thay đổi mạnh theo tuần. Silver-Meal là thuật toán định cỡ lô động, liên tục tái cân bằng giữa chi phí cố định mỗi lần đặt hàng và chi phí lưu kho của các kỳ tương lai, do đó cho kết quả tiết kiệm chi phí vượt trội khi nhu cầu biến thiên.

2. Khi nào thuật toán Silver-Meal đưa ra quyết định dừng một chu kỳ đặt hàng?

Thuật toán tính toán chi phí biến thiên trung bình trên mỗi chu kỳ ($MVC(T) = \frac{TVC(T)}{T}$). Thuật toán sẽ tiếp tục gom thêm nhu cầu của tuần tiếp theo vào lô hàng chừng nào $MVC(T)$ vẫn giảm. Ngay khi $MVC(T+1) > MVC(T)$, thuật toán dừng lại, chốt kích thước đơn hàng bằng tổng nhu cầu của $T$ kỳ vừa xét và bắt đầu một chu kỳ đặt hàng mới.

3. Tỷ lệ chi phí tồn trữ $h$ trong F&B được cấu thành từ những yếu tố nào?

Trong nghiên cứu này, hệ số $h$ (từ 6% đến 12%) bao gồm: chi phí vốn bị chiếm dụng, chi phí vận hành kho lạnh/tủ đông, chi phí điện năng bảo quản, chi phí nhân công kiểm kê và đặc biệt là tỷ lệ rủi ro suy giảm chất lượng/hư hỏng của nguyên liệu tươi sống.

4. Đồ án xử lý vấn đề nguyên liệu quá hạn sử dụng bằng cách nào?

Đồ án kết hợp nguyên tắc quản trị kho FIFO (First-In, First-Out - Nhập trước, Xuất trước) cùng việc giới hạn cận trên của chu kỳ đặt hàng $T$ trong thuật toán SMA không vượt quá thời gian bảo quản an toàn của nguyên liệu sau khi mở bao bì.

5. Hệ thống này có thể tích hợp vào các phần mềm bán hàng phổ biến như iPOS, KiotViet không?

Hoàn toàn khả thi. Thuật toán có thể được đóng gói dưới dạng một API Service (sử dụng FastAPI hoặc Flask). Hàng ngày/tuần, phần mềm POS gửi dữ liệu tiêu thụ qua webhook JSON; API tính toán SMA và trả về đề xuất số lượng đặt hàng tối ưu cho từng mã nguyên liệu.


Kết luận

Đồ án "Ứng dụng thuật toán SMA tối ưu hóa số lượng đơn hàng nhằm tiết kiệm chi phí tồn kho tại Phúc Long" đã chứng minh tính khả thi và hiệu quả kinh tế rõ rệt của việc số hóa và toán học hóa quy trình quản trị chuỗi cung ứng ngành F&B. Thông qua việc bóc tách định mức BOM, phân loại nhóm A bằng ma trận Pareto và giải bài toán định cỡ lô động bằng thuật toán Silver-Meal, nghiên cứu đã xây dựng một kế hoạch cung ứng 13 tuần chi tiết cho các nguyên liệu cốt lõi (Trà, Sữa đặc, Whipping Cream).

Giải pháp không chỉ giúp cửa hàng giảm thiểu đáng kể chi phí tồn trữ tích lũy và chi phí đặt hàng mà còn triệt tiêu rủi ro đứt gãy nguồn cung trong những giai đoạn bán hàng cao điểm. Đây là nền tảng vững chắc để phát triển thành các giải pháp quản lý kho thông minh (Smart Inventory Management), đóng góp thiết thực cho quá trình chuyển đổi số của các doanh nghiệp bán lẻ và dịch vụ ẩm thực tại Việt Nam.