2010-01-29 37 views
10

Tôi muốn tạo mô phỏng sàn nhà máy và tôi đang tìm kiếm ý tưởng về cách thực hiện điều này. Suy nghĩ của tôi cho đến nay là:mô phỏng sàn nhà máy

• Nhà máy được tạo thành từ một loạt các quy trình, một số quy trình này nằm trong chuỗi và một số là song song. Mỗi quá trình sẽ liên lạc với nó là thượng lưu và hạ lưu và hàng xóm song song để cho họ biết về nó qua đưa

• Mỗi tiến trình sẽ đó là thuộc tính cơ bản của riêng như thông lượng tối đa, chi phí bảo trì như một kết quả của việc thông qua đặt

Rõ ràng tôi đã không nghĩ hoàn toàn ra điều này, nhưng tôi đã hy vọng ai đó có thể có thể cho tôi một vài ý tưởng hoặc có lẽ là một liên kết đến một về tài nguyên dòng

update: dự án này chỉ dành cho giải trí của riêng tôi, và có lẽ học một chút theo cách này. Tôi không làm việc như một lập trình viên, lập trình chỉ là một sở thích đối với tôi. Tôi đã quyết định viết nó trong C#.

+2

+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

+0

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

+0

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

Trả lời

3

Mô phỏng toàn bộ nhà máy chính xác là một công việc lớn.

Trước tiên, bạn cần tìm ra: tại sao bạn tạo mô phỏng? Nó dành cho ai? Giá trị nó sẽ cung cấp cho họ? Phần nào của mô phỏng thú vị? Làm thế nào chính xác nó cần phải được? Những phần nào của quy trình không cần phải được mô phỏng chính xác?

Để tìm ra câu trả lời cho những câu hỏi này, bạn sẽ cần nói chuyện với bất kỳ ai muốn mô phỏng được viết.

Một khi bạn đã tìm ra những gì để mô phỏng, sau đó bạn cần phải tìm ra cách để mô phỏng nó. Bạn cần một số mô hình và một số thông số cho các mô hình đó. Bạn có thể có thể nhận được một số con số thực tế từ sản xuất thực tế và cố gắng lấy được các mô hình từ các số liệu. Các mô hình có thể là một mối quan hệ tuyến tính đơn giản giữa đầu vào và đầu ra, một mối quan hệ phức tạp hơn và thậm chí có thể là một hiệu ứng ngẫu nhiên (ngẫu nhiên). Nếu bạn không có quyền truy cập vào dữ liệu thực, thì bạn sẽ phải đoán trước trong mô hình của mình, nhưng điều này sẽ không bao giờ tốt như vậy để cố gắng lấy dữ liệu thực bất cứ khi nào có thể.

Bạn cũng có thể muốn xem xét đến xác suất của các thành phần bị hỏng và điều gì ảnh hưởng đến điều đó. Điều gì về các công nhân đang đình công? Không có nguyên liệu thô? Mặc và rách trên máy móc gây ra sản lượng thấp dần dần theo thời gian? Một lần nữa bạn có thể không muốn xem xét các chi tiết này, nó phụ thuộc vào những gì khách hàng muốn.

Nếu mô phỏng của bạn liên quan đến các sự kiện ngẫu nhiên, bạn có thể muốn chạy nhiều lần và có được kết quả trung bình, ví dụ sử dụng mô phỏng Monte Carlo.

Để đưa ra câu trả lời đúng hơn, chúng tôi cần biết thêm về những gì bạn cần để mô phỏng và những gì bạn muốn đạt được.

+0

Tôi không làm việc như một lập trình viên. Nó chỉ giống như một dự án thú vị, và có lẽ học thêm một chút về lập trình. Tôi không cho rằng ứng dụng sẽ có ích cho bất kỳ ai ngoài bản thân tôi. – fishhead

+1

Loại ứng dụng này chắc chắn là thú vị đối với nhiều người quản lý quy trình sản xuất và rất nhiều thời gian và tiền bạc sẽ phát triển các ứng dụng như vậy. Nó không phải là một dự án dễ dàng, nhưng nó trả tiền rất tốt nếu bạn có thể sử dụng mô phỏng để tối ưu hóa quy trình của họ, giảm tỷ lệ thất bại, v.v. Nếu bạn chỉ muốn học cách lập trình, điều này có lẽ không phải là một dự án lý tưởng cho việc học rất phức tạp và có thể bạn sẽ không có bất kỳ dữ liệu thực nào để làm việc. –

+0

ho Tôi có dữ liệu thực - kết nối trực tiếp đến tất cả các máy chủ SQL công nghiệp và tất cả 4 năm cuối của dữ liệu. Tôi cũng có kết nối với cơ sở dữ liệu bảo trì và chi phí của nó bao gồm cả lao động, nhà thầu và các bộ phận – fishhead

0

Tự động là con đường để đi. http://www.appliedmaterials.com/products/automod_2.html

Có rất nhiều thứ để tìm hiểu và nó sẽ không rẻ.

Automod của ASI đã hoạt động trong lĩnh vực mô phỏng nhà máy trong khoảng 30 năm. Nó bây giờ thuộc sở hữu của Vật liệu ứng dụng. Những người chơi lớn làm việc với vật liệu xử lý trong một nhà kho sử dụng Automod bởi vì nó là nhà lãnh đạo đã được chứng minh.

+0

Tại sao điều này lại được bình chọn? Tôi không biết bất cứ điều gì về automod, nhưng có thể ai đó xin vui lòng giải thích downvote? – dss539

+0

Tôi downvoted vì nó không cung cấp bất kỳ hỗ trợ cho lý do tại sao automod nên được sử dụng, và nói chung không đưa ra lời khuyên nào về cách mô phỏng một nhà máy. –

+0

@Scottie Đủ công bằng, nhưng câu trả lời này có vẻ tương tự như câu trả lời của Jim C. – dss539

0

Nó có thể nhiều hơn sau đó những gì bạn đang tìm kiếm nhưng visual components là một công cụ mô phỏng công nghiệp tốt.

Để rõ ràng tôi không làm việc cho họ cũng như công ty tôi làm việc cho hiện đang sử dụng chúng, nhưng chúng tôi đã xem xét chúng.

3

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.

+0

+1 ví dụ hay – dss539

1

Điều bạn mô tả là một vấn đề cổ điển được giải quyết bằng mô phỏng sự kiện rời rạc. Một loạt các ngôn ngữ mô phỏng mục đích chung và mục đích đặc biệt đã được phát triển để mô hình hóa các loại vấn đề này.Mặc dù tôi không khuyên bạn nên lập trình bất kỳ thứ gì từ đầu cho một vấn đề "thực", nhưng có thể là một bài tập tốt để viết mã của riêng bạn cho một vấn đề xếp hàng nhỏ để bạn có thể hiểu lịch sự kiện, tạo số ngẫu nhiên, theo dõi lịch, v.v. Một khi bạn đã làm điều đó, một ngôn ngữ mô phỏng mục đích chung sẽ làm tất cả những thứ đó cho bạn để bạn có thể tập trung vào bức tranh lớn.

Tham chiếu tốt là Law & Kelton. ARENA là một gói tiêu chuẩn. Nó được sử dụng rộng rãi và, IMHO, rất toàn diện cho các loại mô phỏng này. Cuốn sách ARENA cũng là một cuốn sách phong nha về mô phỏng và nó đi kèm với phần mềm có thể được áp dụng cho các vấn đề nhỏ. Để mô hình các vấn đề lớn hơn, bạn sẽ cần phải có giấy phép. Bạn sẽ có thể tải xuống phiên bản dùng thử của ARENA here.