Tariq Alturkestani | طارق التركستاني
Tariq Alturkestani | طارق التركستاني

@t_alturkestani

15 تغريدة 6 قراءة Apr 22, 2023
عيدكم مبارك،
كتقني ورئيس لشركة توصيل للميل الأخير @getsaee يسألني البعض عن المجال وأحببت أن أخصص هذه السلسلة من التغريدات لشرح احدى اهم المهام و هي من اختصاص موزع الشحنات وان اربطها ببعض مفاهيم علوم الحاسب الآلي.
قد تكون هذه السلسلة مفيدة ل:
- المهتمين في لوجستيات الميل الأخير
- المهتمين في التجارة الالكترونية
- الباحث عن أمثلة استخدامات مفاهيم علوم الحاسب الالي في الحياة العملية
- أو من تأخرت عليه شحنته أحب ان يفهم جزء من أجزاء المشكلة
في علوم الحاسب الالي، احدى طريق تسريع برامج المحاكاة وتحليل البيانات وحل المعادلات هو تقسيم العمل الى "مهام" صغيرة وتوزيعها على موارد حوسبة مستقلة ومرتبة بشكل متوازي وتسمى هذه الطريقة باسم "حقيبة المهام" او Bag of Tasks. هذه المهام قد تكون مرتبطة ببعض او مفصولة بشكل كامل.
مثال للمهام المفصولة عن بعض، إذا كان لديك ٤ ملفات اكسل متساوية الحجم (ملف١، ملف٢، ملف٣، ملف٤) في ٤ أجهزة حاسب متساوية القوة وكنت تبحث عن معلومة تستطيع ان تقوم بالبحث عن المعلومة في كل الملفات في حاسب واحد بطريقة متتالية.
او ان تجعل حاسب ١ يبحث عن المعلومة في ملف ١ وحاسب ٢ يبحث عن المعلومة في ملف ٢ وهكذا.. وبشكل متوازي. الفرق بين الطريقتين او متوالي سيستغرق ٤ وحدات زمنية والمتوازي وحدة زمنية فقط. لاحظ السرعة.
مشكلة توصيل الشحنات شبيهة جدا "بحقيبة المهام"، فالمهمة هنا هي توصيل الشحنة والمعالج هو مندوب التوصيل. تبدأ الرحلة في مستودعات شركات الميل الأخير بفرز المهام (الشحنات) وثم توزيع المهام على المندوبين المتواجدين وتنتهي بالتوصيل.
موزع المهام بكل وتأكيد سيختلف عليه عدد الشحنات اليومية من يوم لأخر وكذلك أماكن توزيعها، فعليه وبشكل يومي تحليل عناوين الشحنات وربطها بنطاق جغرافي للتوزيع. وعليه أيضا اختيار المندوب المناسب الذي دائما ما يكون نطاق عمله الجغرافي محدد مسبقا ومدربا على مبانيها وشوارعها.
فلك ان تتخيل ماذا يحدث إذا في يوم من الأيام كانت مهام اليوم مركزة في شمال مدينة ما او جنوبها أو إذا تعطل مجموعة من المندوبين لسبب ما.
السؤال الان، كيف يمكننا نحل جميع المهام (نوصل جميع الشحنات) في أسرع وقت ممكن. وهنا سأستعير بمفهومين من علوم الحاسب، ١- قابلية التوسع Scalability، ٢- التسريع Speed up. وللأول نوعان وهما التوسع القوي والتوسع الضعيف.
التوسع القوي يثبت حجم المهام (توصيل ألف شحنة في اليوم كمثال) وينظر الى العلاقة بين الفترة الزمنية للانتهاء من المهام وعدد وحدات المعالجة (المندوبين). في حين ان التوسع الضعيف يثبت عدد المهام لكل معالج (المندوب) ويهتم بالعلاقة بين الفترة الزمنية لحل كل المهام وعدد وحدات المعالجة.
وفي في مفهوم التوسع ونظرا لان توصيل الشحنة الواحدة ليس لها علاقة بالشحنات الأخرى فالحل البديهي هو ان نعيد لكل شحنة مندوب واحد أي إذا أردنا توصيل ألف شحنة يجب ان يكون لدينا ألف مندوب وهذا مكلف للغاية.
وفي المفهوم الثاني، ينظر الى التسريع عن طريق دراسة كفاءة تقسيم المهام على عدد المعالجات (المندوبين). فليست كل الشحنات قابلة للتقسيم وليس كل المندوبين سواسية.
ولكن هنا فرص للتسريع تكون عن استطاعة توصيل أكثر من شحنة في وقت واحد، كمثال شحنتين صادفتا ان يكونا لعميل واحد في نفس اليوم أو عشر شحنات في مبنى تجاري واحد فيه موظف استقبال او غرفة بريد. Super-linear speedup
ولهذا فأن مهمة موزع الشحنات ليست بالسهلة فعليه القيام بمهمة توزيع الشحنات على المندوبين المتوفرين لديه بشكل يوميا ومنطقي، فاذا كانت لديه ألف شحنة للتوزيع فهو بالتأكيد ليس لديه ألف مندوب ولا مندوب واحد في استطاعته أن يوصل ألف شحنة بشكل فردي وبينها الكثير من الطرق لتقسيم المهام.
ختاما أتمنى أن أكون وفقت في شرحي كل عام وأنتم بخير.

جاري تحميل الاقتراحات...