चूंकि आपका ग्राहक स्वयं है, इसलिए आपको Mark Byers से पूछे गए सभी सवालों के जवाब का निर्णय लेना होगा। हालांकि, मैं आपको कुछ सुझाव दूंगा और उम्मीद है कि वे आपको एक शुरुआत देंगे।
मान लीजिए कि आपका कारखाना कुछ अलग-अलग हिस्सों को लेता है और उन्हें केवल एक तैयार उत्पाद में इकट्ठा करता है। विधानसभा प्रक्रिया का एक प्रवाह संचित्र इस प्रकार दिखाई देंगे:
Factory Flowchart http://img62.imageshack.us/img62/863/factoryflowchart.jpg
पहले हीरा, जहां ए और बी इकट्ठे होते हैं विजेट लिए, मान लें कि यह इस चरण को पूरा करने के लिए औसत 30 सेकंड पर ले जाता है। हम अनुमान लगाएंगे कि दो विजेट्स को इकट्ठा करने के लिए वास्तविक समय लगता है, normally वितरित किया गया है, जिसका अर्थ है 30 एस और भिन्नता 5 एस। दूसरे हीरे के लिए, मान लीजिए कि यह औसत 30 सेकंड भी लेता है, लेकिन अधिकांश समय में यह लगभग इतना लंबा नहीं लगता है, और दूसरी बार इसमें बहुत अधिक समय लगता है। यह exponential distribution द्वारा अनुमानित रूप से अनुमानित है, 30 पैरा के साथ रेट पैरामीटर के रूप में, अक्सर लैम्ब्डा द्वारा समीकरणों में दर्शाया जाता है।
पहली प्रक्रिया के लिए, टाइम विजेट ए और बी के रूप में इकट्ठा करने के लिए गणना:
timeB = rand()/lambda; // Assuming C# has a function for a uniformly distributed
// random number
: के रूप में विधानसभा के लिए विजेट सी जोड़ने के लिए
timeA = randn(mean, sqrt(variance)); // Assuming C# has a function for a normally
// distributed random number with mean and
// sigma as inputs
दूसरी प्रक्रिया के लिए, गणना समय
अब प्रत्येक iGadget के लिए आपका कुल असेंबली समय timeA + timeB + waitingTime
होगा। प्रत्येक असेंबली बिंदु पर, इकट्ठा होने की प्रतीक्षा कर रहे विजेट्स की एक कतार स्टोर करें। यदि दूसरा असेंबली बिंदु एक बाधा है, तो यह कतार भर जाएगी। आप अपनी कतार के लिए अधिकतम आकार को लागू कर सकते हैं, और उस अधिकतम आकार तक पहुंचने पर चीजों को आगे बढ़ा सकते हैं। यदि कोई आइटम कतार में है, तो असेंबली लाइन में इसके सभी आईजीएजीज से पहले असेंबली का समय बढ़ जाता है। इसे कोड करने के तरीके को समझने के लिए मैं इसे आपके पास छोड़ दूंगा, और आप यह देखने के लिए कई परीक्षण चला सकते हैं कि औसत असेंबली का समय औसतन होगा। परिणामस्वरूप वितरण कैसा दिखता है?
तरीके करने के लिए "मसाला इस अप":
- हर एक विजेट के लिए 3 बी विगेट्स आवश्यकता होती है। सूची के साथ खेलें। यादृच्छिक अंतराल पर सूची दोबारा बदलें।
- एक गुणवत्ता आश्वासन जांच जोड़ें (घातीय वितरण यहां उपयोग करने के लिए अच्छा है), और कुछ समाप्त iGadgets को अस्वीकार करें। मैं कम अस्वीकृति दर का उपयोग करने का सुझाव देते हैं।
- मैंने सुझाए गए मुकाबले अलग संभावना वितरण का उपयोग करने का प्रयास करें। देखें कि वे आपके सिमुलेशन को कैसे प्रभावित करते हैं। हमेशा यह पता लगाने का प्रयास करें कि संभाव्यता वितरण के इनपुट पैरामीटर वास्तविक दुनिया के मूल्यों में कैसे मैप करेंगे।
आप इस सरल सिमुलेशन के साथ बहुत कुछ कर सकते हैं। अगला चरण आपके कोड को सामान्यीकृत करना होगा ताकि आप विजेट और असेंबली चरणों की मनमानी संख्या प्राप्त कर सकें। यह काफी आसान नहीं है। operations research नामक लागू गणित का एक पूरा क्षेत्र है जो इस प्रकार के अनुकरण और विश्लेषण के लिए समर्पित है।
+1 दिलचस्प सवाल। ऐसा लगता है कि आप एक गणितीय मॉडलिंग चाहते हैं ताकि आप कुछ चर (मूल्य, क्षमता, आदि) को अनुकूलित कर सकें। मुझे यकीन नहीं है कि आप _really_ "सिमुलेशन" चाहते हैं। – dss539
मैं काम करता हूं एक कारखाना है और कभी-कभी हम डालकर बढ़ाते हैं। इस वृद्धि में अन्य विभागीय बजट जैसे बिजली की लागत में वृद्धि, रखरखाव लागत में वृद्धि और उपकरणों के जीवनकाल को कम करने के कई नकारात्मक प्रभाव पड़ते हैं। हालांकि, थ्रूपुट और इसकी लागत में बदलावों को आजमाने और अनुकरण करना मजेदार होगा। मैं एक पेशेवर प्रोग्रामर नहीं हूं लेकिन मैं थोड़ा सा डब करता हूं और मैंने सोचा कि यह एक मजेदार परियोजना होगी। – fishhead
आपकी टिप्पणी मेरे विचार को मजबूत करती है कि आप एक गणितीय मॉडल चाहते हैं। मैं मानता हूं, यह एक मजेदार परियोजना की तरह लगता है। जब आप कुछ मानकों के लिए अनुकूलित करना शुरू करते हैं तो यह और भी मजेदार हो जाएगा। ;) आप केवल स्प्रेडशीट का उपयोग करके इस चर के बहुत सारे मॉडल का मॉडल कर सकते हैं ... निश्चित रूप से ऐसा करने के लिए एक प्रोग्राम लिखना अधिक मजेदार हो सकता है। – dss539