Hazem Hamza
Hazem Hamza

@HazemHamza18

15 تغريدة 3 قراءة Jun 03, 2022
#ثريد_لوجيستي
في هذا الثريد سنتحدث بصورة تقنية عن العملية الإدارية وأحد أفضل خوارزميات الميل الأخير وهي "التجميع أولا والتوجيه ثانيا" مع التطبيق في البايثون 🚚
ثريد ممتع ودسم
تابعونا ⬇️
أنشطة النقل وحدها تستحوذ على حوالي 50% من تكاليف سلاسل الإمداد كلها وهي أعقد منظومة متواجدة في سلاسل الإمداد من ناحية الإدارة والتخطيط والتشغيل والتصميم
في نموذج صممته بفضل الله لسلاسل الإمداد كلها من مصانع ومخازن استحوذ النقل على 62% من إجمالي التكاليف
ومن أجزاء النقل المعقدة جدا جدولة المركبات وتوصيل الميل الأخير حيث تستحوذ وحدها على ما يقرب من 40% من تكاليف سلاسل الإمداد كما في أمازون .... فضلا عن التكاليف فالميل الأخير مسؤل عن مستوى الخدمة المقدم للعملاء للوصول كالتوصيل في الوقت المناسب والذي هو من أساسيات أي أنشطة ميل أخير
قد تحدثت في ثريد سابق عن كيفية تصميم عملية جدولة المركبات باستخدام الإكسيل وعن نشأة خوارزمية الـMILP الشهيرة المستخدمة للوصول لحل مثالي
رابط الثريد:
هذه المشكلة تنتمي إلى فئة الـLarge Scale Combinatorial Optimization أو التحسين الإندماجي على نطاق واسع وتصنف على أنها صعبة الحل
فحتى بأقوى الموارد الحوسبية قد يأخذ الحل المثالي ساعات وأيام ... مما يجعلها غير عملية إذا لم يتم تحديد Time Limit
لذلك نستخدم خوارزميات أخري
هناك خوارزميات كثيرة جدا مستخدمة في عمليات VRP والـTSP
اخترت في هذا الثريد التركيز على واحدة وهي "التجميع أولا والتوجيه ثانيا" وهي من أفضل الخوارزميات وأكثرها كفاءة وفعالية من حيث الوقت وجودة الحل
في أرض الواقع قد يكون عندك مئات العملاء يطلبون التوصيل ويتطلب الاستجابة بحل سريع وفعال ويقلل التكاليف
المبدأ يقوم على تقسيم العملاء لمجموعات بناء على التباعد الجغرافي فقد يتم استخدام خوارزمية مثل DBSCAN واختصار لـDensity Based Spatial Clustering Application with Noise للتجميع
ثم عمل Route أو مسار لكل Cluster باستخدام مركبة .... هذه الطريقة فعالة جدا وجودة الحل ممتازة ووقت التنفيذ يكون لحظي وهو ما يعطيها ميزة قوية جدا في الواقع العملي
جرب بنفسك لتطبيق الخوارزمية في البايثون لنوع واحد وهو VRP with Homogeneous Fixed Fleet
v= int(fleet_size)
clt = SpectralClustering(n_clusters=int(fleet_size), random_state=42,
affinity='nearest_neighbors', n_jobs=-1)
clt.fit_predict(dis)
ثم استخدم خوازمية الجار الأقرب لعمل مسارات
def get_nearest_neighbour(unvisited):
current = 'Depot' # starting point
NN_path = []
while True:
NN_path.append(current)
unvisited.remove(current)
if not unvisited:
break
استكمال الخوارزمية وانتبه للـIndentation كما في الصورة الماصية
current = dist.loc[unvisited, current].idxmin()
NN_path.append('Depot')
return NN_path
برنامج التوجيه الخاص بنا يقوم بحل المشكلة ببساطة شديدة مع أنظمة عرض المعلومات الجغرافية والتحليل المكاني بدون الحاجة للبرمجة
والذي قد يعتبر وحده مصدر الميزة التنافسية للشركة
الدورة القادمة التي تتحدث عن النقل بما فيها الميل الأخير بتفصيل وشرح عملي هي الـCLTD
تبدأ يوم الاثنين إن شاء الله
باللغة العربية
بادر بحجز مقعدك
للحجز والتفاصيل عبر واتس آب:
wa.me
نهاية الثريد 🔚
طبتم وطابت أوقاتكم 💐
تم بحمد الله
@rattibha فضلا

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