রুট অপ্টিমাইজেশান API সংশ্লিষ্ট অনুরোধে যানবাহনের জন্য রুট ফেরত দেয়। শিপমেন্টগুলি যানবাহনের জন্য বরাদ্দ করা হয়, বা অনুরোধের বৈশিষ্ট্যের উপর নির্ভর করে এড়িয়ে যেতে পারে।
একটি OptimizeToursResponse
মেসেজ ( REST , gRPC ) এর দুটি প্রধান শীর্ষ-স্তরের বৈশিষ্ট্য রয়েছে:
-
routes[]
হল প্রতিটি গাড়ির জন্য নির্ধারিত শিপমেন্টের রুট। প্রতিটিRoute
সেই স্বতন্ত্র রুটের বৈশিষ্ট্যগুলি প্রতিফলিত করে এমন মেট্রিক রয়েছে৷ -
metrics
হল সমস্ত যানবাহন এবং রুট প্ল্যান জুড়ে সমগ্র প্রতিক্রিয়ার জন্য একত্রিত মেট্রিক। শীর্ষ-স্তরের মেট্রিক্সে সমস্ত রুট জুড়ে একত্রিত মান সহ, প্রতি-রুট মেট্রিক্সের মতো একই বৈশিষ্ট্য রয়েছে।
কিছু বৈশিষ্ট্য সর্বদা অপ্টিমাইজেশান ফলাফলের উপর নির্ভর করে জনবহুল নাও হতে পারে:
-
skippedShipments[]
কোনো যানবাহন দ্বারা সঞ্চালিত হয় না যে চালান তালিকা. একটি চালান বাদ দেওয়া যেতে পারে যদি এটি নির্দিষ্ট সীমাবদ্ধতার মধ্যে সঞ্চালিত না হয় বা চালানটি সম্পাদনের খরচ তার জরিমানা খরচ অতিক্রম করে। উদাহরণস্বরূপ, যদি একটি শিপমেন্টের পিকআপ বা ডেলিভারিরtimeWindow
খুব সংকীর্ণ হয় তবে এটি সম্ভব নাও হতে পারে বা প্রয়োজনীয় সময় উইন্ডোতে একটি যানবাহনের জন্য পরিদর্শন করা সাশ্রয়ী হতে পারে। -
validationErrors[]
এমন ত্রুটিগুলি নির্দিষ্ট করে যা অনুরোধটিকে অবৈধ বা সমাধান করা অসম্ভব করে তোলে যখন অনুরোধেরsolvingMode
VALIDATE_ONLY
এ সেট করা হয়। সাধারণDEFAULT_SOLVE
মোডে, বৈধতা ত্রুটিগুলি প্রতিক্রিয়া বডির পরিবর্তে একটি ত্রুটি বার্তায় প্রদর্শিত হবে৷ মনে রাখবেন যেVALIDATE_ONLY
সমাধান মোড একবারে একাধিক ত্রুটি রিপোর্ট করতে পারে, যা অনুরোধগুলি দ্রুত ডিবাগ করার জন্য দরকারী৷
রুট বৈশিষ্ট্য
প্রতিটি routes[]
এন্ট্রি একটি ShipmentRoute
বার্তা ( REST , gRPC )। প্রতিটি ShipmentRoute
অনুরোধ থেকে একটি নির্দিষ্ট গাড়ির জন্য রুট অ্যাসাইনমেন্ট প্রতিনিধিত্ব করে। এর সংশ্লিষ্ট Vehicle
সাথে সম্পর্কিত গুরুত্বপূর্ণ ShipmentRoute
বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
-
vehicleIndex
হল সংশ্লিষ্ট অনুরোধ বার্তায়Vehicle
শূন্য-ভিত্তিক সূচক। মান শূন্য হলে REST প্রতিক্রিয়াগুলি এই বৈশিষ্ট্যটি বাদ দেয়। -
vehicleStartTime
হল সেই সময় যখন গাড়িটিকে তার রুট শুরু করতে হবে। -
vehicleEndTime
হল সেই সময় যখন গাড়িটি তার রুট শেষ করবে বলে আশা করা হয়।
একটি প্রতিক্রিয়াতে, routes
এর মতো দেখাবে:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
...
],
"transitions": [
...
],
"metrics": {
...
},
...
}
],
...
}
প্রতিটি ShipmentRoute
visits
একটি অর্ডার করা তালিকা রয়েছে যা গাড়িটি সম্পূর্ণ করবে। প্রতিটি Visit
( REST , gRPC ) সংশ্লিষ্ট অনুরোধ থেকে একটি VisitRequest
( REST , gRPC ) প্রতিনিধিত্ব করে। গুরুত্বপূর্ণ Visit
বৈশিষ্ট্য অন্তর্ভুক্ত:
-
shipmentIndex
হল শিপমেন্টের শূন্য-ভিত্তিক সূচক যা এই ভিজিটটি সংশ্লিষ্ট অনুরোধের অন্তর্গত। -
isPickup
সত্য হয় যখন একটি ভিজিট একটি পিকআপ হয় এবং মিথ্যা হয় যখন একটি ভিজিট একটি ডেলিভারি হয়। REST প্রতিক্রিয়া এই সম্পত্তি বাদ দেয় যখন মান মিথ্যা হয়। -
visitRequestIndex
হলShipment.pickups
বাShipment.deliveries
থেকেVisitRequest
এর শূন্য-ভিত্তিক সূচক যাVisit
প্রতিনিধিত্ব করে। মান শূন্য হলে REST প্রতিক্রিয়াগুলি এই বৈশিষ্ট্যটি বাদ দেয়। -
startTime
হল সেই সময় যা ভিজিট শুরু হবে বলে আশা করা হচ্ছে। -
loadDemands
ম্যাপ লোড টাইপ লোড পরিমাণVisit
সম্পূর্ণ করার জন্য দাবি করা হয়েছে। ডেলিভারি ভিজিটের জন্য লোডের পরিমাণ নেতিবাচক, যা গাড়ি থেকে লোড সরিয়ে ফেলার প্রতিনিধিত্ব করে।
একটি উদাহরণ Visit
এর মত দেখাচ্ছে:
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
প্রতিটি ShipmentRoute
transitions
একটি অর্ডার করা তালিকা অন্তর্ভুক্ত থাকে যা একটি প্রদত্ত গাড়ির visits
মধ্যে ভ্রমণের প্রতিনিধিত্ব করে। গুরুত্বপূর্ণ Transition
বার্তা ( REST , gRPC ) বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
-
startTime
হল সেই সময় যেখানে গাড়িটি ট্রানজিশন করতে শুরু করবে। -
travelDuration
হল সেই সময়কাল যার জন্য গাড়িটিকে ট্রানজিশন সম্পূর্ণ করতে যেতে হবে। -
travelDistanceMeters
হল মিটারে সেই দূরত্ব যা যানবাহনকে স্থানান্তর সম্পূর্ণ করতে যেতে হবে। -
trafficInfoUnavailable
নির্দেশ করে যে ট্রাফিক ডেটা স্থানান্তরের জন্য উপলব্ধ কিনা। -
waitDuration
অলস সময়কে প্রতিনিধিত্ব করে যা গাড়িটি তার পরবর্তীVisit
শুরু করার আগে অপেক্ষা করে। নিম্নলিখিতVisit
start_time
কারণে এটি খরচ হতে পারে। -
totalDuration
হল স্থানান্তরের মোট সময়কাল, যার মধ্যে ভ্রমণ, অপেক্ষা, বিরতি এবং বিলম্বের সময় রয়েছে। -
vehicleLoads
লোড ম্যাপ লোড টাইপ থেকে লোড পরিমাণ এই ট্রানজিশনের সময় গাড়ির দ্বারা বহন করা হয়।
একটি উদাহরণ Transition
এর মত দেখাচ্ছে:
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
vists
এবং transitions
মধ্যে সম্পর্ক সম্পর্কে আরও তথ্যের জন্য, পিকআপ এবং ডেলিভারি স্টপ অর্ডার অপ্টিমাইজেশান এবং ShipmentRoute
রেফারেন্স ডকুমেন্টেশন ( REST , gRPC ) দেখুন। একটি Transition
বার্তার routePolyline
এবং routeToken
বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য, ট্রানজিশন পলিলাইন এবং রুট টোকেনগুলি দেখুন।
মেট্রিক্স বৈশিষ্ট্য
Metrics
বার্তা ( REST , gRPC ) সমগ্র সমাধানের সংক্ষিপ্ত বিবরণ দেয়। কিছু গুরুত্বপূর্ণ Metrics
বৈশিষ্ট্য অন্তর্ভুক্ত:
-
totalCost
হল রুটগুলি সম্পূর্ণ করার জন্য মোট খরচ। খরচ মডেল প্যারামিটারে খরচ সম্পর্কে আরও পড়ুন। -
usedVehicleCount
হল সমাধানে ব্যবহৃত মোট যানবাহনের সংখ্যা। যানবাহনগুলির খালি রুট থাকতে পারে যখন অপ্টিমাইজার নির্ধারণ করে যে তাদের ব্যবহার অপ্রয়োজনীয়৷ -
skippedMandatoryShipmentCount
হল এড়িয়ে যাওয়া শিপমেন্টের সংখ্যা যা "বাধ্যতামূলক"। একটি বাধ্যতামূলক চালান একটিpenaltyCost
নির্দিষ্ট করে না যে চালানটি এড়িয়ে গেলে খরচ হয়৷ যদি নির্দিষ্ট সীমাবদ্ধতার অধীনে তাদের কর্মক্ষমতা সম্ভব না হয় তবে বাধ্যতামূলক চালানগুলি এখনও এড়ানো যেতে পারে। খরচ মডেল প্যারামিটারে খরচ সম্পর্কে আরও পড়ুন।
অতিরিক্ত মেট্রিক্স AggregatedMetrics
বার্তা ( REST , gRPC ) হিসাবে রিপোর্ট করা হয়। AggregatedMetrics
বার্তার ধরনটি Metrics.aggregatedRouteMetrics
প্রপার্টির জন্য এবং ShipmentRoute.metrics
প্রপার্টির জন্য ব্যবহৃত হয় Metrics.aggregatedRouteMetrics
OptimizeToursResponse
এ সমস্ত ShipmentRoute
গুলি জুড়ে একত্রিত মেট্রিক রয়েছে। প্রতিটি ShipmentRoute.metrics
প্রপার্টিতে সেই নির্দিষ্ট ShipmentRoute
এর মেট্রিক্স থাকে।
গুরুত্বপূর্ণ AggregatedMetrics
বৈশিষ্ট্য অন্তর্ভুক্ত:
-
performedShipmentCount
হল তাদের সমগ্র রুটে যানবাহন দ্বারা সম্পাদিত চালানের সংখ্যা। -
travelDuration
হল যানবাহনগুলি তাদের রুটগুলি সম্পূর্ণ করার সময় ট্রানজিটে ব্যয় করা মোট সময়। -
waitDuration
হল মোট সময় যা যানবাহন তাদের রুট সম্পূর্ণ করার সময় অপেক্ষা করে। -
delayDuration
হল যানবাহনের মোট বিলম্বের সময়। এটি সাধারণত শূন্য হয় যদি না অনুরোধেTransitionAttributes
ব্যবহার করা হয়। -
breakDuration
হল মোট সময় যা যানবাহন তাদের রুট সম্পূর্ণ করার সময় বিরতিতে ব্যয় করে। -
visitDuration
হল মোট সময় যা যানবাহনগুলি তাদের রুটগুলি সম্পূর্ণ করার সময় পরিদর্শন করতে ব্যয় করে৷ এটি কার্যকরভাবে সমস্তVisitRequest.duration
মানগুলির যোগফল যাVisitRequest
এর জন্য প্রযোজ্য গাড়ির জন্য নির্ধারিতVisit
সাথে সম্পর্কিত। -
totalDuration
হল যানবাহনের রুট সম্পূর্ণ করতে মোট সময়কাল। -
travelDistanceMeters
হল মোট দূরত্ব যা যানবাহন তাদের রুট সম্পূর্ণ করার সময় ভ্রমণ করে। -
maxLoads
ম্যাপ লোডের ধরনগুলিকে তাদের রুটে যেকোন সময়ে যানবাহনের দ্বারা বাহিত সর্বাধিক লোড পরিমাণে।
একটি উদাহরণ Metrics
বার্তা এর মত দেখাচ্ছে:
{
"routes": [
...
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}
সম্পূর্ণ উদাহরণ
কনস্ট্রাক্ট এ রিকোয়েস্ট থেকে অনুরোধের জন্য একটি সম্পূর্ণ উদাহরণের প্রতিক্রিয়া দেখতে এরকম দেখাচ্ছে:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:31Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1151s",
"travelDistanceMeters": 9599,
"waitDuration": "0s",
"totalDuration": "1151s",
"startTime": "2024-02-13T00:19:31Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 18.603
},
"routeTotalCost": 18.603
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}