بار تقاضاها و محدودیت ها

The loadDemands property is defined under ShipmentModel.shipments.Shipment and the loadLimits property under ShipmentModel.vehicles.Vehicle.

تقاضاها و محدودیت های بار نوعی محدودیت هستند که می توانید برای مدیریت ظرفیت از آنها استفاده کنید. این محدودیت ظرفیت مورد نیاز یک محموله و حداکثر ظرفیت یک وسیله نقلیه را مشخص می کند که به شما امکان می دهد تخصیص مسیر را بر اساس این محدودیت ها بهینه کنید.

تقاضاها و محدودیت‌های بار می‌توانند از اهدافی مانند:

  • از بارگیری بیش از حد وسایل نقلیه جلوگیری کنید.
  • نظارت کنید که چگونه بارهای وسیله نقلیه با تحویل و تحویل محموله ها تغییر می کند.
  • جفت کردن وسایل نقلیه سنگین با محموله های بار سنگین را در اولویت قرار دهید.

تقاضاها و محدودیت های بار در این ویژگی ها مشخص می شوند:

  • loadDemands مقدار ظرفیت مورد نیاز یک محموله خاص را مشخص می کند.
  • loadLimits حداکثر ظرفیت را برای یک وسیله نقلیه مشخص می کند.

ساختار

همانطور که در نمودار نشان داده شده است، تقاضاها و محدودیت های بار به صورت زیر ساختار یافته اند:

  • loadDemands یک ویژگی Shipment است. یک Shipment می تواند چندین بار تقاضا داشته باشد.
  • loadLimits یکی از ویژگی های Vehicle است. یک Vehicle می تواند محدودیت های بار متعددی داشته باشد.

چک لیست ملزومات

چک لیست زیر دانش ضروری را توصیف می کند که از اشتباهات احتمالی مرتبط با بار جلوگیری می کند. این لیست می تواند به شما کمک کند تا درخواست خود را تأیید کنید و پاسخ خود را عیب یابی کنید.

خواص

این بخش ویژگی های تقاضا و محدودیت های بار را توضیح می دهد که به شرح زیر است:

  • نوع بار: یک ویژگی مشترک بین تقاضاها و محدودیت های بار.
  • Load و LoadLimit : ویژگی های منحصر به فرد موجود در تقاضای بار و محدودیت های بار.

نوع بار

نوع بار یک کلید رشته ای است که به طور یکسان برای محموله ها و وسایل نقلیه اعمال می شود. یک نوع بار تکی برای تقاضای بار محموله و همچنین محدودیت بار یک وسیله نقلیه اعمال می شود.

انواع بارگذاری از نحو نوع نقشه Protocol Buffers استفاده می کنند. هنگام نامگذاری یک نوع بار، از شناسه هایی استفاده کنید که نوع بار و واحد آن را توصیف می کنند. به عنوان مثال: وزن کیلوگرم ، حجم_گالن ، تعداد پالت ، یا فرکانس روزانه .

Load و LoadLimit

اشیاء Load و LoadLimit حاوی ویژگی های خاصی برای تعریف ظرفیت مورد نیاز برای محموله ها و وسایل نقلیه هستند، جدول زیر این ویژگی ها را توضیح می دهد:

شیء پدر و مادر اموال نوع ملک توضیحات ملک
Load loadDemands amount رشته (فرمت int64) ظرفیت مورد نیاز محموله را در نوع مشخص شده تعریف می کند.
LoadLimit loadLimits maxLoad رشته (فرمت int64) حداکثر ظرفیت بار خودرو را در نوع مشخص شده مشخص می کند.

نمونه ها

این بخش سه نوع مثال را پوشش می دهد:

  • نمونه کدهایی که ساختار تقاضاهای بار و ویژگی های محدودیت را نشان می دهند.
  • یک سناریوی مثال که یک راه برای استفاده از تقاضاها و محدودیت های بار در یک درخواست API را نشان می دهد.
  • یک مثال درخواست که شامل مقادیر تنظیم شده در سناریوی مثال است.

نمونه کد

مثال زیر ساختار تقاضای بار را نشان می‌دهد که در آن می‌توانید نوع loadDemands را به‌عنوان یک رشته و ویژگی amount را به‌عنوان رشته در قالب int64 تنظیم کنید:

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

مثال زیر ابتدایی ترین ساختار یک محدودیت بار را نشان می دهد، که در آن می توانید نوع loadLimits را به عنوان یک رشته و ویژگی maxLoad را به عنوان یک رشته در قالب int64 تنظیم کنید:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

سناریوی نمونه

این بخش سناریویی را شرح می‌دهد که در آن شما یک کسب‌وکار مهدکودک سگ دارید و در حال بهینه‌سازی مسیری برای حمل چند سگ در یک وسیله نقلیه با تعداد محدود جعبه هستید.

هر محموله نشان دهنده یک توقف است که در آن تعداد معینی سگ را می گیرید. در این مثال، هر محموله دارای یک مکان وانت متفاوت است، که خانه سگ هایی است که شما از آنها مراقبت می کنید، و همه محموله ها محل تحویل یکسانی دارند، ساختمان مهد کودک سگ شما.

برای این مثال، مقادیر ویژگی در درخواست شما به شرح زیر است:

پدر و مادر اموال تایپ کنید ارزش سناریو
loadDemands نوع بار رشته dogUnit نوع بار را برای محموله مشخص می کند. این مثال از dogUnit استفاده می کند که در آن هر dogUnit یک سگ را نشان می دهد.
loadDemands amount شماره محموله اول: 1
محموله دوم: 3
مقدار نوع بار تعریف شده را مشخص می کند. در این مثال، شما دو محموله را تعریف می کنید، در اولی یک سگ و در دومی 3 سگ را انتخاب می کنید.
loadLimits نوع بار رشته dogUnit نوع محدودیت بار اعمال شده به وسیله نقلیه را مشخص می کند. این باید با نوع بار محموله مطابقت داشته باشد تا محدودیت مربوطه باشد.
loadLimits maxLoad شماره 6 حداکثر مقدار باری که وسیله نقلیه می تواند حمل کند را مشخص می کند. در این مثال، شما فقط یک وسیله نقلیه با حداکثر ظرفیت 6 dogUnit دارید که هر dogUnit نشان دهنده یک جعبه سگ است.

نمودار زیر محدودیت های بار وسیله نقلیه، تقاضای بار هر محموله و نحوه مصرف هر محموله محدودیت های بار وسیله نقلیه را نشان می دهد:

The vehicle begins the route with 6 empty spaces representing the load limits of the vehicle. The first shipment demands space for one dog, the second shipment demands space for three dogs. The end state of the vehicle is having 4 of the 6 spaces now occupied, with two empty spaces remaining.

در این مثال، تقاضای بار هر محموله و محدودیت های بار وسیله نقلیه دارای اثرات زیر است:

  • بهینه ساز مشکلی برای ایجاد مسیری برای وسیله نقلیه برای حمل سگ ها نخواهد داشت ، زیرا وسیله نقلیه می تواند تا 6 سگ را حمل کند و شما فقط 4 سگ را انتخاب می کنید.

  • داشتن محدودیت بار 6 dogUnit در وسیله نقلیه همچنین به این معنی است که فقط می توانید دو سگ دیگر را در این وسیله نقلیه خاص حمل کنید.

  • اگر تعداد سگ‌ها از حد مجاز بار بیشتر بود، بهینه‌ساز یا یکی از بارگیری‌ها را نادیده می‌گرفت یا آن را به وسیله نقلیه مناسب اختصاص می‌داد.

به یاد داشته باشید که هیچ مجموعه ای از انواع از پیش تعریف شده وجود ندارد . در این مثال، می‌توانید نوع بار را از واحد سگ به واحد وزن تغییر دهید تا وزن سگ‌ها را محدود کنید، یا آن را به اندازه‌گیری‌های خطی تغییر دهید تا عرض یا ارتفاع آنها را محدود کنید. این انعطاف‌پذیری به شما امکان می‌دهد تا تقاضاها و محدودیت‌های بار را برای نیازهای خاص خود تنظیم کنید.

درخواست نمونه

مثال زیر ساختار یک درخواست اولیه optimizeTours نشان می دهد که مقادیر نمونه سناریو را در خود جای داده است:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "One bernese mountain dog",
        "loadDemands": {
          "dogUnit": {
            "amount": "1"
          }
        }
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "Three chihuahuas",
        "loadDemands": {
          "dogUnit": {
            "amount": "3"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "loadLimits": {
          "dogUnit": {
            "maxLoad": "6"
          }
        },
        "costPerKilometer": 1.0
      }
    ]
  }
}

به یاد داشته باشید که برخلاف مورد این مثال، یک محموله می‌تواند چندین بار تقاضا داشته باشد، و یک وسیله نقلیه می‌تواند محدودیت‌های بار متعددی داشته باشد، که به شما امکان می‌دهد محدودیت‌های پیچیده‌ای را برای بهینه‌سازی مسیرهای ناوگان خود در نظر بگیرید.