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

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

شبیه‌سازی کامپیوتری یک شبیه‌سازی است که در یک کامپیوتر واحد یا شبکه‌ای از کامپیوترها برای بازتولید رفتار یک سیستم اجرا می‌شود. شبیه‌سازی از یک مدل انتزاعی برای شبیه‌سازی سیستم استفاده می‌کند. شبیه‌سازی‌های کامپیوتری یک بخش مفید مدل‌سازی ریاضیاتی بسیاری از سیستم‌های طبیعی در فیزیک، نجوم فیزیک، شیمی و زیست‌شناسی، سیستم‌های انسان در اقتصاد، روانشناسی، علوم اجتماعی و مهندسی شده‌اند. شبیه‌سازی یک سیستم برای اجرای مدل سیستم نشان داده می‌شود. از آن می‌توان برای کشف و به دست آوردن دیدگاه جدید در مورد تکنولوژی جدید و برآورد عملکرد سیستم‌های بسیار پیچیده برای راه حل‌ها آنالیز استفاده کرد. / شبیه‌سازی‌های کامپیوتری از برنامه‌های کامپیوتری که چند دقیقه در گروه‌های مبتنی بر شبکه‌ای از کامپیوترها اجرا می‌شوند تا ساعت‌ها برای شبیه‌سازی‌های در حال انجام که روزها طول می‌کشند متغیر می‌باشند. مقیاس اتفاقاتی که شبیه‌سازی می‌شوند به وسیله شبیه‌سازی‌های کامپیوتری فراتر از هر مقدار ممکن رفته‌است که از مدل‌سازی ریاضیاتی کاغذ و قلم قدیمی استفاده می‌کند. بیش از ۱۰ سال قبل یک شبیه‌سازی جنگ میدانی یک نیروی مهاجم به گروه دیگر شامل مدل‌سازی ۶۶۲۳۹ تانگ، کامیون و وسایل نقلیه دیگر در زمین‌های شبیه‌سازی شده اطراف کویت با استفاده از ابرکامپیوترهای چند گانه در برنامه مدرنیزاسیون کامپیوتر عملکرد بالای DoD بود. مثال‌های دیگر شامل یک مدل یک میلیارد اتمی با تغییر شکل ماده، یک مدل ۲٫۶۴ میلیون اتمی پروتئین ساز پیچیده در تمام موجودات، یک ریبوزم در سال ۲۰۰۵، یک شبیه‌سازی کامل چرخه عمر مایکوپلاسما جنیتالیوم در ۲۰۱۲ و پروژه بلو برین در EPFL که در می ۲۰۰۵ برای ایجاد اولین شبیه‌سازی کامپیوتری مغز انسان درست در پایین سطح مولکولی آغاز شد.

به دلیل هزینه کامپیوتری شبیه‌سازی، آزمایش‌ها کامپیوتری برای انجام استنتاج چنین مقادیر نا معینی استفاده می‌شوند.

شبیه‌سازی در مقابل مدل 
یک مدل کامپیوتری به الگوریتمها و معادلات مورد استفاده برای به دست آوردن رفتار سیستمی که مدل‌سازی می‌شود گفته می‌شود. بالعکس یک شبیه‌سازی کامپیوتری به اجرای واقعی برنامه‌ای گفته می‌شود که حاوی این معادلات یا الگوریتم‌ها می‌باشد؛ بنابراین شبیه‌سازی به نتیجه اجرای یک مدل اشاره دارد. به عبارت دیگر شما یک شبیه‌سازی نمی‌سازید. بلکه شما یک مدل می‌سازید و سپس یک مدل را اجرا می‌کنید یا یک شبیه‌سازی را اجرا می‌کنید.

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

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

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

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

از آنجایی که ریاضیات کامپیوتر دیجیتال کامل نیست لذا خطاهای سرشاخه زنی و گرد کردن این خطا را زیاد می‌کنند؛ بنابراین انجام یک آنالیز خطا برای اطمینان از اینکه خروجی مقادیر به وسیله شبیه‌سازی کاملاً دقیق خواهد بود مفید می‌باشد حتی خطاهای کوچک در داده‌های اصلی می‌تواند بعداً در خطای بزرگ در شبیه‌سازی انباشته شوند. درحالی‌که تمام آنالیز کامپیوتری در معرض GIGO قرار دارد. این در مورد شبیه‌سازی دیجیتال به ویژه صدق می‌کند. در حقیقت مشاهده این خطای نهفته کل در سیستم‌های دیجیتال کاتالیزور اصلی برای توسعه تئوری هرج و مرج بود.

انواع 
مدل‌های کامپیوتری را می‌توان طبق چندین جفت مستقل خصوصیات طبقه‌بندی کرد از جمله تصادفی یا جبری، حالت یکنواخت یا پویا، پیوسته یا گسسته، شبیه‌سازی سیستم پویا به‌طور مثال سیستم‌های الکتریکی، سیستم‌های هیدرولیک یا سیستم‌های مکانیکی چند بدنه‌ای یا شبیه‌سازی پویای مسائل میدانی از قبیل شبیه‌سازی‌های CFD FEMو محلی یا توزیع شده.

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

معادلات روابط بین اجزای سیستم مدل‌سازی شده را تعریف می‌کنند و اقدام به پیدا کردن حالتی می‌کنند که در آن سیستم در موازنه می‌باشد. از چنین مدل‌هایی اغلب در شبیه‌سازی سیستم‌های فیزیکی استفاده می‌شود. همان‌طور که یک مورد مدل‌سازی ساده‌تر قبل از شبیه‌سازی پویا امتحان می‌شود.
 شبیه‌سازی‌های پویا تغییرات در یک سیستم را در واکنش نسبت به سیگنال‌های ورودی مدل‌سازی می‌کند.
 مدل‌های تصادفی از تولیدکنندگان عدد تصادفی برای مدل‌سازی اتفاقات تصادفی یا شانسی استفاده می‌کنند.
 یک شبیه‌سازی اتفاق گسسته DES اتفاقات را در زمان مدیریت می‌کند. اغلب شبیه‌سازی‌های کامپیوتری تست منطق و درخت خطا از این نوع می‌باشند. در این نوع شبیه‌سازی، شبیه‌ساز یک ردیف از اتفاقات مرتب شده به وسیله زمان شبیه‌سازی شده‌ای که باید رخ دهند حفظ می‌کند. شبیه‌ساز ردیف را می‌خواند و اتفاقات جدید را همان‌طور که هر اتفاق پردازش می‌شود تشدید می‌کند. اجرای شبیه‌سازی به موقع اهمیت ندارد. اغلب توانایی دسترسی به داده‌های تولید شده به وسیله شبیه‌سازی و کشف معایب منطقی در طرح یا توالی رخدادها مهمتر می‌باشد.
 یک شبیه‌سازی پویای پیوسته، راه حل عددی معادلات جبری – تفاضلی یا معادلات تفاضلی را انجام می‌دهد. برنامه شبیه‌سازی به صورت دوره‌ای تمام معادلات را حل می‌کند و از اعداد برای تغییر دادن حالت و خروجی شبیه‌سازی استفاده می‌کند. اپلیکیشن‌ها شامل شبیه‌سازهای پرواز، بازی‌های شبیه‌سازی مدیریت و ساخت، مدل‌سازی فرایند شیمیایی و شبیه‌سازی‌های مدارهای الکتریکی می‌باشند. در اصل این نوع شبیه‌سازی‌ها در واقع روی کامپیوترهای آنالوگ اجرا شدند؛ که در آن‌ها معادلات دیفرانسیل می‌توانند مستقیماً با اجزای الکتریکی مختلف از قبیل Op-ampsها نشان داده شوند. تا آخر سال ۱۹۸۰ اغلب شبیه‌سازی‌های آنالوگ در کامپیوترهای دیجیتال متعارف اجرا می‌شدند که رفتار یک کامپیوتر آنالوگ را شبیه‌سازی می‌کنند.
 یک نوع خاص شبیه‌سازی گسسته که بر یک مدل با یک معادله اساسی تکیه ندارد اما با این وجود می‌تواند به‌طور رسمی نشان داده شود شبیه‌سازی مبتنی بر عامل است. در شبیه‌سازی مبتنی بر عامل، واحدهای فردی اعم از مولکول‌ها، سلول‌ها، درخت‌ها یا مصرف‌کنندگان در مدل مستقیماً نمایش داده می‌شوند و دارای یک حالت داخلی و مجموعه‌ای از رفتارها یا قوانین می‌باشند که تعیین می‌کنند چگونه وضعیت عامل از یک مرحله زمانی تا مرحله بعد به روز رسانی می‌شود.
 مدل‌های توزیعی روی شبکه‌ای از کامپیوترهای متصل به هم احتمالاً از طریق اینترنت اجرا می‌شوند. شبیه‌سازی‌های پراکنده در میان کامپیوترهای چند میزبانی از این دست اغلب به عنوان شبیه‌سازی‌های توزیعی یا پراکنده نامیده می‌شوند. چندین استاندارد برای شبیه‌سازی توزیعی وجود دارند از جمله ALSP, DIS, HLA و TENA.

عینی سازی 
قبلاً داده‌های خروجی از یک شبیه‌سازی کامپیوتری گاهی در یک جدول یا یک ماتریس نشان داده می‌شد که نشان می‌داد چگونه داده‌ها تحت تأثیر تغییرات بیشمار در پارامترهای شبیه‌سازی قرار می‌گرفتند. استفاده از فرمت ماتریس به استفاده سنتی از مفهوم ماتریس در مدل‌های ریاضیاتی ربط داده شد. البته روانشناسان و دیگران خاطر نشان کرده‌اند که انسان‌ها به سرعت می‌توانند روندها را با نگاه به نمودارها یا حتی تصاویر متحرک تولید شده از داده‌ها همان‌طور که با انیمیشن CGI نمایش داده می‌شود درک کنند.

اگر شاهدان لزوماً نمی‌توانند اعداد را بخوانند یا فرمول‌های ریاضی را مشاهده کنند اما از مشاهده نمودار آب و هوای متحرک آن‌ها می‌توانند اتفاقات را بسیار سریعتر از از طریق پویش جداول مختصات باران – ابر پیش‌بینی کنند. چنین نمایش‌های گرافیکی شدیدی که دنیای اعداد و فرمول‌ها را کنار هم قرار می‌دهد گاهی اقوات منجر به خروجی ای گردید که فاقد یک شبکه مختصات بود یا چرخه‌های زمان را حذف می‌کرد. امروزه مدل‌های پیش‌بینی آب و هوا تمایل دارند نمای ابرهای بارانی / برفی متحرک را در مقابل یک نقشه متعادل سازند که از مختصات عددی و چرخه‌های زمانی عددی اتفاقات استفاده می‌کند. همچنین شبیه‌سازی‌های کامپیوتری CGIاسکن‌های CAT شبیه‌سازی می‌مانند که چگونه یک تومور می‌تواند جمع شود یا در طول یک دوره طولانی درمان پزشکی تغییر کند که گذشت زمان را به عنوان یک نمای در حال چرخش سر انسان قابل مشاهده با تغییر تومور نشان می‌دهد. اپلیکیشن‌های دیگر شبیه‌سازی‌های کامپیوتری CGI برای نمیاش گرافیکی مقادیر زیاد داده‌ها به صورت متحرک توسعه داده می‌شوند چون تغییرات در طول یک اجرای شبیه‌سازی رخ می‌دهند.

شبیه‌سازی کامپیوتری در علم 
مثال‌های کلی انواع شبیه‌سازی‌های کامپیوتری در علم برگرفته از یک شرح ریاضیاتی اساسی عبارتند از:
 یک شبیه‌سازی عددی معادلات دیفرانسیل که نمی‌تواند به صورت عددی حل شود، تئوری‌هایی که شامل سیستم‌های پیوسته از قبیل پدیده‌ها در کیهان‌شناسی فیزیکی، دینامیک سیالات، مکانیک پیوستار و انرژی جنبشی شیمیایی در این دسته قرار می‌گیرند.
 یک شبیه‌سازی تصادفی که عمدتاً برای سیستم‌های گسسته‌ای استفاده می‌شود که در آن‌ها اتفاقات به صورت احتمالی رخ می‌دهند و نمی‌توانند مستقیماً با معادلات دیفرانسیل شرح داده شوند. پدیده‌ها در این دسته شامل توده ژنتیک، شبکه‌های تنظیم‌کننده ژن یا بیو شیمیایی با تعداد کمی مولکول‌ها می‌باشند.

مثال‌های خاص شبیه‌سازی‌های کامپیوتری عبارتند از:
 شبیه‌سازی‌های اماری براساس مجموعه‌ای از تعداد زیادی از پروفایل‌های ورودی از قبیل پیش‌بینی دمای موازنه دریافت آب‌ها، دادن اجازه ورود به گاموت هواشناسی به یک محل خاص. این روش برای پیش‌بینی آلودگی گرمایی بسط داده شد.
 از شبیه‌سازی عاملی به‌طور مؤثر در اکولوژی استفاده شده‌است؛ که در آن اغلب مدل‌سازی فردی نامیده می‌شود و در موقعیت‌هایی استفاده می‌شود که برای آن‌ها تغییرپذیری فردی در عامل هارا نمی‌توان نادیده گرفت. از جمله جنبش‌های جمعیت ماهی‌های آزاد و قزل الا.
 مدل پویای مرحله بندی شده زمانی – در هیدرولوژی چندین مدل حمل و نقل هیدرولوژی از این دست وجود دارند از جمله مدل‌های SWMM و. DSSAM که توسط آژانس حفاظت محیط زیست آمریکا برای پیش‌بینی کیفیت آب رودخانه بسط داده شدند.
 از شبیه‌سازی‌های کامپیوتری همچنین برای مدل‌سازی رسمی تئوری‌های شناخت انسان و عملکرد استفاده شده‌اند از جمله ACT-R.
 شبیه‌سازی کامپیوتری با استفاده از مدل‌سازی مولکولی برای کشف مواد.
 شبیه‌سازی کامپیوتری برای مطالعه حساسیت انتخابی پیوندها به وسیله مکانیک – شیمی در طول خرد کردن مولکول‌های آلی.
 از شبیه‌سازی‌های دینامیک سیالات کامپیوتری برای شبیه‌سازی رفتار هوای در حال جریان، آب و سیالات دیگر استفاده می‌شود. از مدل‌های ۱، ۲ و ۳ بعدی استفاده می‌شوند. یک مدل یک بعدی اثرات چکش آب را بر یک خط لوله شبیه‌سازی می‌کند. یک مدل دو بعدی برای شبیه‌سازی نیروهای کششی در مقطع بال یک هواپیما استفاده می‌شود. یک شبیه‌سازی سه بعدی گرما و سرمای یک ساختمان بزرگ را برآورد می‌کند.
 یک شناخت تئوری مولکولی ترمودینامیک اماری برای شناخت راه حل‌های مولکولی اساسی می‌باشد. توسعه تئوری PDT اجازه ساده شدن این موضوع پیچیده را به نمایش‌های پایین زمینی تئوری مولکولی می‌دهد.

جستارهای وابسته 
 دینامیک ملکولی

منابع 

 ویکی‌پدیا انگلیسی

جایگزین‌های آزمایش روی جانوران
شاخه‌های مطالعاتی محاسباتی
علوم محاسباتی
مدل‌سازی علمی
نرم‌افزار شبیه‌سازی
واقعیت مجازی