ツアープランの請求
ツアープランはプレミアム製品で、請求は他の HERE の API やサービスとは異なります。 トランザクション数に基づいて計算されます。詳細については、このチュートリアルで後述します。 価格ページでツアープランの価格設定プランを確認。
ツアープランの使用量は、トランザクション数に基づいて請求されます。 取引は、ツアープランの問題で設定された場所の数に基づいて計算されます。 つまり、問題で指定された各場所 (車両のシフトの開始場所と終了場所、指定されている場合は車両の休憩場所、ジョブの受け取り/配送場所) が請求対象のトランザクションにカウントされます。請求可能なトランザクションは、適切に作成された車両ルーティングの問題についてのみ生成されます。 問題が正しく作成されず、レスポンスとしてエラーが返された場合、トランザクションは請求されません。 同時に、 非同期エンドポイントの場合、解決策が利用可能になった後でユーザーが問題の解決策をリクエストしていない場合でも、トランザクションが追加されます。以下では、これらのトランザクション数に関する問題の請求方法の例をいくつかご紹介します。
上記を考慮すると、運行管理 の制約事項について、車両シフトの開始位置と終了位置、複数のシフトを使用する場合のすべてのシフトの位置、および全ての休憩の位置をトランザクションとして計算することを理解する必要があります。 問題のプラン部分については、単一および複数のジョブのすべての場所、およびツアーの再プラン時に追加されたすべてのジョブの場所がトランザクションとして計算されます。
以下の問題を確認してみましょう。 ここで 4 つのジョブを実行する車両が 1 台あります。 車両にシフトの開始位置と終了位置があるため、これらの位置は 2 つのトランザクションとして計算されます。 ここでの各ジョブには 1 つの場所があるため、これらの場所は 4 つのトランザクションとして計算されます。 さらに、問題例には、特定の順序でジョブの一部を実行するように車両に設定されたリレーションがありますが、このオプションでは問題の場所が追加または削除されないため、トランザクションの数は変更されません。 最終的には、この問題の例は 6 つの場所を持つツアーに最適化され、 6 つのトランザクションが発生します。
{
"fleet": {
"types": [
{
"id": "Vehicle_1",
"profile": "car_1",
"costs": {
"fixed": 9.0,
"distance": 0.004,
"time": 0.005
},
"shifts": [
{
"start": {
"time": "2021-08-27T08:03:00Z",
"location": {
"lat": 52.530971,
"lng": 13.384915
}
},
"end": {
"time": "2021-08-27T18:03:00Z",
"location": {
"lat": 52.530971,
"lng": 13.384915
}
}
}
],
"capacity": [
10
],
"limits": {
"maxDistance": 300000,
"shiftTime": 43200
},
"amount": 1
}
],
"profiles": [
{
"type": "car",
"name": "car_1"
}
]
},
"plan": {
"jobs": [
{
"id": "job_1",
"tasks": {
"deliveries": [
{
"places": [
{
"times": [
[
"2021-08-27T09:03:00Z",
"2021-08-27T18:03:00Z"
]
],
"location": {
"lat": 52.59175589353722,
"lng": 13.350747750372257
},
"duration": 360
}
],
"demand": [
1
]
}
]
}
},
{
"id": "job_2",
"tasks": {
"deliveries": [
{
"places": [
{
"times": [
[
"2021-08-27T11:03:00Z",
"2021-08-27T20:03:00Z"
]
],
"location": {
"lat": 52.43363386232821,
"lng": 13.403232562191313
},
"duration": 540
}
],
"demand": [
1
]
}
]
}
},
{
"id": "job_3",
"tasks": {
"deliveries": [
{
"places": [
{
"times": [
[
"2021-08-27T10:03:00Z",
"2021-08-27T16:03:00Z"
]
],
"location": {
"lat": 52.473321658918245,
"lng": 13.28972099097991
},
"duration": 660
}
],
"demand": [
1
]
}
]
}
},
{
"id": "job_4",
"tasks": {
"deliveries": [
{
"places": [
{
"times": [
[
"2021-08-27T09:03:00Z",
"2021-08-27T17:03:00Z"
]
],
"location": {
"lat": 52.54165532725351,
"lng": 13.365047170290309
},
"duration": 1140
}
],
"demand": [
1
]
}
]
}
}
],
"relations": [
{
"type": "sequence",
"jobs": [
"job_1",
"job_4"
],
"vehicleId": "Vehicle_1_1"
}
]
}
}
複数のシフト、を使用する場合シフトの開始位置と終了位置が同じであっても、各シフトの開始位置と終了位置はトランザクションとして計算されます。 以下の例では、 4 種類のシフトが設定された車両を使用しています。
- シフト 1 :
2021-10-23T09:00:00Z
- 2021-10-23T12:00:00Z
- シフト 2 :
2021-10-24T09:00:00Z
- 2021-10-24T12:00:00Z
- シフト 3 :
2021-10-25T09:00:00Z
- 2021-10-25T12:00:00Z
- シフト 4 :
2021-10-26T09:00:00Z
- 2021-10-26T12:00:00Z
これらのシフトの開始位置と終了位置は、運転者が同じデポでシフトを開始して終了するのと同じです。 ただし、このアルゴリズムでは、各拠点が新しいトランザクションとして計算されます。したがって、以下の例では、運行管理 セクションに 8 つのトランザクションが含まれることになります。
{
"fleet": {
"types": [
{
"id": "Vehicle_1",
"profile": "car",
"costs": {
"fixed": 10.0,
"distance": 0.002,
"time": 0.003
},
"shifts": [
{
"start": {
"time": "2021-10-23T09:00:00Z",
"location": {
"lat": 51.059188,
"lng": 13.540317
}
},
"end": {
"time": "2021-10-23T12:00:00Z",
"location": {
"lat": 51.059188,
"lng": 13.540317
}
}
},
{
"start": {
"time": "2021-10-24T09:00:00Z",
"location": {
"lat": 51.059188,
"lng": 13.540317
}
},
"end": {
"time": "2021-10-24T12:00:00Z",
"location": {
"lat": 51.059188,
"lng": 13.540317
}
}
},
{
"start": {
"time": "2021-10-25T09:00:00Z",
"location": {
"lat": 51.059188,
"lng": 13.540317
}
},
"end": {
"time": "2021-10-25T12:00:00Z",
"location": {
"lat": 51.059188,
"lng": 13.540317
}
}
},
{
"start": {
"time": "2021-10-26T09:00:00Z",
"location": {
"lat": 51.059188,
"lng": 13.540317
}
},
"end": {
"time": "2021-10-26T12:00:00Z",
"location": {
"lat": 51.059188,
"lng": 13.540317
}
}
}
],
"capacity": [
10
],
"amount": 1
}
],
"profiles": [
{
"type": "car",
"name": "car"
}
]
},
車両に設定された休憩を使用する場合、その場所が休憩と指定されている場合にのみ、休憩がされたとみなされることに注意してください。 休憩の場所が設定されていない場合、休憩はいずれかの作業場所で発生します。 そのため、この場合、休憩に追加の作業はありません。 以下の例では、固定シフトと休憩が設定された車両を使用しています。 シフトの開始位置と終了位置はトランザクションと明らかに等しく、休憩には場所がありません。 この例の運行管理 の制約では、 2 つのトランザクションがあります。
{
"fleet": {
"types": [
{
"id": "92d3cd5cca04",
"profile": "car_1",
"costs": {
"fixed": 10.0,
"distance": 0.004,
"time": 0.009
},
"shifts": [
{
"start": {
"time": "2021-08-27T08:03:00Z",
"location": {
"lat": 52.530971,
"lng": 13.384915
}
},
"end": {
"time": "2021-08-27T17:03:00Z",
"location": {
"lat": 52.530971,
"lng": 13.384915
}
},
"breaks": [
{
"duration": 1800,
"times": [
[
"2021-08-27T12:03:00Z",
"2021-08-27T13:03:00Z"
]
]
}
]
}
],
"capacity": [
2
],
"limits": {
"maxDistance": 300000
},
"amount": 1
}
],
"profiles": [
{
"type": "car",
"name": "car_1"
}
]
},
複数の集荷および配達を含む複数のジョブを使用する場合、これらの集荷および配達の場所は、論理的に別々のトランザクションとして計算されます。 たとえば、集荷が 3 回、配達が 1 回の複数のジョブがある場合、これらの集荷をすべて 1 つの場所に配達するとします ( 以下の例を参照 ) 。このような制約の計算では、合計 4 件のトランザクションが割り当てられます。
"plan": {
"jobs": [
{
"id": "job_1",
"tasks": {
"pickups": [
{
"places": [
{
"location": {
"lat": 52.47706593757918,
"lng": 13.390815701172201
},
"duration": 660,
"tag": "Address_1"
}
],
"demand": [
1
]
},
{
"places": [
{
"location": {
"lat": 52.473571009931106,
"lng": 13.389035169086807
},
"duration": 1140,
"tag": "Address_2"
}
],
"demand": [
1
]
},
{
"places": [
{
"location": {
"lat": 52.53090538774364,
"lng": 13.384692097156309
},
"duration": 840,
"tag": "Address_3"
}
],
"demand": [
1
]
}
],
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.58919138279804,
"lng": 13.462161100698735
},
"duration": 1020,
"tag": "Address_4"
}
],
"demand": [
3
]
}
]
}
}
]
}
}
代替場所を使用する場合、解決策の生成後に車両がすべての場所を訪問するわけではない場合でも、問題の制約で指定されたすべての場所がトランザクションとして計算されることを想定します。
代替の場所がジョブに設定され、各場所に特定の時間帯が設定されます。 つまり、解決策が計算された後、車両はこれらの場所のうち、、ソルバによって最適と判断された場所の一つだけを訪問します。 問題が定式化されると、制約に追加されたすべての場所がトランザクションとして計算されます。
Home
と Work
というタグが付けられた 2 つの場所が異なる時間枠に設定されたジョブがあります。配達時にソリューションの 1 つのみを含めて計算された後も、 ここでの取引件数は 2 のままになります。
"plan": {
"jobs": [
{
"id": "Job_1",
"tasks": {
"pickups": [
{
"places": [
{
"times": [
[
"2021-10-23T08:30:00Z",
"2021-10-23T09:00:00Z"
]
],
"location": {
"lat": 52.5154509,
"lng": 13.4216700
},
"duration": 1150,
"tag": "Home"
},
{
"times": [
[
"2021-10-23T10:00:00Z",
"2021-10-23T19:00:00Z"
]
],
"location": {
"lat": 52.6834366,
"lng": 13.2781471
},
"duration": 1150,
"tag": "Work"
}
],
"demand": [
1
]
}
]
}
},