रूट ऑप्टिमाइज़ेशन एपीआई, वाहनों के लिए रास्तों की जानकारी देता है अनुरोध. शिपमेंट, वाहनों को असाइन किए जाते हैं या अनुरोध की प्रॉपर्टी पर जाएं.
किसी OptimizeToursResponse
मैसेज (REST, gRPC) में दो मुख्य टॉप-लेवल होते हैं
प्रॉपर्टी:
- हर वाहन के लिए,
routes[]
रास्ते हैं. इनके लिए शिपिंग की जगह तय की गई है. हरRoute
में उस रास्ते की प्रॉपर्टी को दिखाने वाली मेट्रिक शामिल हैं. metrics
, सभी जवाबों के लिए एग्रीगेट की गई मेट्रिक हैं वाहन और रूट प्लान. टॉप-लेवल मेट्रिक में वही प्रॉपर्टी होती हैं जो हर रूट की मेट्रिक के लिए, जिसमें सभी रूट से मिलने वाली वैल्यू एग्रीगेट की गई हैं.
ऑप्टिमाइज़ेशन के नतीजों के आधार पर, हो सकता है कि कुछ प्रॉपर्टी हमेशा अपने-आप न भरे जाएं:
skippedShipments[]
ऐसे शिपमेंट की सूची बनाता है जिन्हें किसी भी वाहन का इस्तेमाल करके नहीं किया जाता. अगर किसी शिपमेंट को तय किए गए समय में पूरा नहीं किया जा सकता, तो उसे स्किप किया जा सकता है तय सीमा से ज़्यादा होने पर या शिपिंग के लिए खरीदार से लिया जाने वाला शुल्क, पेनल्टी की लागत से ज़्यादा होने पर. उदाहरण के लिए, अगर किसी शिपमेंट के पिकअप या डिलीवरी के लिए, शिपिंग शुल्क बहुत कम हैtimeWindow
शायद यह संभव न हो या किसी वाहन के लिए यह किफ़ायती दर पर हो तय समयावधि के दौरान विज़िट करें.validationErrors[]
ऐसी गड़बड़ियों के बारे में बताता है जो अनुरोध को अमान्य बनाती हैं या जब अनुरोध केsolvingMode
को सेट किया गया हो, तो इस समस्या को हल नहीं किया जा सकताVALIDATE_ONLY
. सामान्यDEFAULT_SOLVE
मोड में, पुष्टि करने से जुड़ी गड़बड़ियां दिखेंगी जवाब के मुख्य हिस्से के बजाय, गड़बड़ी के मैसेज में दिखते हैं. ध्यान दें किVALIDATE_ONLY
समाधान मोड, एक साथ कई गड़बड़ियों की शिकायत कर सकता है. इसका मतलब है कि इससे अनुरोधों को तुरंत डीबग करने में मदद मिलती है.
रास्ते की जानकारी
हर routes[]
एंट्री एक ShipmentRoute
मैसेज (REST, gRPC) होती है. हर
ShipmentRoute
, किसी वाहन के लिए तय किए गए रास्ते की जानकारी दिखाता है
अनुरोध किया है. इससे जुड़ी ज़रूरी ShipmentRoute
प्रॉपर्टी
Vehicle
में शामिल हैं:
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
,VisitRequest
का शून्य-आधारित इंडेक्स है, जो इससे जुड़े अनुरोध में,Shipment.pickups
याShipment.deliveries
है, जो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
शुरू करें. इस अवधि केstart_time
की वजह से, ऐसा हो सकता हैVisit
का अनुसरण कर रहा है.totalDuration
, ट्रांज़िशन की कुल अवधि है. इसमें यात्रा, इंतज़ार, ब्रेक, और देरी का समय.vehicleLoads
मैप लोड टाइप, वाहन में होने वाली लोडिंग की जानकारी है.
Transition
का एक उदाहरण ऐसा दिखता है:
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
vists
और transitions
के बीच के संबंध के बारे में इसमें बताया गया है
पिकअप और डिलीवरी स्टॉप ऑर्डर ऑप्टिमाइज़ेशन. साथ ही,
ShipmentRoute
रेफ़रंस दस्तावेज़ (REST, gRPC).
मेट्रिक की प्रॉपर्टी
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
, वेबसाइट पर आने/जाने के दौरान वाहन में बिताया गया कुल समय है वे अपने रास्ते पूरे कर रहे हैं. यह सभी सोर्स का कुल योग हैVisit
से जुड़ेVisitRequest
के लिएVisitRequest.duration
वैल्यू वाहन को असाइन किया गया.- वाहन पूरा करने के लिए, ज़रूरी कुल समय
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
}
}
}