سنتعرف في هذا المقال على:
- التطور التاريخي لأسلوب المسار الحرج Critical Path Method (CPM)
- الخطوات اللازمة لاستخدام أسلوب المسار الحرج
- تحديد المسار الحرج والأنشطة الحرجة.
- تحديد المسار الحرج والأنشطة الحرجة.
- تحديد أوقات البدء والإتمام المبكرة والمتأخرة لكل نشاط.
- تحديد الفائض الإجمالي والفائض الحر.
- استخدام البرمجة الخطية في حل مشكلة المسار الحرج.
أسلوب المسار الحرج
Critical Path Method (CPM)
ظهر هذا الأسلوب في عام 1957 على يد كل من J .E .Kelly في شركة M.R. Walker Remington – Rand في شركة Du Pont بغرض المساعدة في جدولة عمليات التعطل بسبب الصيانة في مصانع المواد الكيماوية. وقد ذاع صيت هذا الأسلوب- الذي أطلق عليه أسلوب المسار الحرج Critical Path Method- بسبب المزايا التي تحققت من استخدامه. فقد أدى استخدام هذا الأسلوب في أحد مصانع شركةDu Pont في مدينة Louisville بالولايات المتحدة الأمريكية إلى تخفيض وقت الأعطال اللازمة لعمل برنامج الصيانة من 125 ساعة إلى 78 ساعة.
ويمكن إيجاز الخطوات اللازمة لاستخدام أسلوب CPM فيما يلي:
1- حدد كل الأنشطة التي سوف تستخدم في المشروع وعرفها بدقة. ويكون ذلك عن طريق ما يسمى بتحليل الأنشطة الذي أوضحناه من قبل، وتتضمن هذه الخطوة أيضا إعطاء حرف (أو رقم) مختلف لكل نشاط.
2- حدد التتابع الفني اللازم والذي يحكم العلاقة بين الأنشطة. ويكون ذلك عن طريق تحديد النشاط أو الأنشطة السابقة مباشرة Immediate Predecessors على كل نشاط. وتعامل الأنشطة التي ليس لها أي نشاط
يسبقها على أن قبلها مباشرة بدء المشروع.
3- وضح هذه العلاقات بين الأنشطة في شكل شبكة network لها بداية ونهاية. وتتكون هذه الشبكة من عدة دوائر. كل دائرة تعبر عن نشاط، ويربطها فيما بينها أسهم تعبر عن اتجاه تتابع الأنشطة (لا تلزم هنا أية أنشطة وهمية). ويجوز في هذه الحالة تقاطع الأسهم للدلالة على معنى التتابع في الشبكة. وحتى نتجنب أية مشاكل في عمليات الحساب، يجب أن يكون للمشروع ككل نقطة بدء واحدة ونقطة إتمام واحدة. ويعني ذلك أن الأنشطة التي ليس لها أي نشاط يسبقها يوضع قبلها نشاط افتراضي اسمه "بدء"، وكذلك الأنشطة التي لا تليها أنشطة أخرى يجب أن يوضع بعدها نشاطاً افتراضاً اسمه "إتمام"، وبالطبع فإن وقتي نشاطي "بدء" و"إتمام" هو صفر، ولكنهما يضافا لتسهيل تصور المشروع ككل، وغني عن الذكر أيضاً أنه في حالة وجود نشاط واحد في بداية المشروع ونشاط واحد في نهاية المشروع، تعد هذه بداية ونهاية طبيعية، ويمكن في هذه الحالة الاستغناء كلية عن فكرة حدثي "بدء" و "إتمام".
4- حدد مقدار الوقت اللازم لإتمام كل نشاط، وهو رقم وحيد لكل نشاط يعتمد على تقديرات الخبراء الفنيين، وهو ما يعرف بأفضل تقدير best guess، وعاد ما يوضح هذا التقدير داخل الدائرة التي تدل على النشاط ، بالإضافة إلى الحرف الدال عليه.
5- حدد المسار الحرج والأنشطة الحرجة.
ولإيضاح كيفية القيام بهذه الخطوات سوف نعرض المثال التالي:
مثال (2-1):
فيما يلي مجموعة الأنشطة اللازمة لإتمام مشروع معين، وتتابعها الفني، وكذلك الوقت اللازم لإتمام كل نشاط.
مسلسل | النشاط | النشاط السابق عليه مباشرة | الوقت اللازم |
---|---|---|---|
1 2 3 4 5 6 |
أ ب ج د هـ و |
ــ أ أ ب ب، جـ د، هـ |
3 2 4 5 2 4 |
الخطوة الأولى:
هي رسم الشبكة. باستخدام أسلوب CPM حيث يمكن تصوير المشروع على النحو التالي (شكل 2-1).
شكل (2-1)
الخطوة الثانية:
تحديد أقل وقت يلزم لإتمام المشروع. يمكن تحديد أقل وقت باستخدام أسلوبين. أما الأول فهو تحديد مجموعة المسارات التي تبدأ من نقطة بداية المشروع وتنتهي عند نهايته. ثم اختيار أطول مسار ليمثل أقل وقت لازم لإتمام المشروع. ويعاب على هذا الأسلوب أنه لا يصلح فقط إلا في حالة الشبكات المحدودة ذات الأنشطة القليلة والعلاقات البسيطة، ولذلك يستخدم الأسلوب الثاني بشكل واسع والذي يقوم على القيام بعدة خطوات نظامية محددة للتوصل إلى أقل وقت ممكن. وسوف نقوم بعرض الأسلوبين بالتطبيق على هذا المثال.
أولاً: عن طريق تحديد المسارات:
المسارات هي :
أ – ب – د – و
أ – ب – هـ - و
أ – جـ - هـ - و
وبجمع قيم الأوقات اللازمة لكل نشاط والموجودة على المسار يمكن تحديد الوقت اللازم لكل مسار على النحو التالي:
المسار الأول | 3+2+45 = 14 يوم |
المسار الثاني | 3+2+ 2+4 = 11 يوم |
المسار الثالث | 3+4+2+4 = 13 يوم |
وفي هذه الحالة يتم اختيار المسار الأول، حيث أنه يمثل أطول مسار في الشبكة. وهو الذي يحدد أقل وقت لازم لإتمام المشروع ككل ، وهو 14 يوم في هذا المثال. ويلاحظ هنا أنه على الرغم أننا نبحث عن أقل وقت ممكن لإتمام المشروع إلا أننا اخترنا أطول مسار في الشبكة. وعلى الرغم من أن هناك تناقض ظاهري في تلك العبارة إلا أنها صحيحة تماما. فإتمام المشروع سوف يرتبط بأبطء مسار –tleneck route bot، وفي هذه الحالة هو المسار الأول.
ثانيا: عن طريق تحديد أوقات البدء والانتهاء:
على الرغم من سهولة الأسلوب الأول إلا إنه لا يصلح إلا في حالات الشبكات البسيطة، كذلك فإنه لا يخدم الغرض الأساسي من تحليل مثل هذه الشبكات وهو تحديد جدول لوقت لبدء ووقت الإتمام لكل نشاط. فغالبا ما يحتاج المسئول عن المشروع إلى وضع جدول زمني محدد للحظة البدء والإتمام لكل نشاط حتى يمكن إتمام المشروع في موعده كما أن هذا الجدول يكون أساسا له لتحديد موعد احتياج المواد والمستلزمات اللازمة لإتمام كل نشاط. ولذلك فإن التحليل الأكثر فائدة هو الذي يعتمد على هذه الطريقة الثانية.
وتبدأ هذا الطريقة بحساب أربعة أرقام (قيم) أساسية لكل نشاط هي :
1- أول وقت بدء ممكن (و ب) | Earliest Start (ES) |
2- أول وقت إتمام ممكن (و ت) | Earliest Finish (EF) |
3- آخر وقت بدء مسموح (خ ب) | Latest Start (L.S) |
4- آخر وقت إتمام مسموح (خ ت) | Latest Finish (L.F) |
ويعرف أول وقت بدء ممكن ES، بأنه اللحظة التي يمكن للمسئولين عن النشاط البدء فيه فوراً دون تأخير، في لحظة البدء، أو في وقت إنجاز النشاط. ولذلك فإن: أول وقت إتمام ممكن = أول وقت بدء ممكن + الوقت اللازم لإنجاز النشاط
أما آخر وقت إتمام مسموح LF، فهو عبارة عن آخر لحظة مسموح للمسئولين عن النشاط فيها بإتمام هذا النشاط. ويعني ذلك أن يقوموا بتسليم النشاط المسند إليهم بعد إن تم إنجازه بالكامل. وبلغة الجيش أن يقوموا "بإعطاء التمام". وعلى ذلك فإن آخر وقت بدء مسموح LS يكون هو آخر وقت يسمح للمسئولين عن النشاط بالتأخر إليه في البدء حتى يكون ذلك قبل آخر وقت إتمام مسموح = آخر وقت إتمام مسموح – الوقت اللازم لإنجاز النشاط.
دعنا نقوم بتطبيق هذه المفاهيم والحسابات على المثال الذي بين أيدينا، والذي يمكن أن نتتبع خطواته على الشكل (2-2) والذي يلاحظ عليه أننا قمنا لكل نشاط بعمل مستطيل مكون من أربعة أجزاء يمثل الأول منها أول وقت بدء ممكن (و ب) والثالث منها أول وقت إتمام ممكن (و ت). كذلك فإن الثاني منها يمثل آخر وقت بدء مسموح (خ ب) والرابع يمثل آخر وقت إتمام مسموح (خ ت). ويتم حساب قيم هذه الأوقات على النحو التالي:
بالنسبة للنشاط الأول أ: نظراً لأن ذلك هو أول الأنشطة ولا يستلزم القيام به إتمام أي نوع آخر من النشاط قبله ، فإن أول وقت بدء ممكن (و ب) بالنسبة له يكون هو لحظة بدء المشروع. وطالما أننا لا نحدد ذلك التاريخ أو الوقت من الآن، فإن ذلك يرجع إلى من سوف يقوم بتنفيذ الخطة، فإننا نقول أن البدء اللحظي يعني أن أ سوف يبدأ في الوقت صفر. وبلغة العمليات العسكرية، هذه هي "ساعة الصفر". وعند تحديد موعد فعلي لبدء الشروع ككل قد يكون هذا الصفر معناه الخامس عشر من يناير أو أول فبراير أو أي تاريخ معين.
وينبني على ذلك أن أول وقت إتمام ممكن للنشاط أ حسب المعادلة (1) هو (صفر + 3) = 3 ، ويعني ذلك أن النشاط أ يمكن إتمامه بعد ثلاثة فترات زمنية (أيام أو ساعات) من بدء المشروع ككل. وذلك بفرض أن هناك بدء فوري وإتمام للنشاط في الوقت المحدد له. ولذلك أطلق عليه أول وقت إتمام ممكن.
بالنسبة للنشاط ب:
نظراً لأنه لا يمكن البدء في هذا النشاط إلا بعد إتمام النشاط (أ) والانتهاء منه ، فإن أول وقت بدء ممكن هو مجرد الانتهاء من النشاط (أ). ويكون ذلك هو
3. أي بعد ثلاث فترات زمنية (ساعات مثلا) من بدء المشروع ككل، وحيث أن الوقت اللازم هو 2 فإن أول وقت انتهاء ممكن بفرض عدم تأخر البدء أو انجاز النشاط يكون هو (3+2=5) حسب المعادلة (1) أيضاً.
بالنسبة للنشاط جـ:
باستخدام نفس المنطق المتبع في (ب) نجد أن أول وقت بدء ممكن هو 3 و أ، وقت إتمام النشاط (ب) هو 7 أي بعد 7 فترات زمنية من بدء المشروع ككل.
بالنسبة للنشاط د:
بتأمل الشبكة نجد أن هذا النشاط يتوقف على إتمام النشاط (ب) ولذلك فإن و ب للنشاط د = 5 كمال أن و ت = 5+5 = 10.
بالنسبة لنشاط هـ:
بالنظر إلى التتابع الوارد في الشبكة نجد أن مجرد البدء في النشاط (هـ) يتوقف على إتمام كلا من الأنشطة (ب) ، (جـ). وحيث أن أول وقت إتمام للنشاط (ب) هو 5 وأول وقت إتمام لنشاط (جـ) هو 7 فإن أول وقت بدء ممكن للنشاط (هـ) يكون أكبر الرقمين. ويرجع ذلك إلى الاستحالة الفعلية للبدء إلا بعد انتهاء النشاط الأكثر تأخيرا. ولذلك فإن و ب للنشاط هـ = 7، وحسب المعادلة (1) فإن و ت = 7+2= 9.
بالنسبة للنشاط و :
وهو النشاط الذي يعد آخر نشاط لازم للمشروع. فبمقارنة و ت لكل من الأنشطة د،هـ وهي 10 ،9 على التوالي نجد أن و ب لهذا النشاط (و) = 10 كما أن و ت = 14 ، ويعني ذلك أن أول وقت ممكن فيه إتمام النشاط وهو بعد 14 فترة زمنية من بدء المشروع.
من هذا العرض يمكن التوصل بسهولة إلى ما يسمى بالحد الأدنى من الوقت اللازم لإتمام المشروع ، وهو 14 فترة زمنية نظراً لأن النشاط (و) هو آخر نشاط في سلسلة الأنشطة اللازمة للمشروع.
نود هنا أنه نوضح أنه هذا التحليل قد حدد فقط الوقت اللازم للمشروع دون تحديد لنفس المسار الحرج. وتحديد هذا المسار يقضي تحديدا لمجموعة الأنشطة الحرجة كما سنرى في الجزء التالي.
الخطوة الثالثة: تحديد المسار الحرج:
في بعض الشبكات البسيطة لا يمكن التوصل، كما ذكرنا سابقا ، إلى المسار الحرج بمجرد النظر إلى الشبكة، فهو أطول المسارات على الشبكةـ وعلى ذلك فهو المسار، أ،ب،د،هـ في مثالنا البسيط. ولكن في الشبكات الأكثر تعقيداً وباستخدام الكومبيوتر، يتم الاعتماد على أسلوب تحديد أوقات البدء والانتهاء في تحديد النشاط الحرج.
ففي المثال الحالي يتم تحديد قيم كل من خ. ب ، خ ت الخاصة بكل نشاط، ويتم ذلك بدءا من آخر نشاط لازم لإتمام المشروع ، وهو النشاط (و) في مثالنا هذا، فنقوم بتحديد آخر وقت للإتمام مسموح به للمشروع ككل. ويرجع ذلك إلى أن معنى الحرجة هي أنها الأنشطة التي إذا تأخرت ترتب على ذلك تأخير في إتمام المشروع ككل، ويعني ذلك ضمنيا أن هناك تاريخ محدد للانتهاء من المشروع، أي أن هناك ما يشابه العقد الذي تم توقيعه بين الشركة المنفذة والجهة التي تحتاج المشروع، والذي ينص على تاريخ انتهاء محدد، وطالما أن أقرب وقت يمكن للشركة المنفذة أن تعد به الجهة المحتاجة هو 14 حسب الحسابات السابقة لقيم أول وقت إتمام للمشروع وللأنشطة، فإن ذات الرقم يستخدم كأنه نهاية لا يجب تجاوزها ويوضع في خانة خ ت للنشاط ().
بالنسبة للنشاط و :
طالما أن آخر وقت مسموح به للانتهاء من المشروع هو بعد 14 يوم من البدء فإن خ ب للنشاط (و) هي 14 -4 =10 وذلك حسب المعادلة (2).
(*) من الممكن أن يكون وقت إتمام المشروع المتفق عليه (خ ت لآخر نشاط) أكبر من أقل وقت يلزم لإتمام المشروع ( و ت لآخر نشاط). وفي هذا الحالة سوف يكون هناك وقتا زائداً للأنشطة الحرجة بمثل حدا أدنى للوقت الزائد، ويكون هناك أيضا وقتا زائدا أكبر للأنشطة غير الحرجة. أما إذا كان وقت إتمام المشروع المقترح (خ ت لآخر نشاط) يقل عن أقل وقت يلزم لإتمام المشروع (و ت لآخر نشاط) فإن الوقت الفائض Slack سوف يكون بالسالب بالنسبة لبعض الأنشطة.
بالنسبة للنشاط د:
إذا كان من المفروض أن آخر وقت مسموح به لأن يبدأ النشاط (و) هو 10 فإن (د) يجب ألا يتأخر إتمامه حال من الأحوال عن هذه اللحظة . ولذلك فإن خ ب في النشاط (و) هي التي تحكم قيمة خ. ت في النشاط (د). وعلى ذلك فإن خ ب للنشاط د = 10 -5 = حسب المعادلة (2).
بالنسبة للنشاط هـ :
بنفس المنطق المستخدم في (د) فإن موعد بدء النشاط (و) يحكم آخر وقت للانتهاء من النشاط (هـ) وبذلك فإن قيمة خ ت للنشاط (هـ) هي 10، وبطرح الوقت اللازم للنشاط (هـ) من هذه القيمة نصل إلى خ ب للنشاط (هـ) والتي تساوي 8.
بالنسبة للنشاط ب:
نظراً لأن بدء الأنشطة د، هـ يتوقف على إتمام (ب) وأن آخر موعد مسموح النشاط (د) للبدء هو 5 بينما هو 8 بالنسبة للنشاط (هـ) فإن آخر وقت يسمح فيه للإتمام للنشاط (ب) يكون هو أقل الرقمين وهو 5. وعلي ذلك فإن خ ب للنشاط (ب) تكون هي 3.
بالنسبة للنشاط جـ:
نظرا لارتباطه بالنشاط (هـ) فإن خ ت = 8، خ ب = 4.
بالنسبة للنشاط أ:
بمقارنة خ ب للنشاط (ب) ، خ ب للنشاط (ح) يتم التوصل إلى خ ت للنشاط (أ) وهو 3. وبالتالي فإن خ ب للنشاط (أ) هو صفر.
ويمكن الآن إيجاز هذه القيم في الجدول التالي:
النشاط |
أول وقت بدء ممكن و ب |
أخر وقت بدء مسموع خ ب |
أول وقت إتمام ممكن و ت |
آخر وقت إتمام مسموح خ ت |
الوقت الزائد الإجمالي |
---|---|---|---|---|---|
أ ب ج د هـ و |
صفر 3 3 5 7 10 |
صفر 3 4 5 8 10 |
3 5 7 10 9 14 |
3 5 8 10 10 14 |
صفر صفر 1 صفر 1 صفر |
ومن هذا الجدول يمكن تحديد ما يسمى بالوقت الزائد أو الفائض الإجمالي Total Slack لكل الأنشطة كما هو واضح في العمود الأخير بالجدول. والفائض الإجمالي هو عبارة عن أقصى قدر من الوقت يمكن أن يتأخر به إتمام النشاط دون أن يسبب تأخيراً في وقت إتمام المشروع ككل. ويمكن التصول إليه بأي من الطريقتين التاليتين:
الفائض الإجمالي = آخر وقت بدء مسموح – أول وقت بدء ممكن.
Total Slack = LS – ES
الفائض الإجمالي = آخر وقت إتمام مسموح – أول وقت إتمام ممكن.
Total Slack = LF – EF
ويجب دائماً أن تكون النتيجة واحدة في الحالتين بالنسبة لذات النشاط. فعلى سبيل المثال بالنسبة للنشاط (أ) الفائض الإجمالي = صفر – صفر = صفر وهو تماماً يعادل 3-3 = صفر، كذلك فإن الفائض الإجمالي بالنسبة للنشاط جـ = 4 – 3 = 1 وهي بالتمام القيمة 8 – 7 = 1.
وللاحظ أيضاً أن قيمة الفائض الإجمالي في هذه الحالات سوف تكون دائماً رقما موجباً أو صفراً ، فلا يمكن أن يكون رقما سالباً إلا إذا كان هناك خطأ حسابيا أو في حالة أن يبدأ المشروع كله متأخراً عن موعده. أما القيم الموجة فتعني أنه يمكن تأخر النشاط في حدود تلك القيمة دون أن يسبب ذلك تأخيرا للمشروع ككل. فالنشاط جـ على سبيل المثال يمكن أن يتأخر إتمامه يوما كاملاً دون التأثير على إتمام المشروع في 14 يوم أما إذا تأخر بمقدار يومين أو أكثر فإنه بالتأكيد سوف يؤدي إلى تأخير المشروع- وقد يكون هذا التأخير في صورة تأخير تاريخ البدء أو استغراق وقت أطول في تنفيذ النشاط عما كان مقررا له. وقد يكون سبب كل ذلك تأخر ورود المواد والأدوات اللازمة أو العمالة الكافية، أو بسبب خطأ في عملية التقدير.
ومن جهة أخرى فإن القيم الصفرية للفائض الإجمالي تعني أنه ليس هناك مجال لتأخير هذا النشاط. فأي تأخير فيه سوف يؤثر مباشرة على المشروع ككل. ولذلك تسمى الأنشطة ذات الفائض الإجمالي الذي قيمته صفر بالأنشطة الحرجة Critical activities وتمثل الأنشطة الحرجة التي تقع على مسار معين ما يسمى بالمسار الحرج والذي يعد أطول مسار على الشبكة وهو الذي يعبر أيضاً عن أقل وقت لازم لإتمام المشروع. وفي المثال الحالي فإن الأنشطة (أ) ، (ب) ، (د) ، (و) تعد أنشطة حرجة.
وعلى الرغم من أننا ذكرنا أن وجود فائضاً إجمالياً ذو قيمة موجبة يعني إمكانية تأخير النشاط في حدود هذا الفائض دون أن يؤثر ذلك على وقت إتمام المشروع، إلا أن ذلك لا يعني على الإطلاق أنه يمكن تأخير كل الأنشطة الغير حرجة بمقدار الوقت الزائد لكل منها دون أن يؤثر ذلك على وقت إتمام المشروع. فإذا كان الأنشطة الغير حرجة هي جـ ، هـ فإن تأخير إتمام كل منها بيوم واحد في ذات الوقت سوف يؤدي إلى إتمام المشروع في 15 يوم وبالتالي تأخيره لمدة يوم. وبتأمل المثال نجد أن المسار الحرج الذي يجمع الأنشطة الحرجة هو المسار:
أ – ب – د – و
والذي يتضح منه أن أقل وقت يلزم لإتمام المشروع هو 3 + 2 + 5 + 4 = 14
وهو مجموع وقت الأنشطة على المسار الحرج. ويجب أن ننوه هنا إلى أنه من الممكن وجود النشاط الحرج الواحد على أكثر من مسار. ويفيد تحديد المسار الحرج في أمرين: أما الأول فهو تحديد الأنشطة الحرجة التي يجب أن تتم ملاحظة عملية تنفيذها بعناية كاملة. فهي سوف تحتاج إلى عملية إشراف إداري خاصة للتأكد من أن يتم البدء في التاريخ المحدد وأن يتم التنفيذ خلال المدة المحددة. ويقتضي ذلك التأكد من أن كافة الموارد اللازمة متاحة لها والاستعداد بموارد احتياطية لتفادي عملية التأخير. كذلك قد تستخدم بالنسبة لها خرائط متابعة تنفيذ خاصة مثل خرائط جانت للتأكد من السير حسب برنامجها الموضوع.
أما الفائدة الثانية من تحديد الأنشطة الحرجة فهي تحديد أوجه النشاط التي يجب تقليل فترة إنجازها إذا كانت هناك رغبة في تخفيض وقت إتمام المشروع بقدر معين من الوقت . فإذا قدر لعملية عسكرية أن تتم خلال فترة زمنية معينة واتضح بعد ذلك أن العدو قد حصل على أنواع من المعدات تسمح له بالاستجابة لمثل هذه العملية في فترة أقل من الوقت المقدر لها فإن الأمر يستلزم محاولة وضع خطة لإتمام العملية في وقت أقل، ويكون ذلك بالتركيز على الأنشطة الحرجة كما سنرى فيما بعد.
تحليل الفائض الإجمالي والفائض الحر:
أوضحنا في جزء سابق أن الفائض الإجمالي للنشاط هو أقصى وقت يمكن أن يتأخر به إتمام نشاط معين دون أن يؤثر ذلك على موعد إتمام المشروع ككل. وعلى ذلك فإن هذا النوع من الفائض يقيس علاقة التأثير المباشر بين نشاط معين والمشروع ككل. وبالإضافة إلى هذا النوع من الفائض يوجد أيضاً ما يسمى بالفائض الحر Free Slack. وهو عبارة عن الوقت الذي يمكن أن يتأخر به نشاطاً معيناً دون أن يؤثر ذلك على البداية المبكرة (و ب) لنشاط آخر يليه. ويتم حساب الوقت الزائد الحر للنشاط عن طريق الفرق بين أول وقت إتمام للنشاط (و ت) وأقل وقت من بين كل أوقات البدء المبكرة (و ب) لكافة الأنشطة التي تليه مباشرة والتي تتوقف عليه immediate successors. ففي مثالنا الحالي نجد أن النشاط حـ ليس له فائض حر ويرجع ذلك غلى أن تأخيره بيوم واحد سوف يؤدي إلى أن يصبح أول وقت إتمام ممكن له هو 8، ويعني ذلك أن أول وقت إتمام للنشاط الذي يليه وهو هـ سوف يتأخر بيوم ليصبح 8 أيضاً. ويمكن الوصول لتلك النتيجة مباشرة عن طريق المعادلة التالية:
وحيث أن الذي يلي النشاط حـ مباشرة هو نشاط واحد هو هـ فإن الفائض الحر للنشاط حـ = و ب (للنشاط هـ) – و ت (للنشاط جـ)
= 7 – 7 = صفر
وبالنسبة للنشاط هـ فإن الوقت الفائض
= و ب (للنشاط و) – و ت (للنشاط هـ)
= 10 – 9 = 1
أما الفائض الحر لباقي الأنشطة على الشبكة فهو صفر. ويمكن إيضاح ذلك على سبيل المثال للنشاط أ.
والقاعدة عامة :
إذا كان وقت الفائض الإجمالي لأي نشاط يساوي صفر فإن الفائض الحر لهذا النشاط لابد أن يساوي صفرا أيضاً. بمعنى آخر فإن كل الأنشطة الحرجة على المسار الحرج تكون أرقام الفائض الإجمالي والفائض الحر لكل منها مساوية للصفر.
كذلك فإن هذا المثال يوضح أنه علي الرغم من أن هناك بعض الأنشطة الغير حرجة التي وقتها الفائض الإجمالي موجب ، كما هو الحال بالنسبة للنشاط جـ ، فإن وقتها الفائض الحر يساوي الصفر. أي أن لها وقت فائض إجمالي وليس لها وقت فائض حر. فالنشاط الذي له وقت زائد إجمالي موجب قد أو قد لا يكون له وقت زائد حر. وفي كل الحالات التي أوضحناها لا يجب أن يزيد وقت الفائض الحر عن الوقت الفائض الإجمالي كما ذكرنا سابقاً (راجع الأمثلة مرة أخرى للتأكد من ذلك).
ويفيد هذا التحديد لكل من الفائض الإجمالي والفائض الحر لكل نشاط في تقدير درجة المرونة المتاحة أمام مدير المشروع في جدولة النشاط. فعندما يكون للنشاط وقت فائض إجمالي قدره صفر فإن ذلك يعني أن جدول هذا النشاط لا يمكن تأخيره (فأول وقت للبدء هو آخر وقت للبدء). واي تأخير في وقت البدء المحسوب سوف يترتب عليه تأخير المشروع ككل. أما الأنشطة التي لها وقت فائض إجمالي، فإنها تتيح للقائمين على جدولة الأنشطة نوع من المرونة في تحديد تاريخ البدء لهذا النشاط. وذلك يفيد في إمكانية عمل تسوية smoothing لمستويات الطاقة التي يتم استخدامها. فبدلاً من أن يكون هناك ضغط peak على بعض الموارد المشتركة لفترات محددة وتركها دون استخدام في فترات أخرى فيمكن عمل توزيع معتدل لاستخدامات الموارد Load Leveling عن طريق إعادة جدولة الأنشطة التي ليست حرجة، أي التي يمكن تأخيرها في حدود وقت معين دون التأثير على وقت إتمام المشروع. ويفيد ذلك، كما سنري فيما بعد، في تفادي التكاليف الزائدة المترتبة على عملية تغيير مستوى الطاقة المستخدمة. فبدلاً من أن يعمل الأفراد ورديات إضافية في فترة محددة (مما يترتب عليه تكاليف أعلى) يمكن العمل خلال الورديات الأصلية ولكن على فترات مختلفة إذا أمكننا إعادة جدولة الأنشطة.
كذلك الأمر بالنسبة للأنشطة ذات الوقت الفائض الحر. فيمكن استخدامها بفعالية عند تحديد مستويات التشغيل. على سبيل المثال ، إذا كان لنشاط معين فائض حر، يمكن للمشرف أن يمنح نوع من المرونة في تقرير متى يبدأ النشاط. فحتى إذا أخر وقت بدء النشاط بوقت معادل (أو أقل من) الفائض الحر، فإن ذلك التأخير سوف لا يؤثر على أوقات البدء أو مقدار الفائض الخاص بالأنشطة التالية. وذلك أمر غير ممكن بالنسبة للأنشطة التي ليس لديها أي وقت فائض حر. وبتطبيق ذلك على المثال الحالي نجد بعض الحقائق:
- إن تأخير النشاط هـ فقط في حدود الوقت الفائض الإجمالي (وهو يوم واحد) سوف لا يؤخر إتمام المشروع أم تأخيره بأكثر من هذا الفائض فإنه سوف يؤدي بالضرورة إلى تأخير المشروع.
- إن وجود أكثر من فائض إجمالي لكل نشاط لا يعني إمكانية تأخير كل هذه الأنشطة في حدود تلك الأوقات الخاصة بكل منها دون أن يؤثر ذلك على وقت إتمام المشروع. ففي مثالنا الحالي نجد أن تأخير لنشاط (و) بيوم والنشاط (هـ) بيوم سوف يؤدي بالضرورة إلى تأخير وقت إتمام المشروع بيوم. أما وجود أكثر من فائض حر لكل نشاط فإن يعني إمكانية كل هذه الأنشطة في حدود تلك الأوقات الخاصة بها دون أن يؤثر على وقت إتمام المشروع. وهذا يعد فارقاً أساسياً بين مفهوم واستخدام فكرتي الفائض الإجمالي والفائض الحر.
استخدام البرمجة الخطية في حل مشكلة المسار الحرج
سوف نتناول في هذا الجزء استخدام البرمجة الخطية () في تحديد (1) أقل وقت يلزم لإتمام المشروع و (2) المسار الحرج. وسوف نعرض ذلك في خلال مثال في صيغة عامة
مثال (2-2):
بفرض أن لديك المشروع التالي، والمكون من ستة أنشطة هي أ، ب، جـ، د، هـ، و. وأن لكل نشاط فترة زمنية مقدرة سوف نعبر عنها بالرمز ف كذلك فإن لكل نشاط نقطة بداية ونهاية تسمى حدث. وأن الشبكة تأخذ الشكل التالي حسب العلاقات التتابعية بين الأنشطة:
يعني ذلك أن الوقت اللازم لإتمام النشاط أ هو ف21 والنشاط ب هو ف31 ... وهكذا. أي أن ف س ص هي عبارة عن الوقت المستغرق لنشاط ما يبدأ في الحدث س ويتم في الحدث ص.
دعنا الآن نعرف متغير جديد هو (وص) وهو عبارة عن أول وقت من الممكن أن يتم فيه الحدث ص. وعلى ذلك يكون الهدف الآن هو تقليل minimize.
أول وقت من الممكن أن يتم فيه المشروع ككل ( وهو بالضبط أول وقت من الممكن أن يتم فيه الحدث 5 في هذا المثال. وذلك في ظل القيود الناتجة عن تعريف وص أي أن القيود في هذه الحالة يجب أن تضمن أن ف ص تكون علي الأقل أكبر من أو تساوي مجموع الفترات على كل المسارات التي تؤدي إلى الحدث ص. فعلى سبيل المثال، بالنسبة للحدث (4)، فإن القيدين التاليين يضمنا أن وقت هذا الحدث لا يقل عن أطول المسارات الداخلية في الحدث (4) .. وهذين القيدين هما:
ويعني ذلك أن وقت الحدث (4) سوف يكون هو أكبر المسارين التاليين:
(1) – (2) – (4)
و (1) – (3) – (4)
وبنفس المنطق فإنه بالنسبة لكل الشبكة الواردة في المثال تكون صياغتها في شكل نموذج البرمجة الخطية على النحو التالي:
دالة الهدف: قلل ت = وه
في ظل القيود
أما القيدين الأول والثاني فهما مباشرة من الحدثين (2)، (3)، فالحدث (2) لا يسبقه إلا الحدث (1). وطالما أن الوقت الذي يستغرقه الحدث دائما هو صفر فإن أول وقت حدوث الحدث (2) يكون هو على الأقل بعد إتمام النشاط أي بعد وقت النشاط أ وهو ف21. كذلك الحال بالنسبة لأول وقت يمكن أن يحدث فيه الحدث (3) فهو على الأقل بعد مرور الفترة ف 31.
كذلك فإن القيدين (3) و (4) هما الترجمة المباشرة للقيدين الذين تم استنتاجهم فيما سبق فيما يتعلق بالحدث (4). ولكن تم أعادة الترتيب للمتغيرات حتى نصل إلى الصياغة النمطية التي تستلزمها طريقة البرمجة الخطية. ويكون ذلك كما يلي:
أما القيدين الخامس والسادس فيمكن التوصل إليهم عند مراعاة شرط الحدث (5) يمكن الوصول إليه من مسارين، أما عن طريق الحدث (3) أو عن طريق الحدث (4) فإن هناك قيدين لضمان تحقيق أول وقت وهما:
وبشيء من إعادة الترتيب لهذين القيدين يمكن التوصل إلى القيدين (5)، (6).
وبتأمل هذه الصياغة التي أمامنا نجد أن القيم الموجودة من الجانب الأيسر من كل القيود (1) إلى (6) توضح خاصية هامة في تلك الصياغة. وهي أن عدد القيود لابد وأن يساوي عدد الأنشطة. ويرجع ذلك إلى أن القيم الموجودة على اليسار ما هي إلا الوقت اللازم لإتمام الأنشطة جميعها، كذلك فإن أعادة صياغة هذه المشكلة الأصلية حسب الصيغة الثنائية () dual سوف يوضح أن مشكلة الثنائية في هذه الحالة سوف تؤدي إلى الوصول إلى أطول مسار على الشبكة، كذلك فإن الحل الأمثل لمشكلة الثنائية سوف يعطي قيماً مثلي لمتغيرات الثنائية (هي أسعار الظل) سوف توضح تماماً ما إذا كان النشاط حرجاً (له قيمة الوحدة) أو غير حرجاً (له قيمة صفر) . وبناءاً على ذلك فإن المسار الحرج يمكن تحديده عن طريق فحص أسعار الظل في الحل الأمثل للمشكلة الأصلية التي قمنا بصياغتها في الفقرات السابقة. وطالما أنه بالنسبة لكل قيد في المشكلة الأصلية سوف يكون هناك متغيراً مناظراً في المشكلة الثنائية فإن ذلك يؤدي في مثالنا إلى أن سعر الظل Shadow Price الخاص بالقيد (1) يوضح ما إذا كان النشاط (2،1) نشاطاً حرجاً أم لا، كما أن سعر الظل الخاص بالقيد (2) يوضح ما إذا كان النشاط حرجاً أم لا .. وهكذا. ولإيضاح هذا المعنى دعنا نأخذ المثال البسيط جداً التالي:
مثال (2-3)
يتضح من هذا المثال أن المسار الحرج هو المسار (1) – (2) – (4) حيث أنه أطول مسار على الشبكة. وطوله يساوي 8 أسابيع. كذلك فإن الأنشطة الحرجة هي الأنشطة أ ، جـ . وعلى ذلك فإن الفائض الإجمالي لكل من النشاط أ والنشاط جـ = صفر أما الفائض الإجمالي للنشاط ب فهو 2 وللنشاط د. فهو 2. كذلك فإنه يمكننا حساب الفائض الحر للأنشطة ب ، د . وهو يساوي صفراً بالنسبة للنشاط ب و 2 بالنسبة للنشاط د. وبالطبع فإن الفائض الحر للأنشطة الحرجة أ ، جـ يساوي صفر.
والآن سوف نحاول استخدام أسلوب البرمجة الخطية علنا نصل إلى نفس الإجابات، وتكون الخطوة الأولى هي صياغة المشكلة حسب أسلوب البرمجة الخطية على النحو التالي:
وبإعادة ترتيب القيود نصل إلى الصيغة المنتظمة التالية:
ويمكن تحويل التباينات إلى معادلات عن طريق إضافة متغير عطل يمثل كل قيد على النحو التالي:
قلل ت =
صفر و2 + صفر و3 + و4 + صفر ع1 + صفر ع2 + صفر ع3 + صفر ع4
القيود
و2 + صفر و3 + صفر و4 - ع1 + صفر ع2 + صفر ع3 + صفر ع4 = 3
صفر و2 + و3 + صفر و4 + صفر ع1 - ع2 + صفر ع3 + صفر ع4 = 4
-و2 + صفر و3 + و4 + صفر ع1 + صفر ع2 - ع3 + صفر ع4 = 5
صفر و2 - و3 + و4 + صفر ع1 + صفر ع2 + صفر ع3 - ع4 = 2
و2 ، و3 ، و4 ≥ صفر
وقبل أن نبدأ في الحل يجب هنا أن نلاحظ أن عدد القيود هو عدد الأنشطة. وأن القيم الموجودة في القيود على اليسار ما هي إلا قيم الوقت المقدر للأنشطة. فالقيمة 3 هي الخاصة بالنشاط أ والقيمة 4 هي الخاصة بالنشاط ب كذلك فإن القيمة 5 هـ. الخاصة بالناشط جـ والقيمة 2 هي الخاصة بالنشاط الأخير د. كذلك نلاحظ أيضاً في هذه الصياغة أن المتغيرات الجديدة الخاصة بالعطل في كل قيد قد تم طرحها من الجانب الأيمن نظراً لأن صيغة القيود هنا هي >. وحتى نوفر على نفسنا عملية إضافة المتغيرات الوهمية سوف نحاول خلق حلاً أساسياً ممكناً يحقق شروط جدول السمبلكس من خلال بعض العمليات الرياضية البسيطة. والسبب الذي شجع على ذلك هو أن معظم المعاملات للمتغيرات هي إما الوحدة (السالبة أو الموجبة) أو صفر. وعلى ذلك نبدأ بجدول السمبلكس المبدئي الذي اعتبرنا فيها أ، و2 ، و3 ، و4 ، ع4 (بالضرورة) أساسية بينما تعتبر كل من ع1 ، ع2 ، ع3 متغيرات غير أساسية قيمتها صفر.
ت | صفر | صفر | 1 | صفر | صفر | صفر | صفر | ||
ت الوحدة |
المتغيرات الأساسية |
قيم المتغيرات الأساسية |
و2 | و3 | و1 | ع1 | ع2 | ع3 | ع4 |
صفر | و2 | 3 | 1 | صفر | صفر | -1 | صفر | صفر | صفر |
صفر | و3 | 4 | صفر | 1 | صفر | صفر | -1 | صفر | صفر |
1 | و4 | 8 | صفر | صفر | 1 | -1 | صفر | -1 | صفر |
صفر | ع4 | 2 | صفر | صفر | صفر | -1 | 1 | -1 | 1 |
ل | 8 | صفر | صفر | 1 | -1 | صفر | -1 | صفر | |
ت - ل | صفر | صفر | صفر | 1 | صفر | 1 | صفر |
ملحوظة:
ثم استنتاج المعادلة الخاصة بالصف و4 عن طريق جمع المعادلة الأولى الخاصة بالمتغير الأساسي و2 مع المعادلة الثانية في صيغ المعادلات السابقة الخاصة بالمشكلة. أما معادلة الصف ع4 فقد تم الوصول إليها عن طريق طرح المعادلة الأخيرة من المعادلة الثانية حتى تصبح ع4 قيمة موجبة كمتغيراً أساسياً. وحيث أن كان القيم في الصف ت – ل في الجدول قيماً صفرية أو موجبة فإن ذلك يكون هو الحل الأمثل. ويلاحظ على هذا الحل ما يلي:
1- أن أقل قيمة للمتغير و4 يمكن تحقيقها هي 8 وهي التي تتضح في الجدول في الصف قبل الأخير. وهو بالضبط أقل وقت يلزم لإتمام المشروع وهو طول المسار الحرج كما أوضحنا في الحل العادي لهذا التمرين منذ بدايته.
2- يمكن أيضاً الاستفادة من هذا الجدول في تحديد الأنشطة الحرجة. ويكون ذلك عن طريق تحديد أسعار الظل لمتغيرات العطل التي تعبر عن كل قيد. (لاحظ أن كل قيد يعني نشاطاً معيناً). وعلى هذا الأساس فإن أسعار الظل لهذه المتغيرات تعبر عن حرجية النشاط. فإذا كان سعر الظل رقماً موجباً (مساويا للوحدة) فيعني ذلك عدم إمكانية تأخير النشاط، وعلى ذلك فيكون نشاطاً حرجاً. أما إذا كان سعر الظل صفراً فيعني ذلك أن النشاط نشاطاً غير حرجاً، وبتطبيق هذه القاعدة على الجدول نجد إن:
- سعر الظل للمتغير ع1 = 1 ويعني ذلك أن النشاط أ نشاطاً حرجاً (فالمتغير ع1 قد أضيف إلى القيد الأول ، والقيد الأول يخص النشاط أ).
- سعر الظل للمتغير ع2 = صفر ويعني ذلك أن النشاط ب نشاطاً غير حرجا (فالمتغير ع2 قد أضيف إلى القيد الثاني، والقيد الثاني يخص النشاط ب).
- سعر الظل للمتغير ع3= 1 ويعني ذلك أن النشاط جـ نشاطاً حرجاً.
(فالمتغير ع3 قد أضيف إلى القيد الثالث، والقيد الثالث يخص النشاط جـ).
- سعر الظل لمتغير ع4 = صفر ويعني ذلك أن النشاط د نشاطاً غير حرجاً
فالمتغير ع4 قد أضيف إلى القيد الرابع، والقيد الرابع يخص النشاط د). وعلى ذلك فإن الأنشطة الحرجة هي أ، حـ وهذا يتطابق مع الحل بالطريقة العادية أيضاً.
3- يمكن استخدام البيانات الواردة في الجدول في تحديد مقدار الفائض الخاص بكل نشاط، وهو الفائض الحر، فالقيم ع1 ، ع2 ، ع3 ، ع4 تعني مقدار الفائض الحر للأنشطة أ ، ب ، جـ ، د على التوالي. وحيث أن ع1 ، ع2 ، ع3 متغيرات غير أساسية لا تظهر في الحل فإن قيمها تساوي صفر. ويعني ذلك أن وقت الفائض الحر للأنشطة أ ، ب ، جـ تساوي الصفر. أما القيمة الموجبة ع4 = 2 فإنها تعني أن مقدار الفائض الحر للنشاط يساوي 2 أسبوع. ويرجع ذلك كما ذكرنا إلى أن ع4 قد أضيفت إلى القيد الرابع وعلى ذلك فهي تخص النشاط د.
ويهمنا هنا أيضاً الإشارة إلى أن هذه المشكلة يمكن حلها مباشرة عن طريق الصياغة الثنائية والتي تمتاز بقلة عدد القيود. كما أنها تعطي نتائج مباشرة يمكن منها معرفة الأنشطة الحرجة وغير الحرجة. كذلك تعطي مباشرة أطول مسار علي الشبكة.
وحتى يمكننا القيام بذلك نبدأ بصياغة نفس المشكلة في شكل الثنائية على النحو التالي:
عظم
ح = 3 ص1 + 4ص2 + 5 ص3 + 2 ص4 + صفر ك1 + صفر ك2 + صفر ك3
القيود
ص1 + صفر ص2 - ص3 + صفر ص4 + ك1 + صفر ك2 + صفر ك3 = صفر
صفر ص1 + ص2 + صفر ص3 - ص4 + صفر ك1 + ك2 + صفر ك3 = صفر
صفر ص1 + صفر ص2 + ص3 + س4 + صفر ك1 + صفر ك2 + ك3 = 1
ويكون جدول الحل المبدئي هو:
ح | 3 | 4 | 5 | 2 | صفر | صفر | صفر | ||
ح الوحدة |
المتغيرات الأساسية |
قيم المتغيرات الأساسية |
ص1 | ص2 | ص3 | ص4 | ك1 | ك2 | ك3 |
صفر | ك1 | صفر | 1 | صفر | -1 | صفر | 1 | صفر | صفر |
صفر | ك2 | صفر | صفر | 1 | صفر | -1 | صفر | 1 | صفر |
صفر | ك3 | 1 | صفر | صفر | ( 1 ) | 1 | صفر | صفر | 1 |
صفر | صفر | صفر | صفر | صفر | صفر | صفر | صفر | ||
3 | 4 | 5 | 2 | صفر | صفر | صفر |
أما الجدول الثاني فهو:
ح | 3 | 4 | 5 | 2 | صفر | صفر | صفر | ||
ح الوحدة |
المتغيرات الأساسية |
قيم المتغيرات الأساسية |
ص1 | ص2 | ص3 | ص4 | ك1 | ك2 | ك3 |
صفر | ك1 | 1 | 1 | صفر | صفر | 1 | 1 | صفر | 1 |
صفر | ك2 | صفر | صفر | ( 1 ) | صفر | -1 | صفر | 1 | صفر |
5 | ص3 | 1 | صفر | صفر | 1 | 1 | صفر | صفر | 1 |
صفر | صفر | صفر | 5 | 5 | صفر | صفر | 5 | ||
3 | 4 | صفر | -3 | صفر | صفر | -5 |
والجدول التالي هو:
ح | 3 | 4 | 5 | 2 | صفر | صفر | صفر | ||
ح الوحدة |
المتغيرات الأساسية |
قيم المتغيرات الأساسية |
ص1 | ص2 | ص3 | ص4 | ك1 | ك2 | ك3 |
صفر | ك1 | 1 | ( 1 ) | صفر | صفر | 1 | 1 | صفر | 1 |
4 | ص2 | صفر | صفر | 1 | صفر | -1 | صفر | 1 | صفر |
5 | ص3 | 1 | صفر | صفر | 1 | 1 | صفر | صفر | 1 |
5 | صفر | 4 | 5 | 1 | صفر | 4 | 5 | ||
3 | صفر | صفر | 1 | صفر | -4 | -5 |
أما الجدول الأخير لمشكلة الصيغة الثنائية فهو:
ح | 3 | 4 | 5 | 2 | صفر | صفر | صفر | ||
ح الوحدة |
المتغيرات الأساسية |
قيم المتغيرات الأساسية |
ص1 | ص2 | ص3 | ص4 | ك1 | ك2 | ك3 |
3 | ص1 | 1 | 1 | صفر | صفر | 1 | 1 | صفر | 1 |
4 | ص2 | صفر | صفر | 1 | صفر | -1 | صفر | 1 | صفر |
5 | ص3 | 1 | صفر | صفر | 1 | 1 | صفر | صفر | 1 |
8 | 3 | 4 | 5 | 4 | 3 | 4 | 8 | ||
صفر | صفر | صفر | -2 | -3 | -4 | -8 |
ويتضح من هذا الجدول أن الحل الحالي هو الحل الأمثل. ويمكن استخدام هذا الحل في التعرف على ما يلي:
1- أطول مسار على الشبكة طوله 8 كما يتضح ذلك في الصف قبل الأخير.
2- أن قيمة المتغيرات ص1 ، ص2 ، ص3 هي بالتمام أسعار الظل التي توصلنا إليها للمتغيرات ع1 ، ع2 ، ع3 في حل المشكلة الأصلية للسمبلكس.
ولذلك فإن هذا الجدول يوضح أن سعر الظل للقيد الأول الأصلي = صفر ويعني ذلك أن النشاط أ نشاطاً حرجاً. وكذلك الحال بالنسبة للنشاط جـ.
كذلك فإن سعر الظل للقيد الثاني في الصياغة الأصلية هو صفر وسعر الظل للقيد الرابع في الصياغة الأصلية = ص4 = صفر وعلى ذلك فإن الأنشطة ب ، د أنشطة غير حرجة.
3- القيم الخاصة بالمتغيرات الغير أساسية الواردة في الصف الأخير في جدول الحل النهائي لمشكلة الثنائية يمكن منها معرفة القيم الخاصة بالمتغيرات الأصلية الأساسية. ويكون ذلك عن طريق ضربها في (-). وعلى ذلك فإن قيم المتغيرات الأصلية و1، و2، و3 هي 3 ، 4 ، 8 على التوالي. كذلك فإن المتغير الغير أساسي في مشكلة الثنائية ص4 يعطي قيمة المتغير الأصلي الأساسي ع4 =3.
وهكذا فسواءً عن طريق حل مشكلة البرمجة الخطية الأصلية أو مشكلة الثنائية فإنه يمكننا الوصول إلى نفس النتائج التي توصلنا إليها عن طريق الأسلوب التقليدي للمسار الحرج CPM.
المرجع:
كتاب : إدارة وجدولة المشاريع، خطوات تخطيط وتنظيم وجدولة مراحل تنفيذ المشروع وكيفية الرقابة عليها، من تأليف د. محمد توفيق ماضي، من إصدار الدار الجامعية - الإسكندرية- الطبعة الثانية لعام 2014م.