با هزینه بار درخواست دهید

با توجه به هزینه های بار درخواست کنید تا بهینه ساز باری را که وسایل نقلیه شما بین بازدیدها حمل می کنند در نظر بگیرد. هزینه متحمل شده هم به مقدار ShipmentRoute.VehicleLoad و هم به مسافت یا مدت زمان انتقال بستگی دارد (به ترتیب با استفاده از cost_per_kilometer یا cost_per_traveled_hour ).

حداقل درخواست نمونه با هزینه بار

در اینجا یک مثال جزئی از یک درخواست با هزینه بار آورده شده است. در این مثال، وسیله نقلیه منفرد نمی تواند بیش از 1000 کیلوگرم وزن کل بار weightKg حمل کند، که زمانی که وزن حمل شده weightKg بار از 500 کیلوگرم بیشتر شود، 1 واحد هزینه در هر کیلومتر متحمل می شود.

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

محاسبه هزینه بار برای این مثال به شرح زیر است:

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

بنابراین اگر وسیله نقلیه weightKg بار 600 را در طول 10 کیلومتر حمل کند، محاسبه به صورت زیر خواهد بود:

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

هزینه‌های بار را می‌توان برای مدل‌سازی مفاهیم مختلفی مانند افزایش مصرف انرژی وسیله نقلیه هنگام حمل بارهای سنگین یا فرسودگی وسیله نقلیه ناشی از بارگیری بیش از حد وسیله نقلیه استفاده کرد.

درخواست مثال دیگری با هزینه های بار

در اینجا مثال دیگری از هزینه‌های بار آورده شده است که هزینه‌ای را به ازای هر زمان پیموده شده در بالا و پایین‌تر از یک آستانه تحمیل می‌کند:

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

محاسبه هزینه بار برای این مثال به شرح زیر است:

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

بنابراین اگر وسیله نقلیه بار weightLbs 950 را به مدت 5 ساعت حمل کند، محاسبه به صورت زیر خواهد بود:

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

در این مثال، load_threshold برای هزینه بار وزن weightLbs نزدیک به max_load است. cost_per_unit_above_threshold زمانی که وسیله نقلیه با بار بسیار سنگین حرکت می کند، هزینه بالایی را در هر ساعت سفر اعمال می کند و مسیرهایی را که ممکن است باعث افزایش سایش خودرو یا مصرف سوخت اضافی شود جریمه می کند. cost_per_unit_below_threshold هزینه به ازای هر واحد وزنی که وسیله نقلیه تا آستانه حمل می کند، اضافه می کند، که نشان دهنده افزایش مصرف سوخت با حمل بار بیشتری است.

سوالات متداول

در اینجا چند سوال متداول در مورد هزینه بار وجود دارد:

سوال پاسخ دهید
کجا هزینه بار را مشخص کنم؟ هزینه های بار را در Vehicle.LoadLimit مشخص کنید.
چگونه هزینه های بار با حمل و نقل مطابقت دارد؟ هزینه بار برای محموله هایی اعمال می شود که نوع تقاضای بار آنها با نوع محدودیت بار برای وسیله نقلیه، مانند وزن یا حجم مطابقت دارد. انواع بار رشته های دلخواه هستند، همانطور که در تقاضاها و محدودیت های بار توضیح داده شده است.
هزینه های بار چگونه بیان می شود؟ هزینه های بار بر حسب فاصله یا مدت انتقال بیان می شود. cost_per_kilometer برای تعیین هزینه ها بر حسب مسافت و cost_per_traveled_hour برای تعیین هزینه ها از نظر مدت زمان استفاده کنید.
چه زمانی هزینه های بار اعمال می شود؟ بار وسیله نقلیه با load_threshold هزینه بار مقایسه می شود. اگر cost_per_unit_above_threshold مشخص شده باشد، هزینه متناسب با بار خودرو بالاتر از load_threshold با استفاده از فرمول max(0, load - load_threshold) اضافه می شود. اگر cost_per_unit_below_threshold مشخص شده باشد، با استفاده از فرمول min(load, load_threshold) هزینه متناسب با بار خودرو در زیر load_threshold اضافه می شود.
مقادیر پیش فرض برای پارامترهای هزینه بار چیست؟ load_threshold ، cost_per_unit_above_threshold ، و cost_per_unit_below_threshold همگی به طور پیش فرض صفر هستند.
هزینه های بار در چه واحدهایی بیان می شود؟ هزینه های بار در واحدهای بدون بعد مشابه سایر پارامترهای هزینه، مانند global_duration_cost_per_hour یا Shipment.penalty_cost بیان می شود.
از کجا می توانم هزینه های بار را در پاسخ پیدا کنم؟ هزینه های بار متحمل شده در metrics و ویژگی های route_metrics پیام های پاسخ ظاهر می شود. برای مثال، یک cost_per_kilometer متحمل شده به عنوان model.vehicles.load_limits.cost_per_kilometer ظاهر می شود.

برای توضیح دقیق هزینه های بار، به مستندات مرجع ( REST ، gRPC ) مراجعه کنید.

مثال: درخواست OptimizeTours را ارسال کنید

درخواست های OptimizeTours را می توان با استفاده از REST یا gRPC نیز انجام داد.

قبل از درخواست، پارامترهای زیر را با مقادیر مناسب برای محیط خود جایگزین کنید:

  • اطمینان حاصل کنید که اعتبارنامه پیش‌فرض برنامه را همانطور که در Use OAuth توضیح داده شده پیکربندی کرده‌اید.
  • PROJECT_NUMBER_OR_ID را روی شماره یا شناسه پروژه Cloud خود تنظیم کنید.

    دستور زیر یک درخواست OptimizeTours را به Route Optimization API ارسال می کند و پاسخی را به صورت همزمان دریافت می کند.

    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

پس از تکمیل درخواست، یک پیام پاسخ دریافت خواهید کرد.