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

در این مثال، تقاضای بار هر محموله و محدودیتهای بار وسیله نقلیه اثرات زیر را دارند:
بهینهساز در ایجاد مسیری برای وسیله نقلیه جهت حمل سگها مشکلی نخواهد داشت ، زیرا وسیله نقلیه میتواند تا ۶ سگ را حمل کند و شما فقط ۴ سگ را سوار میکنید.
داشتن محدودیت بار ۶
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 } } }