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 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण के लिए: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

globalEndTime

string (Timestamp format)

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

आरएफ़सी3339 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण के लिए: "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 तक का रास्ता तय करता है. इसके लिए, मैट्रिक "fast" का इस्तेमाल किया जाता है.
  • एक वाहन, locB से अपना रास्ता शुरू करता है और locB पर खत्म करता है. इसके लिए, मैट्रिक "slow" का इस्तेमाल किया जाता है.
  • एक वाहन 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)), मैट्रिक i में टैग durationDistanceMatrixSrcTags(j) से टैग 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", "volume_gallons", "pallet_count" वगैरह. अगर कोई दिया गया कुंजी मैप में नहीं दिखता है, तो उससे जुड़े लोड को शून्य माना जाता है.

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

allowedVehicleIndices[]

integer

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

costsPerVehicle[]

number

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

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

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

costsPerVehicleIndices[]

integer

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

pickupToDeliveryAbsoluteDetourLimit

string (Duration format)

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

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

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

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

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

pickupToDeliveryTimeLimit

string (Duration format)

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

सेकंड में कुल अवधि, जिसमें दशमलव के बाद नौ अंक हो सकते हैं. यह अवधि '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

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

उदाहरण के लिए, मान लें कि पिक अप के चुने गए विकल्प से, डिलीवरी के चुने गए विकल्प तक, सीधे पहुंचने में कम से कम समय लगता है. इसके बाद, 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 पर या उसके बाद होना चाहिए. इसके लिए, इवेंट के शुरू होने से सॉफ्टStartTime के बीच के समय के हिसाब से लागत लगाई जाती है. सॉफ़्ट टाइम विंडो की ऊपरी सीमा, 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 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण के लिए: "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 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण: "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),
  "routeModifiers": {
    object (RouteModifiers)
  },
  "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 भी देखें.

routeModifiers

object (RouteModifiers)

शर्तों का एक सेट, जो दिए गए वाहन के लिए रास्तों की गणना के तरीके को प्रभावित करती है.

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 पैदल चलने के निर्देशों से जुड़ा यात्रा मोड.
TRUCK ट्रक से यात्रा करना. इस मोड में शारीरिक और कानूनी पाबंदियां लागू होंगी.

RouteModifiers

यह नीति, वाहन के रास्तों का हिसाब लगाते समय, वैकल्पिक शर्तों के सेट को एनकैप्सुलेट करती है. यह सुविधा Google Maps Platform Routes Preferred API में मौजूद RouteModifiers की तरह ही है. इसे देखें: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteModifiers.

JSON के काेड में दिखाना
{
  "vehicleInfo": {
    object (VehicleInfo)
  }
}
फ़ील्ड
vehicleInfo

object (VehicleInfo)

वाहन की जानकारी देती है.

VehicleInfo

इसमें वाहन की जानकारी होती है, जैसे कि ट्रक की जानकारी.

JSON के काेड में दिखाना
{
  "totalAxleCount": integer,
  "totalHeightMm": string,
  "totalLengthMm": string,
  "totalWidthMm": string,
  "totalWeightKg": string,
  "trailerInfo": [
    {
      object (TrailerInfo)
    }
  ],
  "hazardousGoodsTypes": [
    enum (HazardousGoodsType)
  ]
}
फ़ील्ड
totalAxleCount

integer

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

totalHeightMm

string (int64 format)

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

totalLengthMm

string (int64 format)

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

totalWidthMm

string (int64 format)

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

totalWeightKg

string (int64 format)

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

trailerInfo[]

object (TrailerInfo)

यह सिर्फ़ TRUCK के यात्रा मोड पर लागू होता है.

hazardousGoodsTypes[]

enum (HazardousGoodsType)

अगर वाहन में खतरनाक सामग्री ले जाई जाती है, तो उसकी सूची.

TrailerInfo

वाहन से जुड़े अलग-अलग ट्रेलर के बारे में जानकारी. ट्रकिंग के लिए, किसी भी ट्रेलर की लंबाई की जानकारी देना ज़रूरी है. कुल एट्रिब्यूट में, किसी भी ट्रेलर के एट्रिब्यूट शामिल होने चाहिए. उदाहरण के लिए, totalHeightMm हमेशा trailerInfo.height_mm से ज़्यादा या उसके बराबर होना चाहिए.

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

string (int64 format)

ट्रेलर की लंबाई.

HazardousGoodsType

अलग-अलग तरह के खतरनाक पदार्थ.

Enums
HAZARDOUS_GOODS_TYPE_UNSPECIFIED खतरनाक सामान के टाइप के बारे में नहीं बताया गया है.
EXPLOSIVES विस्फोटक सामान.
GASES गैसें.
FLAMMABLE ज्वलनशील चीज़ें.
COMBUSTIBLE ज्वलनशील सामान.
ORGANIC ऑर्गैनिक प्रॉडक्ट.
POISON ज़हरीला सामान.
RADIOACTIVE रेडियोऐक्टिव सामान.
CORROSIVE खराब सामान.
ASPIRATION_HAZARD खतरनाक सामान.
ENVIRONMENTAL_HAZARD पर्यावरण के लिए खतरनाक सामान.
OTHER अन्य तरह के सामान.

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)

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

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

  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

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

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 बाद, "दूसरे" इवेंट को शुरू करना होगा.

कई प्राथमिकताएं एक ही (या मिलते-जुलते) इवेंट से जुड़ी हो सकती हैं, जैसे कि "B का पिक अप A की डिलीवरी के बाद होता है" और "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

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