یادداشت برای تولید
برای سادگی، این راهنما از REST و JSON استفاده میکند. بااینحال، برای محیط تولید شما، توصیه کلی این است که از gRPC و کتابخانههای مشتری برای عملکرد بهتر استفاده کنید. برای اطلاعات بیشتر، کتابخانههای کارخواه Route Optimization API را ببینید.
پساز ارسال درخواست در اولین درخواستتان را ایجاد کنید، بهینهساز
OptimizeToursResponse را برمیگرداند. این پاسخ طرح مسیر است که راننده شما باید دنبال کند. این راهنما به شما نشان میدهد چگونه آن را بخوانید.
خلاصه برنامه مسیر
برای سناریو مهد سگها، بهینهساز سگ کوهستانی برنی و چیواوا را به ون شما اختصاص میدهد و سگ ژرمن شپرد را رد میکند. برنامه مسیر راننده شما بهصورت زیر است:
- شروع نوبت کاری در ساعت ۷:۵۵ صبح در مهدکودک.
- سگ کوهستانی برنیز را ساعت ۸:۲۰ صبح نزدیک برج کویت بردارید.
- ساعت ۸:۵۸ صبح، سگ شیواوا را در «پارک زمین بازی ساوت سانست» بردارید.
- ساعت ۹:۲۴ صبح به مهدکودک برگردید و تا باز شدن پنجره تحویل در ساعت ۹:۳۰ صبح منتظر بمانید.
- سگ کوهستانی برن را ساعت ۹:۳۰ صبح تحویل بده.
- ساعت ۹:۳۵ صبح، چیهواهوا را پیاده کن.
- پایان نوبت کاری در ساعت ۹:۴۰ صبح.
هزینه طرح مسیر ۱۴۷٫۲۲ دلار است، شامل ۱۰۰ دلار جریمه برای رد کردن ژرمن شپرد.
برای بررسی نتایج، پاسخ خود را با پاسخ کامل مثال مقایسه کنید. نتایج شما ممکن است کمی متفاوت باشد زیرا زمان و مسافت سفر به دادههای فعلی جاده بستگی دارد.
پاسخ نمونه کامل
{ "routes": [ { "vehicleStartTime": "2024-02-13T15:55:04Z", "vehicleEndTime": "2024-02-13T17:40:00Z", "visits": [ { "isPickup": true, "startTime": "2024-02-13T16:20:00Z", "detour": "0s", "shipmentLabel": "Bernese mountain dog", "visitType": "PICKUP_SHIPMENT" }, { "shipmentIndex": 1, "isPickup": true, "startTime": "2024-02-13T16:58:12Z", "detour": "2600s", "shipmentLabel": "Chihuahua", "visitType": "PICKUP_SHIPMENT" }, { "startTime": "2024-02-13T17:30:00Z", "detour": "2297s", "shipmentLabel": "Bernese mountain dog", "visitType": "DELIVER_SHIPMENT" }, { "shipmentIndex": 1, "startTime": "2024-02-13T17:35:00Z", "detour": "656s", "shipmentLabel": "Chihuahua", "visitType": "DELIVER_SHIPMENT" } ], "transitions": [ { "travelDuration": "1496s", "travelDistanceMeters": 7082, "waitDuration": "0s", "totalDuration": "1496s", "startTime": "2024-02-13T15:55:04Z" }, { "travelDuration": "1992s", "travelDistanceMeters": 16589, "waitDuration": "0s", "totalDuration": "1992s", "startTime": "2024-02-13T16:25:00Z" }, { "travelDuration": "1252s", "travelDistanceMeters": 7860, "waitDuration": "356s", "totalDuration": "1608s", "startTime": "2024-02-13T17:03:12Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:35:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:40:00Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "routeCosts": { "model.vehicles.cost_per_hour": 47.22 }, "routeTotalCost": 47.22, "vehicleFullness": { "maxFullness": 0.3497777777777778, "activeSpan": 0.3497777777777778 } } ], "skippedShipments": [ { "index": 2, "label": "German shepherd", "penaltyCost": 100 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2024-02-13T15:55:04Z", "latestVehicleEndTime": "2024-02-13T17:40:00Z", "totalCost": 147.22, "costs": { "model.vehicles.cost_per_hour": 47.22, "model.shipments.penalty_cost": 100 } } }
ساختار پاسخ
OptimizeToursResponse شامل دو مؤلفه اصلی است:
routes: طرح مسیر برای هر خودرو در ناوگان شما، ازجمله ترتیب و زمان هر تحویل گرفتن و تحویل دادن. یک ون دارید، بنابراین یک طرح مسیر وجود دارد.metrics: خلاصهای از کل برنامه مسیر، شامل هزینه کل، مدت، و مسافت.
چون بهینهساز از ژرمن شپرد صرفنظر میکند، پاسخ همچنین شامل
skippedShipments است.
بخشهای زیر نشان میدهند که هر جزئیات خلاصه طرح مسیر را در پاسخ کجا پیدا کنید.
کدام وسیله نقلیه در کدام مسیر حرکت میکند؟
بهینهساز طرح مسیری (آرایه routes) تولید میکند که با ترتیب vehicles در درخواست شما مطابقت دارد.
فیلد vehicleIndex هر خودرو را براساس موقعیت صفرپایه آن شناسایی میکند که برای ون شما ۰ است. فیلدهای vehicleStartTime و
vehicleEndTime به راننده دستور میدهند که چه زمانی نوبت کاری خود را شروع و پایان دهد.
Route Optimization API مُهرهای زمان را در قالب UTC برمیگرداند که با پسوند Z مشخص میشود،
صرفنظر از انحراف در درخواست شما. برای دریافت زمان سانفرانسیسکو، ۸ ساعت کم کنید. برای ون شما، نوبت کاری از ساعت ۷:۵۵ صبح تا ۹:۴۰ صبح است، همانطور که در نمونه کد زیر نشان داده شده است.
{
"routes": [
{
// "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
}
]
...
}
ترتیب سوار و پیاده کردن چیست؟
در هر مسیر، آرایه visits شامل همه سوار کردنها و تحویلها
برای خودرو واگذارشده بهترتیب زمانی است.
shipmentIndex هر بازدید، موقعیت صفرپایه محموله در درخواست شما است: 0 سگ کوهستانی برنی است و 1 شیهواهوا است. فیلد
shipmentLabel برچسبی را که برای هر محموله تنظیم کردهاید نشان میدهد.
برای تشخیص بین تحویل گرفتن و تحویل دادن (یا ارسال)، میتوانید
فیلدهای visitType یا isPickup را بررسی کنید:
visitType: کنش بازدید را بهطور صریح تعریف میکند.- تحویل:
visitType="PICKUP_SHIPMENT" - ارسال:
visitType="DELIVER_SHIPMENT"
- تحویل:
isPickup: فیلد کمکی بولی.- تحویل:
isPickup=true - ارسال:
isPickup=false(در JSON حذف شده است)
- تحویل:
برای تعیین توالی دقیق رویدادها و زمان رسیدن موردانتظار به هر مکان، آرایه visits را بهترتیب بخوانید. جدول زیر کنش طرح مسیر را براساس ترتیب و مقادیر فیلدهای shipmentIndex، isPickup یا visitType، و startTime نشان میدهد.
| توالی | بهارزش shipmentIndex |
مقدار isPickup یا visitType |
مقدار startTime (بهوقت ساعت هماهنگ جهانی) |
کنش |
|---|---|---|---|---|
| نخستین بازدید | ۰ (در JSON حذف شده است) | درست یا PICKUP_SHIPMENT |
2024-02-13T16:20:00Z | سگ کوهستانی برنیز را ساعت ۸:۲۰ صبح بردار. |
| بازدید دوم | 1 | درست یا PICKUP_SHIPMENT |
2024-02-13T16:58:12Z | چیواوا را ساعت ۸:۵۸ صبح بردارید. |
| سومین بازدید | ۰ (در JSON حذف شده است) | نادرست (حذفشده) یا DELIVER_SHIPMENT |
2024-02-13T17:30:00Z | سگ کوهستانی برن را ساعت ۹:۳۰ صبح به مرکز نگهداری سگها ببر. |
| بازدید چهارم | 1 | نادرست (حذفشده) یا DELIVER_SHIPMENT |
2024-02-13T17:35:00Z | ساعت ۹:۳۵ صبح، سگ شیواوا را به مهدکودک سگها ببر. |
نمونه کد زیر نشان میدهد که پاسخ چگونه این توالی را ارائه میدهد:
{
"routes": [
{
"visits": [
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
"isPickup": true,
"startTime": "2024-02-13T16:20:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "PICKUP_SHIPMENT"
},
{
"shipmentIndex": 1,
"isPickup": true,
"startTime": "2024-02-13T16:58:12Z",
"shipmentLabel": "Chihuahua",
"visitType": "PICKUP_SHIPMENT"
},
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:30:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "DELIVER_SHIPMENT"
},
{
"shipmentIndex": 1,
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:35:00Z",
"shipmentLabel": "Chihuahua",
"visitType": "DELIVER_SHIPMENT"
}
]
}
]
}
هر بازدید همچنین دارای یک visitRequestIndex است که موقعیت مبتنی بر صفر گزینه تحویل یا ارسال است که بهینهساز برای محموله انتخاب کرده است. هر سگ در این سناریو فقط یک گزینه سوار کردن و یک گزینه پیاده کردن دارد، بنابراین visitRequestIndex همیشه 0 است و پاسخ آن را حذف میکند.
بین بازدیدها چه اتفاقی میافتد؟
در هر مسیر، آرایه transitions جزئیات سفر بین بازدیدها را فهرست میکند. اگرچه visits و transitions فهرستهای جداگانهای هستند، اما
بهصورت زیر در زمان تداخل دارند:
transitions[0](رانندگی از شروع تا نخستین بازدید)-
visits[0](نخستین بازدید) transitions[1](رانندگی از بازدید اول به بازدید دوم)visits[1](بازدید دوم)...visits[N-1](آخرین بازدید، که N تعداد کل بازدیدها است)transitions[N](رانندگی از آخرین بازدید تا پایان)
میتوانید خط زمان مسیر را با نگاه کردن به فیلد startTime در هر دو آرایه دنبال کنید. startTime انتقال زمانی است که راننده سفر را شروع میکند، و startTime بازدید زمانی است که راننده سوار کردن یا پیاده کردن را شروع میکند.
هر گذار زمان رانندگی و فاصله موردانتظار بین مکانها را نشان میدهد.
جدول زیر هر دو فیلد transitions و visits را به کنشهای مسیر زمانی برای سناریو مهدکودک سگها نگاشت میکند.
| توالی | نام فیلد | مقدار startTime (بهوقت ساعت هماهنگ جهانی) |
جزئیات | کنش |
|---|---|---|---|---|
| گذار اول | transitions[0] |
2024-02-13T15:55:04Z |
travelDuration: 1496stravelDistanceMeters: 7082 |
برای تحویل گرفتن سگ کوهستانی برنی، ۷ کیلومتر (۲۵ دقیقه) از مهدکودک رانندگی کنید. نوبت کاری ساعت ۷:۵۵ صبح شروع میشود. |
| نخستین بازدید | visits[0] |
2024-02-13T16:20:00Z |
shipmentIndex: 0 (omitted in JSON)isPickup: True |
سگ کوهستانی برنی را از ساعت ۸:۲۰ صبح بردارید. بازدید ۵ دقیقه طول میکشد. |
| گذار دوم | transitions[1] |
2024-02-13T16:25:00Z |
travelDuration: 1992stravelDistanceMeters: 16589 |
۱۷ کیلومتر بهمدت ۳۳ دقیقه از «برج کویت» رانندگی کنید تا چیواوا را از ساعت ۸:۲۵ صبح تحویل بگیرید. |
| بازدید دوم | visits[1] |
2024-02-13T16:58:12Z |
shipmentIndex: 1isPickup: True |
ساعت ۸:۵۸ صبح، چیواوا را بردارید. بازدید ۵ دقیقه طول میکشد. |
| گذار سوم | transitions[2] |
2024-02-13T17:03:12Z |
travelDuration: 1252stravelDistanceMeters: 7860waitDuration: 356s |
از ساعت ۹:۰۳ صبح، ۸ کیلومتر را در ۲۱ دقیقه از «زمین بازی ساوت سانست» بهسمت مهدکودک رانندگی میکند. ساعت ۹:۲۴ صبح میرسد و ۶ دقیقه منتظر میماند تا پنجره تحویل باز شود. |
| بازدید سوم | visits[2] |
2024-02-13T17:30:00Z |
shipmentIndex: 0 (omitted in JSON)isPickup: False (omitted in JSON) |
سگ کوهستانی برنی را از ساعت ۹:۳۰ صبح به مرکز نگهداری سگها ببر. بازدید ۵ دقیقه طول میکشد. |
| گذار چهارم | transitions[3] |
2024-02-13T17:35:00Z |
travelDuration: 0stravelDistanceMeters: 0 (omitted in JSON) |
رانندگی نکنید. آماده برای رساندن چیواوا به مهدکودک در ساعت ۹:۳۵ صبح. |
| بازدید چهارم | visits[3] |
2024-02-13T17:35:00Z |
shipmentIndex: 1isPickup: False (در JSON حذف شده است) |
ساعت ۹:۳۵ صبح، سگ شیواوا را به مرکز نگهداری سگها ببرید. این کار ۵ دقیقه طول میکشد. |
| انتقال پنجم | transitions[4] |
2024-02-13T17:40:00Z |
travelDuration: 0stravelDistanceMeters: 0 (omitted in JSON) |
رانندگی نکنید. راننده شیفت را در ساعت ۹:۴۰ ق.ظ. تمام میکند. |
نمونه کد زیر نشان میدهد که چگونه پاسخ این توالی را برای
transitions[0] و transitions[1] ارائه میدهد:
{
"routes": [
{
"transitions": [
{
"travelDuration": "1496s",
"travelDistanceMeters": 7082,
"waitDuration": "0s",
"totalDuration": "1496s",
"startTime": "2024-02-13T15:55:04Z"
},
{
"travelDuration": "1992s",
"travelDistanceMeters": 16589,
"waitDuration": "0s",
"totalDuration": "1992s",
"startTime": "2024-02-13T16:25:00Z"
},
...
]
}
]
}
هزینه این مسیر چقدر است؟
بسته به اینکه به هزینه خودرو خاصی نیاز دارید یا هزینه کل ناوگان، میتوانید چندین فیلد را در پاسخ مشاهده کنید.
جدول زیر همه روشهایی را که میتوانید اطلاعات هزینه را در پاسخ پیدا کنید فهرست میکند:
| والدین | پارامتر | حوزه | شرح |
|---|---|---|---|
ShipmentRoute |
routeCosts |
بهازای هر مسیر | تفکیک مؤلفههای هزینه خاص (مانند هزینه هر ساعت) برای آن مسیر خاص. |
routeTotalCost |
بهازای هر مسیر | هزینه کل محاسبهشده برای آن مسیر خاص. | |
Metrics |
totalCost |
کل (همه مسیرها) | کل هزینه تجمیعی برای همه مسیرها در راهحل. |
costs |
کل (همه مسیرها) | تفکیک مؤلفههای هزینه انبوهشی در همه مسیرهای موجود در راهحل. |
هزینههای مشخصشده در routeCosts و costs نشاندهنده محدودیتهای هزینه است که در درخواستتان مشخص میکنید. برای اطلاعات بیشتر، به سند
مفهوم کلیدی مدل هزینه مراجعه کنید.
برای این سناریو مهد سگها، چون یک ارسال ردشده دارید، هزینه هر مسیر و هزینه کل تجمیعشده متفاوت است. هزینه مسیر فقط شامل هزینههای مرتبط با آن مسیر خاص (دستمزد راننده) است، درحالیکه هزینه کل تجمیعشده شامل جریمه محموله نادیدهگرفتهشده نیز میشود. نمونه کد زیر نشان میدهد که این مقادیر را در کجا میتوانید در پاسخ پیدا کنید:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
"routeCosts": {
"model.vehicles.cost_per_hour": 47.22
},
"routeTotalCost": 47.22
}
],
"metrics": {
"totalCost": 147.22,
"costs": {
"model.shipments.penalty_cost": 100,
"model.vehicles.cost_per_hour": 47.22
},
...
}
}
طبق برنامه مسیر، راننده ون را از ساعت ۷:۵۵ صبح تا ۹:۴۰ صبح میراند که تقریباً ۱ ساعت و ۴۵ دقیقه (۶۲۹۶ ثانیه) است. با نرخ تعریفشده شما که ۲۷ دلار در ساعت است، هزینه مسیر ۴۷٫۲۲ دلار است. چون بهینهساز از محموله ژرمن شپرد صرفنظر کرد، هزینه جریمه ۱۰۰ دلاری اضافه میکند و مجموع هزینه کل را به ۱۴۷٫۲۲ دلار میرساند.
چرا ارسال رد شده است؟
بهینهساز هر محمولهای را که انجام نمیدهد در آرایه
skippedShipments فهرست میکند. دلیل رد شدن ارسال به این بستگی دارد که آیا
penaltyCost را تنظیم کردهاید یا نه:
- محمولههای اجباری (بدون
penaltyCost): بهینهساز هرگز این محمولهها را فقط بهدلیل گران بودن اجرای آنها نادیده نمیگیرد. تنها درصورتی از یک محموله صرفنظر میکند که نتواند آن را در هیچ مسیری قرار دهد، مثلاً بهدلیل اینکه پنجره زمانی آن با محمولههای دیگر تداخل دارد. - محمولههای اختیاری (با
penaltyCost): بهینهساز همچنین میتواند از این موارد صرفنظر کند اگر هزینه انجام آنها بیشتر از جریمه باشد. میتوانید هزینههای جریمه متفاوتی را برای اولویتبندی برخی محمولهها نسبتبه سایرین تنظیم کنید.
در این سناریو، پنجره تحویل سگ ژرمن شپرد با پنجره سگ کوهستانی برن تداخل دارد. برج کویت و لندز اند ۲۵ دقیقه باهم فاصله دارند، بنابراین راننده نمیتواند هر دو سوار کردن را در بازه ۲۰ دقیقهای انجام دهد. بهینهساز باید یکی از آنها را رد کند. چون ژرمن شپرد هزینه جریمه کمتری دارد (۱۰۰ دلار درمقابل ۱۰۰۰ دلار برای مشتری معمولی)، بهینهساز از آن صرفنظر میکند و جریمه ۱۰۰ دلاری را متحمل میشود.
نمونه کد زیر شیء skippedShipments را در پاسخ نشان میدهد:
{
...
"skippedShipments": [
{
"index": 2,
"label": "German shepherd",
"penaltyCost": 100
}
],
...
}
شیء skippedShipments در پاسخ حاوی فیلدهای زیر است:
index: نمایه صفرپایه محموله در درخواست شما (۲ برای محموله سوم).label: برچسبی که در درخواست مشخص کردهاید («German shepherd» (ژرمن شپرد)).penaltyCost: هزینه جریمهای که در درخواست مشخص کردهاید و میانای برنامهسازی کاربردی آن را به هزینه کل اضافه میکند.
برای جلوگیری از رد شدن محموله توسط بهینهساز، محدودیت ایجادکننده تداخل را کاهش دهید. برای مثال، از صاحب سگ ژرمن شپرد بخواهید بازه زمانی منعطفتری برای تحویل گرفتن سگ درنظر بگیرد، سپس timeWindows را برای آن تحویل گرفتن در درخواستتان بهروز کنید.
فیلدهای پاسخ در مثال
جدول زیر همه فیلدهای پاسخ را که در
OptimizeToursResponse سناریو نمونه برگردانده شده است شرح میدهد. اگرچه برای درک طرح مسیر نیازی به استفاده از همه فیلدها ندارید، میتوانید این فیلدها را تجزیهوتحلیل کنید تا نحوه تنظیم OptimizeToursRequest خود را برای مطابقت با نیازهای کسبوکارتان تعیین کنید. برای اطلاعات بیشتر، چرخه حیات طرح مسیر را ببینید.
میتوانید محتوا را براساس والد یا جستجوی نوشتاری فیلتر کنید.
| والدین | پارامتر | نوع ویژگی | شرح |
|---|---|---|---|
OptimizeToursResponse |
routes |
آرایه اشیاء (ShipmentRoute) |
این شامل فهرست مسیرهای محاسبهشده برای هر خودرو است (یک مسیر برای هر خودرو). برای این سناریو مهدکودک سگها، این شامل طرح مسیر دقیق برای یک ون شما است. |
metrics |
شیء (Metrics) |
این شامل سنجههای کلی برای راهحل است که در همه مسیرها انبوهش شده است. برای این سناریوی مهدکودک سگ، این خلاصه هزینهها و مدت زمان عملیاتی برای روز است. | |
skippedShipments |
آرایه اشیاء (SkippedShipment) |
این شامل فهرست محمولههایی است که در راهحل نادیده گرفته شدهاند. برای این سناریو، سگ سوم (ژرمن شپرد) رد میشود. | |
ShipmentRoute |
vehicleStartTime |
مُهر زمان | این زمانی است که خودرو مسیرش را شروع میکند. برای این سناریو مهدکودک سگها، راننده ساعت ۷:۵۵ صبح شروع به رانندگی ون میکند. |
vehicleEndTime |
مُهر زمان | این زمانی است که خودرو مسیر خود را بهپایان میرساند. برای این سناریو مهدکودک سگها، راننده رانندگی ون را در ساعت ۹:۴۰ صبح بهپایان میرساند. | |
visits |
آرایه اشیاء (Visit) |
این فهرست مرتبشدهای از سوار کردنها و رساندنها در مسیر است. برای این سناریو نگهداری روزانه سگ، این توالی سوار کردن و پیاده کردن دو سگ است. | |
transitions |
آرایه اشیاء (Transition) |
این فهرست مرتبشدهای از مسافت، و زمان سفر و انتظار بین بازدیدها است. برای این سناریوی مهدکودک سگها، این جزئیات مسافت و زمان رانندگی بین برج کویت، پارک زمین بازی South Sunset، و مهدکودک را نشان میدهد. | |
metrics |
شیء (AggregatedMetrics) |
این سنجهها مختص این مسیر هستند. برای این سناریوی مهدکودک سگها، اینها آمار این ون خاص هستند. این سنجهها براساس هزینههایی است که در درخواستتان مشخص کردهاید. برای جزئیات بیشتر، سند مفهوم کلیدی مدل هزینه را ببینید. | |
routeCosts |
شیء (نقشه) | این تفکیک هزینههای خاص برای این مسیر است. برای این سناریوی مهد سگ، این هزینه محاسبهشده از دستمزد راننده ۲۷ دلار در ساعت را نشان میدهد. | |
routeTotalCost |
عدد | این هزینه کل برای این مسیر خاص است. برای این سناریو مهدکودک سگها، هزینه کل برای مسیر این ون 47.22 است. |
|
vehicleFullness |
شیء (VehicleFullness) |
این تفکیکی است از اینکه خودرو چقدر به حدود عملیاتی خود، مانند زمان، مسافت، و بار، نزدیک میشود. برای این سناریو مهد سگ،
فقط زمان شروع و پایان شیفت راننده را محدود میکند، بنابراین بهینهساز
vehicleFullness را بهعنوان کسری از مدتزمان واقعی مسیر
و حداکثر زمان دردسترس برای شیفت راننده محاسبه میکند. |
|
Visit |
shipmentIndex |
عدد صحیح | این نمایه صفرپایه محموله در درخواست اصلی است. برای این سناریوی مهدکودک سگها، 0 نشاندهندهی سگ کوهستانی برنی و 1 نشاندهندهی شیواوا است. |
isPickup |
بولی | اگر این بازدید از نوع تحویل گرفتن باشد، این فیلد درست است. برای این سناریو مهدکودک سگها، این مقدار هنگام تحویل گرفتن سگ درست و هنگام تحویل دادن سگ به مهدکودک نادرست (یا ناموجود) است. | |
startTime |
مُهر زمان | این زمان شروع تخمینی بازدید است. برای این سناریو مهدکودک سگ، این زمانی است که راننده در میزند. | |
detour |
مدت | این زمان اضافهای است که بهینهساز به سفر این محموله خاص اضافه میکند. مسیر انحرافی تفاوت بین طرح مسیر واقعی و سفر مستقیم ایدهآل است، درصورتیکه راننده محموله یا وظیفه دیگری برای تکمیل نداشته باشد. برای این سناریو مهد سگ، اولین بازدید که برای سوار کردن سگ کوهستانی برنی است، انحراف ۰ دارد زیرا راننده مستقیماً از مرکز مهد به این محل سوار کردن میرود. برای سوار کردن سگ شیواوا، مسیر انحرافی ۴۳ دقیقه است زیرا راننده ابتدا سگ کوهستانی برنی را سوار میکند (و ۵ دقیقه صرف سوار کردن او میشود). |
|
shipmentLabel |
رشته | این برچسب مربوط به درخواست هر محموله است. برای این سناریو مهدکودک سگها، برچسبها «چیواوا» یا «سگ کوهستانی برنیز» هستند. | |
visitType |
رشته (شمارشی) | این نشاندهنده نوع بازدید است که میتواند PICKUP_SHIPMENT
برای تحویل گرفتن یا DELIVER_SHIPMENT برای ارسال باشد. برای این سناریو،
یا PICKUP_SHIPMENT است یا DELIVER_SHIPMENT. |
|
Transition |
travelDuration |
مدت | این مدت زمان صرفشده برای سفر درطول این انتقال بین بازدیدها است. برای مثال، در این سناریو مهدکودک سگها، راننده حدود ۲۵ دقیقه رانندگی میکند تا از مهدکودک به برج کویت برسد و سگ کوهستانی برن را سوار کند. |
travelDistanceMeters |
عدد صحیح | این مسافت طیشده به متر درطول این انتقال است. برای مثال، در این سناریو مهدکودک سگها، راننده ۷ کیلومتر از مهدکودک تا «برج کویت» رانندگی میکند تا سگ کوهستانی برن را سوار کند. | |
waitDuration |
مدت | این مدت زمانی است که قبلاز تحویل یا دریافت بعدی صرف انتظار میشود. برای این سناریو مهد سگ، این مقدار برای انتقال سوم ۶ دقیقه (۳۵۶ ثانیه) است، زیرا راننده قبلاز باز شدن پنجره تحویل در ساعت ۹:۳۰ صبح به مرکز مهد میرسد. برای انتقالهای دیگر، این مقدار ۰ است. | |
totalDuration |
مدت | این مدت کل انتقال است، شامل رانندگی و انتظار. برای مثال، راننده ۲۵ دقیقه (۲۵ دقیقه رانندگی و ۰ دقیقه انتظار) را در اولین انتقال و ۲۷ دقیقه (۲۱ دقیقه رانندگی و ۶ دقیقه انتظار) را در سومین انتقال برای بازگشت به مهدکودک صرف میکند. | |
startTime |
مُهر زمان | این زمانی است که سفر شروع میشود. این زمان با زمان تکمیل بازدید قبلی (یا برای اولین انتقال، با زمان شروع خودرو) مطابقت دارد. برای سناریو مهد سگ، اولین گذار در ساعت ۷:۵۵ صبح وقتی راننده مهد سگ را ترک میکند شروع میشود، و دومین گذار در ساعت ۸:۲۵ صبح وقتی راننده برج کویت را ترک میکند شروع میشود. | |
Metrics |
aggregatedRouteMetrics |
شیء (AggregatedMetrics) |
این مقدار مجموع سنجهها در همه مسیرها است. برای این سناریوی مهد سگ، اینها سنجههای کلی برای یک ون شما است. |
usedVehicleCount |
عدد صحیح | این تعداد وسایل نقلیه استفادهشده در راهحل است. برای این سناریو مهدکودک سگها، فقط از یک ون استفاده میکنید. | |
earliestVehicleStartTime |
مهر زمان | این زودترین زمان شروع در بین همه وسایل نقلیه است. برای این سناریوی مهد سگ، مسیر ون از ساعت ۷:۵۵ صبح شروع میشود. | |
latestVehicleEndTime |
مُهر زمان | این آخرین زمان پایان در بین همه وسایل نقلیه است. برای این سناریو مهدکودک سگ، مسیر ون در ساعت ۹:۴۰ صبح بهپایان میرسد. | |
totalCost |
عدد | این هزینه کل راهحل است. برای این سناریو مهدکودک سگ، کل طرح مسیر 147.22 برای روز هزینه دارد (شامل 47.22 دستمزد راننده و 100 جریمه ارسال نادیدهگرفتهشده). |
|
costs |
شیء (نقشه) | این تفکیک هزینه کل براساس دسته است. برای این سناریو مهدکودک سگها، بهینهساز هزینه مسیر را براساس هزینه ساعتی و هزینه جریمه برای سگ ژرمن شپرد نادیدهگرفتهشده محاسبه کرد. | |
AggregatedMetrics |
performedShipmentCount |
عدد صحیح | این تعداد محمولههایی است که باموفقیت مسیریابی شدهاند. برای این سناریو مهدکودک سگها، راننده دو سگ را جابهجا میکند. |
travelDuration |
مدت | این کل زمان صرفشده برای سفر است. برای این سناریو مهدکودک سگ، راننده ۷۹ دقیقه سفر میکند. | |
waitDuration |
مدت | این کل زمان صرفشده برای انتظار است. برای این سناریو مهدکودک سگ، راننده ۶ دقیقه (۳۵۶ ثانیه) در مهدکودک منتظر میماند تا پنجره تحویل باز شود. | |
delayDuration |
مدت | این مدتزمان اضافهای است که بااستفاده از مشخصههای انتقال تعریف میکنید، مانند زمان رزروشده برای پارک کردن. برای این سناریو مهدکودک سگ، هیچ مشخصه انتقالی در درخواست تعریف نکردهاید، بنابراین این مقدار صفر است. | |
breakDuration |
مدت | این کل زمان صرفشده برای استراحت است. برای این سناریو مهدکودک سگ، هیچ وقفهای وجود ندارد. | |
visitDuration |
مدت | این کل زمان صرفشده برای ارائه خدمات در بازدیدها است. برای این سناریوی مهد سگ، این زمان ۲۰ دقیقه است (۵ دقیقه برای هر بازدید در ۴ بازدید). | |
totalDuration |
مدت | این مجموع همه مؤلفههای مدت است. برای این سناریو مهد سگ، مدت کل ۱۰۵ دقیقه (۶۲۹۶ ثانیه) است. | |
travelDistanceMeters |
عدد صحیح | این کل مسافت سفر به متر است. برای این سناریو مهدکودک سگ، راننده درمجموع ۳۱٫۵ کیلومتر مسافت طی میکند. | |
performedShipmentPenaltyCostSum |
دوتایی | این مقدار مجموع هزینههای جریمه همه ارسالهای انجامشده است. برای این سناریو، این مقدار 2000 است زیرا راننده سگ کوهستانی برنی و چیواوا را سوار کرده است (هرکدام با هزینه جریمه 1000). |
|
VehicleFullness |
maxFullness |
عدد | این بالاترین نسبت استفاده در بین همه فیلدهای VehicleFullness است. برای این سناریو مهد سگ، این مقدار ۰٫۳۵ است زیرا راننده فقط ۱۰۵ دقیقه از کل شیفت صبح را که در درخواست ۵ ساعت تعریف کردهاید، با ون کار میکند. |
activeSpan |
عدد | این نسبت کل طول شیفت راننده درمقایسه با ساعتهای کاری طرح مسیر است. عدد کمتر یعنی راننده زمان کمتری از روز کاری را صرف راندن خودرو میکند. برای این سناریو مهد سگها، این مقدار ۰٫۳۵ است زیرا راننده ون را بهمدت ۱۰۵ دقیقه درطول شیفت ۵ ساعته میراند. | |
SkippedShipment |
index |
عدد صحیح | این نمایه صفرپایه محموله در درخواست اصلی است. برای این سناریو، ۲ نشاندهنده ژرمن شپرد است. |
label |
رشته | این برچسبی است که برای محموله در درخواست مشخص کردهاید. | |
penaltyCost |
عدد | این هزینه جریمهای است که وقتی بهینهساز از این محموله صرفنظر میکند متحمل میشوید. با penaltyCost که در درخواست مشخص کردهاید مطابقت دارد. |