آموزش آرنا آشنایی با اصول شبیه سازی سیستم های گسسته

آقای هرمزی 1395/9/27 2549

آموزش آرنا آشنایی با اصول شبیه سازی سیستم های گسسته

درود دوستان . با مجموعه آموزش های شبیه ساز پیشامد Arena در خدمت شما خواهم بود.
اما طبق سرفصل دوره های آموزشی لازمه توی جلسه اول با اصول شبیه سازی اون هم سیستم های گسسته آشنا بشیم.
شبیه‌سازی چه به صورت دستی چه به صورت کامپیوتری، تقلیدی از عملکرد سیستم واقعی با گذشت زمان است که به ایجاد ساختگی تاریخچه سیستم و بررسی اون به منظور دستیابی به نتیجه‌گیری در مورد ویژگی‌های عملکرد واقعی می پردازه. شبیه سازی اصولا به شکل مجموعه‌ای از فرض‌های مربوط به عملکرد سیستم تو چارچوب رابطه‌های ریاضی و منطقیه.
شبیه‌سازی یکی از پرکاربردترین ابزار موجود علم تحقیق در عملیاته که:
- اجازه ارزیابی عملکرد سیستم رو پیش از پدید اومدن میده.
- مقایسه گزینه‌های گوناگون رو بدون ایجاد اختلال تو سیستم واقعی مسیر می‌کنه.
- فشرده‌سازی زمان رو برای گرفتن تصمیم‌های به موقع انجام می ده.
- ساختار ساده و استفاده از نرم‌افزارها، امکان استفاده بسیاری رو فراهم می‌کنه.
اما حالا لازمه بدونیم سیستم چیه که ما میخوایم شبیه سازیش کنیم و محدودۀ عمل اون چیه:
یه سیستم گروهی از اشیا ست که در راستای تحقق مقصودی معین در چارچوب روابط یا وابستگی‌های متقابل، به یکدیگر پیوسته اند.
 محیط سیستم:
عواملی خارج از سیستم که تحت کنترل نیستند، ولی می‌تونن روی عملکرد سیستم اثر بگذارن محیط سیستم گفته می‌شن. یه سیستم معمولا تحت تأثیر تغییراتیه که خارج از سیستم اتفاق میافته. (مثلا قیمت دلار یا نفت و طلا رو خیلی پارامترهای سیاسی و ... تعیین میکنه یا راندمان کاری یک کارمند رو میزان رضایت شغلی ش تا شادی ش توی زندگی خصوصی ش و تبحرش توی انجام وظایف محوله تعیین میکنه) این تغییرات اصطلاحا توی محیط یا پیرامون سیستم اتفاق می‌افتن. وقتی مدل سازی یه سیستم رو میخوایم انجام بدیم، تصمیم‌گیری نسبت به مرز بین سیستم و محیط سیستم از نکات ضروری و مهمه. وگرنه هر چیزی رو میشه به یه فرایند ربط داد. حتی چراغونی پارسال رو به رنگ شاخ گوزن ها!
اگه عوامل بیرونی به طور جزئی سیستم رو تحت تأثیر قرار میدن می‌تونیم:
- یا تعریف سیستم رو گسترش بدیم تا عوامل بیرونی رو در بربگیره.
 - یا عوامل بیرونی رو نادیده بگیریم.
- راه حل سوم اینه که می‌تونیم عوامل بیرونی رو به عنوان ورودی‌های سیستم در نظر بگیریم.
اما اجزای سیستمی که ما قراره شبیه سازی کنیم از چی تشکیل میشن؟ جواب ساده ست:
اجزاء سیستم پنج دسته ان:
۱. نهاد یا موجودیت (Entity):عنصری مورد توجه تو سیستم. عناصر موقتی که تو سیستم جاری شده و دارای دیمانسیون مشخص هستن. مثل مشتریان یه بانک
۲. مشخصه یا خصیصه (Attribute):ویژگی موجودیته و اون رو توصیف می‌کنه. مثل مشتریان که میتونن خاصیت پارتی دار بودن رو داشته باشن
۳. فعالیت (activity):هر فعالیت بیانگر یه پریود زمانی با طول مشخصه. مثلا مدتی کهکار مشتری بانک داره انجام میشه٬ در اصل داره فعالیت سرویس دهی بهش انجام میشه.
۴. وضعیت یا حالت سیستم (State): مجموعه متغیرهای لازم برای توصیف سیستم تو هر لحظه از زمان با توجه به هدف مطالعه سیستم و معمولا با مقادیر عددی تخصیصی به مشخصه‌های موجودیتها تعریف می‌شه. مثل سیستم آماده به خدمت (Standby)
۵. واقعه یا پیشامد (Event): رویدادی لحظه‌ای که می‌تونه وضعیت سیستم رو تغییر بده. مثل لحظه ای که برق ها تو بانک میره
بیاین با چند مثال این ۵ تا بیشتر جا بندازیم:

کد آرنا


برگردیم سراغ مشخصه ها یا همون Attribute ها که خیلی توی بهتر شبیه سازی کردن یه سیستم به ما کمک میکنن. مشخصه ها میتونن یه موجودیت رو توضیف کنن. مقدار یه مشخصه میتونه تو طول زمان تغییر کنه (که اون وقت بهش مشخصه متغیر میگن) و یا تغییر نکنه (پس بهش مشخصه ثابت میگن) ما معممولا مشخصه های متغیر رو شبیه سازی میکنیم و کاری به کار ثابت ها نداریم. همون طور که تو برنامه نویسی هم بیشتر از متغیرها استفاده میکنیم تا از ثوابت.
مثال هایی از مشخصه‌های متغیر:
تعداد قطعات در خط مونتاژ٬ وضعیت یه ماشین ( که منجر به درصد استفاده از ماشین می‌شه)٬ زمان تکمیل مونتاژ٬ اینکه دکتر مشغول و یا بیکاره.
مثال هایی از مشخصه‌های ثابت:
مسیر تولید یه محصول٬ توالی مواردی که باید روی یه مریض با نوع خاصی از درمان صورت بگیره.

مثلا مشخصه های یه خط مونتاژ توی یه کارخونه رو مثال میزنم:

کد آرنا


اما این وسط شبیه سازی که تو بعضی رشته ها بهش مدل‌سازی هم میگن چیه:
مدل‌سازی یه اقدام مهم واسه ساختن یه نمونه ساده شده از یه سیستم کامل با هدف پیش بینی معیارهای قابل اندازه گیری عملکرد سیستمه.اصولا یه مدل برای گرفتن جنبه های رفتاری خاص یه سیستم و پیدا کردن آگاهی  از رفتار سیستم طراحی می شه.
یادمون باشه که مدل دقیقا مثل سیستم واقعی نیست. بلکه تنها شامل تعدادی از جنبه‌های اساسی و کلیدی سیستمه که برای هدف مطالعه سیستم تأثیرگذار هستن. برای همینه که میگن مدل خلاصه‌ای از سیستم مورد بررسی ماست. فرایند ساختن مدل برای افراد متخصص و تصمیم گیرندگان مختلف، یه روش اصولی، صریح و موثر رو فراهم می‌کنه تا بتونن قضاوت و ادراک خودشون درباره موضوع متمرکز کنن.تو مدل سازی ما با معرفی یه چارچوب دقیق، مدل رو می‌تونیم به عنوان ابزاری موثر تو برقرار کردن ارتباط به عنوان کمک تو کار تفکر روی موضوع به کار ببریم.
حالا که فهمیدیم باید چی رو به چی تبدیل کنیم تا بهش بتونیم بگیم شبیه (مدل) سازی٬ ببنیم روش صحیح مدل سازی چیه:
روش صحیح مدل‌سازی اینه که شروع مون با یه مدل خیلی ساده باشه و به تدریج اون رو تکمیل کنیم.
برای ساختن یه مدل مفید از یه فرایند دو مرحله‌ای استفاده می‌شه:
۱. تجزیه: یعنی ساده کردن سیستم با حذف جزئیات یا از طریق پذیرش فرضهایی که روابط حاکم بر عوامل را مهارپذیر می‌کنه. البته عمل ساده کردن عموما منجر به موارد زیر می شه:
- تبدیل متغیرها به مقادیر ثابت
- حذف یا ادغام متغیرها در یکدیگر
- فرض خطی بودن روابط
- افزودن محدودیت‌های بیشتر
۲. ترکیب
مثلا من وقتی میخوام یه بانک رو شبیه سازی بکنماول باید تجزیه ش بکنم ببینم توش چی دارم. خب ما مثلا تو یه شعبه بانک کارمند داریم... مشتری داریم.... سرباز حفاظت داریم.... یه آب سردکن داریم... یه سری کامپیوتر داریم.... یه نویزهای شبکه بانکی رو داریم که مدام تغییر میکنه... و خیلی چیزهای دیگه از محیط ساطع میشه. پس من باید برای شبیه سازی بانک ببینم چی به کارم میاد. خب میام تجزیه میکنم میگم کارمند و مشتری بمونه. .... سرباز حفاظت و آب سردکن واز مدلم حذف میکنم چون ربطی به عملکرد سیستم من ندارن مثلا. کامپیوتر هم که بدون کارمند کار نمیکنه پس با کارمند یکیش میکنم. نویزها رو هم بیخیال میشم. حالا سیستم من ساده شد. بعد اگر دلم خواست میتونم این شعبه رو با یه شعبه دیگه ترکیب بکنم و بشه شعبات بانک من
اما مدل ها چند دسته ان:
مدل فیزیکی:
یک شئ فیزیکی ساده شده با مقیاس کوچیک شده (مثل مدل هواپیما)
مدل تحلیلی یا ریاضی :
مجموعه ای از معادلات و ارتباطات بین متغیرهای ریاضیاتی (مثل مجموعه ای از معادلات که توصیف کننده جریان کاری تو خط تولید کارخانه هستن)
مدل کامپیوتری (شبیه‌سازی کامپیوتری) :
شرح عملکرد برنامه‌ای از سیستم با استفاده از کامپیوتر.
شبیه‌سازی کامپیوتری در عام‌ترین معناش، فرایند طراحی مدلی ریاضی- منطقی از سیستم واقعی و آزمایش این مدل با کامپیوتره. فرایند مدل‌سازی با استفاده از روابط ریاضی- منطقی و همچنین اجرای مدل به وسیله کامپیوتر رو شبیه‌سازی کامپیوتر می‌گن.
اما یه نکته در مورد حالت ها یا همون State های سیستم بگم. سیستم های واقعی برخلاف سیستم های آزمایشگاهی همیشه درست و بهینه کار نمیکنن. مثلا راندمان کاری یه کارمند تو ایران خودتون میدونید که تقریبا صفره چون تو زمان اداری هیچ وقت به حالت پایدار یا Stable نمیرسه. صبح ورزش و دعای کمیل و اینا و یه زنگ به خونه و نماز و نهار و بعد هم که خداحافظی برای  رفتن به خونه. یعنی میزان کارایی تو دو حالت سنجیده میشه یه زمان که بهش زمان آماده شدن سیستم برای عملکرد مورد انتظار میگن که اصلاحا فاز گرم کردن (Warm up) میگن و یه حالت پایدار که سیستم قراره درست کار کنه.

کد آرنا

پس ما باید سیستم رو طوری شبیه سازی کنیم که حالات پایدارش رو به بیشترین اندازه برسونیم تا انتظار بهینه کار کردن رو داشته باشه. یعنی باید مدل شبیه سازی مون رو بر اساس ورودی هایی که داره بسازیم و بر اساس خروجی هایی که از نتایج میگیریم اصلاح کنیم و این چرخه رو تا رسیدن به یه سیستمی که رومون بشه بگیم داره درست کار میکنه تکرار کنیم.

کد آرنا


خب این وسط کامپیوتر چیکاره ست؟
کامپیوتر داده‌های موردنظر در ارتباط با موجودیتهای شبیه‌سازی شده رو ثبت کرده و یه نمونه ترکیبی از داده‌های عملکردی سیستم رو ایجاد می‌کنه. بعد مفاهیم آماری برای تحلیل این نمونه داده‌ها در ارتباط با کمیتهای مختلفی مثل موارد زیر مورد استفاده قرار می‌گیره:
- زمانهای انتظار(Waiting Time)
- توان عملیاتی(Troughput)
- طول صف(Numbers in Queue)
- زمانهای پردازش(Process Time)
- میزان استفاده از منابع(Resource Utilization)
شبيه ساز(Simulator) نرم افزار و یا محیط همراه با نرم افزاریه که واقعیت رو مدلسازی می کند. استفاده از شبیه ساز یه سری خوبی داره یه سری بدی:
مزاياي شبيه سازي با استفاده از سيمولاتورها این هاست:
- قدرت فشرده سازي زمان
- قدرت گسترش زمان
- قدرت توقف زمان و از سرگیری
- قابليت تكرار و دوباره سازی
- قابليت تغيير پذيري و گسترش
- امکان تشخیص و مهار منابع تغییر(پراکندگی)
- امکان آزمایش تو سطوح مختلف دقت و تقریب
- کاهش هزینه و ايمني محيط تجربه
- ارزيابي كارآموزان و افزايش اعتماد به نفس و سرعت عمل اونها
- کاهش نیازهای تحلیلی
- نمایش ساده مدل ها

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

کد آرنا


Rockwell Software Arena :
نرم افزار Arena تو این کلاس ارائه میشه که نسخه دانشجویی اون از اکثر سایت های ایرانی تو دسترس خواهد بود.  مثل
http://www.mhhe.com/engineering/arena.zip
تو Arena پارامترهای شبیه سازی شده ازدو جنبه بررسی می شن:
1.Exo
2.Endo
Exo مربوط به پارامترهایی هستن که به طور واقعی توی سیستم وجود دارند. مثل:
- فاصله زمانی سرویس ها (Interval) برای ورود مشتری ها (سرویس گیرنده)
- مدت زمانی که مشتری ها سرویس می گیرن
- تعداد سرویس دهنده هامون (مثلا کارمند های بانک)
- قوانین حاکم بر صف مشتری ها (هر کی پارتی ش کلفت تر در بانک٬ یا هر کی کارش کوتاه تر در صف دستشویی!)
Endo پارامترهایی که در سیستم وجودواقعی (خارجی) ندارند اما باید توسط سازنده سیمولاتورتولید بشن. مثل::
- میانگین زمان انتظار توی صف
- میانگین تعداد مشتریانی که توی صف وجود دارن

حالات وضعیت سیستم در طول شبیه سازی:
سیستم شبیه سازی مثل یه سیستم واقعی همیشه تو دو وضعیت کار می کنه:
Operational (سیستم تو وضعیت عملیاتی قرار داره)
Dull / Bare / Broke / Down  (ازکارافتاده ست)
که برای حل مشکل سیستم در حالت از کارافتادگی (حالت دوم)، دو راهکار میشه در نظر گرفت:
۱. ایجاد صف انتظار برای تعمیر قطعه (بخش خراب شده)
۲. قرار دادن یه جایگزین مناسب برای ادامه کار سیستم
به عنوان مثال تو سیستمی که با برق کار می کنه، برای حالتی که برق قطع می شه، می تونیم دو راهکار بالا رو اینطوری در نظر بگیریم که :
- ایجاد صف انتظار برای وصل مجدد برق
- استفاده از دستگاه UPS
* تو شبیه سازی ، دو معیار زمانی اساسی تو صف سیستم جهت شبیه سازی داریم:
Wait time(زمان انتظار)
Service time(زمان سرویس)
زمان انتظار:
 زمانیه که مشتری انتهای صف قرار می گیره تا سرویس اون آغاز بشه.تو زمان انتظار نباید دخل و تصرفی به وجود بیاد. چون زمان انتظار توسط سرویس گیرنده ها شکل می گیره.
زمان سرویس دهی:
زمان سرویس زمانیه که مشتری به ابتدای صف رسیده و اپراتور بیکار است (اما سرور Idle (آزاد، بیکار) نیست) از زمان آزاد شدن سرور (سرویس دهنده) تا زمان پایان یافتن سرویسه .
زمان هرز :
تو طول انجام سرویس، زمان های مازادی به زمان سرویس اضافه می شه که مربوط به زمان سرویس دادن نیست که به اون زمان هرز میگیم.

* اگر تو زمان سرویس زمان های دیگری به سیستم تحمیل می شه در این صورت شبیه ساز یا سیمولاتور باید موقع شبیه سازی واسه رسیدن به یه سیستم ایده آل اون زمان ها رو حذف کنه(در صورتیکه محیط عملیاتی یه محیط باز باشه و به سیمولاتور اجازه ی کسب هر نوع داده ای رو بده)

* تو سیستم های واقعی اگه یکی از سرویس دهنده هایی  که مربوط به سرویس مشتریان هستن از کار بیافته، به دلیل نارضایتی برخی از مشتری ها ممکنه قهر کنن و از سیستم خارج بشن (بار فرض اینکه دعوا راه نمی اندازن!) این قضیه روی پارامترهای داخلی Exo  و پارامترهای خارجی  Endo تاثیر منفی می ذاره. پس ما باید دنبال ازدحام گریزی و مشتری مداری باشیم.

* وقتی سیستم رضایتمندی وجود نداره، برخی از مشتریان قصد خروج می کنن که این رویداد از نگاه بقیه مشتریان رخداد خوبیه!! برای اینکه بتونیم داده های جدید رو تو سیستم محاسبه کنیم باید مدت زمان تشکیل طول صف رو محاسبه کنیم بعدش پردازه های خارج شده رو حذف کنیم و مدت زمان تشکیل طول صف رو به سیمولاتور اضافه کنیم.
اما به عنوان آخرین مطلب این جلسه باید بگم که ما بهتره انواع صف هایی که تو شبیه سازی کامپیوتری میتونیم کار کنیم رو یاد بگیریم:
:SISO(سرویس یکی و صف یکی)(Serial Input/Serial Output)
SIPO: (صف یکی و سرویس چند تا)(Serial Input/Parallel Output)
:PISO(صف چند تا و سرویس یکی)(Parallel Input/Serial Output)
PIPO: (صف چند تا وسرویس چند تا )(Parallel Input/Parallel Output
مرسی از اینکه همراه بودید. امیدوارم این مطالب خشک رو طوری گفته باشم که تو روند جلسه های بعد به کارمون بیاد.

دانلود PDF قسمت اول آموزش arena

قسمت بعدی