شبیه سازی ها و کاربردهای آن — آشنایی با مفاهیم اولیه
تجربه، حاصل عملکرد سعی و خطا است. انسان با به کارگیری قدرت خلاقانه و تفکر خود، قادر است از گذشته یاد گرفته و برای آینده برنامهریزی کند. ولی متاسفانه زمان کسب تجربه طولانی است و حتی ممکن است تجربهها، نتایجی تلخ و غیرقابل جبران داشته باشند. به کمک شبیهسازی، بدون آنکه هزینه زیاد زمانی، مالی و احتمالا جانی را متحمل شویم، عملکرد سعی و خطا را انجام داده و نتایج حاصل را به دنیایی واقعی تعمیم میدهیم. در این نوشتار به شبیه سازی ها و کاربردهای آن اشاره کرده و با بعضی از مفاهیم اولیه آن هم آشنا خواهیم شد.
بعضی از اصطلاحات مطرح در شبیهسازی در نوشتارهای دیگر فرادرس معرفی شده است. به همین علت پیشنهاد میشود به عنوان مطالب مکمل، نوشتارهای شبیه سازی مونت کارلو (Monte Carlo Simulation) – محاسبه انتگرال به روش عددی و شبیه سازی مدار در متلب — راهنمای کاربردی را بخوانید. همچنین خواندن شبیه سازی تبرید (Simulated Annealing) — به زبان ساده نیز خالی از لطف نیست.
شبیه سازی ها و کاربردهای آن
شبیه سازی (Simulation) در بسیاری از زمینهها، مانند شبیهسازی فناوری برای تنظیم عملکرد یا بهینه سازی، مهندسی ایمنی، آزمایش، آموزش و بازیهای ویدیویی استفاده میشود. اغلب، نرمافزار یا سختافزارهای رایانهای برای مطالعه مدلهای شبیهسازی شده، مورد استفاده قرار میگیرند. امروزه شبیه سازی ها با الگوبرداری علمی از سیستمهای طبیعی یا انسانی برای بدست آوردن بینش از عملکرد آنها مورد استفاده قرار گرفتهاند.
شبیه سازی را میتوان برای نشان دادن اثرات واقعی یک پدیده روی موضوع هدف، تحت شرایط کنترل شده و قانونمند به کار برد. شبیه سازی ها همچنین در مواردی که سیستم واقعی قابل استفاده نباشد، مورد استفاده هستند، زیرا ممکن است چنین سیستمی در دسترس نبوده یا به کارگیری آن خطرناک یا غیرقابل قبول باشد.
موضوعات اصلی در شبیه سازی، دستیابی به منابع معتبر اطلاعات در مورد انتخاب مناسب خصوصیات و ویژگیهای رفتارهای کلیدی پدیده مورد مطالعه است. همچنین سادهسازی تقریبی و حداقل کردن فرضیات مدل شبیهسازی، بطوری که اصول واقعی پدیده را مخدوش نکرده و آن را بیاعتبار نسازد، از جنبههای دیگر شبیه سازی محسوب میشود.به همین علت شبیه سازی یک فعالیت علمی است که نیاز به رویهها و پروتکلهای مربوط به تأیید و اعتبار مدل، پالایش، تحقیق و توسعه در فناوری، بخصوص در شبیه سازی رایانهای، دارد.
شبیه سازی، تقلید تقریبی از عملیات یک فرآیند یا سیستم بوده؛ که بیانگر عملکرد آن در طول زمان است.
طبقهبندی شبیه سازی ها
از نظر تاريخی، در ابتدای راه، تکنیکهای شبيه سازیهای مورد استفاده در زمينههای مختلف، تا حد زيادی به طور مستقل، توسعه يافتند. اما مطالعات صورت گرفته در قرن بيستم و پدید آمدن علوم جدید مانند «نظريه سيستمها» (Systems Theory) و «سايبرنتيک» (Cybernetics) همراه با گسترش استفاده از كامپيوترها، باعث شده تا ديد سيستماتيک و یکسانی در علوم مختلف از مفهوم شبیه سازی ایجاد شود. بعضی از دسته یا طبقههای مطرح در شبیه سازی ها در ادامه معرفی خواهند شد.
- شبیه سازی فیزیکی (Physical Simulation)، به شبیه سازی اطلاق میشود که در آن اشیاء بدلی و مجازی جایگزین اجسام واقعی میشوند. این اجسام فیزیکی اغلب به دلیل کوچکتر یا ارزانتر بودن از شیء یا سیستم واقعی انتخاب میشوند.
- شبیه سازی تعاملی (Interactive Simulation)، نوعی خاص از شبیه سازی فیزیکی است که اغلب با همکاری یک یا دستهای از انسانها صورت میگیرد. برای مثال شبیهساز (Simulator) پرواز یا قایقرانی و حتی شبیهساز رانندگی در این دسته قرار میگیرند.
- شبیه سازی مداوم (Continuous Simulation)، شبیه سازی مبتنی بر زمان پیوسته به جای گامهای زمانی گسسته است. این گونه شبیهسازی ها اغلب نیاز به محاسبات عددی و حل معادلات دیفرانسیل دارند.
- شبیه سازی رویداد گسسته (Discrete Event Simulation)، یک شبیه سازی بر اساس مراحل یا گامهای زمانی گسسته است که برای نشان دادن لحظههای حساس انتخاب شده است. در این شبیهسازی، مقادیر متغیرها در هر دوره مختلف، مستقل از یکدیگر هستند.
- شبیه سازی تصادفی (Random Simulation) نوعی از شبیه سازی ها است که در آن برخی از متغیرها یا فرآیندها، تحت تاثیر پدیدههای تصادفی هستند و با استفاده از روشها یا تکنیکهای مونت کارلو (Monte Carlo Methods) و بهرهگیری از اعداد شبه تصادفی (Pseudo Random)، شبیه سازی صورت میگیرد. بدین ترتیب تکرار شبیهسازی با همان شرایط، نتایج مختلفی را در یک بازه اطمینان خاص ایجاد میکند.
- شبیه سازی قطعی (Deterministic Simulation)، یک شبیه سازی است که برپایه عوامل تصادفی ساخته نشده، بنابراین متغیرها توسط الگوریتمهای قطعی تنظیم میشوند. در این گونه شبیهسازی ها، تکرار عمل شبیهسازی در شرایط یکسان، نتایج سازگار و همسانی خواهد داشت.
- شبیه سازی ترکیبی (Hybrid Simulation)، به ترکیبی از شبیه سازی ها رویدادهای زمان-پیوسته و زمان-گسسته مربوط میشود و منجر به ادغام معادلات دیفرانسیل بین دو رویداد متوالی عددی میشود تا تعداد ناپیوستگیها را کاهش دهد. معمولا این گونه ریاضیات را به نام معادلات دیفرانسیل تصادفی میشناسیم.
- شبیه سازی مستقل (Stand alone Simulation) نوعی از شبیه سازی ها است که توسط رایانه، برنامهریزی و به تنهایی روی یک ایستگاه کاری (Workstation) اجرا می شود.
- شبیه سازی توزیع شده (Distributed Simulation)، روشی است که از بیش از یک رایانه استفاده میکند تا دسترسی به منابع مختلف میسر شود. به عنوان مثال چند کاربر که برنامه کاربردی یا سیستمهای عامل مختلفی را اجرا یا مجموعه دادههای توزیع شده را به کار میگیرند، نمونههایی کلاسیک از شبیه سازی تعاملی توزیع شده (DIS) هستند.
- شبیه سازی موازی (Parallel Simulation)، بر روی چندین پردازنده انجام میشود. این کار معمولا به علت توزیع بار محاسباتی اتفاق میافتد و بخصوص زمانی که لازم است محاسبات با کارایی بالا رخ دهد از این روش استفاده میشود.
- شبیه سازی قابل تعامل (Inter-operable)، در آن چندین مدل، یا شبیه ساز، به صورت محلی با یکدیگر توافق دارند و از طریق شبکه به صورت توزیع شده عمل میکنند. یک نمونه کلاسیک از این گونه شبیه سازی ها میتواند معماری سطح بالا (High Level Architecture) باشد.
- مدل سازی و شبیه سازی خدماتی (Modeling & Simulation as a Service) که روشی برای شبیهسازی ارائه خدمات در اینترنت محسوب میشود.
- شبیه سازی در تجزیه و تحلیل خرابی (Simulation in failure analysis)، نوعی از شبیه سازی ها است که در آن ما محیط و شرایط را به شکلی تنظیم میکنیم که علت خرابی تجهیزات شناسایی و مشخص شود. این بهترین و سریعترین روش برای شناسایی علت خرابی بدون ایجاد خسارت جانی و مالی است.
اصطلاح وفاداری شبیه سازی (Simulation Fidelity) برای توصیف صحت یک شبیه سازی و چگونگی تقلید از همتای واقعی زندگی استفاده میشود. مقدار وفاداری به طور گسترده به عنوان یکی از سه گروه وفاداری پایین، متوسط و زیاد دستهبندی میشود. توضیحات خاص در مورد وفاداری منوط به تفسیر است، اما دستهها را میتوان براساس مقیاس خاصی که در ادامه آمده است در نظر گرفت. وفاداری کم - حداقل شبیه سازی لازم برای پاسخگویی یک سیستم به پذیرش ورودیها و ارائه خروجیها. وفاداری متوسط - با دقت محدود به طور خودکار به محرکها پاسخ میدهد. وفاداری زیاد - تقریباً غیرقابل تشخیص از سیستم واقعی یا تا حد ممکن نزدیک به آن.
در بیشتر شبیه سازی ها عامل انسانی میتواند با رایانه به عنوان یک محیط به اصطلاح مصنوعی، جایگزین و به طول مستقل در نظر گرفته شود. به همین علت در ادامه این متن به شبیه سازی رایانهای خواهیم پرداخت.
شبیه سازی رایانهای
شبیه سازی رایانهای (یا به اختصار sim) تلاشی برای الگوبرداری از وضعیت واقعی یا فرضی یک پدیده درون برنامههای رایانهای است، به گونهای که بتوان کارکرد سیستم در مواجه با پدیدهها را مطالعه و از چگونه فعالیت سیستم اطلاع حاصل کرد. با تغییر متغیرها در این شبیه سازی ها ممکن است پیش بینیهایی نیز در مورد رفتار سیستم انجام شود. این شبیه سازی ها ابزاری برای بررسی واقعی رفتار سیستم مورد بررسی هستند.
امروزه، شبیه سازی رایانه به یک ابزار مفید برای مدلسازی بسیاری از سیستمهای طبیعی در فیزیک، شیمی و زیست شناسی و حتی سیستمهای انسانی در اقتصاد و علوم اجتماعی بدل شده است. به عنوان مثال، جامعه شناسی محاسباتی و مهندسی اجتماعی از جنبهها میان رشتههای این گونه شبیه سازیها محسوب میشوند. حتی در مهندسی نیز برای به دست آوردن دیدگاه از عملکرد سیستمها، از شبیهسازی رایانهای استفاده میشود. نمونه مناسب برای نمایش سودمندی استفاده از رایانهها برای شبیه سازی، شبیه سازی ترافیک شبکههای حمل و نقل با رایانه است. در این شبیه سازها، رفتار مدل هر بار شبیه سازی را با توجه به تغییر مجموعه پارامترهای اولیه محیط بدست میآورند.
به طور سنتی، سیستمها، به واسطه یک مدل ریاضی یا آماری مدلسازی میشوند. در این مدلها، سعی در یافتن راه حلهای تحلیلی است که امکان پیش بینی رفتار سیستم را از مجموعه پارامترها و شرایط اولیه فراهم بیاورد. شبیه سازی رایانهای اغلب به عنوان سیستم کمکی یا جایگزینی برای مدلسازی چنین سیستمهایی مورد استفاده قرار میگیرد. اغلب این روشها راه حلهای سادهتر نسبت به روشهای تحلیلی ایجاد کرده و در مواقعی که امکان ایجاد مدل تحلیلی به فرم بسته وجود ندارد، بسیار کارآمد عمل میکنند.
انواع مختلفی از شبیه سازی رایانه وجود دارد ولی ویژگی مشترکی که در همه آنها به چشم میخورد، تلاش برای تولید نمونهای از سناریوهای مختلف برای مدلی است که در آن امکان مشخص کردن حالتهای مختلف با مقادیر اولیه متفاوت، بسیار زمانبر و طولانی است و در عمل امکان استفاده از مدلهای تحلیلی وجود ندارد.
چندین بسته نرم افزاری برای اجرای مدل سازی شبیه سازی مبتنی بر رایانه (به عنوان مثال شبیه سازی مونت کارلو ، مدلسازی تصادفی، مدل سازی چند متغیره) وجود دارد که باعث میشود تمام مدلهای ریاضی و آماری تقریبا به شکل مناسب در دسترس باشند.
به علت بُعد عملیاتی و عملکرد مناسب این نوع شبیه سازی ها را اغلب با اصطلاح «شبیه سازی رایانه» اشتباه میگیرند.
کاربرد آمار در شبیه سازی ها
در اغلب اوقات در شبیهسازی لازم است رفتار طبیعی یک پدیده را مشخص و مدل ریاضی آن را معرفی کنیم. با توجه به اینکه در دنیایی واقعی، عوامل تصادفی و غیرقابل پیشبینی نیز در تعیین رفتار مقادیر کمی و کیفی دخیل هستند، استفاده از توزیعهای آماری در شبیه سازی های مربوط به پدیدههایی مانند سیل، زلزله، تصادفات رانندگی و رفتار اجتماعات (که به آن حتی مهندسی اجتماعی نیز میگویند) اهمیت پیدا میکند. به این منظور، دادههایی از توزیعهای خاصی آماری که مطابق با رفتار آن پدیده است، در شبیه سازی، تولید شده و بسته به آن متغیرهای پاسخ و عملکردی، اندازهگیری میشود. به این ترتیب مثلا قدرت مقابله با سیل تحت سناریوهای مختلف مورد بررسی قرار گرفته و بهترین سناریو شناسایی میشود.
اغلب برای شبیهسازی آماری پدیدههایی که شامل مقادیر کمی و پیوسته باشند از توزیعهای زیر استفاده میشود. این امر بخصوص در زمانی که با دادههای سری زمانی (Time Series) یا مقادیری وابسته به زمان مواجه هستیم، بیشتر نمود پیدا میکند.
- توزیع نرمال (Normal Distribution): این توزیع بخصوص برای مشخص کردن نویز یا نوفه برای پدیدههای تصادفی استفاده میشود. وجود قانون اعداد بزرگ (Law of Large Number) توجیه مناسبی برای استفاده از این توزیع در بیشتر پدیدهها است. حتی پدیدههایی که از توزیع طبیعی یا نرمال (Normal Distribution) پیروی نمیکنند در صورت تکرار میتوانند در مجموع، رفتاری شبیه توزیع نرمال داشته باشند.
- توزیع پارتو (Pareto Distribution): از این توزیع برای مدلسازی آماری برای پدیدههای کمیاب استفاده میشود. توزیع پارتو و قانون پارتو (Pareto Law) همچنین در صنعت نیز به کار میروند.
- توزیع وایبل (Weibull Distribution): توزیع وایبل هم اغلب برای پدیدههای نادر هواشناسی و مشخص کردن زمان سیلابها استفاده میشود. به همین دلیل استفاده از این توزیع در شبیهسازی های هواشناسی بسیار عمومیت دارد.
- توزیع نمایی (Exponential Distribution): توزیع نمایی اغلب برای بیان طول عمر پدیدههای تصادفی به کار میرود. خاصیت عدم حافظه در متغیر تصادفی با توزیع نمایی از خصوصیات جالب این توزیع بوده و مشخص میکند احتمال رخداد یک پیشامد در آینده ارتباطی با گذشته آن پدیده ندارد.
از طرفی هم ممکن است شبیه سازی ها به بیان رفتار پدیدههای بپردازد که مقادیر آنها کیفی بوده یا از طریق شمارش بدست میآیند. در اغلب این موارد توزیعهای آماری زیر برای توصیف این گونه دادهها به کار میروند.
- توزیع دو جملهای (Binomial Distribution): با توجه به وجود یا ناموجود بودن یک ویژگی در یک مشاهده، این متغیر تصادفی توصیف میشود. این امر را میتوان به موفقیت یا شکست نیز توصیف کرد. در این صورت تعداد پیروزیها با تکرار یک فرآیند و آزمایش تصادفی، از توزیع دو جملهای پیروی میکند. در صورتی که تعداد حالتهای رخداد پیشامد بیش از دو حالت باشد، استفاده از توزیع چندجملهای (Multinomial Distribution) نیز مفید خواهد بود.
- توزیع پواسن (Poisson Distribution): این توزیع هم تعداد موفقیتها یا شکستها را اندازهگیری میکند ولی این مقادیر به زمان یا مکان نیز وابسته هستند و احتمال رخداد آنها بستگی به اندازه طول یا بازه زمانی یا مکانی دارد. توزیع پواسن نیز در شبیهسازیهای مقادیر گسسته و کیفی به کار میرود.
از طرفی استفاده از ادغام یا ترکیب توزیعها نیز در شبیهسازی ها میسر است به این معنی که ممکن است یک پدیده چند متغیره دارای خصوصیات با ویژگیهایی باشد که بعضی از آنها پیوسته و بعضی گسسته باشند. در این صورت توزیع آماری به صورت چند متغیره پیوسته-گسسته در نظر گرفته میشود. حتی در موقعیتهایی با پدیدههایی مواجه هستیم که در بعضی از مقاطع رفتاری پیوسته و در بعضی دیگر رفتاری گسسته دارند. در این حالت از توزیع آمیخته برای بیان رفتار آنها در شبیهسازی استفاده خواهد شد.
برای مشاهده خصوصیات و معرفی توزیعهای آماری مشهور و کاربردی بهتر است نوشتار توزیع های آماری — مجموعه مقالات جامع وبلاگ فرادرس را هم مطالعه کنید. در ادامه کابردهایی از شبیهسازی رایانهای را در حوزههای علوم کامپیوتر، معرفی میکنیم.
علوم کامپیوتر و شبیه سازی ها
در علوم رایانه، اصطلاح شبیه سازی دارای معنی و مفهوم خاصی است. آلن تورینگ (Alen Turing) دانشمند انگلیسی و مبتکر ماشین تورینگ، از اصطلاح شبیه سازی برای توصیف عملیاتی که یک «ماشین عمومی» (َUniversal Machine) روی یک جدول انتقال (Transition Table) انجام میدهد، استفاده کرد. این اصطلاح امروزه به معنی اجرای یک برنامه توسط رایانه است که توصیف وضعیت یا حالت گذار (Transition)، ورودی (Input) و خروجی (Output) است. این چرخه عملکرد یک دستگاه یا ماشین وضعیت-گسسته (Discrete-State Machine) است. بر این اساس، در علم نظری رایانه اصطلاح شبیه سازی رابطهای بین سیستمهای انتقال حالت است.
کاربرد جالب شبیه سازی رایانهای شبیه سازی عملیات خود رایانه ها است. در معماری رایانه، نوعی شبیه ساز، اغلب برای اجرای برنامهای که باید بر روی نوعی کامپیوتر نامشخص اجرا شود، به کار میرود. به عنوان مثال، عملیاتی که باید توسط کامپیوتر که هنوز در مرحله طراحی است، توسط یک رایانه دیگر شبیهسازی میشود تا یک محیط تست و آزمون کاملاً کنترل شده (بر اساس شبیه ساز معماری رایانه و مجازی سازی) ایجاد شود.
وضعیتی را در نظر بگیرید که برای نمایش بارگیری برنامه در دستگاه مورد نظر، از شبیه سازها برای اشکالزدایی در زیر برنامهها یا گاهی برنامههای کاربردی تجاری استفاده شده است. از آنجایی که عملکرد رایانه شبیهسازی شده است، تمام اطلاعات مربوط به عملکرد رایانه طراحی شده را به طور مستقیم در اختیار برنامه نویس قرار میدهد، عملیات دریافت اطلاعات شبیه سازی شده و خطاهای احتمالی مرتفع خواهند شد. در این حالت سرعت و اجرای شبیه سازی میتواند در صورت تمایل متفاوت باشد. در زمینه بهینهسازی (Optimization)، اغلب از شبیه سازی فرآیندهای فیزیکی در رابطه با محاسبات تکاملی برای بهینه سازی استراتژی های کنترل، استفاده میشود.
شبیه سازی ها در آموزش و تحصیل
شبیه سازی ها به طور گسترده برای اهداف آموزشی مورد استفاده قرار میگیرند. این امر غالباً با استفاده از روشهای چند رسانهای (MultiMedia) انجام میشود. شبیه سازی اغلب در آموزش پرسنل غیرنظامی و نظامی هم به کار میرود. این نوع شبیه سازی، بخصوص در صنایع نظامی، معمولاً زمانی به کار گرفته میشود که هزینههای آموزشی فردی بسیار گران قیمت است یا انجام مراحل آموزش بسیار خطرناک است، زیرا کارآموزان باید با تجهیزات واقعی و در دنیای واقعی آموزش ببینند.
در چنین شرایطی آنها وقت خود را صرف یادگیری در یک محیط مجازی ایمن میکنند. اغلب راحتی این است که اجازه دهید در هنگام آموزش برای یک سیستم ایمنی ، خطاها نادیده گرفته شوند. شبیه سازیهای آموزشی به طور معمول در یکی از سه دسته زیر قرار میگیرند:
- شبیه سازی زنده: جایی که بازیکنان واقعی از یک سیستم واقعی در یک محیط واقعی استفاده میکنند.
- شبیه سازی مجازی: جایی که بازیکنان واقعی از سیستم های شبیه سازی شده در یک محیط مصنوعی استفاده میکنند.
- شبیه سازی سازنده: جایی که بازیکنان شبیه سازی شده از سیستم های شبیه سازی شده در یک محیط مصنوعی استفاده میکنند.
این گونه شبیه سازی ها سازنده اغلب به عنوان «بازی جنگی» ("Wargaming) خوانده میشوند، زیرا شباهت زیادی به بازیهای جنگی دارند. در این بازیها، بازیکنان به ارتش و تجهیزاتی که در اطراف یک تخته بازی قرار گرفتهاند، فرمان داده و چیدمان و نتایج جنگ را پیشبینی میکنند.
اگه بیشتر. در مسائل مهندسی مکانیک در مورد شبیهسازی چکار برد های آن میگفتید بهتر بود
به نام الله بی نظیر.باسلام .متن توضیحات بسیار خوبی داشت. استفاده کردم و بهره بردم . متشکرم.good luck in the shelter of fact and truth.