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

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

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

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

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

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

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

ساختار

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

بازبینه Essentials

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

مشخصات

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

  • نوع بار: دارایی مشترک بین تقاضاهای بار و محدودیت‌ها.
  • 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 نشان‌دهنده یک قفس سگ است.

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

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

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

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

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