Mục tiêu

Các thuộc tính của đối tượng bao gồm "objectives" trong "ShipmentModel" và "type" và "weight" trong "objectives"

Mục tiêu là những tham số mà bạn có thể dùng để chỉ định các mục tiêu tối ưu hoá cấp cao thay vì cung cấp các tham số chi phí cụ thể từ mô hình chi phí.

Bạn có thể sử dụng nhiều mục tiêu trong một yêu cầu duy nhất và chỉ định cho mỗi mục tiêu một trọng số tương đối để kiểm soát mức độ ảnh hưởng của mục tiêu đó đến quá trình tối ưu hoá tổng thể. Mục tiêu ảnh hưởng đến toàn bộ yêu cầu, tác động đến tất cả các phương tiện và lô hàng của bạn. Cuối cùng, bạn cũng có thể sử dụng các mục tiêu để bắt đầu phát triển mô hình chi phí của riêng mình như mô tả trong phần Tạo mô hình chi phí.

Bạn có thể sử dụng các mục tiêu để kiểm soát những tác động sau đây đối với kế hoạch tuyến đường:

  • Tổng thời gian di chuyển hoặc quãng đường của các tuyến đường.
  • Tổng thời gian hoạt động của tất cả các phương tiện.
  • Tổng số xe đã sử dụng.

Thuộc tính

Thuộc tính objectives là một mảng gồm các loại thông báo Objective trong ShipmentModel. Mỗi Objective xác định một mục tiêu tối ưu hoá cụ thể và chứa các trường được liệt kê trong bảng sau:

Trường Loại Mô tả
type Enum Chỉ định mục tiêu tối ưu hoá được xác định trước. Sau đây là các giá trị được chấp nhận:
  • DEFAULT: Sử dụng một bộ chi phí mặc định để đảm bảo giải pháp cơ bản, tức là ngăn giải pháp sử dụng các giá trị cực đoan để đạt được mục tiêu. DEFAULT sẽ tự động được thêm vào các yêu cầu có chứa một mục tiêu và được thêm bằng weight là 1.0. Nếu bạn chủ động đưa mục tiêu này vào yêu cầu, thì giải pháp sẽ sử dụng weight mà bạn chỉ định.
  • MIN_DISTANCE: Giảm thiểu tổng quãng đường đã đi.
  • MIN_WORKING_TIME: Giảm thiểu tổng thời gian làm việc, được cộng dồn trên tất cả các xe.
  • MIN_TRAVEL_TIME: Giảm thiểu tổng thời gian di chuyển, được cộng trên tất cả các xe.
  • MIN_NUM_VEHICLES: Giảm thiểu số lượng xe được sử dụng.
weight Đôi Xác định mức độ quan trọng tương đối của mục tiêu này. Khi sử dụng nhiều mục tiêu, giá trị weight sẽ kiểm soát mức độ ảnh hưởng của mục tiêu cụ thể này đến việc tối ưu hoá tuyến đường tổng thể so với các mục tiêu khác. Đây có thể là bất kỳ số không âm nào và không cần phải cộng lại bằng 1. Giá trị mặc định là 1.0.

Ví dụ

Phần này trình bày 2 loại ví dụ:

  • Một mã mẫu minh hoạ cấu trúc của mảng objectives.
  • Ví dụ về yêu cầu bao gồm mảng objectives.

Mã mẫu

Ví dụ sau đây cho thấy cấu trúc của objectives:

"objectives": [
  {
    "type": "OBJECTIVE_TYPE",
    "weight": WEIGHT
  }
]

Ví dụ về yêu cầu

Ví dụ sau đây cho thấy cấu trúc của một yêu cầu optimizeTours cơ bản kết hợp nhiều mục tiêu, trong đó MIN_TRAVEL_TIME quan trọng gấp 3 lần 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"
      }
    ]
  }
}

Tạo mô hình chi phí

Mục tiêu là một cách nhanh chóng để đặt mục tiêu tối ưu hoá, nhưng trong một số trường hợp, chỉ mục tiêu thôi có thể không đủ cụ thể. Để đạt được mục tiêu định tuyến chính xác, bạn có thể cần quyền kiểm soát chi tiết chỉ có thông qua các thông số mô hình chi phí.

Bạn có thể bắt đầu phát triển mô hình chi phí của riêng mình bằng cách thêm các mục tiêu vào yêu cầu, sau đó chuyển đổi các mục tiêu trong yêu cầu thành các tham số mô hình chi phí bằng cách sử dụng chế độ giải TRANSFORM_AND_RETURN_REQUEST.

Khi bạn gửi yêu cầu bằng chế độ giải này, những điều sau sẽ xảy ra:

  • API sẽ chuyển đổi các mục tiêu của bạn thành tham số mô hình chi phí và trả về các tham số đó trong một processedRequest. Sau đó, bạn có thể điều chỉnh các tham số của mô hình chi phí nếu cần để tinh chỉnh kế hoạch tuyến đường.
  • Khi sử dụng nhiều mục tiêu, API sẽ kết hợp chi phí của tất cả các mục tiêu và điều chỉnh theo trọng số tương ứng.
  • Bạn không bị tính phí cho yêu cầu này, vì API không cung cấp cho bạn một tuyến đường được tối ưu hoá, mà chỉ chuyển đổi các mục tiêu thành các thông số mô hình chi phí.

Ví dụ về yêu cầu

Ví dụ sau đây cho thấy một yêu cầu sử dụng mục tiêu MIN_TRAVEL_TIME và chế độ giải 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"
}

Ví dụ về phản hồi

Sau đây là phản hồi tương ứng với yêu cầu trước đó. Phản hồi này bao gồm cả các tham số mô hình chi phí được tạo và mục tiêu ban đầu để tham khảo.

{
  "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"
  }
}