ガイドAPIリファレンス
ガイド

主な概念を学習する

次のリストは、HERE Tour Planning APIで使用される最も一般的な用語と概念を説明するものです。

アクティビティ

activityとは、ツアーの停車地内において、特定の場所と時刻に計画されたイベントです。利用可能なactivityタイプには、departurearrivalbreakpickupdeliveryなどがあります。タイプに加え、各アクティビティにはjobIdjobTaglocationtimeなどのプロパティもあります。これらのプロパティによりアクティビティの特性とコンテキストを詳細に定義でき、トラッキングと管理が容易になります。

次の図は、deliverybreakactivityタイプが設定された1つの停車地と、solution JSON内の対応するプロパティを示しています。

1つの停車地内の複数のアクティビティ

詳細については、以下を参照してください。

アクティビティの開始 /end時間

ツアー計画のsolutionでは、activityの開始と終了とは、車両がツアー内でactivityを開始または完了する特定の時刻を指します。開始時刻はactivityが開始されたときで、終了時刻はそれが完了したときです。

代替ロケーション

ジョブの代替locationsにより、ジョブを完了できる場所についての柔軟性を確保できます。この機能では、jobsの時間枠と、ジョブの遂行が可能なさまざまな場所の両方が考慮されるため、tasksをより効果的に割り当て、より効率的なルートを計画できます。

たとえば、あるお客様のdelivery job"Home""Work"の代替位置を利用して設定できます。それぞれの場所には、お客様の都合に応じて異なる時間枠が割り当てられます。

詳しくは、「代替の場所を使用する」を参照してください。

break

breakとは、車両のドライバーに割り当てられた、休息のための時間を指します。ツアー内のbreak時間は、ビジネスニーズに応じて複数の方法で最適化できます。たとえば、車両を充電するstopsに合わせて休憩の時間枠を割り当てると、ドライバーはバッテリーを充電しながら休憩できるようになります。

詳細については、以下を参照してください。

容量

車両のcapacityとは、車両がツアー中の特定の時間に収容できる最大の人数または荷物の最大数を指し、vehicle typeに対して定義されます。

capacityは、車両に割り当てられたジョブのdemandに関連付けて考慮する必要があります。たとえば、5ユニットの配達を要するジョブと、4ユニットの配達を要する別のジョブがある場合、車両のcapacityを超過することなく両方のジョブを遂行するには、少なくとも9ユニットのcapacityを備えた車両が必要になります。capacityは正の数として定義され、割り当てられたすべてのジョブの需要を満たしつつ、車両が過積載にならないようにルートを最適化するのに不可欠です。

詳細については、以下を参照してください。

近くの場所でのジョブのクラスタリング

近隣のjobsのクラスタリングでは、地理的に近いjobsを1つのstopにグループ化することで、移動時間を短縮して燃料消費を最小限に抑えることができ、より効率的なルートを作成できます。

クラスタリングにより、運転時間を短縮し、stopsの総数を削減し、合計tour durationと距離の両方を短縮できるため、特に迂回回数を最小限に抑えることができる一方通行の道路が含まれるシナリオで、より多くのjobsshift内で遂行できます。

次の図は、クラスタリングによる最適化の例を示しています。クラスタリングにより停車地の総数が減少し、全体的な走行距離が短縮されています。

近隣の停車地のクラスタリングを利用したツアーの最適化

詳細については、以下を参照してください。

clustering of jobs with identical locations

このタイプのクラスタリングでは、同じlocationに配置された類似するjobsがグループ化されます。最適化アルゴリズムが複数のjobsをこのタイプのクラスタリングの対象と見なすには、これらのジョブが同一の場所にあることに加えて、次の条件を満たす必要があります。

  • 単一のlocationが設定された単一のjob taskのみが含まれている。
  • 同じタイプのタスク (pickupまたはdeliveryのいずれか) が含まれている。
  • time windowsが同じである。
  • skillsが同じである。
  • territoriesが同じである。
  • job taskpositionが同じである (positionを伴わないジョブタスクは同じ位置が設定されていると見なされます)。
  • demandの次元数が同じである ([2][3]など、異なる値は許可されます)。たとえば、[2][2,3]などはdemandの次元が等しくありません。

jobの所要時間やサービス時間を決定する方法は、利用可能な戦略のいずれかを使用して、クラスタリング機能内で管理できます。

次の例は、2つのdeliveryと2つのpickup jobsがサブクラスターとして設定されたクラスターのサンプルを示しています。

同じ場所のジョブをクラスタリングする

詳細については、「クラスタリング」を参照してください。

コスト

ツアーのcostsとは、solutionを計算する際の、車両に関連する費用のことです。HERE Tour Planning APIでは、次のツアー関連costsのタイプが区別されます。

  • fixed:特定のtaskjobのための車両配備に関連する、車両のメンテナンスやドライバーの賃金などの非変動コストを指します。
  • distance:車両の移動距離単位ごとに発生する費用です。
  • time:ツアーで費やされた時間 (運転時間やサービス時間を含む) に関連する費用です。

distancetimeの費用の比率を操作することで、結果として得られるstopsの順序やツアーに選択されたルートのタイプなどに影響を与えることができます。

たとえば、distanceよりもtimeを優先する場合、最適化アルゴリズムは、総走行distanceが増加するのと引き換えに高速道路などの高速走行が可能な道路を選択する場合があり、結果的にstopsの順序に影響を与える可能性があります。

詳細については、以下を参照してください。

顧客ID

同じ場所のジョブをクラスタリングする」のコンテキストにおいて、customerIdとは、顧客の一意の識別子を指定する、jobエンティティ内の任意プロパティです。同じcustomerIdが設定されたJobsは、可能であれば1つまたは複数のクラスターにグループ化され、実現できる場合は同じstopに割り当てられ、一緒に処理されるようになります。

詳細については、「問題」を参照してください。

配信

deliveryとは、次のようなタイプの場所からの、特定の荷物の輸送を伴うジョブタイプです。

  • multi-jobpickup場所
  • 集配センターまたは再積載場所 (これらの場所が定義されている場合)
  • 事前に積載された車両 (任意の開始場所が使用されている場合)

その後、これらの荷物は計画されたルートの一部として特定の場所に輸送されます。

次の図は、配達ジョブの例と、対応するTour Planningソリューションの関連プロパティを示しています。

配達ジョブ

需要

demandとは、taskで移動する人の正確な数、またはこのtaskが車両内で占めるスペースの量を指し、体積、重量、または数量の単位で測定されます。これは、このtaskに対応するために、車両の全体的な容量から差し引かれる容量を示します。例:demand: [1]

詳細については、以下を参照してください。

departure time

departureTimeプロパティは、車両が集配センターを離れる実際の時間を指定し、さまざまな車両プロファイルのルート計算のコンテキストに関連します。

このプロパティは、道路状況や利用可否が現在と比べて変わる可能性がある場合に、事前にツアーを計画するのに特に便利です。たとえば、特定の平日に一部の通りが通行可能または禁止になる場合などです。

詳細については、以下を参照してください。

期間

ツアー計画では、durationとは次の2つの異なるタイプの時間を指します。

  • stop duration:これは、ツアー内の特定の停車地で車両が費やす合計時間です。この所要時間には、停車地で費やされた時間と、その停車地で特定のアクティビティを実行するのにかかった時間 (たとえば、荷物の積み込みと積み下ろし、集荷など) が含まれます。停車地でのdurationは、個々のアクティビティの所要時間と停車地のbase durationの合計です。

  • total tour duration:これはツアー全体の累積時間であり、秒単位で測定されます。以下を含む、ツアーの時間に関連するすべての要素が考慮されます。

    • 停車地間の運転時間
    • ジョブの遂行 (集荷、配達など) に費やされた時間
    • 待機時間 (時間枠の開始前に到着した場合など)
    • 停止時間 (給油や管理タスクなどによる)
    • ツアー中に必要な休憩時間

詳細については、以下を参照してください。

終了位置

end locationとは、車両のshiftが完了する最終地点です。end locationは車両のシフト情報の一部であり、車両がルートまたはシフトを終了する予定の場所を指定します。このlocationは、HERE Tour Planning APIの使用トランザクション数を計算するときに、請求対象のトランザクションとしてカウントされます。

詳細については、以下を参照してください。

フリート

fleetという用語は、タスクを実行するために使用する車両の全体的な集合を指します。fleet設定では、車両のcapacityskillsterritoriesvehicle types、その他のパラメーターなど、車両のさまざまな制約を考慮します。HERE Tour Planning APIは、この車両の集合のルートを最適化して、fleetの活用率を向上させ、車両ルート検索問題を効率的に解決します。

詳細については、以下を参照してください。

ジョブ

HERE Tour Planning APIのコンテキストでは、jobとは、特定の車両によって実行される一連のアクティビティを指します。これらのアクティビティには、集荷や配達など、さまざまなタスクが含まれます。

taskは、指定された場所での荷物の集荷や配達など、job内の特定のアクションに関連します。

jobには、最大3件のpickupタスクと3件のdeliveryタスクを含めることができます。HERE Tour Planning APIでは、synchronousリクエストには最大250件のjobアイテムを含めることができ、asynchronousリクエストには最大3,000件のjobアイテムを含めることができます。

📘

ジョブによっては、priorityレベルが異なったり、異なるskillsが求められたりする場合があります。また、特定のmaxTimeが車両に適用される場合や、カテゴリーの設定により、異なるカテゴリーのジョブを1台の車両に混在させることができない場合があります。

次のスニペットは、1件のpickupタスクと1件のdeliveryタスクで構成されるjobの例を示しています。

{
    "id": "Job_Z",
    "priority": 1,
    "skills": ["heavy_duty"],
    "tasks": {
        "pickups": [
            {
                "places": [
                    {
                        "location": {
                            "lat": 52.458232,
                            "lng": 13.338698
                        },
                        "territoryIds": ["South"],
                        "duration": 600
                    }
                ],
                "demand": [1]
            }
        ],
        "deliveries": [
            {
                "places": [
                    {
                        "location": {
                            "lat": 52.457629,
                            "lng": 13.323742
                        },
                        "territoryIds": ["North"],
                        "duration": 600
                    }
                ],
                "demand": [1]
            }
        ]
    }
}

詳細については、「ジョブ」を参照してください。

ジョブID

これは、運行管理のツアー計画で各jobに割り当てられた一意の識別子です。このIDを使用して、特定のjobに関連する情報をトラッキングおよび取得できます。ソリューションのコンテキストでは、停車地内での各activityは、problem内で割り当てられたjobIdを参照します。

詳細については、以下を参照してください。

ジョブ時間ウィンドウ

これは、jobを開始できる時間範囲のことです。APIでは、時間枠やその他の制約を考慮して、ジョブが指定された時間枠にスケジュールが設定されていることを確認します。

詳細については、「時間枠とアクティビティの所要時間」を参照してください。

ミキシングの制限

混載してはいけない荷物のカテゴリーを定義し、これらのカテゴリーをジョブに割り当てることができます。混載制限には、toursubTourの2つのレベルがあります。tourレベルでの制限はすべての旅程に適用され、車両はツアー全体を通して単一の制限されたカテゴリーの荷物のみを運べることを意味します。subTourレベルでの制限はより柔軟性が高く、異なるカテゴリーの荷物を同じ旅程で輸送でき (ただし同時に輸送することは不可)、より複雑な配送や集荷のシナリオに対応できます。

詳細については、混合荷重制限の定義を参照してください。

名前のヒント

nameHintとは、指定された名前と似た名前の場所を検索するために、車両ルート検索のproblemの中で、タスクの場所を指定するのに使用される文字列パラメーターです。これは、類似した名前やあいまいな名前を持つ位置が複数存在する場合に、最適化アルゴリズムに意図した場所を検討させる場合に特に有用です。

詳細については、「APIリファレンス」を参照してください。

制限

制限とは、さまざまなツアーパラメーターに設定する制約です。

目標に応じて、次の制限をshiftレベルで設定できます。

さらに、最大制限速度を車両のprofileレベルで設定できます。

これらの制限は、運用効率、ドライバーの安全、顧客満足度、規制遵守、リソースの割り当て、コスト管理を徹底するために重要であり、運行管理を効果的に運用し、お客様に高品質なサービスを提供するのに役立ちます。

次の例は、旅程中に車両が経由できる停車地の最大数を定義するlimitsオブジェクトの例を示しています。

{
    "limits": {
        "stops": {
            "maxCount": {
                "value": 35
            }
        }
    }
}

詳細については、「ルート制限の設定」を参照してください。

location

位置情報とは、problemおよびsolutionで定義された、pickupタスクやdeliveryタスクといったさまざまな種類のアクティビティの地理座標 (緯度と経度) を指します。

詳細については、以下を参照してください。

目標

Tour Planningにおいて、objectivesという用語は、problem作成の一部である目標関数を指します。この関数の目標は、たとえば走行距離の短縮やツアーの所要時間の最小化に焦点を当てるなど、最適化の方向性を定義することです。

詳細については、以下を参照してください。

ピックアップ

この用語は、ルート上の指定された場所から特定の荷物や乗客を乗せ、他の配達locationsや集配センターの場所に輸送するプロセスまたはアクションを指します。

詳しくは、ツアー計画で集荷と配達を組み合わせるをご覧ください。

集荷と配送

複数のpickupsおよびdeliveries (各ジョブタイプに対し3つまで) で構成されるjobは、Tour Planningのコンテキストではmulti-jobと呼ばれます。マルチジョブの問題の一般的な例としては、異なる住所で複数の子供たちを拾い、学校で降ろすスクールバスの日常業務が挙げられます。マルチジョブは、ジョブ内のすべてのtasksが完了したときにのみ、終了したと見なされます。

次のスニペットは、1件の配達タスクと1件の集荷タスクで構成されるマルチジョブの例を示しています。

{
    "id": "Job_13",
    "tasks": {
        "pickups": [
            {
                "places": [
                    {
                        "location": {
                            "lat": 52.457629,
                            "lng": 13.323742
                        },
                        "duration": 600
                    }
                ],
                "demand": [1]
            }
        ],
        "deliveries": [
            {
                "places": [
                    {
                        "location": {
                            "lat": 52.457629,
                            "lng": 13.323742
                        },
                        "duration": 600
                    }
                ],
                "demand": [1]
            }
        ]
    }
}

詳細については、「マルチジョブを伴うVRP」を参照してください。

place

placeとは、1件以上のpickupまたはdeliveryactivitiesが発生するlocationを意味します。場所は、緯度と経度、および任意のside of the streetを含む位置情報によって定義されます。位置情報に加え、場所にはアクティビティの所要時間、位置情報、ジョブの時間枠、グループ情報も含まれます。次のスニペットは、ジョブの例と対応するplaceの定義を示しています。

{
    "id": "pickup1",
    "tasks": {
        "pickups": [
            {
                "places": [
                    {
                        "location": {
                            "lat": 52.5622847,
                            "lng": 13.4023099
                        },
                        "duration": 180,
                        "territoryIds": ["territory1"]
                    }
                ],
                "demand": [1]
            }
        ]
    }
}

詳細については、「問題」を参照してください。

計画

ツアーのplanとは、車両ルート検索のproblemに含まれる、完了すべきjobsのリストを定義するオブジェクトです。ジョブのリストに加え、計画にはこれらのジョブと割り当てられた車両との関係も含まれる場合があります。任意で、類似するジョブをグループ化する設定機能を備えたクラスタリングオブジェクトを含めることができます。

詳細については、「計画」を参照してください。

位置

job task position機能を使用すると、ツアー内のtasksを処理する順序を設定し、物流効率を向上できます。利用可能な位置タイプは次のとおりです。

  • first:出発後直ちに実行されるTasksです。
  • ordered:特定の整数値が割り当てられたタスクで、優先順位はfirstより低いものの、順位が付けられていないタスクよりも高くなります。
  • anyfirstlastの位置が割り当てられたタスク間の任意の位置に配置できるタスクです。
  • last:他の全タスクの後に実行されるタスクです。

multi-jobsの場合、APIは必ず集荷タスクを遂行してから対応する配達を行います。ただし、position機能を使用すると、単一のマルチジョブに含まれる集荷タスクと配送タスクの順序を操作できます。

詳細については、「ジョブタスク位置の制御」を参照してください。

優先度

優先順位とは、完了する必要のある特定のjobsに割り当てられた重要度であり、これらのジョブの緊急性を他よりも高くするものです。

優先順位を設定すると、車両のcapacityなどの制約によってすべてのジョブを完了できない場合でも、重要なjobsが緊急性の低いジョブよりも先にツアー計画に含められるようになり、ルート計画を最適化できます。これにより、最も重要なジョブの完了が優先され、効率が向上して、緊急性の高い需要により効果的に対応できるようになります。

利用可能な優先順位の値は次のとおりです。

  • 1:高優先順位
  • 2:デフォルトの優先順位

次の図は、ツアー内の高優先順位のジョブの例を示しています。

高優先順位のジョブの例

詳しくは、「ジョブの優先順位付け」を参照してください。

問題

車両ルート検索問題 (VRP) には、2つの主要な部分 (planおよびfleet) が伴います。VRPでは、ジョブのpickupsdeliveries、の時間枠、車両のskillscapacitiescostパラメーター、territories、運行管理プロファイル、車両のtypesrelationsdemandtraffic状況などのさまざまな要素を考慮し、効率的で費用対効果の高いソリューションを実現します。

詳細については、「問題」を参照してください。

プロファイル

これは、車両のtypeに適したルート検索設定を定義する一連の特性です。各profileには名前を付ける必要があり、cartruckscooterbicyclepedestrianbusprivateBusなどのさまざまな車両タイプに設定できます。profileにより、高さ、重量、回転の制限といった、車両 (特にトラック) 固有の制約を考慮して、ルート検索動作が決定されます。

詳細については、「ルート検索プロファイル」を参照してください。

プード

PUDOとは、Pick-Up Drop-Offポイントの略語です。PUDOは、ジョブグループごとに荷物を集荷できる場所や配達できる場所を指定できるため、job groupsのコンテキストでは重要となります。job groupには最大2つのPUDOを含めることができ、assignAtプロパティにより、PUDOの停車地をグループの最初または最後の停車地として訪問するかどうかを決定します。

詳細については、「PUDOを使用したジョブグループ」を参照してください。

リレーション

この用語は、ツアー内のジョブと車両の関連性と依存関係を指します。Tour Planningのコンテキストでは、次のタイプのリレーションを区別できます。

  • SequenceJobsを指定された順序で中断せずに実行する必要があります。
  • Flexible:ジョブを順番に実行する必要があるものの、他のジョブをどこにでも挿入できます。
  • Tour:ジョブを特定の車両で処理する必要があるものの、順序には柔軟性があります。

HEREでは、relations機能はツアーの再計画および特定のジョブを特定の車両に割り当てる場合にのみ使用することをお勧めします。より柔軟性の高い計画を立てるには、skillsterritorryなどの他の機能を選択してください。

詳細については、「ツアーの再計画にリレーションを使用する」を参照してください。

リロード

この機能により、限られたcapacityを持つ車両に対して複数回の旅程を組むことができます。再積載を使用すると、車両は前の旅程内の全ジョブを遂行した後に、集配センターまたはその他の指定されたlocationsに戻り、追加の荷物を集荷し、配達できます。ジョブの総demandが車両の容量を超える場合は、問題の制約事項に再積載を組み込むことが不可欠です。再積載は、集配センターやジョブの場所を含むさまざまなlocationsで行うことができ、これにより物流効率を最適化し、すべてのタスクを車両の容量の制約内で効果的に実行できるようになります。

詳細については、「複数のリロードポイントを有効にする」を参照してください。

ルート

routeとは、車両の容量や配達時間枠などを考慮した、ツアー計画内のすべての停車地を訪問するための費用対効果の高い順番です。たとえば、配送会社が荷物を10か所に配達するための車両を手配する必要がある場合、HERE Tour Planning APIは、時間と燃料を節約できる最も効率的なルートを取れるように、これらの場所の順番を最適化できます。

詳細については、「はじめに」を参照してください。

シフトスタート /end時間

シフトの開始時刻と終了時刻は必須の制約で、車両のシフトの具体的な開始時刻と終了時刻 (車両が配達や集荷を開始および終了する必要がある時刻) を示します。

シフト

車両のshiftでは、車両の作業の開始時刻と終了時刻、およびこれらのイベントが発生する可能性のある場所が定められます。車両 (およびドライバー) の運用方法を定義し、再積載、休憩、shift内のドライバーの交代に関連する任意の情報を指定できます。

次のスニペットは、problem JSON内のシフト定義の例を示しています。

{
    "shifts": [
        {
            "start": {
                "time": "2021-08-27T08:03:00Z",
                "location": {
                    "lat": 52.530971,
                    "lng": 13.384915
                }
            },
            "end": {
                "time": "2021-08-27T16:03:00Z",
                "location": {
                    "lat": 52.530971,
                    "lng": 13.384915
                }
            }
        }
    ]
}

詳細については、以下を参照してください。

通りの側

任意のsideOfStreetHintパラメーターは、deliveryまたはpickupのタスクのlocationとして、道路のどちら側を優先するかを示すヒントを提供します。このパラメーターにより、車両を道路の最も利便性または安全性の高い側に停止して割り当てられたジョブを実施できるようになります。

スキル

skills機能を使用すると、ジョブの特定の要件を満たすことができる車両にのみそのジョブを割り当てることができます。たとえば、冷凍品を輸送するジョブには冷蔵車を、動物の輸送には換気システムを搭載した車両を割り当てることができます。

詳しくは、「スキルに基づいたジョブの割り当て」を参照してください。

ソリューション

最適化アルゴリズムは、車両ルート検索のproblemに対してsolutionを返します。ソリューションは車両ツアーの最適化された計画を示すものです。これには、訪問するstopsの順番、走行距離、ツアーの所要時間のほか、運転、サービス、待機、停止のtimesなどの関連情報が含まれます。また、ソリューションには、ツアーに割り当てることができなかったすべてのジョブが、unassignmentの理由 (到達可能性や順序の制約など) とともに示されます。

詳細については、「ソリューション」を参照してください。

統計

ツアーのstatisticオブジェクトは、problemの送信後、solutionのJSON内で見つけることができます。統計情報には、次の情報が含まれます。

  • cost:小数点以下3桁に四捨五入された抽象単位の合計cost
  • distance:総走行距離 (メートル単位)。
  • duration:合計所要時間 (秒単位)。
  • times:運転、ジョブの遂行、時間枠の開始待ち、停止、休憩に費やされた時間。

ツアーのstatisticによって提供された情報は、ツアーの効率性と費用対効果を分析するのに役立ち、これによりディスパッチャやプランナーは、車両のルート検索、スケジュール、全体的な運用効率について情報に基づいた決定を行うことができます。

次のスニペットは、ソリューションJSONのstatisticオブジェクトの例を示しています。

{
    "statistic": {
        "cost": 433.779,
        "distance": 154920,
        "duration": 12771,
        "times": {
            "driving": 11171,
            "serving": 1600,
            "waiting": 0,
            "stopping": 0,
            "break": 0
        }
    }
}

詳細については、「ソリューション」を参照してください。

停止

stopとは、ソリューションで指定されている、1件以上のpickupdeliverybreak、その他のアクティビティが発生する場所を意味します。

次のスニペットは、solution JSONの停車地プロパティの例を示しています。

{
    "1": {
        "time": {
            "arrival": "2023-09-20T09:14:59Z",
            "departure": "2023-09-20T09:17:59Z"
        },
        "load": [4],
        "activities": [
            {
                "jobId": "Job_1",
                "type": "pickup",
                "location": {
                    "lat": 52.5063267065751,
                    "lng": 14.345924039737517
                },
                "time": {
                    "start": "2023-09-20T09:14:59Z",
                    "end": "2023-09-20T09:17:59Z"
                }
            }
        ],
        "location": {
            "lat": 52.5063267065751,
            "lng": 14.345924039737517
        },
        "distance": 68638
    }
}

詳細については、「ソリューション」を参照してください。

タグ

jobTagは、problemリクエストの一部として送信される、任意のフリーテキストフィールドです。これは、たとえば識別や分類を容易にするための"fragile""morning-delivery""perishable"など、jobに関連する追加情報を提供するものです。タグを使用してシステム内のジョブを整理、識別、分類し、管理を簡素化できます。

詳細については、「マルチジョブを伴うVRP」を参照してください。

タスク

taskとは、ジョブの一部を構成する特定のアクションまたは操作のことです。Tour Planningでは、jobpickupsdeliveriesなどの複数のタスクで構成される場合があります。

Tour Planningでは、問題の同期エンドポイントでは最大250件のタスクをサポートし、問題の非同期エンドポイントでは最大6,000件のタスクをサポートしています。

次のスニペットは、集荷と配達のタスクを1件ずつ含むジョブの例を示しています。

{
    "id": "Job_Z",
    "priority": 1,
    "skills": ["heavy_duty"],
    "tasks": {
        "pickups": [
            {
                "places": [
                    {
                        "location": {
                            "lat": 52.458232,
                            "lng": 13.338698
                        },
                        "territoryIds": ["South"],
                        "duration": 600
                    }
                ],
                "demand": [1]
            }
        ],
        "deliveries": [
            {
                "places": [
                    {
                        "location": {
                            "lat": 52.457629,
                            "lng": 13.323742
                        },
                        "territoryIds": ["North"],
                        "duration": 600
                    }
                ],
                "demand": [1]
            }
        ]
    }
}

詳細については、「計画」を参照してください。

テリトリー

territoryとは、車両の運行を割り当てる特定の地区または地域のことです。

テリトリーは次の場合に使用できます。

  • 車両を運行させる場所 (その主要なテリトリー) に優先順位を付ける場合。
  • 車両の容量と時間に余裕がある場合、その車両が近くのテリトリーからjobsを引き受けられるようにすることで柔軟性を確保する場合。

車両が割り当てられたテリトリー内でのみ厳密に運行し、外部からジョブを引き受けないようにするには、対応する車両のtypestrictフラグをtrueに設定します。

次のスニペットは、テリトリーIDが割り当てられた車両タイプの設定の例を示しています。

{
  "id": "small_A",
  "profile": "car",
  "costs": {
    "fixed": 20,
    "distance": 0,
    "time": 0.005
  },
  "territories": {
    "strict": true,
    "items": [
      {
        "id": "North"
      }
    ]
  },
  "shifts": [...], // shifts config omitted for brevity
  "capacity": [
    100
  ],
  "amount": 1
}

次の図は、テリトリーIDが割り当てられたジョブの例が含まれるマップを示しています。

territoryIDsが設定されたジョブ

詳しくは、「テリトリーによるツアーの最適化」を参照してください。

時間

solution内のtimesプロパティは、ツアー内で各車両の運行中に費やされた時間の内訳を示し、運転、ジョブの遂行、待機、停止、breakなど、ツアーに関連するアクティビティ全体の時間配分についての詳細情報を提供するものです。次のスニペットは、timesの内訳の例を示しています。

{
    "statistic": {
        "cost": 42.88,
        "distance": 25930,
        "duration": 4576,
        "times": {
            "driving": 2776,
            "serving": 1800,
            "waiting": 0,
            "stopping": 0,
            "break": 0
        }
    }
}

ツアー

ツアーとは、車両が割り当てられたjobsを完了するためにたどる最適化されたルートです。車両のshiftの開始/終了locations、指定されたbreak場所、ジョブのpickupdeliveryの位置情報などが含まれます。

詳細については、「はじめに」を参照してください。

traffic

trafficモードを使用すると、最適化アルゴリズムが予測される交通状況を反映した距離と移動時間に基づいてソリューションを作成できるようになり、正確に計画を立てることが可能になるため、ルートの効率が向上し、移動時間が短縮されます。

HERE Tour Planning APIでは、ソリューションに交通状況を反映する方法を、運行管理プロファイルレベルと車両プロファイルレベルの両方で管理できます。運行管理プロファイルレベルでは、次のようなtrafficモードを利用できます。

  • liveOrHistorical:出発時刻に基づいて、リアルタイムまたは過去の交通データを使用します。
  • historicalOnly:長期閉鎖を除き、時間依存の要因を無視します。
  • automatic:位置情報の分布に基づいて、リアルタイムのデータと過去のデータを自動的に選択します。

次のスニペットは、運行管理レベルの交通情報設定の例を示しています。

"fleet": {
    "traffic": "historicalOnly",
    "types": [ ... ],
    "profiles": [
      { ... }
    ]
  },
  [... ]

より詳細な車両プロファイルレベルでは、APIのfleet.profiles.trafficプロパティを通じて、自動車、トラック、自転車といった特定の車両タイプの交通情報を無視できます (次のスニペットを参照)。

"profiles": [
      {
        "name": "Vehicle_A",
        "type": "car",
        "traffic": {
            "mode": "disabled"
        }
      }
    ]

詳細については、「トラフィックモードについて」を参照してください。

トリップ

tripとは車両が集配センターに戻る前、または別の旅程を開始する前に、アクティビティを完了するセグメントです。たとえば、配達車両は集配センターからスタートし、いくつかの停車地に立ち寄り、その後戻ったり、さらなる配達のために再積載したりする場合があります。旅程は複数の移動で構成される場合があります (特に再積載によって車両の当初の容量を超えてサービスを遂行する場合)。

詳細については、混合荷重制限の定義を参照してください。

未割り当てジョブ

未割り当てのjobsとは、たとえばジョブの数が車両のcapacityを超過したなど、1つまたは複数のツアー制約に違反したために、最適化アルゴリズムによっていずれのツアーにも割り当てられなかったジョブを指します。objectiveminimizeUnassignedは、これらの未割り当てジョブの数を最小限に抑えることを目標としています。

未割り当てジョブの例

詳細については、以下を参照してください。

車両ID

vehicleIDプロパティは、車両に割り当てられた一意の識別子であり、最適化アルゴリズムによってツアーに割り当てられた特定の車両を特定するために使用されます。たとえば、fleet内のvehicle typeidcar_Aである場合は、そのタイプの各車両がツアー内で使用するvehicleIdは、car_A_1car_A_2car_A_3などのようになります。

詳細については、「ツアーリスト」を参照してください。

車両タイプ

typeプロパティは、ジョブを遂行するfleet内で定義された車両のカテゴリーを指します。車両タイプは、problemリクエストを送信するときに指定します。車両タイプには個別に、容量、コスト、ルート検索設定、スキル、関連する運用上の制約などの特性を含めることができます。

詳細については、以下を参照してください。