Hedefler

Hedef özellikleri arasında "ShipmentModel"deki "objectives" ile "objectives"deki "type" ve "weight" yer alır.

Hedefler, maliyet modelinden belirli maliyet parametreleri sağlamak yerine üst düzey optimizasyon hedeflerini belirtmek için kullanabileceğiniz parametrelerdir.

Tek bir istekte birden fazla hedef kullanabilir ve her hedefe, genel optimizasyonu ne kadar etkileyeceğini kontrol etmek için göreceli bir ağırlık verebilirsiniz. Hedefler, tüm isteğinizi etkileyerek tüm araçlarınızı ve gönderilerinizi etkiler. Son olarak, Maliyet modeli oluşturma başlıklı makalede açıklandığı gibi, kendi maliyet modelinizin geliştirilmesine başlamak için hedefleri de kullanabilirsiniz.

Hedefleri kullanarak rota planınız üzerindeki aşağıdaki etkileri kontrol edebilirsiniz:

  • Rotalarınızın toplam seyahat süresi veya mesafesi.
  • Tüm araçlardaki toplam çalışma süresi.
  • Kullanılan toplam araç sayısı.

Özellikler

objectives özelliği, ShipmentModel içindeki Objective mesaj türlerinden oluşan bir dizidir. Her Objective, belirli bir optimizasyon hedefini tanımlar ve aşağıdaki tabloda listelenen alanları içerir:

Alan Tür Açıklama
type Enum Önceden tanımlanmış optimizasyon hedefini belirtir. Kabul edilen değerler şunlardır:
  • DEFAULT: Temel bir çözüm sağlamak için varsayılan bir maliyet grubu kullanır. Bu, çözümün bir hedefi gerçekleştirmek için aşırı değerler kullanmasını engeller. DEFAULT, hedef içeren isteklere otomatik olarak eklenir ve 1.0 weight ile birlikte eklenir. Bu hedefi isteğinize etkin bir şekilde dahil ederseniz çözüm, belirttiğiniz weight değerini kullanır.
  • MIN_DISTANCE: Katedilen toplam mesafeyi en aza indirir.
  • MIN_WORKING_TIME: Tüm araçlar için toplam çalışma süresini en aza indirir.
  • MIN_TRAVEL_TIME: Tüm araçlar için toplam seyahat süresini en aza indirir.
  • MIN_NUM_VEHICLES: Kullanılan araç sayısını en aza indirir.
weight Çift Bu hedefin göreceli önemini tanımlar. Birden fazla hedef kullanıldığında weight değeri, bu hedefin diğerlerine kıyasla genel rota optimizasyonunu ne kadar etkilediğini kontrol eder. Bu değer, negatif olmayan herhangi bir sayı olabilir ve toplamı 1 olmak zorunda değildir. Varsayılan değer 1.0'dır.

Örnekler

Bu bölümde iki tür örnek ele alınmaktadır:

  • objectives dizisinin yapısını gösteren bir kod örneği.
  • objectives dizisini içeren bir istek örneği.

Kod örnekleri

Aşağıdaki örnekte objectives yapısı gösterilmektedir:

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

İstek örneği

Aşağıdaki örnekte, birden fazla hedef içeren temel bir optimizeTours isteğinin yapısı gösterilmektedir. Burada MIN_TRAVEL_TIME, MIN_WORKING_TIME'den 3 kat daha önemlidir.

{
  "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"
      }
    ]
  }
}

Maliyet modeli oluşturma

Hedefler, optimizasyon hedeflerini belirlemenin hızlı bir yoludur ancak bazı durumlarda tek başına yeterince spesifik olmayabilir. Tam yönlendirme hedeflerinize ulaşmak için yalnızca maliyet modeli parametreleri aracılığıyla kullanılabilen ayrıntılı kontrole ihtiyacınız olabilir.

İsteğinize hedefler ekleyerek kendi maliyet modelinizi geliştirmeye başlayabilir, ardından TRANSFORM_AND_RETURN_REQUEST çözme modunu kullanarak isteğinizdeki hedefleri maliyet modeli parametrelerine dönüştürebilirsiniz.

Bu çözüm modunu kullanarak istek gönderdiğinizde şunlar olur:

  • API, hedeflerinizi maliyet modeli parametrelerine dönüştürür ve bunları processedRequest olarak döndürür. Ardından, rota planınızı hassas bir şekilde düzenlemek için maliyet modeli parametrelerini gerektiği gibi ayarlayabilirsiniz.
  • Birden fazla hedef kullanırken API, tüm hedeflerinizin maliyetlerini birleştirir ve bunları kendi ağırlıklarına göre ölçeklendirir.
  • API, size optimize edilmiş bir rota sağlamadığından, yalnızca hedefleri maliyet modeli parametrelerine dönüştürdüğünden bu istek için faturalandırılmazsınız.

Örnek istek

Aşağıdaki örnekte, MIN_TRAVEL_TIME hedefi ve TRANSFORM_AND_RETURN_REQUEST çözüm modunu kullanan bir istek gösterilmektedir:

{
  "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"
}

Örnek yanıt

Aşağıda, önceki isteğe karşılık gelen yanıt verilmiştir. Bu yanıt, hem oluşturulan maliyet modeli parametrelerini hem de referans için orijinal hedefi içerir.

{
  "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"
  }
}