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

ویژگی loadDemands تحت ShipmentModel.shipments.Shipment و ویژگی loadLimits تحت ShipmentModel.vehicles.Vehicle تعریف شده است.

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

محدودیت‌ها و تقاضاهای بارگذاری می‌تواند از اهدافی مثل موارد زیر پشتیبانی کند:

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

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

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

ساختار

همان‌طور که در نمودار نشان داده شده است، درخواست‌ها و محدودیت‌های بارگذاری به‌صورت زیر ساختاربندی شده‌اند:

بازبینه موارد ضروری

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

مشخصات

این بخش ویژگی‌های مربوط به درخواست‌ها و محدودیت‌های بار را شرح می‌دهد که عبارتند از:

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

نوع بار کردن

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

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

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

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

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

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

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