Mô hình hoá toán học là việc dịch một câu hỏi đời thực sang ngôn ngữ của biến, tham số và quan hệ giữa chúng, giải phần toán, rồi dịch kết quả ngược trở lại để xem nó có trả lời được câu hỏi ban đầu hay không. Phần giải thường là phần dễ nhất. Khó là chọn đúng thứ cần đưa vào, đúng thứ được phép bỏ qua, và biết lúc nào mô hình đã đi quá xa thực tế.
Bài này đi qua sáu bước mà sách toán ứng dụng nào cũng dạy dưới tên gọi này hay tên gọi khác, minh hoạ bằng một ví dụ xuyên suốt: một cửa hàng nên đặt mỗi lần bao nhiêu thùng hàng để tổng chi phí thấp nhất. Phép tính đủ nhỏ để bạn làm tay trên giấy. Một phần riêng bàn cách dùng chatbot như người cùng dựng mô hình mà không để nó lén cài vào những giả định bạn không hề đồng ý.
Mô hình là một bản rút gọn có chủ đích, không phải bản sao
Một tấm bản đồ đường phố không vẽ từng viên gạch lát vỉa hè, và chính vì thế nó mới dùng được. Mô hình toán học cũng vậy: nó cố tình bỏ đi phần lớn chi tiết của thế giới để giữ lại vài quan hệ quan trọng nhất cho câu hỏi đang hỏi. Câu nổi tiếng của nhà thống kê George Box, đại ý mọi mô hình đều sai nhưng có những mô hình hữu ích, thường được trích để nhắc điều này.
Điều đó có nghĩa là không có mô hình nào đúng cho mọi câu hỏi. Cùng một cửa hàng, nếu câu hỏi là đặt hàng bao nhiêu mỗi lần, ta quan tâm đến nhu cầu cả năm, chi phí mỗi lần đặt và chi phí giữ hàng trong kho. Nếu câu hỏi là xếp ca cho nhân viên, các con số đó gần như vô nghĩa, thay vào đó là lượng khách theo giờ và giới hạn giờ làm. Mô hình được dựng quanh câu hỏi, không quanh đối tượng.
Người mới học hay mắc hai lỗi ngược nhau. Lỗi thứ nhất là đưa quá nhiều thứ vào ngay từ đầu, kết quả là một hệ phương trình không ai giải nổi và không ai hiểu nổi. Lỗi thứ hai là rút gọn đến mức bỏ mất chính cơ chế tạo ra câu trả lời. Cách an toàn là bắt đầu từ mô hình đơn giản nhất còn trả lời được câu hỏi, kiểm nó, rồi mới thêm chi tiết từng lớp một khi có lý do rõ ràng.
Sáu bước từ câu hỏi đến kết luận
Các giáo trình gọi tên mỗi bước khác nhau, nhưng trình tự gần như giống nhau. Bạn có thể dùng danh sách dưới đây như một bảng kiểm mỗi khi gặp bài toán mới.
- Phát biểu câu hỏi bằng lời, thật hẹp. "Cửa hàng nên đặt bao nhiêu thùng nước mỗi lần để tổng chi phí đặt và giữ hàng trong năm nhỏ nhất" tốt hơn nhiều so với "tối ưu kho hàng".
- Liệt kê đại lượng và phân loại. Cái gì ta được chọn (biến quyết định), cái gì đã biết hoặc ước lượng được (tham số), cái gì là kết quả cần tính (đầu ra).
- Viết giả định ra giấy. Nhu cầu đều quanh năm, hàng về ngay khi đặt, không cho phép hết hàng, chi phí mỗi lần đặt cố định. Mỗi giả định là một chỗ mô hình có thể sai.
- Dựng quan hệ toán học. Viết đầu ra theo biến và tham số, kèm ràng buộc nếu có. Kiểm đơn vị của từng vế trước khi đi tiếp.
- Giải và kiểm phép giải. Giải tay, bằng bảng tính hoặc phần mềm; thử lại với vài giá trị dễ tính.
- Diễn giải và đối chiếu thực tế. Kết quả có hợp lý không, nhạy với tham số nào, giả định nào sai thì kết luận đổi ra sao. Nếu không ổn, quay lại bước 3.
Bước 3 và bước 6 là nơi phân biệt người làm mô hình cẩn thận với người chỉ biết thay số. Hai bước đó cũng là chỗ chatbot hay làm qua loa nhất, vì nó được huấn luyện để đưa ra câu trả lời gọn chứ không phải để hỏi ngược lại bạn.
Ví dụ xuyên suốt: lượng đặt hàng tối ưu tính tay
Ví dụ giả định: một cửa hàng tạp hoá bán đều 1.200 thùng nước mỗi năm. Mỗi lần đặt hàng tốn 200 nghìn đồng cho phí giao và công kiểm nhận, không phụ thuộc số thùng. Giữ một thùng trong kho suốt một năm tốn 12 nghìn đồng, gồm chỗ để, hao hụt và tiền vốn nằm chết. Gọi Q là số thùng mỗi lần đặt, đó là biến quyết định duy nhất.
Với nhu cầu đều và hàng về ngay, lượng tồn kho giảm đều từ Q xuống 0 rồi lại nhảy lên Q, nên tồn kho trung bình là Q/2. Chi phí giữ hàng mỗi năm là 12 nhân Q/2, tức 6Q nghìn đồng. Số lần đặt mỗi năm là 1.200/Q, nên chi phí đặt hàng là 200 nhân 1.200/Q, tức 240.000/Q nghìn đồng. Tổng chi phí là C(Q) = 6Q + 240.000/Q.
Hai thành phần kéo về hai phía: đặt nhiều mỗi lần thì tiền giữ kho tăng, đặt ít mỗi lần thì tiền đặt hàng tăng. Điểm cân bằng của công thức này rơi vào chỗ hai chi phí bằng nhau, cho ra công thức quen thuộc Q* = căn bậc hai của (2 nhân nhu cầu năm nhân chi phí một lần đặt, chia chi phí giữ một đơn vị một năm). Thay số: căn của (2 nhân 1.200 nhân 200, chia 12) bằng căn của 40.000, tức 200 thùng.
Kiểm lại bằng tay: với Q bằng 200, cửa hàng đặt 6 lần một năm, chi phí đặt là 1.200 nghìn, tồn kho trung bình 100 thùng nên chi phí giữ là 1.200 nghìn, tổng 2,4 triệu đồng. Thử Q bằng 100: đặt 12 lần tốn 2.400 nghìn, giữ 50 thùng tốn 600 nghìn, tổng 3 triệu. Thử Q bằng 400: đặt 3 lần tốn 600 nghìn, giữ 200 thùng tốn 2.400 nghìn, cũng 3 triệu. Đường chi phí khá bằng quanh điểm tối ưu, nên đặt 180 hay 220 thùng cũng chỉ lệch chút ít. Đó là một kết luận thực tế đáng giá hơn bản thân con số 200.
Giả định nào đang gánh kết luận
Mô hình trên được biết đến từ đầu thế kỷ 20 và vẫn có trong giáo trình quản trị vận hành vì nó gọn. Nhưng mỗi giả định đều có thể vỡ trong thực tế. Bảng dưới liệt kê từng giả định, dấu hiệu nó sai và hướng sửa mô hình.
| Giả định | Khi nào sai | Hướng sửa mô hình |
|---|---|---|
| Nhu cầu đều quanh năm | Hàng bán theo mùa, cao điểm dịp Tết hoặc mùa nóng | Chia năm thành từng giai đoạn, tính riêng từng giai đoạn |
| Hàng về ngay khi đặt | Nhà cung cấp giao sau vài ngày | Thêm điểm đặt lại: đặt khi tồn kho còn đủ bán trong thời gian chờ |
| Không bao giờ hết hàng | Nhu cầu dao động, có ngày bán gấp đôi | Thêm tồn kho an toàn, cần mô hình xác suất cho nhu cầu |
| Giá mua không đổi theo số lượng | Có chiết khấu khi đặt từ một mức trở lên | Tính tổng chi phí kể cả tiền hàng ở từng mức giá rồi so sánh |
| Kho không giới hạn | Kho chỉ chứa được một số thùng nhất định | Thêm ràng buộc Q nhỏ hơn hoặc bằng sức chứa |
Cách đọc bảng: không có giả định nào là "sai" theo nghĩa tuyệt đối. Câu hỏi đúng là sai lệch đó có đủ lớn để đổi quyết định hay không. Nếu chiết khấu số lượng chỉ là một hai phần trăm, mô hình gốc vẫn dùng tốt; nếu kho chỉ chứa 150 thùng, ràng buộc đó quyết định luôn đáp án, vì chi phí tăng dần khi Q giảm từ 200 về 150 nên đặt sát sức chứa là tốt nhất.
Dùng AI như người cùng dựng mô hình
Bắt nó liệt kê giả định trước khi tính. Câu lệnh mẫu: "Mình có bài toán sau [mô tả bằng lời, không có tên công ty]. Chưa giải vội. Hãy liệt kê các biến quyết định, tham số, đầu ra và mọi giả định cần có để dựng mô hình đơn giản nhất. Đánh dấu giả định nào dễ sai nhất trong thực tế." Đọc danh sách đó và gạch những giả định bạn không chấp nhận.
Yêu cầu kiểm đơn vị. Một lỗi rất phổ biến là trộn chi phí giữ hàng theo tháng với nhu cầu theo năm. Bảo chatbot ghi đơn vị cạnh từng đại lượng và kiểm hai vế của mỗi phương trình. Nếu nó bỏ qua, chính bạn tự làm bước này.
Đặt câu hỏi "nếu thì". Sau khi có đáp án, hỏi tiếp: chi phí đặt hàng tăng gấp đôi thì Q tối ưu đổi thế nào; nhu cầu giảm một nửa thì sao. Với công thức căn bậc hai ở trên, chi phí đặt tăng gấp đôi chỉ làm Q tăng khoảng 1,41 lần. Nếu câu trả lời của AI nói Q tăng gấp đôi, bạn đã bắt được một lỗi.
Không đưa số liệu thật của doanh nghiệp. Doanh số, giá nhập, chiết khấu với nhà cung cấp là bí mật kinh doanh. Khi nhờ chatbot dựng mô hình, dùng số làm tròn hoặc nhân tất cả với một hệ số tuỳ ý; cấu trúc bài toán không đổi mà dữ liệu thật không rời khỏi máy bạn.
Tự giải lại ít nhất một lần. Mô hình nhỏ như ví dụ trên giải tay trong năm phút. Làm tay một lần giúp bạn hiểu vì sao đáp án là như vậy, và đó là thứ cần để bảo vệ kết luận trước người khác.
Kiểm định mô hình: khi nào tin, khi nào quay lại
Một mô hình đã cho ra đáp án gọn gàng vẫn cần qua ba phép thử trước khi dùng. Phép thứ nhất là thử với dữ liệu quá khứ: nếu năm ngoái cửa hàng đặt mỗi lần 300 thùng, mô hình dự báo tổng chi phí bao nhiêu, và con số đó có gần với chi phí thực tế ghi trong sổ không. Lệch nhiều thì có một chi phí hoặc một hành vi nào đó mô hình chưa thấy.
Phép thứ hai là thử các trường hợp biên. Khi chi phí giữ hàng tiến về 0, mô hình nói nên đặt rất nhiều mỗi lần, điều đó hợp lý. Khi chi phí đặt hàng tiến về 0, mô hình nói nên đặt từng thùng một, cũng hợp lý với giả định đã chọn. Nếu một mô hình cho kết quả vô lý ở biên, rất có thể công thức đã sai dấu hoặc sai đơn vị.
Phép thứ ba là phân tích độ nhạy: thay từng tham số lên xuống mười hay hai mươi phần trăm và xem đáp án thay đổi bao nhiêu. Tham số nào làm đáp án đổi mạnh thì đáng bỏ công đo cho chính xác; tham số nào gần như không ảnh hưởng thì ước lượng thô là đủ. Đây là cách người làm toán ứng dụng tiết kiệm thời gian thu thập dữ liệu, và cũng là câu hỏi rất hợp để giao cho bảng tính hoặc chatbot làm thay phần tính lặp lại, còn bạn đọc kết quả.
Nếu cả ba phép thử đều ổn, mô hình được dùng cho đến khi có dấu hiệu thực tế đã đổi. Nếu không, quay về bước giả định. Vòng lặp này mới là bản chất của mô hình hoá; đáp án đầu tiên hiếm khi là đáp án cuối cùng.
Nơi bắt đầu luyện tập cho sinh viên và người tự học
Cách luyện mô hình hoá hiệu quả nhất là lấy những câu hỏi nhỏ quanh mình rồi tự đi hết sáu bước. Nên đi chợ mỗi ngày hay mỗi tuần một lần, nếu tính cả thời gian đi lại và đồ tươi bị hỏng. Một quán cà phê nên mở thêm quầy thứ hai từ lúc nào trong ngày. Một nhóm bạn nên chia tiền điện thế nào cho công bằng khi mỗi người dùng một kiểu. Không câu nào có đáp án duy nhất, và đó chính là điểm luyện được.
Khi đã quen, bạn sẽ thấy nhiều bài toán thật rơi vào vài khuôn có sẵn: tối ưu tuyến tính khi các quan hệ đều là tỉ lệ thuận và có giới hạn tài nguyên, bài toán vận tải và phân công khi cần ghép nguồn với đích, mô hình hàng đợi khi khách đến ngẫu nhiên, mô phỏng khi quá nhiều yếu tố bất định để giải bằng công thức. Các bài khác trong danh mục toán ứng dụng của trang đi sâu từng khuôn đó.
Một thói quen nên có ngay từ đầu: viết mô hình ra một trang giấy có đủ bốn phần là câu hỏi, đại lượng, giả định và phương trình. Khi đưa trang đó cho bạn học hay cho chatbot đọc, người kia góp ý được ngay vào đúng chỗ. Nếu chỉ đưa con số cuối cùng, không ai kiểm được bạn đã đi từ đâu tới đó.
Câu hỏi thường gặp
Mô hình hoá toán học khác giải bài tập toán ở chỗ nào?
Bài tập đã cho sẵn phương trình và dữ liệu, việc của bạn là giải. Mô hình hoá bắt đầu từ một câu hỏi bằng lời, bạn phải tự chọn biến, tự đặt giả định, tự viết phương trình, rồi kiểm xem đáp án có hợp với thực tế không.
Có cần học giỏi giải tích mới làm được mô hình hoá không?
Không cần ngay từ đầu. Nhiều mô hình hữu ích chỉ dùng phép tính số học, tỉ lệ và hàm bậc nhất. Giải tích, đại số tuyến tính và xác suất giúp bạn giải được lớp bài rộng hơn, nhưng tư duy đặt giả định và kiểm kết quả quan trọng hơn.
Chatbot có tự dựng mô hình đúng được không?
Với bài quen thuộc như lượng đặt hàng tối ưu, chatbot thường đưa đúng công thức. Rủi ro nằm ở giả định ngầm và lỗi đơn vị. Hãy yêu cầu nó liệt kê giả định trước, kiểm đơn vị, và tự tính lại ít nhất một trường hợp bằng tay.
Công thức lượng đặt hàng tối ưu có dùng được cho cửa hàng nhỏ không?
Dùng được như điểm xuất phát nếu nhu cầu tương đối đều. Với hàng theo mùa, hàng dễ hỏng hoặc có chiết khấu theo số lượng, cần điều chỉnh mô hình. Ưu điểm là đường chi phí khá bằng quanh điểm tối ưu nên sai số nhỏ ít gây hại.
Làm sao biết mô hình của mình đã đủ tốt?
Thử với dữ liệu quá khứ, thử các trường hợp biên và thay từng tham số lên xuống để xem đáp án nhạy đến đâu. Nếu kết quả hợp lý và quyết định không đổi khi tham số lệch vừa phải, mô hình đủ dùng cho câu hỏi đó.
Có nên đưa số liệu thật của công ty vào chatbot để dựng mô hình?
Không nên đưa doanh số, giá vốn hay tên đối tác thật. Bạn có thể làm tròn số hoặc nhân với một hệ số tuỳ ý để giữ cấu trúc bài toán. Chỉ đưa dữ liệu thật vào công cụ đã được công ty cho phép.