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

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 استفاده می‌کنند. هنگام نامگذاری یک نوع بار، از شناسه‌هایی که نوع بار و واحد آن را توصیف می‌کنند، استفاده کنید. به عنوان مثال: weightKg ، volume_gallons ، palletcount یا frequencyDaily .

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
مقدار نوع بار تعریف شده را مشخص می‌کند. در این مثال، شما دو محموله تعریف می‌کنید، در محموله اول یک سگ و در محموله دوم ۳ سگ را تحویل می‌گیرید.
loadLimits نوع بار رشته dogUnit نوع محدودیت بار اعمال شده بر وسیله نقلیه را تعریف می‌کند. برای اینکه محدودیت مربوطه اعمال شود ، باید با نوع بار محموله مطابقت داشته باشد.
loadLimits maxLoad شماره 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.

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

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

  • داشتن محدودیت بار ۶ 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
      }
    ]
  }
}

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

محدودیت‌های بار نرم

شما می‌توانید با اضافه کردن softMaxLoad و costPerUnitAboveSoftMax روی loadLimits یک وسیله نقلیه، محدودیت‌های بار را به عنوان محدودیت‌های نرم تعیین کنید. این به بهینه‌ساز اجازه می‌دهد تا با هزینه‌ای از حداکثر بار وسیله نقلیه فراتر رود و تکمیل مسیر را بر رعایت دقیق محدودیت بار در اولویت قرار دهد.

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

خواص

جدول زیر ویژگی‌های قید نرم برای تقاضاها و محدودیت‌های بار را شرح می‌دهد.

والدین نام ملک نوع ملک توضیحات ملک
loadLimits softMaxLoad رشته (با فرمت int64) حداکثر بار ترجیحی برای یک وسیله نقلیه. اگر بار وسیله نقلیه از این مقدار بیشتر شود، هزینه‌ای ایجاد می‌شود.
loadLimits costPerUnitAboveSoftMax شماره هزینه هر واحد بار بالاتر از softMaxLoad . این فیلد هنگام استفاده از softMaxLoad الزامی است. برای کسب اطلاعات بیشتر در مورد هزینه‌ها، به مفهوم کلیدی مدل هزینه مراجعه کنید.

نمونه کد

مثال زیر ساختار ویژگی‌های قید نرم loadLimits را نشان می‌دهد:

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}