بهینه سازی ترتیب مقاصد با امکان انتخاب چند مقصد (بیش از یک مقصد)

TSP API (Traveling Salesman Problem)
این سرویس یک مشکل معروف و قدیمی بنام فروشنده دوره گرد را حل می کند. زمانیکه شخصی مانند مسئول تحویل بستهها با هر وسیله نقلیه (وانت، موتور، خودروی معمولی، …)، بیش از 1 مقصد داشته باشد، این سرویس به کمک الگوریتم هوش مصنوعی و پردازش تمام حالات ممکن، بهترین و بهینه ترین ترتیب مقاصد را به شما پیشنهاد میدهد. بعبارتی ترتیبی که مقاصد باید طی شوند پردازش نموده و به نمایش میگذارد.
شیوهی فراخوانی:
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
در صورت بروز خطایی غیر از خطاهای بالا این خطا گزارش میشود.
بازتاب: شروع با نقشه وب – پلتفرم نقشه نشان