مدیریت پروژه

شبیه‌سازی مونت‌کارلو در مدیریت ریسک پروژه — از تئوری تا اجرا با اکسل

نویسنده: مهدی جمشیدی 2026/09/08 4 دقیقه مطالعه
برنامه‌ریزیزمان‌بندیمدیریت ریسکمدیریت پروژهکنترل پروژه

چرا PERT کافی نیست و به Monte Carlo نیاز داریم؟

در مقاله قبلی درباره PERT توضیح دادیم که چطور با تخمین سه‌نقطه‌ای، مسیر بحرانی و احتمال اتمام پروژه را محاسبه می‌کنیم. اما PERT یک محدودیت بزرگ دارد: فقط یک مسیر را تحلیل می‌کند (مسیر بحرانی). در پروژه‌های واقعی، ممکن است با تغییر مدت زمان فعالیت‌ها، مسیر بحرانی تغییر کند. فعالیتی که امروز غیربحرانی است، ممکن است فردا بحرانی شود. شبیه‌سازی مونت‌کارلو (Monte Carlo Simulation) این مشکل را با اجرای هزاران بار پروژه با مقادیر تصادفی حل می‌کند و یک تصویر واقع‌بینانه از تاریخ احتمالی اتمام پروژه ارائه می‌دهد. نام "مونت‌کارلو" از کازینوی معروف موناکو گرفته شده — چون این روش بر پایه اعداد تصادفی و شانس کار می‌کند، درست مثل بازی رولت!

Monte Carlo چگونه کار می‌کند؟ — به زبان ساده

به جای یک بار محاسبه پروژه با تخمین‌های قطعی، Monte Carlo این فرآیند را هزاران بار تکرار می‌کند، اما هر بار مدت زمان هر فعالیت را به صورت تصادفی از توزیع احتمال آن انتخاب می‌کند. نتیجه: یک هیستوگرام از تاریخ‌های احتمالی اتمام پروژه. این به شما می‌گوید: "احتمال اتمام پروژه در هفته ۳۰ = ۶۰٪، در هفته ۳۵ = ۹۵٪."

مراحل شبیه‌سازی: ۱. برای هر فعالیت یک توزیع احتمال تعریف کنید (مثلاً توزیع مثلثی با min، mode، max). ۲. برای هر فعالیت یک عدد تصادفی از توزیع آن تولید کنید = مدت زمان شبیه‌سازی‌شده. ۳. با این مدت‌های تصادفی، کل پروژه را زمان‌بندی کنید و تاریخ پایان را ثبت کنید. ۴. این کار را ۱۰۰۰ یا ۱۰۰۰۰ بار تکرار کنید. ۵. هیستوگرام تاریخ‌های پایان را رسم کنید و تحلیل کنید.

اجرای Monte Carlo در اکسل — گام به گام

برای پروژه‌های ساده، می‌توانید Monte Carlo را در Excel پیاده‌سازی کنید: گام ۱: تعریف فعالیت‌ها و توزیع‌ها. برای هر فعالیت سه مقدار Min (خوش‌بینانه)، Mode (محتمل)، Max (بدبینانه) تعریف کنید. از توزیع مثلثی برای سادگی استفاده می‌کنیم. گام ۲: تولید اعداد تصادفی با توزیع مثلثی. از تابع =RAND() برای تولید عدد تصادفی بین ۰ و ۱ استفاده کنید. برای تولید عدد از توزیع مثلثی: اگر RAND < (Mode-Min)/(Max-Min) باشد: =Min + SQRT(RAND*(Max-Min)*(Mode-Min)) وگرنه: =Max - SQRT((1-RAND)*(Max-Min)*(Max-Mode)). گام ۳: محاسبه تاریخ پایان. با استفاده از CPM، تاریخ پایان پروژه را برای این تکرار محاسبه کنید. گام ۴: تکرار ۱۰۰۰ بار. یک جدول با ۱۰۰۰ ردیف و تعداد فعالیت‌ها ستون بسازید که مقادیر تصادفی در آن قرار می‌گیرند. گام ۵: تحلیل آماری. از =PERCENTILE() برای یافتن صدک‌های مختلف استفاده کنید: P50 (میانه)، P80، P95. نمودار هیستوگرام از تاریخ‌های پایان بکشید.

تفسیر نتایج Monte Carlo

خروجی Monte Carlo یک نمودار توزیع احتمال تاریخ اتمام پروژه است. شاخص‌های کلیدی: P50 (Median): ۵۰٪ احتمال اتمام قبل از این تاریخ. این یک تخمین "واقع‌بینانه" است. P80: ۸۰٪ احتمال اتمام قبل از این تاریخ. این یک تخمین "محافظه‌کارانه" است. P95: ۹۵٪ احتمال اتمام قبل از این تاریخ. این "بدترین حالت محتمل" است. Convergence: آیا با افزایش تعداد تکرارها، نتایج تثبیت می‌شوند؟ معمولاً بعد از ۱۰۰۰-۲۰۰۰ تکرار نتایج همگرا می‌شوند. Sensitivity Tornado Chart: کدام فعالیت‌ها بیشترین تأثیر را بر عدم قطعیت تاریخ پایان دارند؟ این نمودار به شما می‌گوید کجا باید تلاش خود را برای کاهش عدم قطعیت متمرکز کنید.

مثال واقعی — پروژه ساختمانی با Monte Carlo

پروژه: ساخت یک ساختمان تجاری ۸ طبقه با ۱۵ فعالیت اصلی. مدت قطعی (CPM): ۱۸ ماه. تحلیل Monte Carlo با ۵۰۰۰ تکرار: P50 = 20.3 ماه (میانه)، P80 = 22.8 ماه، P95 = 25.1 ماه. نتیجه: اگر به کارفرما قول ۱۸ ماه بدهید، احتمال موفقیت فقط ۱۵٪ است! (چون ۱۸ ماه بسیار کمتر از P50=20.3 است). بهتر است قول ۲۱ ماه بدهید (احتمال ~۶۵٪) و یک بافر داخلی ۱.۵ ماهه در نظر بگیرید. فعالیت‌های با بیشترین حساسیت: "اجرای اسکلت فلزی" (تأثیر ۳۵٪)، "نصب تأسیسات" (۲۵٪)، "اخذ پایان کار" (۱۸٪). روی این سه فعالیت باید تمرکز کنید.

ابزارهای Monte Carlo

  • @RISK (Palisade): افزونه Excel، قدرتمندترین ابزار Monte Carlo تجاری.
  • Oracle Crystal Ball: افزونه Excel دیگر با قابلیت‌های مشابه.
  • Primavera Risk Analysis (Oracle): یکپارچه با P6، مخصوص پروژه‌های مهندسی و ساختمانی.
  • Python با کتابخانه numpy: برای پروژه‌های خاص و سفارشی. کد ساده: import numpy as np; results = [simulate_project() for _ in range(10000)]; np.percentile(results, [50, 80, 95])
  • Google Sheets + Google Apps Script: می‌توان یک Monte Carlo ساده با ۱۰۰۰ تکرار در Google Sheets پیاده کرد (کندتر از Excel اما آنلاین و اشتراک‌پذیر).

مزایا و محدودیت‌های Monte Carlo

مزایا: واقع‌بینانه‌ترین روش تحلیل ریسک زمان‌بندی. تغییر مسیر بحرانی را در نظر می‌گیرد. خروجی بصری و قابل فهم برای مدیران (احتمال اتمام در تاریخ X = Y٪). قابلیت تحلیل حساسیت و شناسایی فعالیت‌های بحرانی واقعی. محدودیت‌ها: نیاز به داده‌های ورودی خوب (Garbage in, Garbage out). اگر تخمین‌های Min/Mode/Max دقیق نباشند، نتایج گمراه‌کننده خواهند بود. فرض استقلال فعالیت‌ها (همان محدودیت PERT). زمان‌بر بودن برای پروژه‌های بسیار بزرگ. نیاز به نرم‌افزار خاص یا مهارت‌های برنامه‌نویسی.

جمع‌بندی

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