अनुकरण और अनुकरण में क्या अंतर है


97

मैं अक्सर कंप्यूटर विज्ञान में सिमुलेशन और अनुकरण देखता हूं । ये दो शब्द पर्यायवाची लगते हैं। वहाँ के बीच कोई अंतर है सिमुलेशन और अनुकरण ?

जवाबों:


108

हां, अवधारणाएं अलग हैं।


सिमुलेशन

simulationएक ऐसी प्रणाली है जो कुछ और के समान व्यवहार करती है, लेकिन इसे पूरी तरह से अलग तरीके से लागू किया जाता है। यह एक प्रणाली का मूल व्यवहार प्रदान करता है, लेकिन जरूरी नहीं कि प्रणाली के सभी नियमों का पालन किया जा सकता है। यह वहाँ है कि आप कैसे कुछ काम करता है के बारे में एक विचार दे।

उदाहरण

एक उदाहरण के रूप में एक उड़ान सिम्युलेटर के बारे में सोचो। ऐसा लगता है और लगता है जैसे आप एक हवाई जहाज उड़ा रहे हैं, लेकिन आप पूरी तरह से विमान को उड़ाने की वास्तविकता से अलग हो गए हैं, और आप उन नियमों को मोड़ सकते हैं या तोड़ सकते हैं जैसे आप फिट देखते हैं। उदाहरण के लिए, लंदन और सिडनी के बीच एक एयरबस ए 380 को उल्टा लटकाएं।


अनुकरण

एक emulationऐसी प्रणाली है जो बिल्कुल कुछ और की तरह व्यवहार करती है , और सिस्टम के सभी नियमों का पालन करती है। यह प्रभावी रूप से एक और प्रणाली की पूर्ण प्रतिकृति है, जो कि अनुकरणीय प्रणाली के इनपुट और आउटपुट के साथ बाइनरी संगत होने के लिए सही है, लेकिन मूल उत्सर्जित प्रणाली के वातावरण के लिए एक अलग वातावरण में काम कर रहा है। नियम निर्धारित हैं, और उन्हें बदला नहीं जा सकता है, या सिस्टम विफल हो जाता है।

उदाहरण

MAME प्रणाली यह बहुत ही आधार आसपास बनाया गया है। उन सभी पुराने आर्केड सिस्टम जिन्हें लंबे समय से भुला दिया गया है, जो लगभग पूरी तरह से हार्डवेयर में लागू किए गए थे, या उनके हार्डवेयर सिस्टम के फर्मवेयर में मूल कीड़े और क्रैश के ठीक नीचे अनुकरण किए जा सकते हैं जो तब संभव होता है जब आप उच्चतम संभव स्कोर तक पहुंचते हैं।


18
"ऐसा व्यवहार करें जैसे ..." आवश्यक नहीं हो सकता है। महत्वपूर्ण बात यह है कि यह "उसी सटीक बाहरी व्यवहार को पुन: पेश करता है" जो इसका उपयोग करता है।
एमिलियो गारवगलिया

ध्यान दें कि यह इस बात पर निर्भर करता है कि किस चीज का अनुकरण / अनुकरण किया जा रहा है। उदाहरण के लिए, पीसी संगत कंप्यूटर का अनुकरण करने वाली कोई चीज पीसी से संबंधित कंप्यूटर के डिजिटल सर्किटरी का अनुकरण करने वाली किसी चीज की तुलना में बहुत कम सटीक और बहुत कम यथार्थवादी हो सकती है। इस मामले में, सिमुलेटर एक वास्तविक पीसी के समान "बिल्कुल" व्यवहार कर सकता है, जबकि एमुलेटर नहीं (क्योंकि सिम्युलेटर बहुत निचले स्तर पर कुछ अनुकरण कर रहा है)।
ब्रेंडन

16

एक सिमुलेशन स्पष्ट रूप से आप आपकी क्वेरी से प्रासंगिक सुविधाओं को बनाए रखने, और अप्रासंगिक लोगों को छोड़ना चाहते हैं - एक मॉडल कुछ और जो उस चीज़ की सुविधाओं में से कुछ reproduces और दूसरों को बाहर छोड़ देता है का निर्माण किया है।

उदाहरण के लिए, सुबह-सुबह कम्यूटर ट्रैफ़िक का अनुकरण कम्यूटर के नामों को छोड़ देता है, और शायद उनकी पहचान ( Commuterवस्तुओं के वास्तविक सेट के बजाय काउंटर वेरिएबल का उपयोग करके ), लेकिन यह उनके आगमन की दर की उपेक्षा नहीं कर सकता है।


एमुलेशन सॉफ्टवेयर बी के प्लेटफॉर्म ए पर प्लेटफॉर्म बी के लिए बनाए गए सॉफ्टवेयर को चलाने के लिए है, जो खुद सॉफ्टवेयर में बदलाव किए बिना चल रहा है। इसके लिए A का एक मॉडल बनाना आवश्यक है जो B पर चलता है, और जाहिर है इसमें A के बारे में सब कुछ मॉडल करना होगा जिसमें कोड निष्पादन शामिल है। (सिद्धांत रूप में आप opcodes के लिए समर्थन को छोड़ सकते हैं जिसे आप जानते हैं कि यह विशेष सॉफ़्टवेयर कभी उपयोग नहीं करेगा, लेकिन यह दुर्लभ है - एक एमुलेटर करना कठिन काम है, और यह पूरी तरह से काम करने के लिए अधिक सार्थक है और एक कीचड़ की तुलना में पुन: प्रयोज्य है यह केवल एस के लिए काम करता है)


7

दोनों का मतलब है कुछ और काम करना।

अंतर यह है कि "सिमुलेशन" एक सचेत स्तर पर होता है (उपयोगकर्ता के संबंध में) और आमतौर पर वास्तविकता को छूने के बिना एक वास्तविकता के परिणाम का अनुमान लगाने के लिए अंतिम रूप दिया जाता है।

"एमुलेशन" एक बेहोश स्तर पर होता है, और इसका उद्देश्य एक अंतर्निहित घटक को दूसरे भिन्न के साथ बदलना होता है जो उपयोगकर्ता के लिए सम्मान करता है- पुराने के रूप में काम करता है।

दूसरे शब्दों में, अनुकरण "समानांतर दुनिया" में होता है , जबकि अनुकरण "प्रतिस्थापित दुनिया" में होता है।


3
यह कंप्यूटर विज्ञान के संदर्भ में ओपी के प्रश्न का उत्तर कैसे देता है? उनके बारे में कुछ भी सचेत या बेहोश नहीं है। एक अनुकरण वास्तविक है, जैसा कि एक अनुकरण है। उनके संबंधित उद्देश्य हालांकि वैचारिक रूप से बहुत भिन्न हैं।
रॉबिंस

@ S.Robins: सचेत / अचेतन! = वास्तविक / असत्य। सचेत = ऐसा कुछ जो आपने स्पष्ट रूप से तय किया है, अचेतन कुछ ऐसा जो आपने स्वयं स्पष्ट रूप से तय नहीं किया है। "इम्यूलेटेड" सिस्टम पर चलने वाला ऐप उस एमुलेशन के बारे में नहीं जानता है। एक "सिम्युलेटेड" सिस्टम पर चलने वाले ऐप को इसके बारे में पता होना चाहिए, क्योंकि जरूरी नहीं कि यह एक ही व्यवहार हो।
एमिलियो गारवागलिया

1
इसका कोई लेना-देना नहीं है कि कौन से ऐप कहां चल रहे हैं, और कुछ भी नहीं करने के लिए जागरूक या बेहोश करने वाले निर्णय लेने के लिए। मूल रूप से अंतर इस बारे में है कि क्या एक सिस्टम को आमतौर पर मॉडल किया जा रहा है, या पूरी तरह से दोहराया गया है।
S.Robins

@ S.Robins: मैं अवधारणा क्या आपका मतलब से सहमत हैं, लेकिन वहाँ कुछ सूक्ष्म इसे पकड़ नहीं करता है: एक "एमुलेटर" आम तौर पर कुछ जगह शीर्ष पर कुछ चलाने के लिए कल्पना की है, के तहत आवेदन की गुंजाइश। एक "सिम्युलेटर" को आमतौर पर वास्तविक एप्लिकेशन के बजाय खुद के लिए चलाने की कल्पना की जाती है । वे एक ही अमूर्त स्तर पर नहीं हैं।
एमिलियो गारवगलिया

6

तकनीकी रूप से, वे दोनों ऐसा ही करते हैं: एक ऐसे वातावरण में कुछ करते हैं जो वास्तविक कार्य करता है।

वैचारिक रूप से, हालांकि, एक महत्वपूर्ण अंतर है।

एक सिमुलेशन को वास्तविक दुनिया से एक निश्चित डिग्री तक अलग किया जाना चाहिए; सिमुलेशन का आउटपुट सीधे उस चीज़ से नहीं जुड़ा होता है जो वह अनुकरण करता है। उदाहरण के लिए, एक विमान सिम्युलेटर वास्तव में उड़ान नहीं भरता है, और पायलट वास्तव में एक वास्तविक वायु यातायात नियंत्रक के साथ संचार नहीं कर रहा है।

एक सिमुलेशन में आमतौर पर सुरक्षित वातावरण में कुछ वास्तविक जीवन की प्रक्रिया का परीक्षण या भविष्यवाणी करने का लक्ष्य होता है; क्योंकि अनुकरण वास्तविक दुनिया से अलग हो जाता है, वास्तव में कुछ भी बुरा नहीं हो सकता है (एक दुर्घटनाग्रस्त विमान सिम्युलेटर वास्तविक लोगों को कभी नहीं मारता है)।


एक अनुकरण , इसके विपरीत, वास्तविक चीज़ की जगह लेने का लक्ष्य है: उदाहरण के लिए, यदि आप अधिक परिष्कृत प्रोग्रामेबल सीपीयू का उपयोग करके एक सरल माइक्रोकंट्रोलर का अनुकरण करते हैं, तो सीपीयू का उपयोग मूल माइक्रोकंट्रोलर के स्थान पर किया जा सकता है; यह शारीरिक रूप से किसी मशीन से जुड़ा होगा, और यह वास्तव में उस मशीन को नियंत्रित करेगा जैसे कि माइक्रोकंट्रोलर करेगा।

लक्ष्य एक के अनुकरण जब मूल मॉड्यूल उपलब्ध नहीं हैं (या बहुत महंगा हो गए हैं, यदि केवल बनाए रखने के लिए) कार्यात्मक समकक्ष के साथ हार्डवेयर या सॉफ्टवेयर घटकों को बदलने के लिए है। अनुकरण भी अधिक लचीले ढंग से हार्डवेयर का उपयोग करने के लक्ष्य को पूरा कर सकता है - एक ही प्रोग्राम योग्य माइक्रोकंट्रोलर कई सरल नियंत्रकों के लिए दोगुना हो सकता है, जरूरत के अनुसार अनुकरण मोड।


3
"technically", वे पूरी तरह से अलग हैं। आपके द्वारा वर्णित वैचारिक अंतर इस अंतर के लिए मौलिक है।
S.Robins

@ S.Robins: 'तकनीकी रूप से' से मेरा मतलब है कि तकनीकी कार्यान्वयन अक्सर समान या समकक्ष होते हैं; अंतर यह है कि मुख्य रूप से आप उनके लिए क्या उपयोग करते हैं।
tdammers

इसका उपयोग मामलों से कोई लेना-देना नहीं है। यह उद्देश्यों का मूलभूत अंतर है जो दो बहुत अलग अवधारणाओं को परिभाषित करता है। अनुकरण वास्तव में कार्यक्षमता की एक जटिल प्रणाली को बदलना चाहता है ताकि यह मूल से अप्रभेद्य हो, जबकि सिमुलेशन एक प्रणाली का एक बड़ा सरलीकरण है और एक मॉडल के माध्यम से बहुत सामान्य अर्थों में कार्यक्षमता का प्रतिनिधित्व करता है। इस प्रकार, तकनीकी कार्यान्वयन आवश्यक रूप से बहुत अलग हैं।
S.Robins

@ एस। रॉबिन्स - मैं असहमत हूँ। चाहे आप किसी दिए गए माइक्रोप्रोसेसर का अनुकरण या अनुकरण करें, कार्यान्वयन के लिए बहुत फर्क नहीं पड़ता है, लेकिन आप इसके साथ क्या करते हैं।
तदममार

1
@tdammers: आम तौर पर, एमुलेटर का प्राथमिक डिज़ाइन लक्ष्य "एमटाइम" के रूप में कार्य करने के लिए होता है, जो कि उत्सर्जित होने वाली चीज़ के लिए प्रतिस्थापन होता है, जबकि सिमुलेटर का एक प्रमुख डिज़ाइन लक्ष्य आवश्यक रूप से वास्तविक समय के विश्लेषण की अनुमति नहीं देना है। और संभवतः अंतर्निहित प्रक्रिया के साथ बातचीत। कुछ सिमुलेटर तेज़ हो सकते हैं, और कुछ एमुलेटर अंतर्निहित प्रक्रिया के साथ विश्लेषण और / या बातचीत करने के लिए पर्याप्त क्षमता प्रदान कर सकते हैं, लेकिन इंजीनियरिंग प्राथमिकताएं अलग हैं।
सुपरकैट

1

जबकि व्युत्पत्ति कड़ाई से सटीक नहीं है, सहानुभूति के बीच अंतर के बारे में सोचें, "मैं कल्पना कर सकता हूं कि ऐसा क्या महसूस करना चाहिए" और सहानुभूति, "मुझे पता है कि ऐसा क्या लगता है।" एक सिमुलेशन में एक समस्या का दृश्य प्रतिनिधित्व शामिल हो सकता है, लेकिन यह नहीं हो सकता है। उदाहरण के लिए, यह केवल संख्याओं के कॉलम को प्रिंट कर सकता है जो दर्शाता है कि कितने लोग किसी चीज़ या कुल राजस्व या औसत गति के लिए पंक्तिबद्ध हैं। इसमें कुछ विशेषताएं हैं जो वास्तविकता से मेल खाती हैं, और कुछ ऐसी भी नहीं हैं।

एमुलेशन, जिसका उपयोग अक्सर एक प्लेटफ़ॉर्म के संदर्भ में किया जाता है, जो दूसरे प्लेटफ़ॉर्म का दिखावा करता है, वह कहीं अधिक पूर्ण होता है। इसलिए विंडोज फोन डेवलपर्स अपने फोन ऐप को एमुलेटर में विंडोज मशीन पर चला सकते हैं या डिबग कर सकते हैं, जो फोन की तरह दिखता है और एक जैसा व्यवहार करता है। आप अपने पुराने कमोडोर 64 गेम को एमुलेटर में भी चला सकते हैं।

शब्द सटीक नहीं हैं। अधिकांश फ्लाइट सिमुलेटर मेरी राय में एमुलेटर की तरह अधिक हैं, लेकिन नाम ऐसे समय से अटक गया है जब वे इतने इमर्सिव नहीं थे। कुछ लोग क्रॉस-प्लेटफॉर्म मामले के लिए एमुलेटर शब्द को आरक्षित करते हैं और इसे किसी और चीज के लिए अस्वीकार करते हैं। यदि आप बोलते समय ऐसा ही करते हैं, तो आप शायद कभी गलत नहीं सोचेंगे, लेकिन यह समझें कि कुछ लोग दो शब्दों के बीच की सीमा को थोड़ा अलग तरीके से रख सकते हैं, और जब कोई कहता है कि "यह एक अनुकरण है" तो वास्तव में सटीक और पूरा अनुकरण।


1
यह एक आम गलत धारणा है कि अनुकरण और अनुकरण प्रभावी रूप से समान हैं। ऐसा इसलिए हो सकता है क्योंकि एमुलेट शब्द का अर्थ दूसरों के व्यवहार को प्रतिबिंबित करना हो सकता है (जैसे: एक बच्चा अपने पिता का अनुकरण करता है)। यह कंप्यूटर विज्ञान के संदर्भ में तकनीकी रूप से गलत है। एक उड़ान सिम्युलेटर एक अनुकरण नहीं है, क्योंकि सभी इनपुट / आउटपुट एक उद्देश्य से निर्मित कार्यक्रम के माध्यम से मांगे जाते हैं - सिम्युलेटर - जो वास्तव में उस पर लगाए गए विमान के व्यवहार को दोहराता नहीं है, क्योंकि यह ठीक उसी कंप्यूटर को लागू नहीं करता है। विमान कार्यक्रम करता है। यदि यह किया जाता है, तो यह एक एमुलेटर होगा।
S.Robins

0

दोनों शब्द अवधारणा में बहुत समान हैं - नकल।

सिमुलेशन या सिमुलेटर एक प्रतिकृति प्रणाली का निर्माण करने के लिए सॉफ्टवेयर का उपयोग करते हैं जो कि इसके अंतर्निहित कोर कार्यक्षमता (विशेष रूप से इसकी मूल कार्यप्रणाली) के संबंध में लक्ष्य मॉडल के समान है।

दूसरी ओर, एम्यूलेटर, लक्ष्य प्रणाली की तुलना में बाहरी समानता पर अधिक ध्यान केंद्रित करते हैं। इसमें "कैसे" कार्यों की न्यूनतम चिंता है। एमुलेटर, सामान्य रूप से, मूल प्रणाली की तुलना में पूरी तरह से अलग वातावरण में काम करते हैं (उदाहरण के लिए एक अलग ऑपरेटिंग सिस्टम)।


1
मैं कहूंगा कि आपको दो अवधारणाएं मिली हुई हैं। यह अनुकरण है जो सटीक कार्यान्वयन के बारे में परवाह नहीं करता है; एमुलेशन इंटर्नल की बहुत परवाह करता है। देखें: MAME
एंड्रेस एफ।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.