آمار وبلاگ میگه تا حالا چند نفر که دنبال مسئله مسیریابی خودرو یا VRP یا Vehicle Routing Problem میگشتن اومدن به این وبلاگ. بنابراین بر آن شدیم تا کمی راجع به این مسئله بنویسیم.
اصولا این مسئله رو میشه اینطوری توضیح داد: فرض کنید که یک انبار مرکزی داشته باشیم که اجناسی رو اونجا نگهداری میکنیم. طبعا دیوونه نیستیم و قصدمون فروش این محصولاته. بنابراین یک سری مشتری هم داریم که هر کدوم محل جغرافیایی خاصی دارن. فرض کنید تعداد این مشتری ها m تا باشه. در ضمن از در خونه هر مشتری به در خونه هر مشتری دیگه هم یه راه وجود داره. باز هم در ضمن از انبار به در خونه هر مشتری هم یه مسیر وجود داره. بنابراین تو رفت و آمد دنبال راه نمیگردیم. اما خوب هر مسیری رو که انتخاب کنیم، طول اون مسیر از قبل مشخصه. باز فرض کنید یه سری ماشین هم داریم که این اجناس رو به در خونه مشتری ها میبرن. ماشین ها هم خوب بالطبع هر کدوم یه ظرفیتی دارن.
خوب تا حالا ساده ترین شکل فرضیات مسئله رو مطرح کردیم. اما هدف های مختلفی برای حل این مسئله میشه عنوان کرد. اصولا به این اهداف تابع هدف میگیم. یه تعداد از توابع هدف رو واستون لیست میکنم. اجناس رو به مشتری ها برسونیم به نحوی که:
1. طول کل مسیری که همه ماشین ها طی میکنن مینیمم بشه.
2. تعداد ماشین های لازم برای حمل و نقل کالاها مینیمم بشه.
3. ماکزیمم مسیری که یک ماشین طی میکنه رو پیدا کنیم، و این ماکزیمم مسیر رو مینیمم کنیم. اصولا به اینجور توابع هدف میگن توابع هدف مینیماکس.
4. سعی کنیم که هر ماشین به تعداد مساوی مشتری سرویس بده (این مورد تو مواردی مثل آژانس خیلی کاربرد داره).
5. سعی کنیم همه ماشین ها طول مسیر تقریبا یکسانی رو طی کنن. (این مورد هم تو مواردی مثل آژانس خیلی کاربرد داره).
6. هر ترکیبی از توابع هدف بالا که در اینصورت مسئله چند هدفه یا Multi-Objective میشه و الگوریتم های خاص خودشو داره.
من مطمئنم هر کدوم شما یکمی فکر کنین توابع هدف متنوعی به ذهنتون میرسه. اگر حوصله داشتین تو کامنت ها بنویسین که منم یه چیزی یاد بگیرم.
حالا با توجه به این چیزایی که گفتیم و فرضیاتی که مطرح شد، میشه مسئله رو به دنیای واقعی نزدیک تر کرد. یعنی به عبارتی فرض های محدودکننده مسئله رو میشه آزادسازی کرد. خیلی از انواع مسئله مسیریابی خودرو هم از همین آزادسازی ها به دست میان. من بازم یه سری از این آزادسازی ها رو اینجا مینویسم:
1. تعداد ماشین ها از قبل مشخص نباشه و به صورت یه متغیر تصمیم در نظر گرفته بشه.
2. بیشتر از یه انبار مرکزی داشته باشیم. در اینصورت به مسئله میگن مسئله مسیریابی خودرو چندگانه یا Multiple Depot Vehicle Routing Problem.
3. اصلا از قبل معلوم نباشه چند تا انبار داریم ولی محل قرارگیری انبارهای احتمالی از قبل مشخص باشه و بخوایم در مورد تعدادشون تصمیم گیری کنیم.
4. اصلا از قبل معلوم نباشه چند تا انبار داریم و محل قرارگیری انبارها هم از قبل مشخص نباشه و بخوایم در محل و تعدادشون موردشون تصمیم گیری کنیم.
5. چند تا انبار داریم و میخوایم هر مشتری رو حتما به یکی از انبارها و قبل از حل مسئله تخصیص بدیم.
6. از قبل معلوم نباشه چند تا انبار داریم ولی محل قرارگیری انبارهای احتمالی از قبل مشخص باشه و بخوایم در مورد تعدادشون تصمیم گیری کنیم و باز هم بخوایم هر مشتری رو حتما به یکی از انبارها و قبل از حل مسئله تخصیص بدیم.
7. از قبل معلوم نباشه چند تا انبار داریم و محل قرارگیری انبارهای احتمالی هم از قبل مشخص نباشه و بخوایم در مورد محل و تعدادشون تصمیم گیری کنیم و باز هم بخوایم هر مشتری رو حتما به یکی از انبارها و قبل از حل مسئله تخصیص بدیم.
8. به جای یک نوع کالا چندین نوع کالا داریم که مشخصاتشون با هم فرق میکنه، اما هر مشتری به یکی از انواع کالاها احتیاج داره (ترکیب این حالت رو با تمامی حالات بالا خودت لطف کن در نظر بگیر؛ مرسی).
9. به جای یک نوع کالا چندین نوع کالا داریم که مشخصاتشون با هم فرق میکنه و هر مشتری ممکنه به چندین نوع کالا احتیاج داشته باشه (بازم ترکیب این حالت رو با تمامی حالات بالا خودت لطف کن در نظر بگیر؛ مرسی).
10. ظرفیت ماشین ها با هم فرق میکنه.
11. هزینه ای که یک ماشین برای طی یک مسیر خاص باید تحمل کنه با هزینه سایر ماشین ها فرق کنه.
12. این امکان وجود داشته باشه که مشتری یه قسمت از نیازشو از یه ماشین تحویل بگیره و قسمت دیگرو از یه تعداد دیگه ماشین.
13. محل جغرافیایی مشتری ها با گذشت زمان تغییر کنه.
14. تعداد مشتری ها با گذشت زمان تغییر کنه.
15. محل و تعداد مشتری ها با گذشت زمان تغییر کنه. (به این سه مورد اخیر مسائل پویا یا Dynamic میگیم)
16. مشخصات ماشین ها با گذشت زمان تغییر کنه. (بازم پویا)
17. نیاز هر مشتری رو باید در یک بازه زمانی خاص از قبل تعیین شده پاسخ داد. به این مسئله میگن Vehicle Routing Problem with Time Window یا VRPTW. (لطف کن بازم ترکیب این حالت رو با حالت های بالا در نظر بگیر)
18. مجبور نباشیم که به همه مشتری ها سرویس بدیم و بتونیم تصمیم بگیریم که نیاز یه سری از مشتری ها رو پاسخ ندیم. (لطف کن بازم ترکیب این حالت رو با حالت های بالا در نظر بگیر)
19. مشخصات مسیرها با گذشت زمان تغییر کنه.
20. و غیره و غیره و غیره.
سخت ترین مسئله ای که تا حالا در این زمینه دیدم این بوده که لزومی نداشته به همه مشتری ها سرویس بده و به هر مشتری باید در یه بازه زمانی خاص سرویس میداده و تعداد مشتری ها در طول زمان تغییر میکردن و مشتری رو باید از یه جایی اول سوار میکرده و بعد یه جای دیگه پیاده میکرده و در این حین حق سرویس دادن به مشتری دیگه رو نداشته. قیافش آشناس نه؟ آره دوست من. در مورد تاکسی تلفنی صحبت میکنیم. اسم مسئله رو طرف گذاشته بود VRPPDTW یا Vehicle Routing Problem with Pickup and Delivery and Time Window. یکمی تو اینترنت بگردی میتونی پیدا کنی این مقاله رو.
این لیست بالا رو میشه تا تقریبا شماره 50 (حداقل) ادامه داد. حوصله داشتی ادامه بده واسه منم بنویس. بنابراین تعداد بسیار بسیار زیادی مسئله داریم که روش حل و خصوصیات ناحیه شدنی هر کدوم با اون یکی فرق داره. تقریبا همه این مسئله ها هم NP-Complete هستن. قول میدم پست بعدی در مورد مسائل NP-Complete باشه اما حالا علی الحساب معنیش اینه که نمیشه این مسئله ها رو راحت حل کرد. بنابراین برای حل هر کدوم میشه هزار تا روش پیشنهاد داد و کارایی هاشون رو با هم مقایسه کرد. خیلی از انواع این مسائل رو تا حالا حتی کسی حل هم نکرده.
همه اون چیزی که بیان شد یعنی این مسئله خوراک مقاله میباشه. دوست عزیزی که میخوای دکترا بخونی و رشته شما تحقیق در عملیات (OR) یا مهندسی صنایعه، به این مسئله فکر کن. شاید جالب باشه. یکی از مواردی که میشه روش کار کرد مثلا تغییر سود دریافتی از مشتری ها ئر طول زمانه. این تغییر میتونه خطی یا غیر خطی باشه که در هر دو صورت دهنت مسواک زده میشه تا بخوای مسئله رو حل کنی (اونایی که رسته های بالا رو خوندن حتما میدونن من چی میگم).
پی نوشت: ببخشید که اینهمه طولانی شد.
پی نوشت 2: قول میدم دیگه هیچ کسی با این جستجو به این وبلاگ وارد نخواهد شد. اینم میزاریم به حساب قوانین مورفی.
پی نوشت 3: یه منبع خوب میتونه کتاب THE VEHICLE ROUTING PROBLEM: LATEST ADVANCES AND NEW CHALLENGES نوشته Sharda و Stefan باشه.
پی نوشت 4: یه منبع خوب دیگه میتونه کتاب The Vehicle Routing Problem نوشته Toth و Vigo باشه.