मकसद

मकसद की प्रॉपर्टी में, `ShipmentModel` में `objectives` और `objectives` में `type` और `weight` शामिल हैं

मकसद ऐसे पैरामीटर होते हैं जिनका इस्तेमाल, लागत मॉडल से खास लागत पैरामीटर देने के बजाय, ऑप्टिमाइज़ेशन के बड़े लक्ष्यों को तय करने के लिए किया जा सकता है.

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

लक्ष्यों का इस्तेमाल करके, अपने रूट प्लान पर इन चीज़ों के असर को कंट्रोल किया जा सकता है:

  • आपके रास्तों की कुल यात्रा में लगने वाला समय या दूरी.
  • सभी वाहनों के काम करने का कुल समय.
  • इस्तेमाल किए गए वाहनों की कुल संख्या.

प्रॉपर्टी

objectives प्रॉपर्टी, Objective मैसेज टाइप का कलेक्शन है. यह ShipmentModel में मौजूद होता है. हर Objective, ऑप्टिमाइज़ेशन के किसी खास लक्ष्य के बारे में बताता है. इसमें यहां दी गई टेबल में मौजूद फ़ील्ड शामिल होते हैं:

फ़ील्ड टाइप ब्यौरा
type Enum यह पहले से तय किए गए ऑप्टिमाइज़ेशन टारगेट के बारे में बताता है. इन वैल्यू का इस्तेमाल किया जा सकता है:
  • DEFAULT: यह डिफ़ॉल्ट तौर पर सेट की गई लागत का इस्तेमाल करता है, ताकि बेसलाइन समाधान उपलब्ध कराया जा सके. इसका मतलब है कि यह समाधान, किसी लक्ष्य को पूरा करने के लिए बहुत ज़्यादा वैल्यू का इस्तेमाल नहीं करता. DEFAULT को उन अनुरोधों में अपने-आप जोड़ दिया जाता है जिनमें कोई मकसद शामिल होता है. इसे 1.0 के weight के साथ जोड़ा जाता है. अगर आपने इस लक्ष्य को अपने अनुरोध में शामिल किया है, तो समाधान में आपकी बताई गई weight का इस्तेमाल किया जाएगा.
  • MIN_DISTANCE: इससे तय की गई कुल दूरी कम हो जाती है.
  • MIN_WORKING_TIME: इससे सभी वाहनों के लिए, काम करने का कुल समय कम हो जाता है.
  • MIN_TRAVEL_TIME: इससे सभी वाहनों के लिए, यात्रा में लगने वाला कुल समय कम हो जाता है.
  • MIN_NUM_VEHICLES: इस्तेमाल की जाने वाली गाड़ियों की संख्या कम करता है.
weight डबल इससे इस लक्ष्य की अहमियत का पता चलता है. एक से ज़्यादा मकसद इस्तेमाल करते समय, weight वैल्यू से यह कंट्रोल किया जाता है कि यह खास मकसद, अन्य मकसद की तुलना में पूरे रूट ऑप्टिमाइज़ेशन पर कितना असर डालता है. यह कोई भी नॉन-नेगेटिव नंबर हो सकता है. साथ ही, यह ज़रूरी नहीं है कि इसका योग 1 हो. डिफ़ॉल्ट वैल्यू 1.0 है.

उदाहरण

इस सेक्शन में, दो तरह के उदाहरण दिए गए हैं:

  • objectives कलेक्शन के स्ट्रक्चर को दिखाने वाला कोड सैंपल.
  • अनुरोध का ऐसा उदाहरण जिसमें objectives अरे शामिल हो.

कोड सैंपल

यहां दिए गए उदाहरण में, objectives का स्ट्रक्चर दिखाया गया है:

"objectives": [
  {
    "type": "OBJECTIVE_TYPE",
    "weight": WEIGHT
  }
]

अनुरोध का उदाहरण

यहां दिए गए उदाहरण में, optimizeTours की बुनियादी संरचना दिखाई गई है. इसमें कई लक्ष्यों को शामिल किया गया है. साथ ही, इसमें बताया गया है कि MIN_TRAVEL_TIME, MIN_WORKING_TIME से तीन गुना ज़्यादा ज़रूरी है.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME",
        "weight": 3.0
      },
      {
        "type": "MIN_WORKING_TIME"
      }
    ]
  }
}

लागत मॉडल जनरेट करना

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

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

इस मोड का इस्तेमाल करके अनुरोध भेजने पर, यह होता है:

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

अनुरोध का उदाहरण

इस उदाहरण में, MIN_TRAVEL_TIME ऑब्जेक्टिव और TRANSFORM_AND_RETURN_REQUEST मोड का इस्तेमाल करके किया गया अनुरोध दिखाया गया है:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME"
      }
    ]
  },
  "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
}

जवाब का उदाहरण

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

{
  "processedRequest": {
    "model": {
      "shipments": [
        {
          "pickups": [
            {
              "arrivalLocation": {
                "latitude": 37.425062610009959,
                "longitude": -122.09535511930135
              }
            }
          ],
          "deliveries": [
            {
              "arrivalLocation": {
                "latitude": 37.424215032060211,
                "longitude": -122.09526063135228
              }
            }
          ]
        }
      ],
      "vehicles": [
        {
          "travelMode": "DRIVING",
          "costPerHour": 30,
          "costPerTraveledHour": 330,
          "costPerKilometer": 0.2
        }
      ],
      "objectives": [
        {
          "type": "MIN_TRAVEL_TIME"
        }
      ]
    },
    "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
  }
}