شبیه‌سازی رویداد گسسته
**شبیه‌سازی رویداد گسسته**، (به انگلیسی: Discrete event simulation) عمل یک سیستم به عنوان یک توالی زمانی از حوادث نشان داده می‌شود. هر رویداد در یک لحظه در زمان رخ می‌دهد و یک تغییر حالت در سیستم را نشان می‌دهد. به عنوان مثال، اگر یک آسانسور شبیه‌سازی شده باشد، یک رویداد می‌تواند "فشردن دکمه طبقه ۶ "، با نتیجه سیستم در حالت "بلند شدن "باشد و در نهایت (مگر اینکه یک انتخاب برای شبیه‌سازی عدم بالا رفتن آسانسور)" تا طبقه ۶" بالا می‌رود.
تعدادی از مکانیسم‌ها برای انجام رویداد گسسته شبیه‌سازی ارائه شده‌است، در میان آن‌ها روش‌های مبتنی بر رویداد، مبتنی بر فعالیت، مبتنی بر فرایند و مبتنی بر سه مرحله هستند. رویکرد سه مرحله‌ای (فازی) توسط تعدادی از بسته‌های شبیه‌سازی نرم‌افزار تجاری مورد استفاده قرار می‌گیرد، اما از دیدگاه کاربر ویژگی‌های زمینه‌ای روش شبیه‌سازی به‌طور کلی پنهان است.

مثال
----

تمرین رایج در یادگیری چگونگی ساخت شبیه‌سازی رویداد گسسته مدل سازی یک صف است، مانند مشتریان که به یک بانک می‌روند تا یک کارمند با آن‌ها خدمت رسانی کند. در این مثال، نهادهای (موجودیتهای) سیستم صف مشتریان و تحویل دارها هستند. رویدادهای سیستم ورود و خروج مشتری هستند. (رویداد آغاز سرویس دهی کارمند بخشی از منطق رویدادهای ورود و خروج باشد)حالتهای سیستم، که توسط این رویدادها تغییر می‌کنند، تعداد مشتریان در صف (یک عدد صحیح از ۰ تا N) و وضعیت کارمند (شلوغ یا بیکار) می‌باشد. متغیرهای تصادفی که لازم است برای مدل‌سازی این سیستم مشخص شوند به‌طور متغیر زمان ورود مشتری و زمان خدمات دهی کارمند می‌باشد.

اجزای شبیه‌سازی رویداد گسسته
----------------------------

علاوه بر ارائه متغیرهای حالت سیستم و منطق اینکه زمانی که وقایع و رویدادهای سیستم رخ می‌دهد چه اتفاق می‌افتد، شبیه‌سازی رویداد گسسته شامل موارد زیر است:

### ساعت

شبیه‌سازی بایستی زمان شبیه‌سازی کنونی را ثبت کند، در هر واحد اندازه‌گیری برای سیستم مدل مناسب هستند. در شبیه‌سازی رویداد گسسته، در مقابل به شبیه‌سازی زمان واقعی، به دلیل اینکه وقایع آنی هستند زمان پرش دارد – همچنان که شبیه‌سازی شروع می‌شود ساعت به زمان شروع رویداد بعدی می‌رود.

### فهرست رویدادها

شبیه‌سازی حداقل یک لیست از وقایع شبیه‌سازی را حفظ می‌کند؛ و این گاهی اوقات مجموعه رویداد در جریان نامیده می‌شود به دلیل آن که رویدادهایی را فهرست می‌کند که در حال انتظار به عنوان یک نتیجه از رویداد قبلاً شبیه‌سازی شده هستند، اما هنوز باید خود را شبیه‌سازی کنند. یک رویداد به وسیلهٔ زمانی که اتفاق می‌افتد و نوع آن شرح داده می‌شود، نشان می‌دهد کدی که برای شبیه‌سازی این رویداد استفاده شده‌است. این برای کد رویداد معمول است که پارامتری شود، که در این صورت، شرح رویداد حاوی پارامترهایی برای کد رویداد است. وقتی که رویدادها لحظه‌ای هستند، فعالیت‌هایی که در طول زمان گسترش می‌یابند به عنوان سلسله‌ای از حوادث مدل شده هستند. برخی از چارچوب‌های شبیه‌سازی اجازه می‌دهد که زمان یک رویداد به عنوان یک فاصله زمانی مشخص شود، زمان شروع و زمان پایان هر رویداد رابدهد.
موتورهای تک رشته شبیه‌سازی بر اساس وقایع لحظه‌ای فقط یک رویداد جاری دارند. در مقابل، موتورهای شبیه‌سازی چند رشته‌ای و موتورهای شبیه‌سازی حمایت‌کننده از فاصله مدل مبتنی بر رویداد ممکن است چندین رویداد جاری داشته باشند در هر دو مورد، مشکلات قابل توجهی در هماهنگی بین وقایع کنونی وجود دارد.
مجموعه رویداد در انتظار که به‌طور معمولاً به عنوان یک صف اولویت مرتب شده، بر اساس زمان وقوع ذخیره شده. این است که بدون در نظر گرفتن ترتیب که در آن وقایع به مجموعه رویداد اضافه شده‌است، آن‌ها بر اساس زمان سفارش حذف می‌شوند. چندین الگوریتم صف همگانی برای شبیه‌سازی رویداد گسسته ثابت شد که مؤثرند، که مهم‌ترین آنها، درخت گسترده‌است. جایگزین اخیر شامل لیست پرش و ردیف تقویم می‌باشد. به‌طور معمول، رویدادها به طوردینامیکی به عنوان محصول شبیه‌سازی برنامه‌ریزی شده‌اند. به عنوان مثال، در مثال بانکی که در بالا ذکر شد، این رویداد ورود مشتری در زمان t، اگر صف مشتری CUSTOMER\_QUEUE خالی بود و کارمند بیکار بود، شامل ایجاد رویداد خروج مشتری که در زمان t + s می‌شود، که در اینجا S شماره تولید شده از توزیع زمان سرویسSERVICE-TIME است.

### تولیدکننده شماره تصادفی

شبیه‌سازی، نیاز به تولید متغیرهای تصادفی از انواع مختلف، بسته به مدل سیستم دارد. واین با یک یا چند شبه تولیدکننده اعداد تصادفی انجام می‌شود. استفاده از اعداد شبه تصادفی در مقابل به اعداد تصادفی واقعی یک فایده‌است که باید یک شبیه‌ساز بتواند دقیقاً با همان رفتار دوباره اجرا کند. یکی از مشکلات با توزیع تصادفی اعداد مورد استفاده در شبیه‌سازی رویداد گسسته این است که توزیع‌های ثابت از زمان رویداد ممکن نیست در ابتدا شناخته شوند. در نتیجه، مجموعه اولیه از رویدادهای قرار داده شده در مجموعه رویداد انتظار، نمایشگر زمان‌های ورودی توزیع حالت پایدار ندارند. این مشکل به‌طور معمول با خود راه اندازی (bootstrapping) مدل شبیه‌سازی، حل شده‌است. فقط یک تلاش محدودی برای تعیین زمان‌های واقع بینانه به مجموعه‌ای اولیه از رویدادهای در انتظار ساخته شده‌است. این رویدادها، با این حال، رویدادهای دیگری را زمان‌بندی می‌کند و با گذشت زمان، توزیع زمان رویدادها به موقعیت ثابتشان نزدیک می‌شوند. واین خود راه اندازی مدل شبیه‌سازی شده نامیده شده‌است. در جمع‌آوری آمار از مدل در حال اجرا، مهم است که رویدادهای مورد توجه قرار گرفته نشده که قبل از حالت پایدار رخ می‌دهد به نتیجه رسیده‌است یا برای اجرای شبیه‌سازی را برای به اندازه کافی طولانی است که وضعیت خود راه انداز توسط وضعیت ثابت پوشانده می‌شود. (استفاده ازاصطلاح خود راه انداز را می‌تواند با استفاده در هر دو آمار و محاسبات مقایسه شود)

### آمارها

شبیه‌سازی به‌طور معمول توالی از آمار سیستم راثبت می‌کند، که کمیت ابعاد سود را تعیین کند. در مثال بانک، این بهتر است که ابزاری از زمان‌های میانگین را پیدا کند.

### وضعیت پایانی

چنانچه رویدادها خود راه اندازی شوند، به صورت تئوری یک شبیه‌ساز رویداد گسسته برای همیشه می‌تواند اجرا شود؛ بنابراین طراح شبیه‌سازی باید نتیجه بگیرد که شبیه‌سازی چه زمانی به پایان خواهد رسید. انتخاب نمونه در زمان T "و یاً پس از پردازش N تعداد حوادث "و یا، به طور کلی،" هنگامی که X اندازه‌گیری آماری به مقدار X "می‌رسد.

موتورهای شبیه‌سازی منطق
-----------------------

حلقه اصلی یک شبیه‌سازی رویداد گسسته، چیزی شبیه به این است:

### شروع

* مقداردهی اولیه پایان دادن به وضعیت FALSE.
* مقداردهی اولیه متغیرهای حالت سیستم.
* مقدار دهی اولیه ساعت (معمولاً در زمان شبیه‌سازی از صفر شروع می‌شود).
* برنامه‌ریزی یک رویداد اولیه (به عنوان مثال، برخی از رویدادهای اولیه را به لیست 'رویدادها' قرار داده‌است).

### "Do loop" or "While loop"

در حالی که (پایان دادن شرط نادرست است) پس از آن به شرح زیر انجام دهید:

* تنظیم ساعت به زمان رویداد بعدی.
* رویداد بعدی را انجام و از لیست رویدادها حذف کنید.
* بروز کردن ارقام.

### پایان

* ایجاد گزارش آماری.

استفاده‌های معمول
-----------------

### تشخیص مسائل مربوط به فرایند

روش‌های شبیه‌سازی به‌طور ویژه به خوبی برای کمک به کاربران در تشخیص مسائل در محیط‌های پیچیده مجهز شده‌است. هدف (تئوری محدودیتها) اهمیت درک فهم تنگناها در یک سیستم را نشان می‌دهد. 'بهبود فرایند تنها در تنگناهاواقعا سراسر سیستم را بهبود خواهد بخشید. در بسیاری از سازمان‌ها تنگناها با زیادی دفاتر دارایی، تولید بیش از حد، تولید بیش از حد، تنوع در فرایندها و تنوع در مسیریابی یا تعیین توالی مخفی می‌شوند. با دقت مستندسازی سیستم در داخل یک مدل شبیه‌سازی آن است که ممکن است برای به دست آوردن یک دید چشم پرنده‌ای از کل سیستم باشد.
یک مدل کاری از یک سیستم به مدیریت اجازه فهمیدن انجام درایورها را می‌دهد. یک شبیه‌سازی می‌تواند برای نشان دادن هر تعداد از کارایی شاخص همانند بکار گیری، در زمان تحویل به نرخ، نرخ اوراق، چرخه پول نقد و به همین ترتیب ساخته شود.

#### برنامه‌های بیمارستان

یک صحنه جراحی می‌تواند بین چندین جراحی منظم به اشتراک گذاشته شود. از طریق درک بهتر اصل این روش ممکن است توان بیمار را افزایش دهد. به عنوان مثال: اگر یک عمل جراحی قلب به‌طور متوسط چهار ساعت طول می‌کشد، با تغییر برنامه اتاق عمل از هشت ساعت موجود تا نه ساعت توان بیمار را افزایش نخواهد داد. از سوی دیگر، اگر یک فرایند بیماری فتق به‌طور متوسط بیست دقیقه طول می‌کشد فراهم کردن یک ساعت دیگر نیز ممکن است عملکرد هر توان عملیاتی را افزایش ندهد در صورتی که ظرفیت و متوسط زمان صرف شده در اتاق بهبودی در نظر گرفته نشده باشد.

#### محیط‌های سفارشی

بسیاری از سیستم‌ها پیوسته ویژگی‌های بسیار متفاوتی بسته به ترکیب سفارش نشان می‌دهد. بسیاری از سفارشات کوچک ممکن است یک تنگنا به دلیل تغییرات بیش از حد شود. انتخاب سفارشات بزرگ ممکن است نیاز به پردازش اضافی در یک نقطه که در آن سیستم به‌طور ویژه کم ظرفیت است داشته باشند. مدل شبیه‌سازی اجازه می‌دهد تا مدیریت برای درک تغییرات به‌طور متوسط که بزرگترین فشار و بیشترین بازگشت سرمایه‌گذاری را داشته باشند.

### آزمایشگاه آزمون ایده‌های بهبود عملکرد

ایده‌های بسیاری از سیستم‌های بهبود بر اساس اصول دقیق، روش‌های اثبات شده (ناب، شش سیگما، TQM، و غیره) ساخته شده‌است و در عین حال موفق به بهبود کلی سیستم نشده. یک مدل شبیه‌سازی به کار بر اجازه درک و آزمایش ایده بهبود عملکرد در زمینه سیستم کلی را می‌دهد.

### ارزیابی تصمیمات سرمایه‌گذاری

شبیه‌سازی مدل به‌طور معمول برای مدل سرمایه‌گذاری بالقوه مورد استفاده قرار می‌گیرد. از طریق سرمایه‌گذاری در مدل، تصمیم گیرندگان می‌توانند تصمیمات را به اطلاع برسانند و پتانسیل‌ها را ارزیابی کنند.
اغلب این تصمیمات به عملکردهای موجودجایگزین شده نگاه کنند. به‌طور معمول، یک مدل از وضعیت فعلی ساخته شده‌است. این مدل «وضعیت جاری» و در مقابل داده‌های تاریخی می‌باشد، مورد آزمایش قرار گرفته و تأیید شده‌است. هنگامی که یک مدل به‌طور صحیح بکار گرفته شود، شبیه‌سازبرای بازتاب ظرفیت سرمایه‌گذاری تغییر میابد. این مدل از «حالت آینده» است و سپس تست فشار برای اطمینان از انجام تغییرات به عنوان مورد نظر انجام می‌شود.
گاهی اوقات، سازمان‌ها به‌طور کامل فرایندهای عملیات جدید را تعهذ می‌کنند؛ که می‌تواند امکانات جدید ناب، طراحی محصولات جدید یا استفاده از فناوری‌های جدید باشد. در این موارد تنها مدل یک «وضعیت آینده» ساخته شده‌است. تست و اعتبار سنجی ممکن است نیاز بیشتری به تجزیه و تحلیل داشته باشد. شرکت‌ها و کارشناسان که در ساخت شبیه‌سازی تخصص دارند کسانی هستند که می‌توانند در افزایش بهره‌وری کمک کنند.

### سیستم تست استرس (فشار)

مدل را می‌توان مورد استفاده قرار داد برای درک اینکه چگونه سیستم در شرایط آب و هوایی فوق‌العاده توانمندخواهد بود. شبیه‌سازی می‌تواند به مدیریت کمک کند که بفهمد: افزایش زیادی در سفارشات، نوسانات قابل توجهی در ترکیب محصول، تحویل خواسته‌های مشتری جدید، و وقایع اقتصادی (به عنوان مثال چند ملیتی با عملیات در جنوب آمریکا و آسیا نوسانات قابل توجهی در ارز می‌بیند) است.

### شبیه‌سازی شبکه کامپیوتر

شبیه‌سازی رویداد گسسته در شبکه‌های کامپیوتری برای شبیه‌سازی پروتکل‌های جدید برای سناریوهای ترافیک شبکه‌های مختلف قبل بکارگیری مورد استفاده قرار می‌گیرد. بر اساس برنامه، یا یک شبیه‌ساز سفارشی یا شبیه‌ساز موجود از قبیل شبیه‌ساز NS استفاده شده‌است.

جستارهای وابسته
---------------

روش‌های مدلسازی سیستم
* ماشین با وضعیت محدود و مورد خاص. زنجیره مارکو
* فرایند اتفاقی و مورد خاص. فرایند مارکو
* تئوری صف بندی و به‌طور خاص در فرایند تولد-مرگ
* خصوصیات سیستم رویدادهای گسسته

تکنیک محاسبه‌ای
* شبیه‌سازی کامپیوتر
* روش مونت کارلو
* کاهش متغیر
* مولد عدد شبه تصادفی

نرم‌افزار
* لیست نرم‌افزارهای شبیه‌سازی کامپیوتر
* لیست نرم‌افزارهای شبیه‌سازی رویدادهای گسسته

اصول
* مهندسی صنایع
* شبیه‌سازی شبکه

پانویس
------

1. ↑  Stewart Robinson (2004). Simulation - The practice of model development and use. Wiley.
2. ↑  Douglas W. Jones, ed. Implementations of Time, Proceedings of the 18th Winter Simulation Conference, 1986.
3. ↑  Douglas W. Jones, Empirical Comparison of Priority Queue and Event Set Implementations, Communications of the ACM, 29, April 1986, pages 300-311.
4. ↑  Kah Leong Tan and Li-Jin Thng, SNOOPy Calendar Queue, Proceedings of the 32nd Winter Simulation Conference, 2000

مطالعه بیشتر
------------

* Myron H. MacDougall (1987). Simulating Computer Systems: Techniques and Tools. MIT Press.
* William Delaney, Erminia Vaccari (1988). Dynamic Models and Discrete Event Simulation. Dekker INC.
* Roger W. McHaney (1991). Computer Simulation: A Practical Perspective. Academic Press.
* Michael Pidd (1998). Computer simulation in management science - fourth edition. Wiley.
* A, Alan Pritsker, Jean J. O'Reilly (1999). Simulation with Visual SLAM and AweSim. Wiley.
* Averill M. Law and W. David Kelton (2000). Simulation modeling and analysis - third edition. McGraw-Hill.
* Bernard P. Zeigler, Herbert Praehofer and Tag Gon Kim (2000). Theory of modeling and simulation: Integrating discrete event and \*continuous complex dynamic systems - second edition. Academic Press.
* Jerry Banks, John Carson, Barry Nelson and David Nicol (2005). Discrete-event system simulation - fourth edition. Pearson.
* James J. Nutaro (2010). Building software for simulation: theory and algorithms, with applications in C++. Wiley.

پیوند به بیرون
--------------

استفاده از نرم‌افزار شبیه‌ساز بر اساس نمونه بخش خدمت به مشتری بانک