ShipmentModel

किसी शिपमेंट मॉडल में, शिपमेंट का एक सेट होता है. इसे वाहनों के एक सेट को पूरा करना होता है. हालांकि, कुल लागत को कम से कम किया जाता है, जो कि कुल कीमत होती है:

  • वाहनों को रूट करने का खर्च (कुल समय का कुल योग, हर यात्रा में लगने वाला समय, और सभी वाहनों के लिए तय शुल्क).
  • शिपिंग पर लगी पाबंदियां लागू नहीं होंगी.
  • शिपिंग की ग्लोबल अवधि की लागत
JSON के काेड में दिखाना
{
  "shipments": [
    {
      object (Shipment)
    }
  ],
  "vehicles": [
    {
      object (Vehicle)
    }
  ],
  "globalStartTime": string,
  "globalEndTime": string,
  "globalDurationCostPerHour": number,
  "durationDistanceMatrices": [
    {
      object (DurationDistanceMatrix)
    }
  ],
  "durationDistanceMatrixSrcTags": [
    string
  ],
  "durationDistanceMatrixDstTags": [
    string
  ],
  "transitionAttributes": [
    {
      object (TransitionAttributes)
    }
  ],
  "shipmentTypeIncompatibilities": [
    {
      object (ShipmentTypeIncompatibility)
    }
  ],
  "shipmentTypeRequirements": [
    {
      object (ShipmentTypeRequirement)
    }
  ],
  "precedenceRules": [
    {
      object (PrecedenceRule)
    }
  ],
  "maxActiveVehicles": integer
}
फ़ील्ड
shipments[]

object (Shipment)

शिपमेंट का वह सेट जिसे मॉडल में किया जाना चाहिए.

vehicles[]

object (Vehicle)

वाहनों का सेट, जिसका इस्तेमाल विज़िट के लिए किया जा सकता है.

globalStartTime

string (Timestamp format)

मॉडल के ग्लोबल शुरू और खत्म होने का समय: इस सीमा से बाहर के किसी भी समय को मान्य नहीं माना जा सकता.

मॉडल की समयावधि एक साल से कम होनी चाहिए. इसका मतलब है कि globalEndTime और globalStartTime, एक-दूसरे से 31,536,000 सेकंड के अंदर होने चाहिए.

cost_per_*hour फ़ील्ड का इस्तेमाल करते समय, बेहतर परफ़ॉर्मेंस के लिए इस विंडो को छोटे इंटरवल पर सेट किया जा सकता है. उदाहरण के लिए, अगर एक दिन को मॉडल किया जाता है, तो आपको उस दिन के लिए ग्लोबल टाइम सीमाएं सेट करनी चाहिए. अगर इसे सेट नहीं किया जाता है, तो 1 जनवरी, 1970 को 00:00:00 यूटीसी (जैसे, सेकंड: 0, नैनो: 0) का इस्तेमाल डिफ़ॉल्ट के तौर पर किया जाता है.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

globalEndTime

string (Timestamp format)

अगर इसे सेट नहीं किया जाता है, तो 00:00:00 यूटीसी, 1 जनवरी, 1971 (जैसे कि सेकंड: 31536000, \nos: 0) का इस्तेमाल डिफ़ॉल्ट के तौर पर किया जाता है.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

globalDurationCostPerHour

number

"वैश्विक अवधि" कुल प्लान में, सभी वाहनों के शुरू होने के समय और खत्म होने के नए समय के बीच का अंतर होता है. उदाहरण के लिए, उपयोगकर्ता उस संख्या के लिए हर घंटे का शुल्क तय कर सकते हैं. इससे, वह काम जल्दी पूरा करने के लिए, उसे ऑप्टिमाइज़ कर सकेगा. यह लागत Shipment.penalty_cost की इकाई में ही होनी चाहिए.

durationDistanceMatrices[]

object (DurationDistanceMatrix)

मॉडल में इस्तेमाल की गई अवधि और दूरी की जानकारी देने वाले मैट्रिक्स के बारे में बताता है. अगर यह फ़ील्ड खाली है, तो useGeodesicDistances फ़ील्ड की वैल्यू के आधार पर Google Maps या जियोडेसिक दूरी का इस्तेमाल किया जाएगा. अगर यह खाली नहीं है, तो useGeodesicDistances 'सही' नहीं हो सकता. साथ ही, durationDistanceMatrixSrcTags या durationDistanceMatrixDstTags को भी खाली नहीं छोड़ा जा सकता.

इस्तेमाल के उदाहरण:

  • ये दो जगहें होती हैं: locA और locB.
  • एक वाहन, जो locA से शुरू होता है और locA पर खत्म होता है.
  • locB पर एक पिकअप विज़िट का अनुरोध.
model {
  vehicles { startTags: "locA"  endTags: "locA" }
  shipments { pickups { tags: "locB" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixDstTags: "locA"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrices {
    rows {  # from: locA
      durations { seconds: 0 }   meters: 0    # to: locA
      durations { seconds: 100 } meters: 1000 # to: locB
    }
    rows {  # from: locB
      durations { seconds: 102 } meters: 990 # to: locA
      durations { seconds: 0 }   meters: 0   # to: locB
    }
  }
}
  • तीन जगहें होती हैं: locA, locB, और locC.
  • एक वाहन locA से शुरू होता है और "तेज़" मैट्रिक्स का इस्तेमाल करके locB पर खत्म होता है.
  • एक वाहन locB पर अपना रूट शुरू करता है और "धीमा" मैट्रिक्स का इस्तेमाल करके locB पर खत्म होता है.
  • एक वाहन locB से शुरू होता है और "तेज़" मैट्रिक्स का इस्तेमाल करके locB पर खत्म होता है.
  • locC में एक पिकअप विज़िट का अनुरोध.
model {
  vehicles { startTags: "locA" endTags: "locB" startTags: "fast" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "slow" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "fast" }
  shipments { pickups { tags: "locC" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixSrcTags: "locC"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrixDstTags: "locC"
  durationDistanceMatrices {
    vehicleStartTag: "fast"
    rows {  # from: locA
      durations { seconds: 1000 } meters: 2000 # to: locB
      durations { seconds: 600 }  meters: 1000 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }   meters: 0    # to: locB
      durations { seconds: 700 } meters: 1200 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 702 } meters: 1190 # to: locB
      durations { seconds: 0 }   meters: 0    # to: locC
    }
  }
  durationDistanceMatrices {
    vehicleStartTag: "slow"
    rows {  # from: locA
      durations { seconds: 1800 } meters: 2001 # to: locB
      durations { seconds: 900 }  meters: 1002 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }    meters: 0    # to: locB
      durations { seconds: 1000 } meters: 1202 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 1001 } meters: 1195 # to: locB
      durations { seconds: 0 }    meters: 0    # to: locC
    }
  }
}
durationDistanceMatrixSrcTags[]

string

अवधि और दूरी के मैट्रिक्स के सोर्स को तय करने वाले टैग; durationDistanceMatrices(i).rows(j), durationDistanceMatrixSrcTags(j) टैग वाली विज़िट से लेकर मैट्रिक्स i में अन्य विज़िट की अवधि और दूरी तय करता है.

टैग VisitRequest.tags या Vehicle.start_tags से जुड़े हैं. दिए गए VisitRequest या Vehicle को इस फ़ील्ड के एक टैग से पूरी तरह मेल खाना चाहिए. ध्यान दें कि Vehicle का सोर्स, डेस्टिनेशन, और मैट्रिक्स टैग एक जैसे हो सकते हैं; इसी तरह VisitRequest के सोर्स और डेस्टिनेशन टैग एक जैसे हो सकते हैं. सभी टैग अलग-अलग होने चाहिए और वे खाली स्ट्रिंग नहीं हो सकते. अगर यह फ़ील्ड खाली नहीं है, तो durationDistanceMatrices को खाली नहीं छोड़ा जाना चाहिए.

durationDistanceMatrixDstTags[]

string

अवधि और दूरी के मैट्रिक्स के गंतव्य तय करने वाले टैग; durationDistanceMatrices(i).rows(j).durations(k) (resp. durationDistanceMatrices(i).rows(j).meters(k)) टैग durationDistanceMatrixSrcTags(j) टैग वाली विज़िट से लेकर मैट्रिक्स i में टैग durationDistanceMatrixDstTags(k) वाली विज़िट तक की यात्रा की अवधि (प्रतिस्पर्धी दूरी) तय करता है.

टैग VisitRequest.tags या Vehicle.start_tags से जुड़े हैं. दिए गए VisitRequest या Vehicle को इस फ़ील्ड के एक टैग से पूरी तरह मेल खाना चाहिए. ध्यान दें कि Vehicle का सोर्स, डेस्टिनेशन, और मैट्रिक्स टैग एक जैसे हो सकते हैं; इसी तरह VisitRequest के सोर्स और डेस्टिनेशन टैग एक जैसे हो सकते हैं. सभी टैग अलग-अलग होने चाहिए और वे खाली स्ट्रिंग नहीं हो सकते. अगर यह फ़ील्ड खाली नहीं है, तो durationDistanceMatrices को खाली नहीं छोड़ा जाना चाहिए.

transitionAttributes[]

object (TransitionAttributes)

मॉडल में ट्रांज़िशन एट्रिब्यूट जोड़े गए.

shipmentTypeIncompatibilities[]

object (ShipmentTypeIncompatibility)

ऐसे शिपमेंट_types के सेट जो काम नहीं करते हैं (ShipmentTypeIncompatibility देखें).

shipmentTypeRequirements[]

object (ShipmentTypeRequirement)

shipmentType ज़रूरी शर्तों के सेट (ShipmentTypeRequirement देखें).

precedenceRules[]

object (PrecedenceRule)

प्राथमिकता के नियमों का सेट, जिसे मॉडल में लागू किया जाना चाहिए.

maxActiveVehicles

integer

इससे, ज़्यादा से ज़्यादा चालू वाहनों की संख्या को कंट्रोल किया जाता है. अगर किसी वाहन के रूट से कम से कम एक शिपमेंट पूरा किया जाता है, तो उसे चालू रखा जाता है. इसका इस्तेमाल, ऐसे मामलों में रास्तों की संख्या को सीमित करने के लिए किया जा सकता है जहां वाहनों के मुकाबले कम ड्राइवर हैं और वाहनों का बेड़ा अलग है. इसके बाद, ऑप्टिमाइज़ेशन की मदद से वाहनों का वह सबसेट चुना जा सकेगा जिसे इस्तेमाल करना है. पूरी तरह सकारात्मक होना चाहिए.

शिपमेंट

किसी एक आइटम को शिप करने से लेकर, उसकी डिलीवरी तक, किसी एक सामान को भेजने की सुविधा. किसी वाहन को 'परफ़ॉर्मेंस' तब ही माना जाएगा, जब वह पिकअप की किसी जगह पर जाए (और ज़रूरत के हिसाब से उसकी अतिरिक्त क्षमता कम कर दे). इसके बाद, डिलीवरी की किसी एक जगह पर ज़रूर जाए. इसलिए, वाहन की अतिरिक्त कपैसिटी को फिर से बढ़ाएं.

JSON के काेड में दिखाना
{
  "displayName": string,
  "pickups": [
    {
      object (VisitRequest)
    }
  ],
  "deliveries": [
    {
      object (VisitRequest)
    }
  ],
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "allowedVehicleIndices": [
    integer
  ],
  "costsPerVehicle": [
    number
  ],
  "costsPerVehicleIndices": [
    integer
  ],
  "pickupToDeliveryAbsoluteDetourLimit": string,
  "pickupToDeliveryTimeLimit": string,
  "shipmentType": string,
  "label": string,
  "ignore": boolean,
  "penaltyCost": number,
  "pickupToDeliveryRelativeDetourLimit": number
}
फ़ील्ड
displayName

string

शिपमेंट का डिसप्ले नेम, जिसे उपयोगकर्ता ने तय किया है. इसमें ज़्यादा से ज़्यादा 63 वर्ण हो सकते हैं और इसमें UTF-8 वर्णों का इस्तेमाल किया जा सकता है.

pickups[]

object (VisitRequest)

शिपमेंट से जुड़े पिकअप के विकल्पों का सेट. अगर इस बारे में नहीं बताया गया है, तो वाहन को सिर्फ़ उस जगह पर जाना होगा जहां डिलीवरी की जा रही है.

deliveries[]

object (VisitRequest)

शिपमेंट से जुड़े डिलीवरी के विकल्पों का सेट. अगर इसके लिए जानकारी नहीं दी गई है, तो वाहन को सिर्फ़ पिक अप के लिए इस्तेमाल की जाने वाली जगह पर जाना होगा.

loadDemands

map (key: string, value: object (Load))

शिपमेंट से जुड़ी जानकारी लोड करना. उदाहरण के लिए, वज़न, वॉल्यूम, पैलेट की संख्या वगैरह. मैप में मौजूद कुंजियां, ऐसे आइडेंटिफ़ायर होने चाहिए जो इससे जुड़े लोड के टाइप की जानकारी देते हों. खास तौर पर, इनमें इकाइयां भी शामिल होनी चाहिए. उदाहरण के लिए: "weight_kg", "quantity_gallons", "pallet_count", वगैरह. अगर कोई कुंजी मैप पर नहीं दिखती है, तो उससे जुड़ा लोड शून्य के तौर पर माना जाता है.

एक ऑब्जेक्ट, जिसमें "key": value पेयर की सूची है. उदाहरण: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

allowedVehicleIndices[]

integer

वाहनों का वह सेट जो इस शिपमेंट की डिलीवरी कर सकता है. अगर इसे खाली छोड़ा जाता है, तो सभी वाहन ऐसा कर सकते हैं. वाहनों को उनके इंडेक्स के हिसाब से, ShipmentModel की vehicles सूची में दिखाया जाता है.

costsPerVehicle[]

number

इससे पता चलता है कि हर वाहन से यह शिपमेंट भेजने पर कितना शुल्क लगेगा. अगर बताया गया है, तो इसमें कोई भी ऐसा होना चाहिए:

  • एलिमेंट की संख्या costsPerVehicleIndices जैसी होनी चाहिए. costsPerVehicle[i], मॉडल के costsPerVehicleIndices[i] वाहन से जुड़ा है.
  • एलिमेंट की संख्या, मॉडल में मौजूद वाहनों की संख्या के बराबर हो. i-th एलिमेंट, मॉडल के वाहन #i से मेल खाता है.

ये लागतें penaltyCost के रूप में एक ही इकाई में होनी चाहिए और नकारात्मक नहीं होनी चाहिए. अगर ऐसा कोई शुल्क नहीं है, तो इस फ़ील्ड को खाली छोड़ दें.

costsPerVehicleIndices[]

integer

उन वाहनों के इंडेक्स जिन पर costsPerVehicle लागू होता है. अगर यह खाली नहीं है, तो इसमें एलिमेंट की संख्या costsPerVehicle के बराबर होनी चाहिए. किसी वाहन के इंडेक्स को एक से ज़्यादा बार नहीं दिया जा सकता. अगर किसी वाहन को costsPerVehicleIndices में शामिल नहीं किया गया है, तो उसकी लागत शून्य होगी.

pickupToDeliveryAbsoluteDetourLimit

string (Duration format)

इससे पता चलता है कि पिक अप से डिलीवरी तक के सबसे छोटे पाथ की तुलना में, ज़्यादा से ज़्यादा कितना समय घूमा है. अगर बताया गया है, तो यह ज़रूरी नहीं है कि यह नेगेटिव में हो. साथ ही, शिपमेंट में पिक अप और डिलीवरी की जानकारी होनी चाहिए.

उदाहरण के लिए, मान लें कि पिक अप के चुने गए विकल्प से, डिलीवरी के चुने गए विकल्प तक, सीधे पहुंचने में कम से कम समय लगता है. जब pickupToDeliveryAbsoluteDetourLimit को सेट किया जाता है, तो ये शर्तें लागू होती हैं:

startTime(delivery) - startTime(pickup) <=
t + pickupToDeliveryAbsoluteDetourLimit

अगर एक ही शिपमेंट पर संबंधित और कुल सीमाएं, दोनों की जानकारी दी गई है, तो हर संभावित पिकअप/डिलीवरी पेयर के लिए ज़्यादा सीमा का इस्तेमाल किया जाता है. 2017/10 से, चक्कर लगाने की सुविधा सिर्फ़ तब काम करती है, जब यात्रा का समय वाहनों पर निर्भर न हो.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

pickupToDeliveryTimeLimit

string (Duration format)

इससे किसी शिपमेंट की डिलीवरी शुरू होने से लेकर, उसकी डिलीवरी शुरू होने तक की ज़्यादा से ज़्यादा अवधि की जानकारी मिलती है. अगर बताया गया है, तो यह ज़रूरी नहीं है कि यह नेगेटिव में हो. साथ ही, शिपमेंट में पिक अप और डिलीवरी की जानकारी होनी चाहिए. यह इस बात पर निर्भर नहीं करता कि पिकअप और डिलीवरी के लिए कौनसे विकल्प चुने गए हैं और न ही यह वाहन की रफ़्तार पर निर्भर करता है. इसे ज़्यादा से ज़्यादा डेटूर कंस्ट्रेंट के साथ तय किया जा सकता है: समाधान दोनों स्पेसिफ़िकेशन के हिसाब से काम करेगा.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

shipmentType

string

"टाइप" बताने वाली स्ट्रिंग खाली नहीं है इस शिपमेंट के लिए शुल्क लिया जाएगा. इस सुविधा का इस्तेमाल, shipment_types के बीच के वर्शन या शर्तों के बारे में बताने के लिए किया जा सकता है. (ShipmentModel में shipmentTypeIncompatibilities और shipmentTypeRequirements देखें).

एक विज़िट के लिए तय की गई visitTypes से अलग-अलग स्थितियां: एक ही शिपमेंट से जुड़े सभी पिकअप/डिलीवरी के लिए shipmentType का इस्तेमाल एक ही होता है.

label

string

इस शिपमेंट के लिए एक लेबल तय करता है. यह लेबल, इससे जुड़े ShipmentRoute.Visit के shipmentLabel के जवाब में रिपोर्ट किया गया है.

ignore

boolean

अगर सही है, तो इस शिपमेंट को छोड़ें, लेकिन penaltyCost लागू न करें.

मॉडल में कोई shipmentTypeRequirements होने पर, शिपमेंट को अनदेखा करने से, पुष्टि करने के लिए कोई गड़बड़ी होती है.

injectedFirstSolutionRoutes या injectedSolutionConstraint में भेजे जाने वाले शिपमेंट को अनदेखा करने की अनुमति है; सॉल्वर, परफ़ॉर्म करने वाले रूट से मिलते-जुलते पिकअप/डिलीवरी की विज़िट हटा देता है. नज़रअंदाज़ किए गए शिपमेंट का रेफ़रंस देने वाले precedenceRules को भी अनदेखा कर दिया जाएगा.

penaltyCost

number

अगर शिपमेंट पूरा नहीं होता है, तो यह जुर्माना रूट्स की कुल लागत में जोड़ा जाता है. किसी शिपमेंट को तब ही पूरा माना जाता है, जब उसके पिकअप और डिलीवरी के किसी विकल्प का इस्तेमाल किया जाता है. लागत को उसी इकाई में दिखाया जा सकता है जिसका इस्तेमाल मॉडल में अन्य सभी लागत-संबंधी फ़ील्ड के लिए किया जाता है और यह धनात्मक होनी चाहिए.

अहम जानकारी: अगर जुर्माने की जानकारी नहीं दी गई है, तो इसे अनगिनत माना जाता है. इसका मतलब है कि शिपमेंट पूरा होना ज़रूरी है.

pickupToDeliveryRelativeDetourLimit

number

इससे यह जानकारी मिलती है कि पिकअप से डिलीवरी तक के सबसे छोटे पाथ की तुलना में, ज़्यादा से ज़्यादा कितना समय घूमता है. अगर बताया गया है, तो यह ज़रूरी नहीं है कि यह नेगेटिव में हो. साथ ही, शिपमेंट में पिक अप और डिलीवरी की जानकारी होनी चाहिए.

उदाहरण के लिए, मान लें कि पिक अप के चुने गए विकल्प से, डिलीवरी के चुने गए विकल्प तक, सीधे पहुंचने में कम से कम समय लगता है. जब pickupToDeliveryRelativeDetourLimit को सेट किया जाता है, तो ये शर्तें लागू होती हैं:

startTime(delivery) - startTime(pickup) <=
std::ceil(t * (1.0 + pickupToDeliveryRelativeDetourLimit))

अगर एक ही शिपमेंट पर संबंधित और कुल सीमाएं, दोनों की जानकारी दी गई है, तो हर संभावित पिकअप/डिलीवरी पेयर के लिए ज़्यादा सीमा का इस्तेमाल किया जाता है. 2017/10 से, चक्कर लगाने की सुविधा सिर्फ़ तब काम करती है, जब यात्रा का समय वाहनों पर निर्भर न हो.

VisitRequest

ऐसी विज़िट के लिए अनुरोध जो वाहन कर सकता है: इसमें एक भौगोलिक-जगह (या दो, नीचे देखें), खुलने और बंद होने का समय, टाइम विंडो से दिखाया जाता है, और सेवा में लगने वाला समय (सामान को पिक अप या ड्रॉप करने के लिए पहुंचने पर लगने वाला समय) शामिल है.

JSON के काेड में दिखाना
{
  "arrivalLocation": {
    object (LatLng)
  },
  "arrivalWaypoint": {
    object (Waypoint)
  },
  "departureLocation": {
    object (LatLng)
  },
  "departureWaypoint": {
    object (Waypoint)
  },
  "tags": [
    string
  ],
  "timeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "duration": string,
  "cost": number,
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "visitTypes": [
    string
  ],
  "label": string
}
फ़ील्ड
arrivalLocation

object (LatLng)

वह जगह जहां से VisitRequest इस कार्रवाई के दौरान वाहन आता है. अगर शिपमेंट मॉडल में, कुल समय की दूरी बताने वाले आव्यूह हैं, तो arrivalLocation के बारे में नहीं बताया जाना चाहिए.

arrivalWaypoint

object (Waypoint)

इस VisitRequest परफ़ॉर्म करते समय, वेपॉइंट जहां वाहन आता है. अगर शिपमेंट मॉडल में, कुल समय की दूरी बताने वाले आव्यूह हैं, तो arrivalWaypoint के बारे में नहीं बताया जाना चाहिए.

departureLocation

object (LatLng)

वह भौगोलिक जगह जहां से VisitRequest पूरा होने के बाद वाहन रवाना होता है. अगर यह arrivalLocation से अलग है, तो इसे छोड़ा जा सकता है. अगर शिपमेंट मॉडल में, कुल समय की दूरी बताने वाले आव्यूह हैं, तो departureLocation के बारे में नहीं बताया जाना चाहिए.

departureWaypoint

object (Waypoint)

वह पॉइंट जहां से VisitRequest पूरा होने के बाद वाहन रवाना होता है. अगर यह arrivalWaypoint से अलग है, तो इसे छोड़ा जा सकता है. अगर शिपमेंट मॉडल में, कुल समय की दूरी बताने वाले आव्यूह हैं, तो departureWaypoint के बारे में नहीं बताया जाना चाहिए.

tags[]

string

विज़िट के अनुरोध से जुड़े टैग के बारे में जानकारी देता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है.

timeWindows[]

object (TimeWindow)

टाइम विंडो, जो किसी विज़िट पर पहुंचने के समय को रोकती हैं. ध्यान दें कि वाहन, पहुंचने के समय की विंडो के बाहर भी जा सकता है. इसका मतलब है कि यात्रा के समय और पहुंचने का समय, समय विंडो के अंदर होना ज़रूरी नहीं है. इस वजह से, अगर वाहन TimeWindow.start_time से पहले पहुंच जाता है, तो इंतज़ार करना पड़ सकता है.

TimeWindow न होने का मतलब है कि वाहन किसी भी समय यह विज़िट कर सकता है.

टाइम विंडो एक-दूसरे से अलग होनी चाहिए.इसका मतलब है कि कोई भी टाइम विंडो, किसी दूसरी टाइम विंडो के साथ ओवरलैप नहीं करनी चाहिए या एक-दूसरे के बगल में होनी चाहिए. साथ ही, टाइम विंडो बढ़ते क्रम में होनी चाहिए.

costPerHourAfterSoftEndTime और softEndTime को सिर्फ़ तब सेट किया जा सकता है, जब विंडो एक समय पर सेट हो.

duration

string (Duration format)

विज़िट का कुल समय, यानी वाहन के पहुंचने और रवाना होने के बीच बिताया गया समय (इंतज़ार करने के संभावित समय में जोड़ा गया है; timeWindows देखें).

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

cost

number

वाहन के रास्ते के लिए, यात्रा के इस अनुरोध को पूरा करने में लगने वाला शुल्क. इसका इस्तेमाल करके, किसी भी प्रॉडक्ट के पिकअप या डिलीवरी के अलग-अलग शुल्क चुकाए जा सकते हैं. यह लागत Shipment.penalty_cost के समान इकाई में होनी चाहिए और ऋणात्मक नहीं होनी चाहिए.

loadDemands

map (key: string, value: object (Load))

इस विज़िट अनुरोध की मांग लोड करें. यह ठीक Shipment.load_demands फ़ील्ड की तरह है. हालांकि, यह पूरे Shipment के बजाय सिर्फ़ इस VisitRequest पर लागू होता है. यहां दी गई मांगों को Shipment.load_demands में दी गई मांगों में जोड़ दिया गया है.

एक ऑब्जेक्ट, जिसमें "key": value पेयर की सूची है. उदाहरण: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

visitTypes[]

string

विज़िट के टाइप की जानकारी देता है. इसका इस्तेमाल, इस विज़िट को पूरा करने में किसी वाहन को लगने वाला अतिरिक्त समय देने के लिए किया जा सकता है (Vehicle.extra_visit_duration_for_visit_type देखें).

टाइप सिर्फ़ एक बार दिख सकता है.

label

string

इस VisitRequest के लिए एक लेबल तय करता है. इस लेबल को रिस्पॉन्स में, संबंधित ShipmentRoute.Visit के visitLabel के तौर पर रिपोर्ट किया गया है.

LatLng

ऐसा ऑब्जेक्ट जो अक्षांश/देशांतर की जोड़ी को दिखाता है. डिग्री अक्षांश और डिग्री देशांतर को दिखाने के लिए, इसे डबल के जोड़े के तौर पर दिखाया जाता है. जब तक अलग से न बताया गया हो, यह ऑब्जेक्ट WGS84 मानक के मुताबिक होना चाहिए. वैल्यू, नॉर्मलाइज़ की जा सकने वाली रेंज के अंदर होनी चाहिए.

JSON के काेड में दिखाना
{
  "latitude": number,
  "longitude": number
}
फ़ील्ड
latitude

number

डिग्री में अक्षांश. यह [-90.0, +90.0] की रेंज में होना चाहिए.

longitude

number

डिग्री में देशांतर. यह [-180.0, +180.0] की रेंज में होना चाहिए.

वेपॉइंट

वेपॉइंट को एनकैप्सुलेट करता है. वेपॉइंट, visitRequests के आने और जाने की जगहों को मार्क करते हैं. साथ ही, वाहनों के शुरू और खत्म होने की जगह की जानकारी भी देते हैं.

JSON के काेड में दिखाना
{
  "sideOfRoad": boolean,

  // Union field location_type can be only one of the following:
  "location": {
    object (Location)
  },
  "placeId": string
  // End of list of possible types for union field location_type.
}
फ़ील्ड
sideOfRoad

boolean

ज़रूरी नहीं. यह बताता है कि इस वेपॉइंट की जगह को प्राथमिकता दी गई है, ताकि वाहन को सड़क के किसी खास तरफ़ रोका जा सके. जब आप यह मान सेट करते हैं, तो मार्ग उस स्थान से गुजरेगा ताकि वाहन सड़क के उस किनारे पर रुक सके जिस स्थान का स्थान सड़क के बीच से पूर्वाग्रह है. यह विकल्प 'पैदल चलना' के लिए काम नहीं करता यात्रा मोड.

यूनियन फ़ील्ड location_type. किसी जगह को दिखाने के अलग-अलग तरीके. location_type इनमें से सिर्फ़ एक हो सकता है:
location

object (Location)

भौगोलिक निर्देशांक का इस्तेमाल करके तय किया गया पॉइंट, जिसमें एक वैकल्पिक शीर्षक भी शामिल होता है.

placeId

string

वेपॉइंट से जुड़ा लोकप्रिय जगह का आईडी.

जगह

जगह को इनकैप्सुलेट करता है (भौगोलिक पॉइंट और वैकल्पिक हेडिंग).

JSON के काेड में दिखाना
{
  "latLng": {
    object (LatLng)
  },
  "heading": integer
}
फ़ील्ड
latLng

object (LatLng)

वेपॉइंट के भौगोलिक निर्देशांक.

heading

integer

ट्रैफ़िक के फ़्लो की दिशा से जुड़ा कंपास हेडिंग. इस वैल्यू का इस्तेमाल सड़क के उस हिस्से के बारे में बताने के लिए किया जाता है जिसका इस्तेमाल पिकअप और ड्रॉप-ऑफ़ के लिए किया जाना है. शीर्षक का मान 0 से 360 तक हो सकता है, जहां 0 से उत्तरी दिशा की ओर जाने की आखिरी तारीख के बारे में पता चलता है, 90 शीर्षक की शुरुआत की तारीख वगैरह के बारे में बताता है.

TimeWindow

टाइम विंडो, किसी इवेंट के समय को सीमित कर देती हैं, जैसे कि विज़िट के समय पहुंचने का समय या वाहन के शुरू और खत्म होने का समय.

हार्ड टाइम विंडो की सीमाएं, startTime और endTime, इवेंट का सबसे पुराना और सबसे नया समय लागू करती हैं, जैसे कि startTime <= event_time <= endTime. सॉफ़्ट टाइम विंडो की निचली सीमा, softStartTime, इवेंट को softStartTime को या उसके बाद होने वाले इवेंट के लिए प्राथमिकता देती है. इसके लिए, इस अनुपात में यह तय किया जाता है कि इवेंट softStartTime से कितने समय पहले होगा. सॉफ़्ट टाइम विंडो की ऊपरी सीमा, softEndTime, इवेंट को softEndTime को या उससे पहले होने देने को प्राथमिकता देती है. इसके लिए, इस बात पर ध्यान दिया जाता है कि इवेंट softEndTime के बाद कितने समय बाद होगा. startTime, endTime, softStartTime, और softEndTime, ग्लोबल टाइम सीमाओं के अंदर होने चाहिए (ShipmentModel.global_start_time और ShipmentModel.global_end_time देखें) और इनके मुताबिक होना चाहिए:

  0 <= `startTime` <= `softStartTime` <= `endTime` and
  0 <= `startTime` <= `softEndTime` <= `endTime`.
JSON के काेड में दिखाना
{
  "startTime": string,
  "endTime": string,
  "softStartTime": string,
  "softEndTime": string,
  "costPerHourBeforeSoftStartTime": number,
  "costPerHourAfterSoftEndTime": number
}
फ़ील्ड
startTime

string (Timestamp format)

मुश्किल समय की विंडो शुरू होने का समय. अगर इसे सेट नहीं किया गया है, तो इसे ShipmentModel.global_start_time पर सेट कर दिया जाएगा.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

endTime

string (Timestamp format)

मुश्किल समय की अवधि खत्म होने का समय. अगर इसे सेट नहीं किया गया है, तो इसे ShipmentModel.global_end_time पर सेट कर दिया जाएगा.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

softStartTime

string (Timestamp format)

टाइम विंडो का सॉफ़्ट स्टार्ट समय.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

softEndTime

string (Timestamp format)

समय विंडो का सॉफ़्ट खत्म होने का समय.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

costPerHourBeforeSoftStartTime

number

अगर इवेंट softStartTime से पहले होता है, तो मॉडल में अन्य लागतों में हर घंटे की लागत जोड़ी जाती है. इसकी गणना इस तरह से की जाती है:

   max(0, softStartTime - t.seconds)
                          * costPerHourBeforeSoftStartTime / 3600,
t being the time of the event.

यह लागत पॉज़िटिव होनी चाहिए. साथ ही, फ़ील्ड को सिर्फ़ तब सेट किया जा सकता है, जब softStartTime सेट किया गया हो.

costPerHourAfterSoftEndTime

number

अगर इवेंट softEndTime के बाद होता है, तो मॉडल में अन्य लागत में हर घंटे की लागत को इस तरह जोड़ा जाता है:

   max(0, t.seconds - softEndTime.seconds)
                    * costPerHourAfterSoftEndTime / 3600,
t being the time of the event.

यह लागत पॉज़िटिव होनी चाहिए. साथ ही, फ़ील्ड को सिर्फ़ तब सेट किया जा सकता है, जब softEndTime सेट हो.

वाहन

शिपमेंट से जुड़ी समस्या के दौरान वाहन का मॉडल बनाता है. शिपमेंट से जुड़ी समस्या हल करने पर, इस वाहन के लिए एक रास्ता, startLocation से शुरू होगा और endLocation पर खत्म होगा. रास्ता, विज़िट का क्रम होता है (ShipmentRoute देखें).

JSON के काेड में दिखाना
{
  "displayName": string,
  "travelMode": enum (TravelMode),
  "startLocation": {
    object (LatLng)
  },
  "startWaypoint": {
    object (Waypoint)
  },
  "endLocation": {
    object (LatLng)
  },
  "endWaypoint": {
    object (Waypoint)
  },
  "startTags": [
    string
  ],
  "endTags": [
    string
  ],
  "startTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "endTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "unloadingPolicy": enum (UnloadingPolicy),
  "loadLimits": {
    string: {
      object (LoadLimit)
    },
    ...
  },
  "costPerHour": number,
  "costPerTraveledHour": number,
  "costPerKilometer": number,
  "fixedCost": number,
  "usedIfRouteIsEmpty": boolean,
  "routeDurationLimit": {
    object (DurationLimit)
  },
  "travelDurationLimit": {
    object (DurationLimit)
  },
  "routeDistanceLimit": {
    object (DistanceLimit)
  },
  "extraVisitDurationForVisitType": {
    string: string,
    ...
  },
  "breakRule": {
    object (BreakRule)
  },
  "label": string,
  "ignore": boolean,
  "travelDurationMultiple": number
}
फ़ील्ड
displayName

string

वाहन का डिसप्ले नेम, जिसे उपयोगकर्ता ने तय किया है. इसमें ज़्यादा से ज़्यादा 63 वर्ण हो सकते हैं और इसमें UTF-8 वर्णों का इस्तेमाल किया जा सकता है.

travelMode

enum (TravelMode)

यात्रा का वह मोड जो वाहन के लिए इस्तेमाल की जा सकने वाली सड़कों और उसकी स्पीड पर असर डालता है. travelDurationMultiple भी देखें.

startLocation

object (LatLng)

वह भौगोलिक जगह जहां से सामान पिक अप करने से पहले वाहन शुरू होता है. अगर जानकारी नहीं दी जाती है, तो वाहन पहले पिकअप पर शुरू किया जाएगा. अगर शिपमेंट मॉडल में अवधि और दूरी के मैट्रिक्स हैं, तो startLocation के बारे में नहीं बताया जाना चाहिए.

startWaypoint

object (Waypoint)

ऐसी भौगोलिक जगह दिखाने वाला वेपॉइंट जहां किसी शिपमेंट को पिक अप करने से पहले, गाड़ी शुरू होती है. अगर startWaypoint या startLocation, दोनों ही नहीं दिए गए हैं, तो वाहन पहले पिकअप से शुरू होगा. अगर शिपमेंट मॉडल में अवधि और दूरी के मैट्रिक्स हैं, तो startWaypoint के बारे में नहीं बताया जाना चाहिए.

endLocation

object (LatLng)

वह भौगोलिक जगह जहां वाहन आखिरी VisitRequest पूरा होने के बाद खत्म होता है. अगर जानकारी नहीं दी जाती है, तो वाहन का आखिरी VisitRequest पूरा होते ही, वाहन का ShipmentRoute बंद हो जाएगा. अगर शिपमेंट मॉडल में अवधि और दूरी के मैट्रिक्स हैं, तो endLocation के बारे में नहीं बताया जाना चाहिए.

endWaypoint

object (Waypoint)

उस भौगोलिक जगह को दिखाने वाला वेपॉइंट जहां आखिरी VisitRequest पूरा होने के बाद वाहन खत्म होता है. अगर endWaypoint या endLocation में से किसी के बारे में नहीं बताया गया है, तो वाहन का ShipmentRoute, पिछला VisitRequest पूरा होते ही बंद हो जाएगा. अगर शिपमेंट मॉडल में अवधि और दूरी के मैट्रिक्स हैं, तो endWaypoint के बारे में नहीं बताया जाना चाहिए.

startTags[]

string

वाहन के रूट की शुरुआत से जुड़े टैग के बारे में बताता है.

खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है.

endTags[]

string

वाहन के रूट के आखिर में लगे टैग के बारे में बताता है.

खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है.

startTimeWindows[]

object (TimeWindow)

टाइम विंडो, जिस दौरान वाहन अपनी शुरुआती जगह से निकल सकता है. इन्हें ग्लोबल टाइम लिमिट के अंदर होना चाहिए (ShipmentModel.global_* फ़ील्ड देखें). अगर यह जानकारी नहीं दी गई है, तो दुनिया भर के लिए तय की गई समयसीमा के अलावा, कोई सीमा तय नहीं होती है.

दोहराए जाने वाले एक ही फ़ील्ड की टाइम विंडो को अलग-अलग रखना चाहिए.इसका मतलब है कि कोई भी टाइम विंडो, किसी दूसरी टाइम विंडो के साथ ओवरलैप नहीं कर सकती या एक टाइम विंडो के बगल में नहीं होनी चाहिए. साथ ही, ये समय के हिसाब से क्रम में होनी चाहिए.

costPerHourAfterSoftEndTime और softEndTime को सिर्फ़ तब सेट किया जा सकता है, जब विंडो एक समय पर सेट हो.

endTimeWindows[]

object (TimeWindow)

टाइम विंडो, जिस दौरान वाहन अपनी मंज़िल तक पहुंच सकता है. इन्हें ग्लोबल टाइम लिमिट के अंदर होना चाहिए (ShipmentModel.global_* फ़ील्ड देखें). अगर यह जानकारी नहीं दी गई है, तो दुनिया भर के लिए तय की गई समयसीमा के अलावा, कोई सीमा तय नहीं होती है.

दोहराए जाने वाले एक ही फ़ील्ड की टाइम विंडो को अलग-अलग रखना चाहिए.इसका मतलब है कि कोई भी टाइम विंडो, किसी दूसरी टाइम विंडो के साथ ओवरलैप नहीं कर सकती या एक टाइम विंडो के बगल में नहीं होनी चाहिए. साथ ही, ये समय के हिसाब से क्रम में होनी चाहिए.

costPerHourAfterSoftEndTime और softEndTime को सिर्फ़ तब सेट किया जा सकता है, जब विंडो एक समय पर सेट हो.

unloadingPolicy

enum (UnloadingPolicy)

वाहन पर सामान को अनलोड करने की नीति लागू है.

loadLimits

map (key: string, value: object (LoadLimit))

वाहन की क्षमता (वज़न, वॉल्यूम, # पैलेट). मैप में मौजूद कुंजियां, लोड के टाइप के आइडेंटिफ़ायर हैं और ये Shipment.load_demands फ़ील्ड की कुंजियों के मुताबिक हैं. अगर कोई कुंजी इस मैप में मौजूद नहीं है, तो इससे जुड़ी क्षमता की कोई सीमा नहीं मानी जाती है.

एक ऑब्जेक्ट, जिसमें "key": value पेयर की सूची है. उदाहरण: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

costPerHour

number

वाहन के लिए शुल्क: इसमें बताई गई कुल कीमत, Shipment.penalty_cost में होनी चाहिए.

वाहन के रास्ते में हर घंटे का शुल्क. यह कीमत, रास्ते में लगने वाले कुल समय के हिसाब से लागू होती है. इसमें, यात्रा में लगने वाला समय, इंतज़ार का समय, और विज़िट का समय शामिल है. सिर्फ़ costPerTraveledHour के बजाय costPerHour का इस्तेमाल करने पर, इंतज़ार का समय बढ़ सकता है.

costPerTraveledHour

number

वाहन के रास्ते में हर घंटे की गई यात्रा का शुल्क. यह शुल्क, यात्रा में लगने वाले समय के लिए ही है (यानी कि ShipmentRoute.transitions में बताया गया यात्रा समय). इसमें इंतज़ार का समय और विज़िट का समय शामिल नहीं है.

costPerKilometer

number

वाहन के रास्ते में प्रति किलोमीटर का शुल्क. यह कीमत, ShipmentRoute.transitions में बताई गई दूरी के लिए लागू होती है. यह किसी VisitRequest की arrivalLocation से departureLocation तक तय की गई दूरी पर लागू नहीं होती.

fixedCost

number

अगर इस वाहन का इस्तेमाल शिपमेंट को हैंडल करने के लिए किया जाता है, तो तय शुल्क लागू होता है.

usedIfRouteIsEmpty

boolean

यह फ़ील्ड वाहनों पर सिर्फ़ तब लागू होता है, जब उनके रास्ते पर कोई शिपमेंट नहीं भेजा जाता. इसमें यह जानकारी मिलती है कि इस मामले में वाहन को इस्तेमाल किया गया माना जाना चाहिए या नहीं.

अगर सही है, तो वाहन अपने शुरू से आखिरी जगह तक चला जाता है, भले ही वह किसी भी शिपमेंट को सेवा न देता हो. साथ ही, इसके शुरू होने से लगने वाले समय और दूरी की लागत > साथ ही, यात्रा के आखिरी चरण को भी ध्यान में रखा जाता है.

ऐसा नहीं करने पर, यह अपनी शुरुआत से अपनी जगह तक नहीं पहुंचेगा. साथ ही, इस वाहन के लिए, breakRule या देरी (TransitionAttributes से) तय नहीं है. इस मामले में, वाहन के ShipmentRoute में, वाहन के इंडेक्स और लेबल के अलावा कोई जानकारी नहीं मिलती.

routeDurationLimit

object (DurationLimit)

यह सीमा, वाहन के रूट पर लागू होती है. दिए गए OptimizeToursResponse में, किसी वाहन के रास्ते की अवधि, उसके vehicleEndTime और vehicleStartTime के बीच का अंतर है.

travelDurationLimit

object (DurationLimit)

यह सीमा, वाहन के रास्ते की यात्रा में लगने वाले समय पर लागू होती है. किसी OptimizeToursResponse में, रास्ते की यात्रा में लगने वाला समय, इसकी सभी transitions.travel_duration का कुल योग होता है.

routeDistanceLimit

object (DistanceLimit)

यह सीमा, वाहन के रास्ते की कुल दूरी पर लागू होती है. दिए गए OptimizeToursResponse में, रास्ते की दूरी इसके सभी transitions.travel_distance_meters का योग है.

extraVisitDurationForVisitType

map (key: string, value: string (Duration format))

visitTypes स्ट्रिंग से लेकर अवधि तक के मैप के बारे में बताता है. बताए गए visitTypes के साथ विज़िट किए जाने पर लिए जाने वाले VisitRequest.duration के साथ की यह अवधि समय है. अगर costPerHour बताया गया है, तो विज़िट की यह अतिरिक्त अवधि लागत जोड़ती है. कुंजियां (यानी visitTypes) खाली स्ट्रिंग नहीं हो सकतीं.

अगर विज़िट का अनुरोध कई तरह के हैं, तो मैप में हर तरह के लिए एक अवधि जोड़ दी जाएगी.

एक ऑब्जेक्ट, जिसमें "key": value पेयर की सूची है. उदाहरण: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

breakRule

object (BreakRule)

इस वाहन के लिए ब्रेक का शेड्यूल बताता है. अगर यह खाली है, तो इस वाहन के लिए कोई ब्रेक शेड्यूल नहीं किया जाएगा.

label

string

इस वाहन के लिए एक लेबल तय करता है. जवाब में इस लेबल को, इससे जुड़े ShipmentRoute के vehicleLabel के तौर पर रिपोर्ट किया जाता है.

ignore

boolean

अगर सही है, तो usedIfRouteIsEmpty गलत होना चाहिए और इस वाहन का इस्तेमाल नहीं किया जाएगा.

अगर injectedFirstSolutionRoutes में, नज़रअंदाज़ किए गए किसी वाहन का इस्तेमाल करके शिपमेंट को भेजा जाता है, तो पहले समाधान में उसे छोड़ दिया जाता है. हालांकि, रिस्पॉन्स के तौर पर इसे बिना किसी शुल्क के पूरा किया जा सकता है.

अगर injectedSolutionConstraint में किसी नज़रअंदाज़ किए गए वाहन से शिपमेंट किया जाता है और उससे जुड़े पिकअप/डिलीवरी को वाहन में ही रखा जाना चाहिए (यानी कि लेवल RELAX_ALL_AFTER_THRESHOLD पर सेट नहीं है), तो रिस्पॉन्स में उसे छोड़ दिया जाएगा. अगर किसी शिपमेंट में allowedVehicleIndices फ़ील्ड खाली नहीं है और अनुमति वाले सभी वाहनों को अनदेखा कर दिया जाता है, तो उसे रिस्पॉन्स में छोड़ दिया जाता है.

travelDurationMultiple

number

यह एक मल्टीप्लिकेटिव फ़ैक्टर है. इसका इस्तेमाल इस वाहन से यात्रा में लगने वाले समय को बढ़ाने या कम करने के लिए किया जा सकता है. उदाहरण के लिए, इसे 2.0 पर सेट करने का मतलब है कि यह वाहन धीमा है और सामान्य वाहनों के मुकाबले, इसमें यात्रा में लगने वाला समय दोगुना है. इससे, विज़िट के कुल समय पर कोई असर नहीं पड़ता. अगर costPerHour या costPerTraveledHour बताया गया है, तो इससे लागत पर असर पड़ता है. यह [0.001, 1000.0] की रेंज में होना चाहिए. अगर इस नीति को सेट नहीं किया गया है, तो वाहन को स्टैंडर्ड माना जाता है. साथ ही, वाहन के इस गुण को 1.0 माना जाता है.

चेतावनी: इस मल्टीपल को लागू करने के बाद, यात्रा के समय को उसके नज़दीक के सेकंड में बदल दिया जाएगा. हालांकि, अंकों वाली कोई कार्रवाई करने से पहले, यात्रा के समय की वैल्यू को घटाने पर, संख्या में हुए बदलाव का असर सटीक होगा.

यहां extraVisitDurationForVisitType भी देखें.

TravelMode

यात्रा के ऐसे मोड जिनका इस्तेमाल वाहन कर सकते हैं.

ये Google Maps Platform Routes Preferred API के यात्रा मोड का एक सबसेट होना चाहिए. इसे देखें: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.

Enums
TRAVEL_MODE_UNSPECIFIED अनिर्दिष्ट यात्रा मोड, DRIVING के बराबर.
DRIVING ड्राइविंग दिशा निर्देशों के मुताबिक यात्रा का मोड (कार, ...).
WALKING पैदल चलने की दिशा के लिए यात्रा का मोड.

UnloadingPolicy

वाहन को अनलोड करने से जुड़ी नीति. यह सिर्फ़ उन शिपमेंट पर लागू होता है जिनके लिए पिक अप और डिलीवरी, दोनों मौजूद हैं.

unloadingPolicy से अलग, रास्ते पर कहीं भी दूसरे शिपमेंट मुफ़्त में भेजे जा सकते हैं.

Enums
UNLOADING_POLICY_UNSPECIFIED अनलोडिंग नीति के बारे में जानकारी नहीं दी गई है; पिक अप किए जाने के तुरंत बाद ही डिलीवरी की जानी चाहिए.
LAST_IN_FIRST_OUT डिलीवरी, पिक अप के क्रम में नहीं होनी चाहिए
FIRST_IN_FIRST_OUT डिलीवरी उसी क्रम में होनी चाहिए जिस क्रम में पिकअप की सुविधा है

LoadLimit

वाहन पर लागू होने वाली लोड सीमा के बारे में बताता है, उदाहरण के लिए "यह ट्रक सिर्फ़ 3,500 कि॰ग्रा॰ तक का वज़न ले सकता है". loadLimits देखें.

JSON के काेड में दिखाना
{
  "softMaxLoad": string,
  "costPerUnitAboveSoftMax": number,
  "startLoadInterval": {
    object (Interval)
  },
  "endLoadInterval": {
    object (Interval)
  },
  "maxLoad": string
}
फ़ील्ड
softMaxLoad

string (int64 format)

लोड की एक सामान्य सीमा. costPerUnitAboveSoftMax देखें.

costPerUnitAboveSoftMax

number

अगर इस वाहन के रास्ते में कभी भी softMaxLoad से ज़्यादा लोड हो जाता है, तो नीचे दिया गया शुल्क देना होगा (हर वाहन के लिए सिर्फ़ एक बार): (लोड - softMaxLoad) * costPerUnitAboveSoftMax. सभी लागतें जोड़ी जाती हैं और वे Shipment.penalty_cost के समान इकाई में होनी चाहिए.

startLoadInterval

object (Interval)

रूट की शुरुआत में वाहन का लोड होने में लगने वाला समय.

endLoadInterval

object (Interval)

रूट के अंत में वाहन का लोड होने का मंज़ूर किया जाने वाला इंटरवल.

maxLoad

string (int64 format)

लोड की वह ज़्यादा से ज़्यादा सीमा जिसे स्वीकार किया जा सकता है.

इंटरवल

स्वीकार की जाने वाली लोड रकम का इंटरवल.

JSON के काेड में दिखाना
{
  "min": string,
  "max": string
}
फ़ील्ड
min

string (int64 format)

कम से कम स्वीकार्य लोड. यह 0 या इससे ज़्यादा होना चाहिए. अगर दोनों के बारे में बताया गया है, तो min, max से कम होना चाहिए.

max

string (int64 format)

तय सीमा के मुताबिक लोड होने वाली फ़ाइलें. यह 0 या इससे ज़्यादा होना चाहिए. अगर यह नहीं बताया गया है, तो ज़्यादा से ज़्यादा लोड पर इस मैसेज का असर नहीं होगा. अगर दोनों के बारे में बताया गया है, तो min, max से कम होना चाहिए.

DurationLimit

वाहन के रूट की ज़्यादा से ज़्यादा अवधि तय करने वाली सीमा. यह कठोर या मुलायम हो सकता है.

सॉफ़्ट लिमिट फ़ील्ड को तय करने पर, सॉफ़्ट मैक्स थ्रेशोल्ड और उससे जुड़ी लागत, दोनों को एक साथ तय किया जाना चाहिए.

JSON के काेड में दिखाना
{
  "maxDuration": string,
  "softMaxDuration": string,
  "quadraticSoftMaxDuration": string,
  "costPerHourAfterSoftMax": number,
  "costPerSquareHourAfterQuadraticSoftMax": number
}
फ़ील्ड
maxDuration

string (Duration format)

हार्ड लिमिट की वजह से, अवधि को ज़्यादा से ज़्यादा समय में सीमित किया जा सकता है.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

softMaxDuration

string (Duration format)

अस्थायी सीमा, अधिकतम अवधि सीमा लागू नहीं करती, लेकिन उल्लंघन करने पर रूट के लिए शुल्क देना पड़ता है. यह लागत, उसी इकाई के साथ मॉडल में तय की गई अन्य लागतों को जोड़ देती है.

अगर तय किया गया हो, तो softMaxDuration की वैल्यू शून्य से कम होनी चाहिए. अगर maxDuration भी तय किया गया है, तो softMaxDuration को maxDuration से कम होना चाहिए.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

quadraticSoftMaxDuration

string (Duration format)

अस्थायी सीमा, अधिकतम अवधि सीमा को लागू नहीं करने पर, लेकिन इसका उल्लंघन करने पर रूट की लागत आती है, जो कि कुल समय में एक वर्गाकार होती है. यह लागत, उसी इकाई के साथ मॉडल में तय की गई अन्य लागतों को जोड़ देती है.

अगर तय किया गया हो, तो quadraticSoftMaxDuration की वैल्यू शून्य से कम होनी चाहिए. अगर maxDuration भी तय किया गया है, तो quadraticSoftMaxDuration का मान maxDuration से कम होना चाहिए. साथ ही, अंतर एक दिन से ज़्यादा का नहीं होना चाहिए:

maxDuration - quadraticSoftMaxDuration <= 86400 seconds

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

costPerHourAfterSoftMax

number

softMaxDuration थ्रेशोल्ड का उल्लंघन होने पर हर घंटे की लागत. अगर अवधि, थ्रेशोल्ड से कम है, तो अतिरिक्त लागत 0 होगी. ऐसा न होने पर, लागत इस तरह की अवधि पर निर्भर करेगी:

  costPerHourAfterSoftMax * (duration - softMaxDuration)

लागत गैर-ऋणात्मक होनी चाहिए.

costPerSquareHourAfterQuadraticSoftMax

number

quadraticSoftMaxDuration थ्रेशोल्ड का उल्लंघन होने पर हर वर्ग घंटे की लागत.

अगर अवधि, थ्रेशोल्ड से कम है, तो अतिरिक्त लागत 0 होगी. ऐसा न होने पर, लागत इस तरह की अवधि पर निर्भर करेगी:

  costPerSquareHourAfterQuadraticSoftMax *
  (duration - quadraticSoftMaxDuration)^2

लागत गैर-ऋणात्मक होनी चाहिए.

DistanceLimit

तय की गई ज़्यादा से ज़्यादा दूरी तय करने वाली सीमा. यह कठोर या मुलायम हो सकता है.

अगर सॉफ़्ट लिमिट तय की गई है, तो softMaxMeters और costPerKilometerAboveSoftMax, दोनों एट्रिब्यूट की वैल्यू दी जानी चाहिए. साथ ही, वैल्यू शून्य से कम होनी चाहिए.

JSON के काेड में दिखाना
{
  "maxMeters": string,
  "softMaxMeters": string,
  "costPerKilometerAboveSoftMax": number
}
फ़ील्ड
maxMeters

string (int64 format)

ज़्यादा से ज़्यादा मीटर में दूरी को सीमित करने वाली हार्ड लिमिट. वैल्यू की सीमा शून्य से कम होनी चाहिए.

softMaxMeters

string (int64 format)

ऐसी सॉफ़्ट लिमिट, जिससे दूरी की ज़्यादा से ज़्यादा सीमा लागू नहीं होती. हालांकि, इसका उल्लंघन होने पर कीमत बढ़ जाती है. इस वजह से, मॉडल में बताई गई कीमत की वैल्यू, डिवाइस की यूनिट के हिसाब से बढ़ जाती है.

अगर तय किया गया softMaxMeters, maxMeters से कम होना चाहिए, तो वह नेगेटिव नहीं होना चाहिए.

costPerKilometerAboveSoftMax

number

दूरी softMaxMeters की सीमा से ज़्यादा होने पर हर किलोमीटर की लागत. अगर दूरी, तय सीमा से कम है, तो अतिरिक्त लागत 0 होगी. अगर ऐसा नहीं है, तो लागत का पता लगाने के लिए इस्तेमाल किया जाने वाला फ़ॉर्मूला इस तरह है:

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

लागत गैर-ऋणात्मक होनी चाहिए.

BreakRule

वाहन के लिए टाइम ब्रेक जनरेट करने के नियम. जैसे, लंच ब्रेक. ब्रेक, लगातार चलने वाली वह अवधि होती है जिसमें वाहन अपनी मौजूदा पोज़िशन पर कोई गतिविधि नहीं करता. साथ ही, वह किसी भी जगह विज़िट नहीं कर सकता. ब्रेक मिल सकता है:

  • दो विज़िट के बीच की यात्रा के दौरान (जिसमें विज़िट से ठीक पहले या ठीक बाद का समय शामिल होता है, लेकिन विज़िट के बीच का समय शामिल नहीं होता), और इस मामले में यह विज़िट के बीच का ट्रांज़िट समय बढ़ाता है,
  • या वाहन को चालू किए जाने से पहले (हो सकता है कि ब्रेक के बीच में वाहन चालू न हो). इस स्थिति में, गाड़ी के शुरू होने के समय पर इसका कोई असर नहीं पड़ता.
  • या वाहन खत्म होने के बाद (ठीक इसी तरह, वाहन खत्म होने के समय के साथ).
JSON के काेड में दिखाना
{
  "breakRequests": [
    {
      object (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
फ़ील्ड
breakRequests[]

object (BreakRequest)

ब्रेक का क्रम. BreakRequest मैसेज देखें.

frequencyConstraints[]

object (FrequencyConstraint)

कई FrequencyConstraint लागू हो सकती हैं. उन सभी को इस BreakRule के BreakRequest से संतुष्ट होना चाहिए. FrequencyConstraint देखें.

BreakRequest

हर वाहन पर लागू होने वाले ब्रेक के क्रम (जैसे, उनका नंबर और क्रम) के बारे में पहले से पता होना चाहिए. दोहराए गए BreakRequest उसी क्रम को तय करते हैं जिसमें वे होने चाहिए. उनकी टाइम विंडो (earliestStartTime / latestStartTime) ओवरलैप हो सकती हैं, लेकिन वे ऑर्डर के हिसाब से होनी चाहिए (इसे चुना गया है).

JSON के काेड में दिखाना
{
  "earliestStartTime": string,
  "latestStartTime": string,
  "minDuration": string
}
फ़ील्ड
earliestStartTime

string (Timestamp format)

ज़रूरी है. ब्रेक की शुरुआत पर लोअर बाउंड (शामिल)

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

latestStartTime

string (Timestamp format)

ज़रूरी है. ब्रेक की शुरुआत पर ऊपरी सीमा (शामिल).

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

minDuration

string (Duration format)

ज़रूरी है. ब्रेक लेने की कम से कम अवधि. पॉज़िटिव होना चाहिए.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

FrequencyConstraint

ब्रेक की कम से कम फ़्रीक्वेंसी लागू करके, ऊपर बताए गए ब्रेक की फ़्रीक्वेंसी और अवधि को सीमित किया जा सकता है. जैसे, "हर 12 घंटे में कम से कम एक घंटे का ब्रेक होना चाहिए". यह मानते हुए कि "12 घंटे की किसी भी स्लाइडिंग टाइम विंडो में, कम से कम एक घंटे का कम से कम एक ब्रेक होना चाहिए". इसका उदाहरण इस तरह होगा: FrequencyConstraint:

{
   minBreakDuration { seconds: 3600 }         # 1 hour.
   maxInterBreakDuration { seconds: 39600 }  # 11 hours (12 - 1 = 11).
}

सलूशन में ब्रेक का समय और अवधि, BreakRequest में पहले से तय की गई टाइम विंडो और कम से कम समयावधि के साथ-साथ इन सभी पाबंदियों को ध्यान में रखकर तय की जाएगी.

FrequencyConstraint व्यावहारिक तौर पर ऐसे ब्रेक पर लागू हो सकता है जो लगातार नहीं बदलते हैं. उदाहरण के लिए, नीचे दिया गया शेड्यूल "हर 12 घंटे में 1 घंटा" के मुताबिक है उदाहरण:

  04:00 vehicle start
   .. performing travel and visits ..
  09:00 1 hour break
  10:00 end of the break
   .. performing travel and visits ..
  12:00 20-min lunch break
  12:20 end of the break
   .. performing travel and visits ..
  21:00 1 hour break
  22:00 end of the break
   .. performing travel and visits ..
  23:59 vehicle end
JSON के काेड में दिखाना
{
  "minBreakDuration": string,
  "maxInterBreakDuration": string
}
फ़ील्ड
minBreakDuration

string (Duration format)

ज़रूरी है. इस कंस्ट्रेंट के लिए ब्रेक की कम से कम अवधि. नेगेटिव नहीं. FrequencyConstraint का ब्यौरा देखें.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

maxInterBreakDuration

string (Duration format)

ज़रूरी है. रास्ते में किसी भी समय के लिए ज़्यादा से ज़्यादा अवधि जिसमें duration >= minBreakDuration का कम से कम कुछ हिस्सा ब्रेक शामिल न हो. पॉज़िटिव होना चाहिए.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

DurationDistanceMatrix

इस सेटिंग से, यात्रा और वाहन के शुरू होने की जगहों से लेकर यात्रा और वाहन के खत्म होने की जगहों तक, कुल समय और दूरी की जानकारी मिलती है.

JSON के काेड में दिखाना
{
  "rows": [
    {
      object (Row)
    }
  ],
  "vehicleStartTag": string
}
फ़ील्ड
rows[]

object (Row)

कुल समय और दूरी के आव्यूह की लाइनों के बारे में बताता है. इसमें ShipmentModel.duration_distance_matrix_src_tags जितने चाहें उतने एलिमेंट होने चाहिए.

vehicleStartTag

string

यह तय करने वाला टैग कि किन वाहनों पर यह अवधि और दूरी की मैट्रिक्स लागू होती है. अगर इस फ़ील्ड को खाली छोड़ा जाता है, तो यह सभी गाड़ियों पर लागू होता है. साथ ही, इसमें सिर्फ़ एक मैट्रिक्स हो सकता है.

हर वाहन के स्टार्ट होने का समय, एक ही मैट्रिक्स से मेल खाना चाहिए. इसका मतलब है कि startTags फ़ील्ड में से किसी एक फ़ील्ड को, मैट्रिक्स के vehicleStartTag और सिर्फ़ उस मैट्रिक्स से मेल खाना चाहिए.

सभी मैट्रिक्स का vehicleStartTag अलग-अलग होना चाहिए.

पंक्ति

कुल समय और दूरी के आव्यूह की जानकारी देता है.

JSON के काेड में दिखाना
{
  "durations": [
    string
  ],
  "meters": [
    number
  ]
}
फ़ील्ड
durations[]

string (Duration format)

किसी लाइन के लिए, कुल समय की वैल्यू. इसमें ShipmentModel.duration_distance_matrix_dst_tags जितने चाहें उतने एलिमेंट होने चाहिए.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

meters[]

number

किसी लाइन के लिए दूरी की वैल्यू. अगर कोई लागत या कंस्ट्रेंट मॉडल में दूरी का संदर्भ नहीं देता है, तो इसे खाली छोड़ा जा सकता है; ऐसा नहीं होने पर, उसमें durations जितने चाहें उतने एलिमेंट होने चाहिए.

TransitionAttributes

किसी रूट पर लगातार दो विज़िट के बीच ट्रांज़िशन एट्रिब्यूट बताता है. एक ही ट्रांज़िशन पर कई TransitionAttributes लागू हो सकते हैं: इस मामले में, सभी अतिरिक्त शुल्क जुड़ जाते हैं और सबसे सख्त पाबंदी या सीमा लागू होती है (सामान्य "AND" सिमैंटिक का इस्तेमाल करके).

JSON के काेड में दिखाना
{
  "srcTag": string,
  "excludedSrcTag": string,
  "dstTag": string,
  "excludedDstTag": string,
  "cost": number,
  "costPerKilometer": number,
  "distanceLimit": {
    object (DistanceLimit)
  },
  "delay": string
}
फ़ील्ड
srcTag

string

(src->dst) ट्रांज़िशन के सेट को तय करने वाले टैग, इन एट्रिब्यूट पर लागू होते हैं.

किसी सोर्स विज़िट या वाहन के शुरू होने का समय, अगर उसके VisitRequest.tags या Vehicle.start_tags में srcTag है या excludedSrcTag शामिल नहीं है, तो उससे मैच होता है. यह इस बात पर निर्भर करता है कि इन दोनों फ़ील्ड में से कौनसा फ़ील्ड खाली नहीं है.

excludedSrcTag

string

srcTag देखें. srcTag और excludedSrcTag में से कोई एक खाली नहीं होना चाहिए.

dstTag

string

किसी डेस्टिनेशन विज़िट या वाहन के एंड का मिलान अगर उसके VisitRequest.tags या Vehicle.end_tags में या तो dstTag है या उसमें excludedDstTag नहीं है (इस आधार पर कि इन दोनों फ़ील्ड में से कौनसा फ़ील्ड खाली नहीं है), तो उससे मेल खाता है.

excludedDstTag

string

dstTag देखें. dstTag और excludedDstTag में से कोई एक खाली नहीं होना चाहिए.

cost

number

इस ट्रांज़िशन की लागत तय करता है. यह उसी इकाई में होती है जिसमें मॉडल की अन्य सभी लागतें शामिल होती हैं. साथ ही, यह नेगेटिव नहीं होना चाहिए. इसे अन्य सभी मौजूदा लागतों पर लागू किया जाता है.

costPerKilometer

number

इस बदलाव के दौरान तय की गई दूरी के लिए, लागू की गई हर किलोमीटर की लागत की जानकारी देता है. यह वाहनों पर मौजूद किसी भी Vehicle.cost_per_kilometer में जुड़ जाता है.

distanceLimit

object (DistanceLimit)

यह बदलाव करते समय तय की गई दूरी की जानकारी देता है.

2021/06 से, सिर्फ़ अस्थायी सीमाओं का इस्तेमाल किया जा सकता है.

delay

string (Duration format)

इस ट्रांज़िशन के दौरान हुई देरी के बारे में बताता है.

यह देरी हमेशा स्रोत विज़िट खत्म होने के बाद और गंतव्य विज़िट शुरू होने से पहले होती है.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

ShipmentTypeIncompatibility

शिपिंग के तरीके के आधार पर, शिपमेंट के बीच सही तरीके से काम नहीं करता है. 'कम्पैटिबिलिटी मोड' के आधार पर, एक ही रास्ते पर गलत शिपिंग वाले प्रॉडक्ट नहीं दिखेंगे.

JSON के काेड में दिखाना
{
  "types": [
    string
  ],
  "incompatibilityMode": enum (IncompatibilityMode)
}
फ़ील्ड
types[]

string

असंगत प्रकारों की सूची. दो शिपमेंट, जिनके shipment_types अलग हैं, वे "काम नहीं करते" हैं.

incompatibilityMode

enum (IncompatibilityMode)

मोड, साथ काम नहीं करता था.

IncompatibilityMode

ऐसे मोड जिनसे यह तय होता है कि एक ही रास्ते पर, साथ काम न करने वाले शिपमेंट के दिखने पर पाबंदी कैसे लगाई जाए.

Enums
INCOMPATIBILITY_MODE_UNSPECIFIED साथ काम नहीं करने वाला मोड सेट नहीं किया गया है. इस वैल्यू का इस्तेमाल कभी नहीं किया जाना चाहिए.
NOT_PERFORMED_BY_SAME_VEHICLE इस मोड में, अलग-अलग तरह के दो शिपमेंट एक ही वाहन का इस्तेमाल नहीं कर सकते.
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY

NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY के साथ काम न करने वाले मोड के साथ काम न करने वाले दो शिपमेंट के लिए:

  • अगर दोनों, सिर्फ़ पिकअप (डिलीवरी के लिए नहीं) या डिलीवरी (पिकअप नहीं) हैं, तो एक ही वाहन को एक साथ शेयर नहीं किया जा सकता.
  • अगर एक शिपमेंट की डिलीवरी होती है और दूसरा पिकअप होता है, तो दोनों शिपमेंट एक ही वाहन का इस्तेमाल कर सकते हैं. हालांकि, ऐसा तब ही किया जा सकता है, जब पुराने शिपमेंट को पिक अप करने से पहले उसकी डिलीवरी हो जाए.

ShipmentTypeRequirement

शिपमेंट टाइप के आधार पर, शिपमेंट के लिए ज़रूरी शर्तें तय करता है. ज़रूरी शर्तों की जानकारी, 'ज़रूरी शर्तें' मोड से तय होती है.

JSON के काेड में दिखाना
{
  "requiredShipmentTypeAlternatives": [
    string
  ],
  "dependentShipmentTypes": [
    string
  ],
  "requirementMode": enum (RequirementMode)
}
फ़ील्ड
requiredShipmentTypeAlternatives[]

string

ऐसे वैकल्पिक शिपमेंट टाइप की सूची जो dependentShipmentTypes के मुताबिक ज़रूरी हैं.

dependentShipmentTypes[]

string

dependentShipmentTypes फ़ील्ड में एक टाइप वाले सभी शिपमेंट के लिए, एक ही रास्ते पर जाने के लिए कम से कम requiredShipmentTypeAlternatives टाइप का एक शिपमेंट होना ज़रूरी है.

ध्यान दें: ज़रूरतों की चेन की अनुमति नहीं है, जैसे कि shipmentType खुद पर निर्भर हो.

requirementMode

enum (RequirementMode)

मोड को ज़रूरत के हिसाब से लागू किया गया.

RequirementMode

किसी रास्ते पर डिपेंडेंट शिपमेंट के दिखने के तरीके तय करने वाले मोड.

Enums
REQUIREMENT_MODE_UNSPECIFIED ज़रूरी शर्तों वाला मोड तय नहीं है. इस वैल्यू का इस्तेमाल कभी नहीं किया जाना चाहिए.
PERFORMED_BY_SAME_VEHICLE इस मोड में, सभी "निर्भर" हर शिपमेंट के लिए, एक ही वाहन शेयर करना ज़रूरी है. यह ज़रूरी है कि प्रॉडक्ट, कम से कम एक "ज़रूरी" प्रॉडक्ट के साथ शेयर किया गया हो शिपमेंट.
IN_SAME_VEHICLE_AT_PICKUP_TIME

IN_SAME_VEHICLE_AT_PICKUP_TIME मोड के साथ, सभी "निर्भर" शिपमेंट में कम से कम एक "ज़रूरी" लेबल होना चाहिए पिकअप के समय वाहन में मौजूद सामान की शिपिंग होनी चाहिए.

"डिपेंडेंट" इसलिए, शिपमेंट से जुड़े सुझाव देने के लिए, इनमें से कोई एक शर्त पूरी होनी चाहिए:

  • सिर्फ़ डिलीवरी के लिए "ज़रूरी" शिपिंग के बाद, उसे रूट पर डिलीवर किया गया या
  • "ज़रूरी" शिपमेंट को रास्ते से पहले पिक अप कर लिया गया हो, और अगर "ज़रूरी" हो शिपमेंट की डिलीवरी हो चुकी है, इसलिए यह डिलीवरी "डिपेंडेंट" के बाद ही की जानी चाहिए शिपमेंट को पिक अप करते हैं.
IN_SAME_VEHICLE_AT_DELIVERY_TIME "निर्भर" को छोड़कर, पहले की तरह ही शिपमेंट में "ज़रूरी" शामिल होना चाहिए डिलीवरी के समय आइटम को उसकी गाड़ी से शिप किया जा सकता है.

PrecedenceRule

दो इवेंट के बीच प्राथमिकता का एक नियम (हर इवेंट पिकअप या शिपमेंट की डिलीवरी है): "दूसरा" इवेंट, "पहले" के बाद कम से कम offsetDuration पर शुरू होना चाहिए शुरू हो गया है.

कई प्राथमिकताएं एक ही (या मिलते-जुलते) इवेंट से जुड़ी हो सकती हैं, जैसे कि "A की डिलीवरी के बाद, B का पिक अप किया जाएगा" और "C का पिक अप B के पिकअप के बाद होता है".

इसके अलावा, प्राथमिकता सिर्फ़ तब लागू होती है, जब दोनों शिपमेंट हो जाते हैं और उन्हें अनदेखा कर दिया जाता है.

JSON के काेड में दिखाना
{
  "firstIsDelivery": boolean,
  "secondIsDelivery": boolean,
  "offsetDuration": string,
  "firstIndex": integer,
  "secondIndex": integer
}
फ़ील्ड
firstIsDelivery

boolean

बताता है कि क्या "पहला" इवेंट एक डिलीवरी है.

secondIsDelivery

boolean

यह बताता है कि "दूसरा" इवेंट एक डिलीवरी है.

offsetDuration

string (Duration format)

"पहले" के बीच का ऑफ़सेट और "दूसरा" इवेंट. यह नकारात्मक हो सकता है.

सेकंड में कुल नौ दशमलव अंक, जो 's' पर खत्म होते हैं. उदाहरण: "3.5s".

firstIndex

integer

"फ़र्स्ट" का शिपमेंट इंडेक्स इवेंट. इस फ़ील्ड के बारे में बताना ज़रूरी है.

secondIndex

integer

"सेकंड" का शिपमेंट इंडेक्स इवेंट. इस फ़ील्ड के बारे में बताना ज़रूरी है.