بهینه سازی ترتیب مقاصد با امکان انتخاب چند مقصد (بیش از یک مقصد)
TSP API (Traveling Salesman Problem)
سرویس فروشنده دورهگرد یا بهینهسازی مسیر، ابزاری قدرتمند برای بهینهسازی عملیات حمل و نقل و تحویل کالا در سازمانها و شرکتهای مختلف است. این سرویس با استفاده از الگوریتمهای پیشرفته بهینهترین مسیر ممکن و ترتیبی که مقاصد باید طی شوند را پردازش نموده و برای شما ارسال میکند.
از جمله کسبوکارهایی که میتوانند از این سرویس بهرهمند شوند:
شرکتهای تاکسی اینترنتی: این شرکتها با استفاده از سرویس فروشنده دورهگرد میتوانند مسیر بهینه برای پیکآپ مسافر و رساندن او به مقصد را به صورت خودکار محاسبه کنند. این امر باعث کاهش زمان سفر و هزینههای سوخت میشود. همچنین این شرکتها میتوانند با بهینهسازی مسیر، تعداد بیشتری سفر را در یک بازه زمانی مشخص انجام دهند.
فروشگاههای آنلاین: فروشگاههای آنلاین بزرگ اغلب دارای انبارهای متعددی برای نگهداری کالا هستند. آنها میتوانند با بهرهگیری از سرویس فروشنده دورهگرد، مسیر بهینه برای تحویل سفارش مشتریان از نزدیکترین انبار را محاسبه کنند. این کار باعث کاهش زمان تحویل سفارش و هزینه حمل و نقل میشود.
شرکتهای لجستیک: شرکتهای لجستیک باید محمولههای متعددی را از انبارها و مراکز تولید بین نقاط مختلف توزیع و منتقل کنند. آنها میتوانند با استفاده از سرویس بهینهسازی مسیر، کمترین فاصله و زمان ممکن را برای حمل محمولهها محاسبه کنند تا هزینههای حمل و نقل را به طور قابل توجهی کاهش دهند.
شرکتهای خدماترسانی: یک شرکت ارائهدهنده خدمات میتواند با استفاده از این سرویس، مسیر بهینه را برای اعزام نیروهای فنی و خدماتی خود به محل مشتری محاسبه کند. به عنوان مثال سازمان ها و یا ارگان هایی مانند شرکت گاز یا برق منطقه ای میتوانند با به کارگیری این سرویس، سرعت رسیدگی به تعمیرات و انجام خدمات را افزایش دهند.
شرکتهای پخش و توزیع: این مجموعه ها نیز از جمله سازمانهایی هستند که میتوانند از مزایای سرویس بهینهسازی مسیر یا فروشنده دورهگرد بهرهمند شوند.این شرکتها معمولاً دارای تعداد زیادی ویزیتور یا نماینده فروش هستند که باید به صورت روزانه به دیدار مشتریان و فروشگاهها بروند. با استفاده از سرویس بهینهسازی مسیر، این شرکتها میتوانند بهترین مسیر ممکن را برای دیدار چندین مشتری توسط هر ویزیتور در یک روز محاسبه کنند.
این کار باعث میشود زمان سفر ویزیتورها کاهش پیدا کند. در نتیجه آنها میتوانند در یک بازه زمانی مشخص، تعداد بیشتری مشتری را ملاقات کنند، همچنین هزینه سوخت و استهلاک خودرو نیز کاهش مییابد، بنابراین استفاده از این سرویس میتواند بهرهوری ویزیتورها را افزایش دهد.
شیوهی فراخوانی:
GET:
https://api.neshan.org/v3/trip?parameters
Headers:
Api-Key: YOUR_API_KEY
پارامتر های وروردی:
- waypoints: مختصات نقاط مورد نظر برای حل مساله فروشنده دوره گرد. این نقاط باید صورت
latitude,longitude
باشند که با کاما (,) از یکدیگر جدا شدهاند. هر نقطه باید با علامت پایپ ( | ) از نقطه دیگر جدا شود. - roundTrip: این پارامتر اختیاری است و مشخص میکند که آیا سفر به نقطه شروع باز میگردد یا خیر. مقدار آن به صورت
true,false
میباشد، پیش فرض آنtrue
است. - sourceIsAnyPoint: این پارامتر اختیاری است و مشخص میکند که آیا مبدا میتواند هر نقطهای
true
باشد، یا باید اولین نقطه باشدfalse
پیش فرض آنtrue
است. - lastIsAnyPoint: این پارامتر اختیاری است و مشخص میکند که آیا مقصد میتواند هر نقطهای
true
باشد، یا باید آخرین نقطه باشدfalse
پیش فرض آنtrue
است.
رمزگذاری آدرس اینترنتی :
بعضی از حروف و کاراکترها نمیتوانند بصورت مستقیم در آدرس قرار بگیرند زیراکه این کاراکترها دارای معانی خاص خود هستند به عنوان مثال کاراکتر (=) برای جداسازی کلید و مقدار آن کلید مورد استفاده قرار میگیرد از این رو در نحو نوشتاری عمومی آدرس های اینترنتی رمزگذاری مطرح شد که این مشکل را به صورت عمومی حل کند .
بعضی از کاراکترهای خاص و معادل رمزگذاری شده آن ها :
معادل رمزگذاری | کاراکتر |
%20 | Space |
%22 | “ |
%23 | # |
%7C | | |
%25 | % |
مستندات و کتابخانه ها :
- مستندات گوگل
- ساخت یک پارامتر موفق UrlEncode
- کتابخانه ها و توابع برای زبان ها (جاوا ، جاوااسکریپت , Php)
فرمت پاسخ:
{
"points": [
{
"name": "محقق امین",
"location": [
35.725682,
51.49544
],
"index": 0
},
{
"name": "فردوسی",
"location": [
35.715012,
51.499415
],
"index": 1
},
{
"name": "توحید",
"location": [
35.751292,
51.538933
],
"index": 2
},
{
"name": "جلیل آباد",
"location": [
35.691695,
51.391455
],
"index": 3
},
{
"name": "پیامبر",
"location": [
35.737673,
51.321258
],
"index": 4
},
{
"name": "مجموعه ورزشی آزادی",
"location": [
35.729842,
51.265652
],
"index": 5
}
]
}
اجزای این پاسخ بصورت زیر میباشند:
- points: لیست نقاط ورودی که به ترتیب پاسخ مساله مرتب شدهاند. هر نقطه شامل اطلاعات زیر است:
- name: نام نزدیکترین معبر به آن نقطه
- location: مختصات نقطه به صورت
latitude,longitude
- index: نشان دهنده ترتیب نقاطی است که در ورودی سرویس ارسال شده است.
با فراخوانی این API در صورت وجود اشکال ممکن است، خطاهای زیر در خروجی برای شما ارسال گردند. شناسایی و مدیریت این خطاها میتواند به از بروز خطاهای احتمالی در اپلیکیشن شما جلوگیری کند. این خطاها عبارتند از:
470 : CoordinateParseError
چنانچه مختصات جغرافیایی ارسالی معتبر نباشد رخ خواهد داد.
480 : KeyNotFound
در صورتی که در فراخوانی وبسرویس از یک Api Key نامتعبر استفاده کنید یا Api Key خود را در header ارسال نکنید رخ خواهد داد.
481 : LimitExceeded
در صورتی که تعداد فراخوانی وبسرویسها از میزان مجازی که برای شما تعیین شدهاست عبور کند رخ خواهد داد.
482 : RateExceeded
چنانچه تعداد درخواست وبسرویس در دقیقه از حد مجاز عبور کند رخ خواهد داد.
483 : ApiKeyTypeError
کلید دسترسی استفاده شده با سرویس فراخوانی شده همخوانی ندارد. بایستی از کلید دسترسی مرتبط با سرویس موردنظر استفاده کنید.
484 : ApiWhiteListError
با توجه به اسکوپ تعریفشده برای این کلید، شما مجاز به استفاده نیستید.
485 : ApiServiceListError
سرویس فراخوانی شده با سرویسهای تعریفشده برای این کلید دسترسی همخوانی ندارد.
500 : GenericError
در صورت بروز خطایی غیر از خطاهای بالا این خطا گزارش میشود.
بازتاب: شروع با نقشه وب – پلتفرم نقشه نشان