יעדים הם פרמטרים שמגדירים מראש יעדי אופטימיזציה נפוצים, כמו מרחק או משך הנסיעה הקצרים ביותר, מסירות בזמן ואיזון העומסים בין הנהגים. הכוונה היא להקל על מפתחים להתחיל להשתמש ב-Route Optimization API לפני שהם לומדים את המורכבויות וההתאמה האישית המלאה של פרמטרים של עלות. (במאמר בנושא cost model מוסבר איך להתאים אישית את המטרות העסקיות)
כשמגדירים את ShipmentModel.objectives, המערכת מחליפה את מודל העלויות באופן מלא, ולכן הוא לא תואם לעלויות קיימות. כל אחד מהם
Objective ממופה למספר עלויות מוגדרות מראש של כלי רכב, משלוחים או
מאפייני מעבר.
כשמציינים את מצב הפתרון TRANSFORM_AND_RETURN_REQUEST, הבקשה לא נפתרת, אלא רק מאומתת וממולאת בעלויות שמתאימות ליעדים שצוינו. הבקשה ששונתה מוחזרת כ-OptimizeToursResponse.processed_request. כל שאר מצבי הפתרון יחזירו את הבקשה שנפתרה.
מצב הפתרון TRANSFORM_AND_RETURN_REQUEST תקף רק לבקשות OptimizeTours ולא זמין לבקשות אחרות של Route Optimization API.
דוגמה: יצירת בקשת ShipmentModel.objectives
לפני ששולחים בקשה, צריך לבצע את השלבים הבאים:
- מוודאים שהשירות Application Default Credentials מוגדר כמו שמתואר במאמר שימוש ב-OAuth.
מגדירים את PROJECT_NUMBER_OR_ID למספר או למזהה של הפרויקט ב-Cloud.
הפקודה הבאה שולחת
OptimizeToursRequestל-Route Optimization API ומקבלתOptimizeToursResponse.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- <<EOM { "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" } ], } } EOM
דוגמה: יצירת בקשת TRANSFORM_AND_RETURN_REQUEST
לפני ששולחים בקשה, צריך לבצע את השלבים הבאים:
- מוודאים שהשירות Application Default Credentials מוגדר כמו שמתואר במאמר שימוש ב-OAuth.
מגדירים את PROJECT_NUMBER_OR_ID למספר או למזהה של הפרויקט ב-Cloud.
הפקודה הבאה שולחת
OptimizeToursRequestל-Route Optimization API, שמחזירOptimizeToursResponseעם השדהProcessedRequestמוגדר. הפקודה הקודמת תפיק תגובה דומה לזו.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- <<EOM { "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" } EOM
{ "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" } }