الگوریتم یافتن مسیر بحرانی در روش مسیر بحرانی (CPM) در مدیریت پروژه – علیرضا محمودی فرد

طبق گزارش کلام ماندگار، یکی از پرکاربردترین، بهترین و مشهورترین روش‌ها در خصوص مباحث مدیریت و کنترل پروژه، روش مسیر بحرانی است. این روش، الگوریم خاصی را دنبال می‌کند، که در این یادداشت به آن پرداخته می‌شود. یافتن زودترین زمانِ شروع و پایان اگر زمان یا تاریخ شروع پروژه داده شده باشد (آن را با […]

طبق گزارش کلام ماندگار، یکی از پرکاربردترین، بهترین و مشهورترین روش‌ها در خصوص مباحث مدیریت و کنترل پروژه، روش مسیر بحرانی است. این روش، الگوریم خاصی را دنبال می‌کند، که در این یادداشت به آن پرداخته می‌شود.

یافتن زودترین زمانِ شروع و پایان

اگر زمان یا تاریخ شروع پروژه داده شده باشد (آن را با S نشان می‌دهند)، برای هر فعالیت، یک زودترین زمان شروع (ES) وجود دارد، که زودترین زمان ممکنی است که یک فعالیت در صورتی که تمام فعالیت‌های قبلی آن هم در زودترین زمانشان شروع شده باشند، می‌تواند شروع شود؛ اگر زمان تکمیل فعالیت t باشد، زودترین زمان پایان آن یعنی (EF) را ES + t تعریف می‌کنند.

یک راه ساده برای محاسبه زمان‌های ES و EF با استفاده از نمودار پروژه وجود دارد:

مقدار S را در سمت چپ و سمت راست Start بنویسید.

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

زمان فعالیت را به این عدد اضافه کنید و نتیجه (EF) را در سمت راست فعالیت بنویسید.

ادامه دهید تا به Finish برسید.

در پایان این محاسبات، زمان ES برای هر فعالیت، در سمت چپ دایره‌ای که آن را مشخص می‌کند و زمان EF آن، در سمت راست دایره ظاهر می‌شود. عددی که در سمت راست آخرین کار (پایان) ظاهر می‌‎شود، زودترین زمان پایان (F) برای کل پروژه است.

به‌طور خلاصه:

ESکه زودترین زمان شروع هر فعالیت است، در سمت چپ آن ظاهر شده و ماکزیمم اعداد سمت راست پیش نیازهایش است.

EFکه دیرترین زمان پایان هر فعالیت است و در سمت راست هر فعالیت ظاهر می‌شود، از ES+t به‌دست می‌آید (t زمان انجام هر فعالیت است.).

حال، مسیر بحرانی چیست؟

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

برخی تعاریف در خصوص مسیر بحرانی

زودترین شروع (Early Start-ES)

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

دیرترین شروع  (Late Start-LS)

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

زودترین زمان پایان  (Early Finish-EF)

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

دیرترین زمان پایان  (Last Finish-LF)

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

شناوری  (Float – Slack-FS)

مدت‌زمانی‌که یک فعالیت می‌تواند از زودترین زمان شروع خود به تعویق بیفتد و یا طولانی شود، بدون اینکه زمان کلی پروژه تغییری کند.

اختلاف بین زودترین تاریخ شروع و دیرترین و یا زودترین تاریخ پایان و دیرترین آن، شناوری فعالیت را مشخص خواهد کرد.

اگر شناوری صفر باشد، بدین‌معناست که فعالیت نمی‌تواند بدون اینکه فعالیت بعدی خود را جابجا کند، تاخیر داشته باشد و برای مثال، اگر شناوری ۳ روز باشد، آن فعالیت می‌تواند تا ۳ روز تاخیر داشته باشد، بدون اینکه فعالیت بعدی خود را جابجا کند.

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

شناوری کل  (Total Float-TF)

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

Total Float = Late Start date – Early Start date

Total Float = Late Finish date – Early Finish date

شناوری آزاد  (Free Float-FF)

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

Free Float = ES of next Activity – EF of current Activity

به‌عبارتی، شناوری آزاد، نوع دیگری از شناوری قابل ذکر است که شناوری آزاد، مقداری است که یک فعالیت می‌تواند بدون تاخیر در زودترین شروع هر فعالیت دیگری به تعویق بیفتد. یک فعالیت با شناوری کلی مثبت، ممکن است شناوری آزاد داشته باشد و یا نداشته باشد؛ شناوری آزاد هرگز از شناوری کلی بیشتر نمی‌شود. برای مقاصد محاسباتی، شناوری آزاد یک فعالیت، تفاوت بین زمان EF آن و کوچک‌ترین ES همه فعالیت‌های پسین آن تعریف می‌شود.

شناوری اطمینان

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

شناوری مستقل

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

مدت زمان فعالیت – دیرترین زمان وقوع رویداد – زودترین زمان وقوع رویداد = شناوری مستقل

شناسایی مسیر بحرانی

انجام هر فعالیت را تخمین زده‌ایم، حال می‌توانیم با رسم شبکه‌ فعالیت‌ها، مسیر بحرانی را شناسایی کنیم.

حرکت رو به جلو

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

اگر فعالیت ما چندین پیش‌نیاز داشته باشد، باید بیشترین عدد را برای آن فعالیت به‌عنوان زودترین زمان شروع آن فعالیت در نظر بگیریم.

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

حرکت رو به عقب

در حرکات رو به عقب، از رویداد پایان آغاز کرده و به سمت رویداد آغاز پروژه، پیش می‌رویم.

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

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

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

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

فعالیت بحرانی

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

حال، روش مسیر بحرانی چه کمکی به مدیران می‌کند؟

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

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

 

علیرضا محمودی‌فرد – مدرس کنترل پروژه در دانشگاه و مشاور رئیس در امور تجارت و بازرگانی بین‌الملل مرکز خدمات مشاوره‌ای مدیریت و امور بازرگانی سپهر تجارت ایرانیان