מטרות

יעדים הם פרמטרים שמגדירים מראש יעדי אופטימיזציה נפוצים, כמו המרחק או משך הנסיעה הקצרים ביותר, מסירות בזמן ואיזון העומסים בין הנהגים. הכלי הזה נועד להקל על מפתחים להתחיל להשתמש ב-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"
      }
    }