Yükleme maliyetleriyle birlikte istekte bulunma

Optimizasyon aracının, araçlarınızın ziyaretler arasında taşıdığı yükü dikkate alması için yük maliyetlerini içeren bir istek gönderin. Ortaya çıkan 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

Aşağıda, yükleme maliyeti içeren bir istek örneği verilmiştir. Bu örnekte tek bir araç 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ükleme maliyeti hesaplaması aşağıdaki gibidir:

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

Dolayısıyla, 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ükler taşınırken artan araç enerjisi kullanımı veya aşırı araç yükleme nedeniyle oluşan araç aşınması gibi çeşitli kavramları modellemek için kullanılabilir.

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

Aşağıda, hem eşiğin üstünde hem de altında seyahat süresi başına maliyet uygulayan yükleme maliyetlerine dair başka bir örnek verilmiştir:

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

Bu örnek için yükleme 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

Dolayısıyla, 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ükleme maliyeti için load_threshold, max_load'e yakındır. cost_per_unit_above_threshold, araç özellikle ağır bir yük taşıyorsa kat edilen her saat için yüksek bir maliyet uygular. Bu sayede, araçtaki aşınmayı artırabilecek veya fazla yakıt tüketebilecek rotalar cezalandırılır. cost_per_unit_below_threshold, araç tarafından taşınan ağırlık birimi başına eşiğe kadar bir maliyet ekler. Bu maliyet, araç daha fazla yük taşıdıkça artan yakıt tüketimini temsil eder.

Sık sorulan sorular

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

Soru Yanıt
Yük maliyetlerini nerede belirtebilirim? Yük 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üne (ör. ağırlık veya hacim) uyan kargolar için geçerlidir. Yük türleri, yük talepleri ve sınırlarında açıklandığı gibi, rastgele dizelerdir.
Yük maliyetleri nasıl ifade edilir? Yük maliyetleri, geçiş mesafesi veya süre olarak ifade edilir. Mesafe açısından maliyetleri belirtmek için cost_per_kilometer, süre açısından maliyetleri belirtmek için cost_per_traveled_hour kullanın.
Yük 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 belirtilirse maliyet, max(0, load - load_threshold) formülü kullanılarak load_threshold değerinin üstündeki araç yüküne orantılı olarak eklenir. cost_per_unit_below_threshold belirtilirse maliyet, min(load, load_threshold) formülü kullanılarak load_threshold'ın altındaki aracın yüküne orantılı olarak eklenir.
Yük maliyeti parametrelerinin varsayılan değerleri nelerdir? load_threshold, cost_per_unit_above_threshold ve cost_per_unit_below_threshold değerleri varsayılan olarak sıfırdır.
Yük maliyetleri hangi birimlerde ifade edilir? Yük maliyetleri, global_duration_cost_per_hour veya Shipment.penalty_cost gibi diğer tüm maliyet parametreleriyle aynı boyutsuz birimlerde ifade edilir.
Yanıtta yükleme maliyetlerini nerede bulabilirim? Yük maliyetleri, yanıt mesajlarının metrics ve route_metrics özelliklerinde görünür. Örneğin, cost_per_kilometer tutarındaki bir ödeme model.vehicles.load_limits.cost_per_kilometer olarak görünür.

Yük maliyetlerinin ayrıntılı açıklaması için referans dokümanlarına (REST, gRPC) bakın.

Örnek: OptimizeTours isteği gönderme

OptimizeTours istekleri REST veya gRPC kullanılarak da gönderilebilir.

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

  • Uygulama Varsayılan Kimlik Bilgileri'ni OAuth'u kullanma bölümünde açıklandığı şekilde yapılandırdığınızdan emin olun.
  • PROJECT_NUMBER_OR_ID değerini Cloud proje numaranız veya kimliğiniz olarak ayarlayın.

    Aşağıdaki komut, RouteOptimization API'ye bir OptimizeTours isteği gönderir ve senkronize olarak yanıt 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 bir yanıt mesajı alırsınız.