اهداف، پارامترهایی هستند که میتوانید به جای ارائه پارامترهای هزینه خاص از مدل هزینه ، برای تعیین اهداف بهینهسازی سطح بالا از آنها استفاده کنید.
شما میتوانید از چندین هدف در یک درخواست واحد استفاده کنید و به هر هدف وزن نسبی بدهید تا میزان تأثیر آن بر بهینهسازی کلی را کنترل کنید. اهداف بر کل درخواست شما تأثیر میگذارند و بر همه وسایل نقلیه و محمولههای شما تأثیر میگذارند. در نهایت، میتوانید از اهداف برای شروع توسعه مدل هزینه خود، همانطور که در بخش «ایجاد یک مدل هزینه» توضیح داده شده است، استفاده کنید.
شما میتوانید از اهداف برای کنترل تأثیرات زیر بر برنامه مسیر خود استفاده کنید:
- کل زمان سفر یا مسافت مسیرهای شما.
- کل زمان کار در تمام وسایل نقلیه.
- تعداد کل وسایل نقلیه مورد استفاده.
خواص
ویژگی objectives آرایهای از انواع پیام Objective در ShipmentModel است. هر Objective یک هدف بهینهسازی خاص را تعریف میکند و شامل فیلدهای ذکر شده در جدول زیر است:
| میدان | نوع | توضیحات |
|---|---|---|
type | شمارشی | هدف بهینهسازی از پیش تعریفشده را مشخص میکند. مقادیر پذیرفتهشده به شرح زیر هستند:
|
weight | دو برابر | اهمیت نسبی این هدف را تعریف میکند. هنگام استفاده از چندین هدف، مقدار weight ، میزان تأثیر این هدف خاص بر بهینهسازی کلی مسیر را در مقایسه با سایر اهداف کنترل میکند. این میتواند هر عدد غیرمنفی باشد و نیازی نیست که مجموع آنها برابر با ۱ باشد. مقدار پیشفرض 1.0 است. |
مثالها
این بخش شامل دو نوع مثال است:
- یک نمونه کد که ساختار آرایه
objectivesرا نشان میدهد. - یک مثال درخواست که شامل آرایه
objectivesاست.
نمونههای کد
مثال زیر ساختار objectives را نشان میدهد:
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
مثال درخواست
مثال زیر ساختار یک درخواست اولیه optimizeTours را نشان میدهد که شامل چندین هدف است، که در آن MIN_TRAVEL_TIME سه برابر MIN_WORKING_TIME اهمیت دارد.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME", "weight": 3.0 }, { "type": "MIN_WORKING_TIME" } ] } }
ایجاد مدل هزینه
اهداف، راهی سریع برای تعیین اهداف بهینهسازی هستند، اما در برخی موارد، ممکن است به تنهایی به اندازه کافی دقیق نباشند. برای دستیابی به اهداف دقیق مسیریابی، ممکن است به کنترل جزئیتری نیاز داشته باشید که فقط از طریق پارامترهای مدل هزینه در دسترس باشد.
شما میتوانید توسعه مدل هزینه خود را با اضافه کردن اهداف به درخواست خود و سپس تبدیل اهداف موجود در درخواست خود به پارامترهای مدل هزینه با استفاده از حالت حل TRANSFORM_AND_RETURN_REQUEST آغاز کنید.
وقتی با استفاده از این حالت حل مسئله، درخواستی ارسال میکنید، موارد زیر اتفاق میافتد:
- این API اهداف شما را به پارامترهای مدل هزینه تبدیل میکند و آنها را در یک
processedRequestبرمیگرداند. سپس میتوانید پارامترهای مدل هزینه را در صورت نیاز تنظیم کنید تا برنامه مسیر خود را به طور دقیق تنظیم کنید. - هنگام استفاده از چندین هدف، API هزینههای تمام اهداف شما را ترکیب کرده و آنها را بر اساس وزن مربوطهشان مقیاسبندی میکند.
- از آنجایی که API مسیر بهینهای را در اختیار شما قرار نمیدهد، برای این درخواست هزینهای از شما دریافت نمیشود و فقط اهداف را به پارامترهای مدل هزینه تبدیل میکند.
درخواست نمونه
مثال زیر درخواستی را با استفاده از هدف MIN_TRAVEL_TIME و حالت حل TRANSFORM_AND_RETURN_REQUEST نشان میدهد:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" }
پاسخ نمونه
پاسخ زیر مربوط به درخواست قبلی است. این پاسخ شامل پارامترهای مدل هزینه تولید شده و هدف اصلی برای مرجع است.
{ "processedRequest": { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.425062610009959, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.424215032060211, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerHour": 30, "costPerTraveledHour": 330, "costPerKilometer": 0.2 } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" } }