ShipmentModel

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

  • वाहनों को रूट करने की लागत (कुल समय की कुल लागत, हर यात्रा में लगने वाला खर्च, और सभी वाहनों की तय लागत).
  • खराब शिपिंग पर लगने वाले शुल्क.
  • शिपमेंट की ग्लोबल अवधि की लागत
जेएसओएन के काेड में दिखाना
{
  "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 का इस्तेमाल डिफ़ॉल्ट रूप से किया जाएगा.

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

globalEndTime

string (Timestamp format)

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

RFC3339 यूटीसी "ज़ुलु" फ़ॉर्मैट में एक टाइमस्टैंप, जिसमें नैनोसेकंड का रिज़ॉल्यूशन और नौ फ़्रैक्शनल अंक हो सकते हैं. उदाहरण: "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.
  • 1 वाहन, locA पर अपना रास्ता शुरू करता है और उसे locA पर खत्म करता है.
  • locB पर 1 पिकअप विज़िट का अनुरोध.
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.
  • 1 वाहन, जो locA से शुरू होता है और locB पर खत्म होता है. इसमें, मैट्रिक्स "तेज़" का इस्तेमाल किया जाता है.
  • 1 वाहन locB से अपना रास्ता शुरू करता है और इसे locB पर खत्म करता है. इसमें मैट्रिक्स "धीमा" का इस्तेमाल किया गया है.
  • 1 वाहन locB से अपना रास्ता शुरू करता है और इसे locB पर खत्म करता है, जिसमें मैट्रिक्स "तेज़" है.
  • locC पर 1 पिकअप विज़िट का अनुरोध.
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)), मैट्रिक्स i में टैग durationDistanceMatrixDstTags(k) वाली विज़िट के लिए durationDistanceMatrixSrcTags(j) टैग वाली विज़िट से यात्रा की अवधि (दूरी) तय करता है.

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

transitionAttributes[]

object (TransitionAttributes)

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

shipmentTypeIncompatibilities[]

object (ShipmentTypeIncompatibility)

ऐसे शिपमेंट_टाइप के सेट जिनका इस्तेमाल नहीं किया जा सकता (ShipmentTypeIncompatibility देखें).

shipmentTypeRequirements[]

object (ShipmentTypeRequirement)

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

precedenceRules[]

object (PrecedenceRule)

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

maxActiveVehicles

integer

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

शिपमेंट

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

जेएसओएन के काेड में दिखाना
{
  "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", "वॉल्यूम_गैलन", "पैलेट_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

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

जेएसओएन के काेड में दिखाना
{
  "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 मानक के मुताबिक होना चाहिए. वैल्यू, सामान्य रेंज के अंदर होनी चाहिए.

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

number

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

longitude

number

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

वेपॉइंट

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

जेएसओएन के काेड में दिखाना
{
  "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

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

जगह

जगह (भौगोलिक बिंदु और वैकल्पिक शीर्षक) को इकट्ठा करता है.

जेएसओएन के काेड में दिखाना
{
  "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`.
जेएसओएन के काेड में दिखाना
{
  "startTime": string,
  "endTime": string,
  "softStartTime": string,
  "softEndTime": string,
  "costPerHourBeforeSoftStartTime": number,
  "costPerHourAfterSoftEndTime": number
}
फ़ील्ड
startTime

string (Timestamp format)

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

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

endTime

string (Timestamp format)

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

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

softStartTime

string (Timestamp format)

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

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

softEndTime

string (Timestamp format)

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

RFC3339 यूटीसी "ज़ुलु" फ़ॉर्मैट में एक टाइमस्टैंप, जिसमें नैनोसेकंड का रिज़ॉल्यूशन और नौ फ़्रैक्शनल अंक हो सकते हैं. उदाहरण: "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 देखें).

जेएसओएन के काेड में दिखाना
{
  "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 देखें.

जेएसओएन के काेड में दिखाना
{
  "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)

लोड की ज़्यादा से ज़्यादा स्वीकार की जाने वाली संख्या.

इंटरवल

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

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

string (int64 format)

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

max

string (int64 format)

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

DurationLimit

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

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

जेएसओएन के काेड में दिखाना
{
  "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, दोनों वैल्यू नेगेटिव होनी चाहिए. साथ ही, ये नेगेटिव नहीं होनी चाहिए.

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

string (int64 format)

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

softMaxMeters

string (int64 format)

नर्म सीमा, दूरी की सीमा को लागू नहीं करती. हालांकि, उल्लंघन होने पर लागत लगती है जो मॉडल में तय की गई अन्य सभी कीमतों को जोड़ देती है.

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

costPerKilometerAboveSoftMax

number

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

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

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

BreakRule

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

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

object (BreakRequest)

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

frequencyConstraints[]

object (FrequencyConstraint)

कई FrequencyConstraint लागू हो सकते हैं. यह ज़रूरी है कि वे सभी, इस BreakRule के BreakRequest से संतुष्ट हों. FrequencyConstraint देखें.

BreakRequest

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

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

string (Timestamp format)

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

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

latestStartTime

string (Timestamp format)

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

RFC3339 यूटीसी "ज़ुलु" फ़ॉर्मैट में एक टाइमस्टैंप, जिसमें नैनोसेकंड का रिज़ॉल्यूशन और नौ फ़्रैक्शनल अंक हो सकते हैं. उदाहरण: "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
जेएसओएन के काेड में दिखाना
{
  "minBreakDuration": string,
  "maxInterBreakDuration": string
}
फ़ील्ड
minBreakDuration

string (Duration format)

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

सेकंड में दी गई अवधि, जिसमें नौ भिन्नांक हो सकते हैं. साथ ही, यह 's' पर खत्म होता है. उदाहरण: "3.5s".

maxInterBreakDuration

string (Duration format)

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

सेकंड में दी गई अवधि, जिसमें नौ भिन्नांक हो सकते हैं. साथ ही, यह 's' पर खत्म होता है. उदाहरण: "3.5s".

DurationDistanceMatrix

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

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

object (Row)

अवधि और दूरी के मैट्रिक्स की पंक्तियों को तय करता है. इसमें ShipmentModel.duration_distance_matrix_src_tags तक ज़्यादा से ज़्यादा एलिमेंट होने चाहिए.

vehicleStartTag

string

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

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

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

पंक्ति

अवधि और दूरी के मैट्रिक्स की पंक्ति दिखाता है.

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

string (Duration format)

किसी पंक्ति के लिए अवधि की वैल्यू. इसमें ShipmentModel.duration_distance_matrix_dst_tags तक ज़्यादा से ज़्यादा एलिमेंट होने चाहिए.

सेकंड में दी गई अवधि, जिसमें नौ भिन्नांक हो सकते हैं. साथ ही, यह 's' पर खत्म होता है. उदाहरण: "3.5s".

meters[]

number

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

TransitionAttributes

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

जेएसओएन के काेड में दिखाना
{
  "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/06 से, सिर्फ़ सॉफ़्ट लिमिट का इस्तेमाल किया जा सकता है.

delay

string (Duration format)

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

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

सेकंड में दी गई अवधि, जिसमें नौ भिन्नांक हो सकते हैं. साथ ही, यह 's' पर खत्म होता है. उदाहरण: "3.5s".

ShipmentTypeIncompatibility

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

जेएसओएन के काेड में दिखाना
{
  "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

शिपमेंट टाइप के आधार पर, शिपिंग के बीच की ज़रूरी शर्तों के बारे में बताता है. ज़रूरी शर्तें, ज़रूरत मोड से तय होती हैं.

जेएसओएन के काेड में दिखाना
{
  "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 से शुरू होना चाहिए.

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

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

जेएसओएन के काेड में दिखाना
{
  "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

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