Vì khách hàng của bạn là chính bạn, bạn sẽ cần phải quyết định câu trả lời cho tất cả các câu hỏi mà Mark Byers yêu cầu. Tuy nhiên, tôi sẽ cung cấp cho bạn một số gợi ý và hy vọng họ sẽ cung cấp cho bạn một sự khởi đầu.
Giả sử nhà máy của bạn có một vài phần khác nhau và lắp ráp chúng thành một sản phẩm hoàn chỉnh. Một sơ đồ của quá trình lắp ráp có thể trông như thế này:
Factory Flowchart http://img62.imageshack.us/img62/863/factoryflowchart.jpg
Đối với kim cương đầu tiên, nơi widget A và B được lắp ráp, giả sử phải mất trung bình 30 giây để hoàn tất bước này. Chúng tôi sẽ giả định thời gian thực tế cần hai vật dụng được lắp ráp được phân phối normally, với trung bình 30 s và phương sai 5 s. Đối với viên kim cương thứ hai, giả sử nó cũng mất trung bình 30 giây, nhưng hầu hết thời gian không mất nhiều thời gian và thời gian khác phải mất nhiều thời gian hơn. Điều này được ước tính gần đúng bởi một số exponential distribution, với 30 s là tham số tốc độ, thường được biểu diễn trong phương trình bởi một lambda.
Đối với quá trình đầu tiên, tính toán thời gian để lắp ráp các widget A và B như:
timeA = randn(mean, sqrt(variance)); // Assuming C# has a function for a normally
// distributed random number with mean and
// sigma as inputs
Đối với quá trình thứ hai, tính toán thời gian để thêm widget C để lắp ráp như:
timeB = rand()/lambda; // Assuming C# has a function for a uniformly distributed
// random number
Bây giờ tổng thời gian lắp ráp của bạn cho mỗi iGadget sẽ là timeA + timeB + waitingTime
. Tại mỗi điểm lắp ráp, lưu trữ một hàng đợi các vật dụng chờ đợi để được lắp ráp. Nếu điểm lắp ráp thứ hai là nút cổ chai, thì hàng đợi sẽ được lấp đầy. Bạn có thể thực thi kích thước tối đa cho hàng đợi của nó và giữ mọi thứ tiếp tục tăng lên khi đạt đến kích thước tối đa đó. Nếu một mục nằm trong hàng đợi, thời gian lắp ráp sẽ được tăng lên bởi tất cả các iGadgets trước nó trong dây chuyền lắp ráp. Tôi sẽ để nó cho bạn để tìm ra cách để mã hóa nó, và bạn có thể chạy rất nhiều thử nghiệm để xem tổng thời gian lắp ráp sẽ là bao nhiêu, trung bình. Phân phối kết quả trông như thế nào?
cách để "gia vị này lên":
- Yêu cầu 3 widget B cho mỗi widget Một. Chơi xung quanh với hàng tồn kho. Bổ sung khoảng không quảng cáo vào các khoảng thời gian ngẫu nhiên.
- Thêm kiểm tra đảm bảo chất lượng (phân phối theo hàm mũ là tốt để sử dụng tại đây) và từ chối một số iGadgets đã hoàn thành. Tôi đề nghị sử dụng một tỷ lệ từ chối thấp.
- Hãy thử sử dụng phân phối xác suất khác với những gì tôi đã đề xuất. Xem cách chúng ảnh hưởng đến mô phỏng của bạn. Luôn cố gắng tìm ra cách các tham số đầu vào cho các bản phân phối xác suất sẽ ánh xạ vào các giá trị thế giới thực.
Bạn có thể làm rất nhiều với mô phỏng đơn giản này. Bước tiếp theo là tổng quát mã của bạn để bạn có thể có số lượng tiện ích tùy ý và các bước lắp ráp. Đây không phải là khá dễ dàng. Có toàn bộ lĩnh vực toán ứng dụng được gọi là operations research được dành riêng cho loại mô phỏng và phân tích này.
+1 câu hỏi thú vị. Có vẻ như bạn muốn là một mô hình toán học, do đó bạn có thể tối ưu hóa các biến số nhất định (chi phí, dung lượng, v.v.). Tôi không chắc bạn _really_ muốn có một "mô phỏng". – dss539
Tôi làm việc là một nhà máy và đôi khi chúng tôi tăng thông qua đặt. Sự gia tăng này có một số tác động tiêu cực đến các ngân sách của các bộ phận khác như tăng chi phí điện, tăng chi phí bảo trì và giảm thiểu tuổi thọ của thiết bị. Tôi mặc dù sẽ rất thú vị khi thử và mô phỏng những thay đổi về thông lượng và chi phí của nó. Tôi không phải là một lập trình viên chuyên nghiệp nhưng tôi làm một chút và tôi nghĩ đây sẽ là một dự án thú vị. – fishhead
Nhận xét của bạn củng cố quan điểm của tôi rằng bạn muốn có một mô hình toán học. Tôi đồng ý, điều này nghe có vẻ giống như một dự án thú vị. Nó sẽ trở nên thú vị hơn khi bạn bắt đầu tối ưu hóa cho một số thông số nhất định. ;) Bạn có thể mô hình hóa rất nhiều biến này bằng cách sử dụng bảng tính ... tất nhiên việc viết chương trình để làm điều đó có thể thú vị hơn. – dss539