Yükleme maliyetleriyle birlikte istekte bulunma

Optimizasyon aracının, ziyaretler arasında araçlarınızın taşıdığı yükü dikkate alması için yük maliyetleriyle ilgili bir istekte bulunun. Oluşan maliyet, hem taşınan ShipmentRoute.VehicleLoad miktarına hem de geçişin mesafesine veya süresine (sırasıyla cost_per_kilometer veya cost_per_traveled_hour kullanılarak) bağlıdır.

Yükleme maliyetleri içeren minimum örnek istek

Yükleme maliyeti içeren bir isteğin kısmi örneğini aşağıda bulabilirsiniz. Bu örnekte, tek bir araç toplamda en fazla 1.000 kg weightKg yük taşıyabilir. Taşınan weightKg yük 500 kg'ı aştığında kilometre başına 1 maliyet birimi uygulanır.

  {
    "model": {
      "vehicles": [{
        "loadLimits": {
          "weightKg": {
            "maxLoad": "1000",
            "costPerKilometer": {
              "loadThreshold": "500",
              "costPerUnitAboveThreshold": 1
            }
          }
        }
      }]
    }
  }
  

Bu örnek için yük maliyeti hesaplaması aşağıdaki gibidir:

cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold

Bu nedenle, araç 10 kilometre boyunca 600 weightKg yük taşıyorsa hesaplama şu şekilde yapılır:

(600 - 500) * 10 * 1 = 1000 cost units

Yük maliyetleri, ağır yüklerin taşınması sırasında araç enerji kullanımının artması veya aşırı yükleme nedeniyle araçta oluşan yıpranma gibi çeşitli kavramları modellemek için kullanılabilir.

Yükleme maliyetlerini içeren başka bir örnek istek

Hem eşiğin üzerinde hem de altında seyahat edilen süre başına maliyet uygulayan yük maliyetlerine dair başka bir örnek:

  {
    "model": {
      "vehicles": [{
        "loadLimits": {
          "weightLbs": {
            "maxLoad": "1000",
            "costPerTraveledHour": {
              "loadThreshold": "900",
              "costPerUnitAboveThreshold": 10,
              "costPerUnitBelowThreshold": 1
            },
          },
        }
      }]
    }
  }
  

Bu örnek için yük maliyeti hesaplaması aşağıdaki gibidir:

cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
  + min(carried load, load threshold) * time * cost per unit below threshold

Bu nedenle, araç 5 saat boyunca 950 weightLbs yük taşıyorsa hesaplama şu şekilde yapılır:

max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000

Bu örnekte, weightLbs yük maliyetinin load_threshold değeri max_load değerine yakındır. cost_per_unit_above_threshold, araç özellikle ağır bir yükle hareket ettiğinde yüksek bir seyahat saati maliyeti uygular. Bu, araçta aşınmayı artırabilecek veya fazla yakıt tüketecek rotaları cezalandırır. cost_per_unit_below_threshold, eşiğe kadar araç tarafından taşınan birim ağırlık başına maliyet ekler. Bu, araç daha fazla yük taşıdıkça yakıt tüketiminin arttığını gösterir.

Sık sorulan sorular

Yükleme maliyetleriyle ilgili sık sorulan bazı soruları aşağıda bulabilirsiniz:

Soru Yanıt
Yük maliyetlerini nerede belirtirim? Yükleme maliyetlerini Vehicle.LoadLimit olarak belirtin.
Yük maliyetleri gönderimlerle nasıl eşleştirilir? Yük maliyeti, yük talebi türü aracın yük sınırı türüyle (ör. ağırlık veya hacim) eşleşen gönderiler için geçerlidir. Yük türleri, yük talepleri ve sınırları bölümünde açıklandığı gibi rastgele dizelerdir.
Yükleme maliyetleri nasıl ifade edilir? Yük maliyetleri, geçiş mesafesi veya süre cinsinden ifade edilir. Maliyetleri mesafe cinsinden belirtmek için cost_per_kilometer, süre cinsinden belirtmek için cost_per_traveled_hour simgesini kullanın.
Yükleme maliyetleri ne zaman uygulanır? Araç yükü, yük maliyetinin load_threshold ile karşılaştırılır. cost_per_unit_above_threshold belirtilmişse maliyet, max(0, load - load_threshold) formülü kullanılarak aracın yüküne göre load_threshold'ün üzerinde orantılı olarak eklenir. cost_per_unit_below_threshold belirtilmişse maliyet, load_threshold'ün altındaki araç yüküyle orantılı olarak min(load, load_threshold) formülü kullanılarak eklenir.
Yükleme maliyeti parametrelerinin varsayılan değerleri nelerdir? load_threshold, cost_per_unit_above_threshold ve cost_per_unit_below_threshold varsayılan olarak sıfırdır.
Yük maliyetleri hangi birimlerle ifade edilir? Yük maliyetleri, global_duration_cost_per_hour veya Shipment.penalty_cost gibi diğer tüm maliyet parametreleriyle aynı boyutsuz birimlerle ifade edilir.
Yanıtın yükleme maliyetlerini nerede bulabilirim? Yükleme maliyetleri, yanıt mesajlarının metrics ve route_metrics özelliklerinde gösterilir. Örneğin, yapılan bir cost_per_kilometer işlemi model.vehicles.load_limits.cost_per_kilometer olarak görünür.

Yük maliyetleriyle ilgili ayrıntılı açıklama için referans belgelerine (REST, gRPC) bakın.

Örnek: OptimizeTours İsteğinde Bulunma

OptimizeTours istekleri REST veya gRPC kullanılarak da yapılabilir.

İstek göndermeden önce aşağıdaki parametreleri ortamınıza uygun değerlerle değiştirin:

  • Uygulama Varsayılan Kimlik Bilgileri'nin OAuth Kullanma bölümünde açıklandığı şekilde yapılandırıldığından emin olun.
  • PROJECT_NUMBER_OR_ID değerini Cloud proje numaranız veya kimliğiniz olarak ayarlayın.

    Aşağıdaki komut, Route Optimization API'ye OptimizeTours isteği gönderir ve yanıtı senkron olarak alır.

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- << EOM
    {
      "model": {
        "shipments": [
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.789456,
                  "longitude": -122.390192
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 100.0,
            "loadDemands": {
              "weightKg": {
                "amount": 50
              }
            }
          },
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.789116,
                  "longitude": -122.395080
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 30.0,
            "loadDemands": {
              "weightKg": {
                "amount": 10
              }
            }
          },
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.795242,
                  "longitude": -122.399347
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 50.0,
            "loadDemands": {
              "weightKg": {
                "amount": 80
              }
            }
          }
        ],
        "vehicles": [
          {
            "endLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "startLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "costPerHour": 40.0,
            "costPerKilometer": 10.0,
            "loadLimits": {
              "weightKg": {
                "maxLoad": "100",
                "costPerKilometer": {
                  "loadThreshold": "15",
                  "costPerUnitAboveThreshold": 1
                }
              }
            }
          }
        ]
      }
    }
    EOM

İstek tamamlandığında yanıt mesajı alırsınız.