مستندات API بهینه‌سازی مسیردهی (TSP)

تعریف سرویس TSP

API بهینه‌سازی مسیردهی TSP مپ برای حل مسئله فروشنده دوره‌گرد استفاده می‌شود. در این سرویس، الگوریتم حل مسئله به روش اکتشافی حریصانه (greedy heuristic) است. شرح مسئله فروشنده دوره‌گرد بدین شکل است که تعدادی شهر داریم و هزینه رفتن مستقیم از یکی به دیگری را می‌دانیم. مطلوب است کم‌هزینه‌ترین مسیری پیدا شود که از یک شهر شروع شود، از تمامی شهرها دقیقاً یک‌بار عبور کند و به شهر شروع بازگردد.

نکته 🚧
مسیر بازگشتی ممکن است سریع‌ترین مسیر ممکن نباشد.

نکته 🚧
الگوریتم TSP از نوع NP-hard است و همه مسیرهای بازگشتی در آن به‌صورت تقریبی محاسبه می‌شوند.

نکته 🚧
تمامی نقاط باید به یکدیگر متصل باشند؛ به این معنی که راه ارتباطی میان نقاط روی زمین وجود داشته باشد.

اصطلاحات کاربردی

ردیفنام اصطلاحشرح اصطلاح
۱Geohashفرمتی برای نگهداری داده‌های جغرافیایی به‌صورت فشرده
۲Leafletیک کتابخانه متن‌باز JavaScript که به‌عنوان ابزاری رایج برای ساخت و نمایش نقشه به‌صورت تحت وب استفاده می‌شود.
۳Front endراهکاری برای نمایش اطلاعات از طریق یک رابط گرافیکی جهت مشاهده و تعامل کاربر با استفاده از HTML، CSS یا JavaScript
۴Zoom Levelاندازه بزرگ‌نمایی نقشه
۵Lat (Latitude)عرض جغرافیایی
۶Lon (Longitude)طول جغرافیایی

ساختار استفاده و گزینه‌های موجود در سرویس

API بهینه‌سازی مسیردهی مپ به‌صورت Restful توسعه داده شده است و انعطاف‌پذیری بالایی برای انواع روش‌های پیاده‌سازی در محیط‌های مختلف دارد. برای پیاده‌سازی این سرویس لازم است پارامترهای زیر به‌عنوان مقادیر ورودی در اختیار سرویس TSP قرار گیرند.

گزینهمقادیرتوضیحاتنحوه ارسال
x-api-key *API Key معتبرکلید اختصاصی دسترسی به سرویس‌های مپHeader
coordinates *lon,lat;lon,latفهرست مختصات نقاط؛ مختصات با علامت ; از هم جدا می‌شوند.Path
roundtriptrue (پیش‌فرض)، falseمشخص می‌کند امکان بازگشت به اولین نقطه وجود داشته باشد یا خیر.Query
sourceany (پیش‌فرض)، firstاگر مقدار first باشد، اولین نقطه به‌عنوان نقطه شروع در نظر گرفته می‌شود و در غیر این صورت یک نقطه به‌طور تصادفی انتخاب می‌شود.Query
destinationany (پیش‌فرض)، lastاگر مقدار last باشد، آخرین نقطه به‌عنوان نقطه پایان در نظر گرفته می‌شود و در غیر این صورت یک نقطه به‌طور تصادفی انتخاب می‌شود.Query
stepstrue، false (پیش‌فرض)گام‌های هر مسیر را برمی‌گرداند؛ این گزینه به‌صورت پیش‌فرض غیرفعال است.Query
annotationstrue، false (پیش‌فرض)، nodes، distance، duration، datasources، weight، speedداده‌های اضافه‌ای که در هر مسیر بازگشتی می‌توان دریافت کرد. برای توضیحات بیشتر به سرویس مسیریابی مراجعه کنید.Query
geometriespolyline (پیش‌فرض)، polyline6، geojsonفرمت مسیر بازگشتی در پارامتر geometryQuery
overviewsimplified (پیش‌فرض)، full، falseجزئیات مسیر بازگشتی در پارامتر geometryQuery

نکته 🚧
اگر API Key اختصاصی خود را دریافت نکرده‌اید، با ثبت‌نام در پنل مپ و ساخت یک پروژه جدید می‌توانید API Key دریافت کنید.

مقادیر امکان‌پذیر برای حل مسئله در TSP

این سرویس برای گزینه‌های مختلف roundtrip، source و destination مقادیری پیش‌فرض در نظر گرفته است. برای مثال اگر source=first، destination=last و roundtrip=true باشد، الگوریتم توانایی حل مسئله را دارد. اگر source=any، destination=any و roundtrip=false باشد، حل مسئله امکان‌پذیر نیست. همه حالت‌ها در جدول زیر آمده‌اند:

roundtripsourcedestinationامکان
truefirstlastدارد
truefirstanyدارد
trueanylastدارد
trueanyanyدارد
falsefirstlastدارد
falsefirstanyندارد
falseanylastندارد
falseanyanyندارد

عملکرد سرویس

این سرویس با بهینه‌سازی مسیردهی بین نقاط، مسیر بهینه را محاسبه و در اختیار کاربر قرار می‌دهد.

سرویسEndpoint
بهینه‌سازی مسیردهی (TSP)/vrp/tsp/v1/driving/{coordinates}

نمونه درخواست

curl --request GET \
  --url 'https://map.ir/vrp/tsp/v1/driving/51.3890,35.6892;51.4200,35.7000;51.4500,35.7200?roundtrip=true&source=first&geometries=geojson' \
  --header 'x-api-key: YOUR_API_KEY'

خروجی سرویس

  • code: اگر مقدار آن Ok باشد، مسیر به‌درستی پیدا شده است؛ در غیر این صورت خطایی رخ داده است.
  • waypoints: آرایه‌ای از قسمت‌های مسیر که مقادیر زیر را دارد:
    • trips_index: اندیس هر زیرسفر که با اندیس خود سفر هم‌خوانی دارد.
    • waypoint_index: اندیس هر زیرمسیر در سفر.
  • trips: آرایه‌ای از مسیرهایی که پیدا شده است.

خطاهای سرویس

توضیحاتنوع
مسیری برای سفر شما پیدا نشد.NoTrips
ورودی‌های شما امکان‌پذیر نیست.NotImplemented

Swagger

Postman

فایل Postman این API را با کلیک روی گزینه زیر دریافت کنید.

دانلود فایل Postman سرویس بهینه‌سازی مسیردهی