الرياضيات تتغلب على طوابير الانتظار الطويلة
الرياضيات >>>> الرياضيات
وبالحديث على مستو تجريدي أكثر، إن مشكلة الانتظار في رتل أو طابور قد واجهتنا أيضاً في النظم الحاسوبية و أنظمة الاتصالات، فمثلاً كل رسالة الكترونية ( إيميل) نقوم بإرسالها يتم تقسيمها إلى عدد من الحزم ( packets)، وكل حزمة يتم إرسالها إلى الوجهة المطلوبة من خلال أفضل طريق متوفر لتجنب الأرتال (الطوابير) المتشكلة من حزم أخرى على الشبكة.
بالتالي تلعب الأرتال دوراً هاماً في مختلف نواحي حياتنا و من الجدير بالاهتمام أن نمضي وقتاً أطول في فهم ديناميكيتها، ولنتمكن من الإجابة على أسئلة مثل:
- " كم موظف نحتاج لتوفير خدمة زبائن جيدة في البنك؟ "
- أو "وسطياً، كم من الوقت ستنتظر حتى يقوم فريق الدعم التقني بخدمتك؟ "
إن الهدف من مقالنا هو أن نقدم لكم مقدمة جيدة عن نظرية الأرتال، وبعض التوابع التي توفرها Mathimatica 9
لمن لم يسمع منكم عن برنامج Mathimatica، هو عبارة عن حزمة برمجية تعتبر مثالية من أجل القيام بحسابات لفكرة علمية ما، سواء كنا نريد أن نحصل على تصور لمفهوم ما، أو نريد تمثيل بياني لفكرة جديدة في بحث ما، و يعتمد Mathimatica على الرياضيات الرمزية ، وهو يستخدم في مختلف مجالات العلوم والرياضيات والهندسة.
ظهرت نظرية الأرتال بدايةً في البحث الذي قام به العالم A. K. Erlang، بينما كان يعمل في شركة Copenhagen الهاتفية، كان Erlang مهتماً بتحديد كم دارة و كم مشغل لوحة مفاتيح نحن بحاجة لنستطيع أن نقدم خدمة هاتفية مقبولة؟، و أسفرت هذه الدراسة عن نتائج رائعة نشرها في بحثه "نظرية الاحتمالات و المحادثات الهاتفية" و التي نشرت عام 1909، أثبت فيها Erlang أن تلك الأرتال يمكن نمذجتها باستخدام تابع بواسون (Poisson) وهذا ما سهل علينا تتبع المشكلة رياضياً.
وقد أحرز المهندس وعالم الكمبيوتر الأمريكي Leonard Kleinrock (1934) تقدماً في هذا المجال حيث استخدم نظرية الأرتال ليطور إطار عمل رياضي لشبكات تحويل حزم البيانات، وهي التقنية الأساسية في عمل الانترنيت. وقد استمرت نظرية الأرتال لتكون موضوعاً بحثياً هاماً و قد تم تطبيقها في العديد من المجالات مثل هندسة المرور، و إدارة غرفة الطوارئ في المشفى.
في عام 1953، اقترح عالم الرياضيات والاحصاء الانكليزي D. G. Kendall توصيفاً رياضياً مقنعاً للأرتال، وبحسب توصيفه فإن الرتل الذي يملك وصول بتوزيع زمني A، وخدمة بتوزيع زمني B و مخدّمات (servers)C يطلق عليه رتل A/B/C. وهكذا فإن رتل مخدّم واحد حيث يكون وقت الوصول و الخدمة تابع لتوزيع أسي يطلق عليه رتل M/M/1 (حيث M تدل على خاصية "ذاكرة أقل" للتوزيع الأسي).
وباستخدام Mathimatica 9 فإن الرتل M/M/1 بمعدل وصول يساوي 3 زبائن في الدقيقة و معدل خدمة يساوي 5 زبائن في الدقيقة، يمكن تعريفه باستخدام التابع QueueingProcess كالتالي:
Image: https://www.syr-res.com/
ولمحاكاة هذا الطابور لعشر دقائق، نستخدم RandomFunction:
Image: https://www.syr-res.com/
وهذا المخطط يمثل المحاكاة السابقة لعدد من الزبائن لمدة 10 دقائق:
Image: https://www.syr-res.com/
لاحظ أن عدد الزبائن الذين ينتظرون في المخطط السابق لا يرتفع كثيراً، وذلك لأن معدل الخدمة يفوق معدل الوصول، وإذا اعتبرنا الآن أن الرتل M/M/1 الذي يكون فيه معدل الوصول (5 زبائن في الدقيقة) أكبر من معدل الخدمة (زبونين في الدقيقة). كما سنرى في المخطط التالي فإن عدد الزبائن المنتظرين سوف ينمو دون حدود مع زيادة وقت المحاكاة للنظام:
Image: https://www.syr-res.com/
إن المثال السابق سيقودنا للاستنتاج التالي:
لو كان معدل الوصول في رتل M/M/1 يساوي λ و معدل الخدمة يساوي μ، يمكننا أن نصل إلى حالة مستقرة إن كانت λ أصغر من μ، وهذا ما نريده ! و بتحقق هذا الشرط يمكننا حساب بعض مقاييس الأداء الرئيسية لرتل الانتظار.
هنالك مقياسي أداء مهمين وهما وسطي عدد الزبناء في النظام وليكن يساوي (L)، و وسطي الوقت الذي قضاه الزبون منتظراً في النظام وليكن يساوي (W)، ونجد أنه يوجد علاقة ملحوظة بين L و W والتي لاحظها عالم بحوث العمليات الأمريكي John Little عام 1961.
إن قانون العالِم ليتل يطبق بشكل واسع في نظرية الأرتال وهو ينص على أن:
L= λ W
ويمكن تحقيق هذه العلاقة باستخدام تابع QueueProperties كالتالي:
Image: https://www.syr-res.com/
تؤمن نظرية الرتل (الطابور) الأساس لإدارة مراكز الاتصالات بشكل فعال حيث تكون غالبية تكاليف التشغيل لهذه المراكز مرتبطة بالموظفين لذلك يكون إحضار العدد المناسب من الموظفين أمر حساس و ذلك لتأثيره على الخدمة والتكاليف.
لنتخيل أن مركز اتصالات ما يتلقى 130 مكالمة في الساعة و 20 موظف يعمل على تلقي هذه المكالمات، ولنفترض أن الموظف يستغرق 6.8 دقائق وسطياً ليجيب على مكالمة ما، إن احتمال أن ينتظر المتصل لأن كل الموظفين مشغولين بالرد على المكالمات يعطى بمعادلة C للعالم Erlang، على سبيل المثال التابع ErlangC في Mathimatica 9 يُعلِمنا أنه من المحتمل أن ينتظر المتصل تقريباً 0.14، وهذا يعني أنه سيتم الاستجابة إلى 86% من المتصلين بشكل فوري ولن يكونوا بحاجة للانتظار.
Image: https://www.syr-res.com/
كما سنرى الآن إن معادلة C تحوي تمثيلاً غير مكتمل لتابع Gamma وبالتالي يمكننا أن نحدد مستوى الدقة الذي نريده في الحسابات في Mathematica.
Image: https://www.syr-res.com/
وأخيراً، سيكون مدير مركز الاتصالات مهتماً بمعرفة عدد خطوط الهاتف المطلوبة التي ستضمن مستوى مقبول من التأخير احتمالياً، ويمكننا أن ننجز ذلك ببناء آلة حاسبة باستخدام dynamic capabilities في Mathematica، كما سنرى بعد قليل.
إن الأرتال التي تواجهنا في الحياة الواقعية تكون غالباً جزءاً من سلسلة أو شبكة أرتال، على سبيل المثال عندما يصل المسافرون إلى المطار، سيتوجب عليهم أن يمروا من خلال شبكة من الأرتال المعقدة كأرتال لفحص الأمتعة، و استقلال الرحلات إلى الوجهات المختلفة، إذاً دراسة شبكات الأرتال والتي سنتحدث عنها الآن ذات أهمية كبيرة في العديد من التطبيقات.
لشبكات الأرتال نوعين أساسيين هما الشبكات المفتوحة والشبكات المغلقة، في الشبكات المفتوحة يستطيع الزبون أن يدخل أو يخرج من النظام عند عقدة أو أكثر. ظهرت الشبكات المفتوحة على يد J. R. Jackson حيث أثبت أنه ضمن شروط معقولة، يمكن أن تعتبر هذه الشبكة على أنها "منتج" من أرتال M/M/C.
ويسمح لنا هذا التبسيط بإعادة استخدام المعادلات السابقة من أجل الأرتال المفردة.
ويمكننا تطبيق ما سبق على شبكات الأرتال المغلقة و التي تتمتع بخاصية إضافية وهي أن عدد الزبائن في النظام ثابت، حيث لا تملك أي عقدة في النظام قيم وصول أو مغادرة.
وكمثال عن الشبكات المغلقة، لنتصور جامعة مثلاً، حيث نريد توزيع عدد كبير ولكنه ثابت من الشهادات في الـ Mathimatica على الطلاب في مختلف الاختصاصات من خلال المخدم المركزي MathLM، إن تحليل الأداء لشبكات الأرتال المغلقة يعتمد على تقنيات تم تطويرها من قِبَل W. G. Gordon و G. F. Newell، J. P. Buzen
(المعروف عنه أنه درّس Bill Gates مادة نظم التشغيل في أحد الفصول في جامعة هارفرد)، وآخرون ساهموا بتطويرها أيضاً.
وكمثال على شبكات الأرتال، لنتخيل معاً حالة ما، ولتكن أن 10 طلبات تحوم في نظام مخدم مركزي مكون من ثلاثة عقد. يرسل المخدم المركزي (العقدة 1) طلبات مع احتمالات 0.3 و 0.7 إلى العقدتين المتبقيتين، إن معدل الخدمة في العقد الثلاثة هو 1 ، 0.5، 1.25 على الترتيب، وتكمن المشكلة بإيجاد الجهاز الذي تكمن نقطة الاختناق عنده.
Image: https://www.syr-res.com/
يمكننا نمذجة شبكة المخدم الرئيسي باستخدام تابع QueueingNetworkProcess الموجود في Mathematica 9 كما تشاهدون في الأسفل.
إن الدخل الأول للتابع QueueingNetworkProcess هو الشعاع الصفري لأن الشبكة من النوع المغلق ولا يوجد لدينا أي دخل لأي عقدة. الدخل الثاني لهذا التابع هو مصفوفة من احتمالات التوجيه، على سبيل المثال العنصر ذو القيمة 0.3 من المصفوفة يدل على أن الطلب سوف يتوجه من العقدة 1 إلى العقدة 2 بعد خروجه من العقدة 1. أما الدخل الثالث فهو شعاع من معدلات الخدمة التي أعطيت في بداية المسألة. والدخل الرابع يحدد فيما إن كان هناك مُخدِّم واحد فقط عند كل عقدة، وأخيراً الدخل الخامس وهو يمثل عدد الطلبات التي تحوم في نظامنا، وهي هنا 10 كما ذكرنا في بداية المسألة.
Image: https://www.syr-res.com/
كما سنرى في التمثيل في الأسفل، إن العقدة الأولى هي التي ستشكل نقطة اختناق لأن حركة المرور تتركز فيها لقسم كبير من الوقت.
Image: https://www.syr-res.com/
يمكننا التخلص من مشكلة تشكل نقطة الاختناق من خلال تخصيص موارد أكثر وهذا سيرفع من معدل الخدمة عند العقدة الأولى. يمكننا تصور هذا التحسن من خلال تابع Manipulate بعد أن نسمح لمعدل الخدمة بأن يكون الرمز µ كما يلي:
Image: https://www.syr-res.com/
تعتبر نظرية الأرتال مثالاً رائعاً عن تطبيق الرياضيات في مجال الحاسوب و العصر المعلوماتي الذي نعيش فيه، و تؤكد لنا مبادئها البسيطة و استخدامها الواسع أنها لا تزال مجالاً مهماً للدراسة في السنوات القادمة.
نحن نأمل أننا قد حفزناكم للخوض أكثر في هذا الموضوع الرائع من خلال هذه المقدمة البسيطة عنه.