Mô phỏng từ các phân phối xác suất

Một phần của tài liệu Ứng dụng mô phỏng tin học trong doanh nghiệp (Trang 32)

Ta thấy rằng hàm Rand có khả năng tạo ra các số ngẫu nhiên được phân phối đồng đều giữa 0 và 1. Tuy nhiên, trong nhiều trường hợp mô phỏng cần các số ngẫu nhiên có phân phối xác suất khác so với phân phối đồng đều. Ví dụ phân phối hình chuông hoặc phân phối lệch là những phân phối như vậy.

Nếu phân phối mong muốn là rời rạc, khí đó phân phối xác suất nhận một số hữu hạn các giá trị có thể và các xác suất của nó. Sau đó ta có thể sử dụng hàm Rand cùng với hàm Vlookup để tạo ra các số ngẫu nhiên. Vấn đề này đã được thực hiện tại các ví dụ ở mục 2.2. Phương pháp này cho phép tạo các số ngẫu nhiên từ bất kỳ phân phối rời rạc đối xứng, phân phối lệch hoặc bất cứ điều gì đơn giản bằng cách thiết lập bảng tham chiếu chính xác.

Nói chung, có nhiều phân phối xác suất có thể sử dụng trong các mô phỏng. Chúng bao gồm một số phân phối nổi tiếng như phân phối chuẩn và phân phối nhị thức…. Có hai vấn đề cần làm rõ: đó là, phân phối nào sẽ được sử dụng và làm thế nào để ta tạo ra các giá trị ngẫu nhiên từ phân phối đó?

Ta thường chọn phân phối trên cơ sở lịch sử dữ liệu and/or tình trạng và đặc điểm chung của dữ liệu. Giả sử ta muốn mô phỏng kiểm tra ngẫu nhiên tại một siêu thị, ta có thể thu thập dữ liệu thông qua kiểm tra nhiều lần thực tế, tạo biểu đồ từ dữ liệu đó và bằng mọi cách làm cho biểu đồ này phù hợp với một trong các phân phối lý thuyết. Trên thực tế, điều này chỉ thực hiện được khi ta add-in công cụ @Risk và thực hiện công cụ đó (@Risk là một phần của bộ phần mềm Palisade Decision Tools mà luận văn nghiên cứu sau này). Nếu có đủ dữ liệu và

xác định được phân phối xác suất phù hợp nhất của dữ liệu thì có thể sử dụng mô hình mô phỏng. Trường hợp không có dữ liệu, ta có thể chọn phân phối xác suất trên những xem xét tổng quát. Ví dụ, có thể chọn phân phối chuẩn nếu sự đối xứng về thực trạng của bài toán.

Mỗi khi lựa chọn phân phối xác chuẩn, nhị thức hoặc phân phối khác, ta cần tạo ra các giá trị ngẫu nhiên từ phân phối này. Để thực hiện được điều đó, ta có những cách sau:

1. Sử dụng chức năng Build-in trong Excel cùng với hàm RAND. 2. Sử dụng các chức năng cung cấp bởi @Risk add-in.

Ví dụ, giả sử ta muốn tạo ra giá trị phân phối ngẫu nhiên chuẩn với trung bình 100 và độ lệch chuẩn 10. Ta có thể sử dụng công thức = NorMinV(Rand();100;10)

Cuối cùng, nếu @Risk add-in được nhúng vào Excel, ta có thể thực hiện yêu cầu trên bằng công thức =RiskNormal(100;10).

Như ví dụ trên, giả sử ta muốn tạo một giá trị ngẫu nhiên từ phân phối tam giác như trong hình 2.8, trong đó a và b là giới hạn dưới và trên, c là giá trị có khả năng nhất, đây là phân phối thường được sử dụng để hoàn thành một hoạt động nào đó. Khi đó a là thời gian ít nhất có thể, b là thời gian nhiều nhất có thể và c là đại lượng tốt nhất. Để tạo ra các giá trị ngẫu nhiên theo phân phối này thì sử dụng add-in là hiệu quả nhất. Với công cụ @Risk ta sử dụng công thức =RiskTriang(a; c; b). Xem hình 2.9 và file ProbDists.xls.

a c b

Để rõ hơn về phân phối tam giác, ta sẽ sử dụng phân phối này cho ví dụ đầu thầu của một công ty. Trong tình huống mà một công ty phải đặt giá với đối thủ cạnh tranh, mô phỏng thường được sử dụng để xác định giá thầu tối ưu cho công ty, trong khi công ty không biết các đối thủ cạnh tranh sẽ đặt giá bao nhiêu, nhưng có thể biết phạm vi đặt giá của đối thủ, cụ thể ta xem xét ví dụ sau.

Ví dụ 2.3: Công ty xây dựng Hà Thành cần quyết định nên thực hiện đặt giá thầu cho một dự án xây dựng là bao nhiêu? Hà Thành dự tính chi phí 1 tỷ VNĐ để hoàn thành dự án (nếu dành được hợp đồng) và chi phí mua hồ sơ đăng ký đầu thầu là 35 triệu VNĐ. Có bốn đối thủ cạnh tranh tiềm năng tham gia đấu thầu với Hà Thành. Các giá thầu thấp sẽ dành được hợp đồng (người trúng thầu sẽ nhận được số tiền trúng thầu để hoàn thành dự án). Căn cứ vào tình hình khảo sát số liệu của dự án và thông tin của các đối thủ, Hà Thành phân tích và đánh giá: mỗi giá thầu của đối thủ cạnh tranh có một phân phối tam giác với ngưỡng thấp và cao là 1.000.000.000a và 1.000.000.000b và nhiều khả năng nhất là giá thầu 1.000.000.000c. Nghĩa là, mỗi giá thầu của đối thủ cạnh tranh ít nhất là a lần giá thầu của Hà Thành, không nhiều hơn b lần giá của Hà Thành và gần nhất với c lần giá thầu mà Hà Thành đưa ra. Với ví dụ này, giả sử các hệ số a=1, b=3 và c =1,3. Tuy nhiên cả bốn đối thủ cạnh tranh đấu thầu cũng được giả định là độc lập với nhau. Nếu Hà Thành quyết định ngưỡng từ 1 tỷ đến 1,5 tỷ VNĐ, yêu cầu đặt ra là: Sử dụng mô phỏng xác định giá thầu cho Hà Thành đưa ra để không những chiến thắng các đối thủ mà còn tối đa hóa lợi nhuận cho công ty.

Giải pháp

Phát triển mô hình mô phỏng ví dụ công ty Hà Thành được thể hiện trong hình 2.9 (file HaThanh_Bidding.xls).

1. Dữ liệu Input. Nhập vào các chi phí mua hồ sơ đăng ký thầu và chi phí hoàn thành dự án cùng các hệ số a, b và c của phân phối giá thầu. Các hệ số này do Hà Thành phân tích từ các số liệu thu thập được và có ý nghĩa rằng giá thầu của đối thủ cạnh tranh sẽ nằm trong khoảng 1.000 triệu VNĐ đến 3.000 triệu VNĐ và có khả năng nhất là 1.300 triệu VNĐ.

2. Biểu đồ tam giác các số ngẫu nhiên. Để xác định giá thầu của đối thủ cạnh

tranh, ta cần tạo ra bốn biểu đồ phân phối tam giác các số ngẫu nhiên trong dòng 14. Khi StatPro hoặc RandFns đã được and-in vào excel, ta sử dụng công thức Triangular_($B$8*$B$4, $B$9*$B$4, $B$10*$B$4) để xác định giá thầu của các đối thủ. Với các số ngẫu nhiên cụ thể được sử dụng trong hình 2.10, ta thấy rằng hai đối thủ cạnh tranh có giá thầu cạnh tranh xấp xỉ 1.400 triệu VNĐ.

3. Những giá thầu có thể. Các giá thầu có thể của công ty Hà Thành trong vùng A18:A28, bao gồm cả quyết định Nobid.

4. Hà Thành có trúng thầu không? Với mỗi giá thầu Hà Thành đưa ra, xác định xem giá thầu nào sẽ chiến thắng hợp đồng với công thức

=IF(A19<=MIN($B$14:$E$14),1,0) tại ô B19 và sao chép công thức này sang vùng B20:B28. Giá trị a=1 (tại cột B) có nghĩa là Hà Thành đã chiến thắng hợp động, a=0 nghĩa là một đối thủ cạnh tranh đã chiến thắng.

5. Lợi nhuận. Tại ô C18 có giá trị là 0 do Hà Thành không tham gia đấu thầu. Với tất cả các quyết định giá thầu khác có lợi nhuận độc lập với thắng thầu hay thất bại của Hà Thành. Để xác định giá trị lợi nhuận cho từng giá thầu bằng công thức If(B19=1, A19-ProjectCost, 0)-BidCost và sao chép hết bảng mô hình (ProjectCost là chi phí hoàn thành dự án tại ô B4, BidCost là chi phí tham gia đấu thầu tại ô B3). Kết quả trong hình 2.9 cho biết các quyết định giá thầu của Hà Thành tốt nhất trong trường hợp cụ thể 1.350 triệu VNĐ và tạo ra lợi nhuận 315 triệu VNĐ. Như vậy, nếu Hà Thành biết giá thầu của các đối thủ trong trường hợp mà giá thầu cao nhất vẫn còn ít hơn giá thầu của đối thủ cạnh tranh. Tuy nhiên, Hà Thành không có thông tin này khi đưa ra quyết định, vì vậy, làm thế nào để Hà Thành có quyết định giá thầu tối ưu?

Phương pháp tốt nhất là thực hiện nhiều lần mô phỏng, theo dõi các lợi nhuận từ mỗi quyết định có thể cho mỗi bản sao, trung bình các lợi nhuận cho mỗi quyết định có thể và chọn quyết định mà giá trị trung bình lợi nhuận cao nhất, giải quyết vấn đề này bắt đầu với bảng mô hình như trong hình 2.11.

Để tạo ra bảng mô hình này, ta tạo ra 100 bản sao trong vùng, tính toán các quyết định giá thầu với công thức =Transpose(A18:A28) trong vùng B36:L36 và lợi nhuận tương ứng với công thức Transpose(C18:C28) trong vùng B37:L37. Để xác định kết quả mô phỏng, thực hiện lệnh Data/Table và các hàm Average, Stdev để xác định độ lệch trung bình và độ lệch chuẩn cho 100 lần lặp.

Ngoài ra, biểu đồ thanh của các độ lệch chuẩn và trung bình có thể được tạo ra như hình 2.12 và 2.13. Ta thấy rằng ở hình 2.12, giá tiền đấu thầu 1.250 triệu VNĐ thu được lợi nhuận trung bình lớn nhất từ 100 lần lặp.

Tuy nhiên, trong hình 2.13 cho thấy rằng có nhiều rủi ro (độ lệch chuẩn lớn) liên quan với những chi phí dự thầu lớn. Vì mà Hà Thành có thể quyết định một hồ sơ dự thầu giá nhỏ hơn 1.200 triệu VNĐ để tránh bị tổn thất lớn trong trường hợp xấu nhất.

Các số liệu trong hình 2.10 và các biểu đồ liên quan chưa hẳn là kết quả tốt nhất cho Hà Thành, những số liệu này đều dựa trên các số ngẫu nhiên được tạo

0,0 50,0 100,0 150,0 200,0 250,0 No bid 1.050,0 1.100,0 1.150,0 1.200,0 1.250,0 1.300,0 1.350,0 1.400,0 1.450,0 1.500,0 Giá th?u Đ ? l ? c h c h u ? n

Hình 2.13. Mô phỏng độ lệch bình quân cho 100 lần lặp 0,0 20,0 40,0 60,0 80,0 100,0 120,0 140,0 No bid 1.050,0 1.100,0 1.150,0 1.200,0 1.250,0 1.300,0 1.350,0 1.400,0 1.450,0 1.500,0 Số tiền trúng thầu L i n h u ận b ìn h q u ân

ra cho 100 lần lặp, khi bấm F9 với tập tin HaThanh_Bidding.xls, các số liệu cũng như biểu đồ sẽ thay đổi. Để giải quyết vấn đề này ta tăng số lần lặp lên 1000 lần hoặc hơn nữa (phụ thuộc vào tốc độ máy tính) để lựa chọn một kết quả đấu thầu tốt nhất.

Một phần của tài liệu Ứng dụng mô phỏng tin học trong doanh nghiệp (Trang 32)

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

(86 trang)