ソリューション

Solutionエンティティは、車両ルート検索問題のソリューションを表し、次の3つの重要な部分で構成されます:statistictoursunassigned jobs

statistic

statisticオブジェクトは1つまたは複数のツアーの統計を表し、次のプロパティで構成されます。

  • cost:小数点以下3桁に四捨五入された抽象単位の合計コスト

    "cost": 54.459

  • distance:総走行距離 (メートル単位)

    "distance": 35277

  • duration:所要時間 (秒単位)

    duration": 5286

  • consumption:推定燃料消費量です。単位タイプは燃料タイプに対応しており、CNGの場合の単位はキログラム、ガソリンの場合の単位はリットルになります。

    consumption: 6.3893

  • co2Emission:そのツアーに対する、キログラム単位の推定CO₂排出量

    co2Emission: 17.232999999999997

  • intraStopDistance:クラスタリングにおいては、すべての停車地内のアクティビティ間と、停車地に戻るまでの経路の合計距離 (メートル) を指します。すべての停車地がすべてのアクティビティ場所と等しい場合 (たとえば、停車地に単一のアクティビティしか含まれていない場合)、この値は0になります。

    intraStopDistance: 1024

  • times:運転、ジョブの遂行、時間枠の開始待ち、停止、休憩、および停車地内におけるアクティビティ間の徒歩移動に費やされた時間

    {
      "times": {
        "driving": 5106,
        "serving": 180,
        "waiting": 0,
        "stopping": 0,
        "break": 0,
        "intraStop": 0
      }
    }

ソリューションの統計情報のdurationプロパティは、その特定のソリューションに対するすべての旅程の所要時間の合計を表します。

ツアーリスト

ツアーリストの各項目には、使用車両と割り当てられたジョブに関する詳細情報が表示されます。

  • typeId:車両タイプIDを指定します

    "typeId": "myVehicle"

  • vehicleId:使用車両の具体的なIDを指定します。これは、typeIdと連番をアンダースコアで区切ったものです

    vehicleId": "myVehicle_1"

  • stops:停車地のリストを指定します

  • statistic:ツアーの統計情報を指定します

  • shiftIndex:ツアー中に使用する車両シフトインデックスを指定します

stop

stopは、特定の時間に特定の場所で実行されるアクティビティのリストを指定します。次のプロパティで構成されます。

  • location:緯度/経度で表される停車地

    "location": {"lat": 52.52568, "lng": 13.45345}

  • time:停車地の到着予定時刻と出発予定時刻を指定します

    {
      "time": {
        "arrival": "2020-07-04T09:19:01Z",
        "departure": "2020-07-04T09:19:01Z"
      }
    }
  • load:停車地出発後の車両積載量を指定します

    "load": [1]

  • distance:旅程開始からの総走行距離 (メートル単位) を指定します

  • intraStopDistance:この停車地内のアクティビティ間と、停車地に戻るまでの経路の合計距離 (メートル) を指定します。停車地が停車地内のすべてのアクティビティ場所と等しい場合、この値は0と等しくなります。

  • activities:停車地で実行するアクティビティのリストを指定します

📘

ソリューションの結果のtimesは、問題の作成で使用された時間オフセットに関係なく、常にUTCで返されます。

activity

一般的に、activityは特定の場所と時間に実行が予定されているタスクを指定します。次のプロパティで構成されます。

  • jobId:ジョブまたはマーカー (休憩、出発、到着など) のID

    jobId": "myJob"

  • type:アクティビティタイプを指定します。出発、到着、休憩、集荷、配達のいずれかの値を指定できます

    "type": "delivery"

  • jobTag (任意):対応するジョブの場所に指定されたユーザー定義の値

    "jobTag": "place 1"

  • location (任意):緯度/経度またはカスタムIDで表されるアクティビティの場所。親の停車地で定義された場所と同じ場合は省略されます

    "location": {"lat": 52.52568, "lng": 13.45345}
    または
    "location": {"id": "uniqueLocationId""}

  • time (任意):アクティビティの到着予定時刻、開始予定時刻、終了予定時刻を指定します。arrival時刻は車両/人物がアクティビティ場所に到着した時刻を示しており、startendはアクティビティ自体の開始時刻と終了時刻を示しています。停車地にアクティビティが1つしかない場合は省略されます

    {
      "time": {
        "arrival": "2020-07-04T10:00:00Z",
        "start": "2020-07-04T10:00:00Z",
        "end": "2020-07-04T10:03:00Z"
      }
    }
    📘

    ソリューションの結果のtimesは、問題の作成で使用された時間オフセットに関係なく、常にUTC形式で返されます。

  • 通知 (任意):アクティビティに添付されている通知のリスト。最適化アルゴリズムは、さまざまな理由で通知を生成することがあります。たとえば、車両プロファイルのignoreRouteViolations設定によりルート違反が生じているにもかかわらず、停車地を割り当てた場合などが挙げられます。

    各通知には以下が含まれます。

    • code:通知の種類。unreachableLocationは、違反が無視されたため、その停車地にルーティング上のリスクがあることを示します。

    • title:人間が読める通知の説明。これには、どの違反カテゴリーまたは範囲が無視されたかが含まれます。

    • action:推奨される是正措置。

      以下のスニペットは、notices配列の例を示しています。

      {
        "notices": [
          {
            "code": "unreachableLocation",
            "title": "Due to ignored route violations (all), this location can be unreachable",
            "action": "Remove ignoreRouteViolations to be sure that location is reachable"
          }
        ]
      }

unassigned jobs

任意プロパティの未割り当てジョブリストには、特定の制約が原因で割り当てができないジョブが表示されます。各項目は、ジョブIDと未割り当ての理由から構成されます。

{
  "unassigned": [
      {
        "jobId": "myJob",
        "reasons": [
          {
            "code": "MAX_DISTANCE_CONSTRAINT",
            "description": "cannot be assigned due to max distance constraint of vehicle"
          }
        ]
      }
  ]
}

{
  "statistic": {
    "cost": 54.459916,
    "distance": 35277,
    "duration": 5286,
    "times": {
      "driving": 5106,
      "serving": 180,
      "waiting": 0,
      "stopping": 0,
      "break": 0,
      "intraStop": 0
    },
    "intraStopDistance": 0
  },
  "tours": [
    {
      "vehicleId": "myVehicle_1",
      "typeId": "myVehicle",
      "stops": [
        {
          "location": {"lat": 52.52568, "lng": 13.45345},
          "time": {
            "arrival": "2020-07-04T09:19:01Z",
            "departure": "2020-07-04T09:19:01Z"
          },
          "load": [1],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "time": {
                "arrival": "2020-07-04T09:19:01Z",
                "start": "2020-07-04T09:19:01Z",
                "end": "2020-07-04T09:19:01Z"
              }
            }
          ],
          "distance": 0,
          "intraStopDistance": 0
        },
        {
          "location": {"lat": 52.46642, "lng": 13.28124},
          "time": {
            "arrival": "2020-07-04T10:00:00Z",
            "departure": "2020-07-04T10:03:00Z"
          },
          "load": [0],
          "activities": [
            {
              "jobId": "myJob",
              "type": "delivery",
              "time": {
                "arrival": "2020-07-04T10:00:00Z",
                "start": "2020-07-04T10:00:00Z",
                "end": "2020-07-04T10:03:00Z"
              }
            }
          ],
          "distance": 16035,
          "intraStopDistance": 0
        },
        {
          "location": {"lat": 52.52568, "lng": 13.45345},
          "time": {
            "arrival": "2020-07-04T10:47:07Z",
            "departure": "2020-07-04T10:47:07Z"
          },
          "load": [0],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "time": {
                "arrival": "2020-07-04T10:47:07Z",
                "start": "2020-07-04T10:47:07Z",
                "end": "2020-07-04T10:47:07Z"
              }
            }
          ],
          "distance": 31943,
          "intraStopDistance": 0
        }
      ],
      "statistic": {
        "cost": 54.459916,
        "distance": 35277,
        "duration": 5286,
        "times": {
          "driving": 5106,
          "serving": 180,
          "waiting": 0,
          "stopping": 0,
          "break": 0,
          "intraStop": 0
        },
        "intraStopDistance": 0
      },
      "shiftIndex": 0
    }
  ]
}

このページは役に立ちましたか?