タイブレークの目標を使用して同等のソリューションを解決する
複数のソリューションが類似したコストやパフォーマンスのメトリックを持つ場合、追加の基準に基づいて最適なソリューションを選択する方法が必要になります。tieBreakの目標は、許容可能なしきい値範囲を持つ主たる目標を定義し、その範囲内に収まるソリューション間の優劣を判別するために副次的な目標を使用できるようにすることで、この問題を解決します。
この階層的アプローチにより、主たる最適化目標を満たすだけでなく、複数の同等に妥当な選択肢が存在する場合に、他の重要な運用面の側面も改善するソリューションを見つけるのに役立ちます。具体的には、この機能は、旅程の重複の削減やルートのコンパクト化といった他の運用上のメリットと引き換えに、小さなコスト増加が許容されるシナリオにおいて有用です。
ビジネスシナリオの例:コスト最適化と運用効率のバランス
大都市の人口が密集した商業地区で運営されている配送サービスを考えてみましょう。このサービスは、通常1回の旅程で最大50件の注文を処理する2人のドライバーを雇用しています。
利益率を維持するために、このサービスは旅程のコストの最小化に重点を置いています。しかし問題は、ルートの組み合わせのコスト差がごくわずか (2~3ドル程度) であるにもかかわらず、運用効率には大きな差がある点です。このことは、コスト最適な旅程が重複してしまい、複数の車両が同じ地域をカバーすることにより、最適とは言えないルート、ドライバーの不満、配送ミスのリスクの増大につながる可能性があります。
tieBreakの目標を使用すると、最適化アルゴリズムは、運用効率の改善と引き換えにわずかなコスト増加を受け入れながら、コスト効率の高い旅程を提供します。ここでの運用効率の改善とは、よりコンパクトな旅程を意味します。
以下のセクションでは、このシナリオを取り上げ、HERE Tour Planning APIの問題設定において、tieBreakの目標をどのように設定するかを説明します。このセクションでは、tieBreakの目標を含まない基本的なシナリオと、この目標を含むシナリオを比較し、わずかながら許容範囲内のコスト増加によって、旅程の重複を減らす方法を示します。
tieBreakパラメーターを理解する
サンプルシナリオを見ていく前に、tieBreakの目標をどのように設定し、それを問題JSONにどのように適用するかを理解する必要があります。
注
これは開発中のテスト段階の機能です。この機能を有効にするには、問題仕様で
advancedObjectivesをexperimentalFeatures配列に追加します。詳細については、「テスト段階の機能」を参照してください。
以下のスニペットは、tieBreakの目標を含むadvancedObjectives設定の一例を示しており、ここでのminimizeCostは主たるtieBreakの目標、minimizeTourOverlapは副次的なtieBreakの目標です。
// Remaining problem components omitted for brevity
"advancedObjectives": [
[
{
"type": "minimizeUnassigned"
}
],
[
{
"type": "tieBreak",
"objectives": [
{
"objective": {
"type": "minimizeCost"
},
"tieThreshold": 0.04
},
{
"objective": {
"type": "minimizeTourOverlap"
},
"improvementThreshold": 0.05
}
]
}
]
]スニペットに示されているとおり、tieBreakの目標は複数の主要パラメーターを使用して、階層的な最適化プロセスを制御します。
tieThreshold:主たるtieBreakの目標の重要業績評価指標 (KPI) に対して許容される範囲を設定します。このしきい値内にあるソリューションは「同点」と見なされ、副次的な最適化の対象になります。言い換えれば、このパラメーターを設定する際には、副次的な目標の改善と引き換えに、主たる目標のKPIをどの程度許容できるかをパーセンテージで指定します。improvementThreshold:また、副次的なtieBreakの目標において、別のソリューションを選択することを正当化するために必要な最小限の改善量を設定します。
このスニペットでは、2段階の最適化構造を持つ階層的な目標設定の方法も示しています。
レベル1 - 主たる目標:minimizeUnassigned
- 優先度:最高
- 目的:可能な限りすべてのジョブを車両に割り当てる。
レベル2 - tieBreakの目標
これにより、この優先度レベル内で階層的なタイブレークシステムが作成されます。
主たるタイブレークの目標:minimizeCost
tieThreshold: 0.04:2つのソリューションのコスト差が4%以内であれば、それらは「同点」と見なされます。- 例:コストが
100と103のソリューションは、差が3%であるため (4%のしきい値未満)、同等と見なされます。
副次的なタイブレークの目標:minimizeTourOverlap
improvementThreshold: 0.05:minimizeCostの目標によってタイブレークするには、該当するソリューションのいずれかについて、旅程の重複の削減が少なくとも5%以上である必要があります。
例:旅程の重複をタイブレーカーとしてコストを最小化する
この例では、前述のユースケースを問題全体のJSONの文脈に当てはめています。この特定のユースケースでは、配送サービスが2台の車両を運用し、人口密度の高い地域で49件のジョブに対応しています。
主たる目標は総コストの最小化ですが、複数のソリューションのコストが類似している場合 (5%のしきい値内)、旅程の重複が最小のソリューションを優先することにより、運用効率を向上させ、ドライバーの混乱を減らすアルゴリズムとなる必要があります。
以下のセクションでは、tieBreakの目標を使用した場合と使用しない場合のアプローチを比較し、この目標タイプを用いることにより、コスト効率を保ちつつソリューションの質を向上できることを示します。
シナリオ1:tieBreakを使用しないデフォルトの最適化
最初のシナリオは、tieBreakを使用しない複数の目標の最適化を用いたベースラインのアプローチを示しています。この最適化では、未割り当てのジョブの最小化、コストの最小化、旅程重複の最小化という3つの個別目標レベルを使用しており、最も重要な目標が最上位に配置されていることが以下のスニペットに示されています。
"advancedObjectives": [
[
{
"type": "minimizeUnassigned"
}
],
[
{
"type": "minimizeCost"
}
],
[
{
"type": "minimizeTourOverlap"
}
]
]次のセクションでは問題JSONをすべて示します。
Click to expand/collapse the sample JSON
{
"configuration": {
"experimentalFeatures": [
"advancedObjectives"
]
},
"fleet": {
"types": [
{
"profile": "car",
"amount": 2,
"capacity": [
25
],
"costs": {
"time": 0.02,
"distance": 0.01,
"fixed": 10
},
"id": "vehicle_1",
"shifts": [
{
"start": {
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132913
},
"time": "2024-07-31T06:00:00+02:00"
},
"end": {
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132913
},
"time": "2024-07-31T19:00:00+02:00"
}
}
]
}
],
"profiles": [
{
"name": "car",
"type": "car"
}
]
},
"plan": {
"jobs": [
{
"id": "Job_1",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.63329,
"lng": 13.3138
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_2",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.62738533184079,
"lng": 13.3789
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_3",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.51635175288175,
"lng": 13.343661020679571
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_4",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.456,
"lng": 13.403260583257188
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_5",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.63256,
"lng": 13.37322
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_6",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.45810373923444,
"lng": 13.331808942475499
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_7",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.439442845393685,
"lng": 13.336118100685782
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_8",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.53213114000045,
"lng": 13.373517153879769
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_9",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.4823,
"lng": 13.4703
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_10",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.5313,
"lng": 13.35356
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_11",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.457844833248835,
"lng": 13.322525701671735
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_12",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.4329271708958,
"lng": 13.376558539227483
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_13",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.48128598928299,
"lng": 13.4944
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_14",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.580380893737356,
"lng": 13.304479222218161
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_15",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.444597854004236,
"lng": 13.42729037972278
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_16",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.5102,
"lng": 13.3444
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_17",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.48903177127663,
"lng": 13.495944342993262
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_18",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.62863,
"lng": 13.3621182
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_19",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.65831976801964,
"lng": 13.359646771531477
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_20",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.61955,
"lng": 13.29845
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_21",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.49949154428338,
"lng": 13.40857671284082
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_22",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.465255531970406,
"lng": 13.511537556934355
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_23",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.4312,
"lng": 13.45023
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_24",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.5293,
"lng": 13.38507204916371
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_25",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.6378,
"lng": 13.48675
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_26",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.53754,
"lng": 13.34152
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_27",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.48811100200862,
"lng": 13.376
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_28",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.4745,
"lng": 13.42
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_29",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.58884270031872,
"lng": 13.352068415230912
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_30",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.60079217247425,
"lng": 13.339813254226156
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_31",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.4779,
"lng": 13.5012
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_32",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.60066027234286,
"lng": 13.502741838681837
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_33",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.55437436208552,
"lng": 13.503142187091647
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_34",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.48446152479127,
"lng": 13.392004256315916
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_35",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.482203294624796,
"lng": 13.391214601891551
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_36",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.60842932011795,
"lng": 13.46922174529483
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_37",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.47651505101506,
"lng": 13.459944175857151
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_38",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.50488105730338,
"lng": 13.355333507786808
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_39",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.6029,
"lng": 13.3113
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_40",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.6543,
"lng": 13.39278
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_41",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.51508491755749,
"lng": 13.38
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_42",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.63313572894435,
"lng": 13.506488581249922
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_43",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.459450803409204,
"lng": 13.396015195980405
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_44",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.54433793446157,
"lng": 13.49579242116612
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_45",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.486517527979494,
"lng": 13.382057792236846
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_46",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.55606147412602,
"lng": 13.41517487839967
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_47",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.591995183321515,
"lng": 13.36000789424169
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_48",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.56223251898173,
"lng": 13.471999398223556
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
},
{
"id": "Job_49",
"tasks": {
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.595251760429065,
"lng": 13.456764166098564
},
"duration": 30
}
],
"demand": [
1
]
}
]
}
}
]
},
"advancedObjectives": [
[
{
"type": "minimizeUnassigned"
}
],
[
{
"type": "minimizeCost"
}
],
[
{
"type": "minimizeTourOverlap"
}
]
]
}ソリューション
次の図は最適化アルゴリズムが最適と判断した、前述の問題のソリューションを視覚化したものです。
ソリューションの概要が示すとおり、すべての車両が、未割り当てのジョブなしで旅程を完了し、コスト効率良く実行されています。このソリューションは主たる目標を達成していますが、旅程の重複の最小化という点においては、最適なトレードオフを必ずしも示しているとは限りません。具体的には、2つの旅程が相互に大きく重複しています。
以下のセクションでは、ソリューションの完全なJSONを示します。
Click to expand/collapse the sample JSON
{
"statistic": {
"cost": 2575.08,
"distance": 203776,
"duration": 25866,
"times": {
"driving": 24396,
"serving": 1470,
"waiting": 0,
"stopping": 0,
"break": 0
}
},
"tours": [
{
"vehicleId": "vehicle_1_1",
"typeId": "vehicle_1",
"stops": [
{
"time": {
"arrival": "2024-07-31T04:00:00Z",
"departure": "2024-07-31T04:00:00Z"
},
"load": [
25
],
"activities": [
{
"jobId": "departure",
"type": "departure",
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"time": {
"start": "2024-07-31T04:00:00Z",
"end": "2024-07-31T04:00:00Z"
}
}
],
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"distance": 0
},
{
"time": {
"arrival": "2024-07-31T04:08:02Z",
"departure": "2024-07-31T04:08:32Z"
},
"load": [
24
],
"activities": [
{
"jobId": "Job_2",
"type": "delivery",
"location": {
"lat": 52.62738533184079,
"lng": 13.3789
},
"time": {
"start": "2024-07-31T04:08:02Z",
"end": "2024-07-31T04:08:32Z"
}
}
],
"location": {
"lat": 52.62738533184079,
"lng": 13.3789
},
"distance": 3848
},
{
"time": {
"arrival": "2024-07-31T04:16:12Z",
"departure": "2024-07-31T04:16:42Z"
},
"load": [
23
],
"activities": [
{
"jobId": "Job_18",
"type": "delivery",
"location": {
"lat": 52.62863,
"lng": 13.3621182
},
"time": {
"start": "2024-07-31T04:16:12Z",
"end": "2024-07-31T04:16:42Z"
}
}
],
"location": {
"lat": 52.62863,
"lng": 13.3621182
},
"distance": 6630
},
{
"time": {
"arrival": "2024-07-31T04:19:36Z",
"departure": "2024-07-31T04:20:06Z"
},
"load": [
22
],
"activities": [
{
"jobId": "Job_5",
"type": "delivery",
"location": {
"lat": 52.63256,
"lng": 13.37322
},
"time": {
"start": "2024-07-31T04:19:36Z",
"end": "2024-07-31T04:20:06Z"
}
}
],
"location": {
"lat": 52.63256,
"lng": 13.37322
},
"distance": 7682
},
{
"time": {
"arrival": "2024-07-31T04:29:16Z",
"departure": "2024-07-31T04:29:46Z"
},
"load": [
21
],
"activities": [
{
"jobId": "Job_40",
"type": "delivery",
"location": {
"lat": 52.6543,
"lng": 13.39278
},
"time": {
"start": "2024-07-31T04:29:16Z",
"end": "2024-07-31T04:29:46Z"
}
}
],
"location": {
"lat": 52.6543,
"lng": 13.39278
},
"distance": 12685
},
{
"time": {
"arrival": "2024-07-31T04:34:47Z",
"departure": "2024-07-31T04:35:17Z"
},
"load": [
20
],
"activities": [
{
"jobId": "Job_19",
"type": "delivery",
"location": {
"lat": 52.65831976801964,
"lng": 13.359646771531477
},
"time": {
"start": "2024-07-31T04:34:47Z",
"end": "2024-07-31T04:35:17Z"
}
}
],
"location": {
"lat": 52.65831976801964,
"lng": 13.359646771531477
},
"distance": 15405
},
{
"time": {
"arrival": "2024-07-31T04:41:55Z",
"departure": "2024-07-31T04:42:25Z"
},
"load": [
19
],
"activities": [
{
"jobId": "Job_1",
"type": "delivery",
"location": {
"lat": 52.63329,
"lng": 13.3138
},
"time": {
"start": "2024-07-31T04:41:55Z",
"end": "2024-07-31T04:42:25Z"
}
}
],
"location": {
"lat": 52.63329,
"lng": 13.3138
},
"distance": 20277
},
{
"time": {
"arrival": "2024-07-31T04:48:35Z",
"departure": "2024-07-31T04:49:05Z"
},
"load": [
18
],
"activities": [
{
"jobId": "Job_20",
"type": "delivery",
"location": {
"lat": 52.61955,
"lng": 13.29845
},
"time": {
"start": "2024-07-31T04:48:35Z",
"end": "2024-07-31T04:49:05Z"
}
}
],
"location": {
"lat": 52.61955,
"lng": 13.29845
},
"distance": 23538
},
{
"time": {
"arrival": "2024-07-31T04:57:26Z",
"departure": "2024-07-31T04:57:56Z"
},
"load": [
17
],
"activities": [
{
"jobId": "Job_39",
"type": "delivery",
"location": {
"lat": 52.6029,
"lng": 13.3113
},
"time": {
"start": "2024-07-31T04:57:26Z",
"end": "2024-07-31T04:57:56Z"
}
}
],
"location": {
"lat": 52.6029,
"lng": 13.3113
},
"distance": 27911
},
{
"time": {
"arrival": "2024-07-31T05:03:23Z",
"departure": "2024-07-31T05:03:53Z"
},
"load": [
16
],
"activities": [
{
"jobId": "Job_30",
"type": "delivery",
"location": {
"lat": 52.60079217247425,
"lng": 13.339813254226156
},
"time": {
"start": "2024-07-31T05:03:23Z",
"end": "2024-07-31T05:03:53Z"
}
}
],
"location": {
"lat": 52.60079217247425,
"lng": 13.339813254226156
},
"distance": 30697
},
{
"time": {
"arrival": "2024-07-31T05:10:47Z",
"departure": "2024-07-31T05:11:17Z"
},
"load": [
15
],
"activities": [
{
"jobId": "Job_14",
"type": "delivery",
"location": {
"lat": 52.58038089373736,
"lng": 13.30447922221816
},
"time": {
"start": "2024-07-31T05:10:47Z",
"end": "2024-07-31T05:11:17Z"
}
}
],
"location": {
"lat": 52.58038089373736,
"lng": 13.30447922221816
},
"distance": 34566
},
{
"time": {
"arrival": "2024-07-31T05:23:45Z",
"departure": "2024-07-31T05:24:15Z"
},
"load": [
14
],
"activities": [
{
"jobId": "Job_26",
"type": "delivery",
"location": {
"lat": 52.53754,
"lng": 13.34152
},
"time": {
"start": "2024-07-31T05:23:45Z",
"end": "2024-07-31T05:24:15Z"
}
}
],
"location": {
"lat": 52.53754,
"lng": 13.34152
},
"distance": 42184
},
{
"time": {
"arrival": "2024-07-31T05:31:08Z",
"departure": "2024-07-31T05:31:38Z"
},
"load": [
13
],
"activities": [
{
"jobId": "Job_3",
"type": "delivery",
"location": {
"lat": 52.51635175288175,
"lng": 13.343661020679573
},
"time": {
"start": "2024-07-31T05:31:08Z",
"end": "2024-07-31T05:31:38Z"
}
}
],
"location": {
"lat": 52.51635175288175,
"lng": 13.343661020679573
},
"distance": 45476
},
{
"time": {
"arrival": "2024-07-31T05:36:47Z",
"departure": "2024-07-31T05:37:17Z"
},
"load": [
12
],
"activities": [
{
"jobId": "Job_16",
"type": "delivery",
"location": {
"lat": 52.5102,
"lng": 13.3444
},
"time": {
"start": "2024-07-31T05:36:47Z",
"end": "2024-07-31T05:37:17Z"
}
}
],
"location": {
"lat": 52.5102,
"lng": 13.3444
},
"distance": 47767
},
{
"time": {
"arrival": "2024-07-31T05:41:24Z",
"departure": "2024-07-31T05:41:54Z"
},
"load": [
11
],
"activities": [
{
"jobId": "Job_38",
"type": "delivery",
"location": {
"lat": 52.50488105730338,
"lng": 13.355333507786808
},
"time": {
"start": "2024-07-31T05:41:24Z",
"end": "2024-07-31T05:41:54Z"
}
}
],
"location": {
"lat": 52.50488105730338,
"lng": 13.355333507786808
},
"distance": 49207
},
{
"time": {
"arrival": "2024-07-31T05:48:53Z",
"departure": "2024-07-31T05:49:23Z"
},
"load": [
10
],
"activities": [
{
"jobId": "Job_27",
"type": "delivery",
"location": {
"lat": 52.48811100200862,
"lng": 13.376
},
"time": {
"start": "2024-07-31T05:48:53Z",
"end": "2024-07-31T05:49:23Z"
}
}
],
"location": {
"lat": 52.48811100200862,
"lng": 13.376
},
"distance": 52971
},
{
"time": {
"arrival": "2024-07-31T05:53:24Z",
"departure": "2024-07-31T05:53:54Z"
},
"load": [
9
],
"activities": [
{
"jobId": "Job_45",
"type": "delivery",
"location": {
"lat": 52.486517527979494,
"lng": 13.382057792236846
},
"time": {
"start": "2024-07-31T05:53:24Z",
"end": "2024-07-31T05:53:54Z"
}
}
],
"location": {
"lat": 52.486517527979494,
"lng": 13.382057792236846
},
"distance": 54183
},
{
"time": {
"arrival": "2024-07-31T05:58:05Z",
"departure": "2024-07-31T05:58:35Z"
},
"load": [
8
],
"activities": [
{
"jobId": "Job_34",
"type": "delivery",
"location": {
"lat": 52.48446152479127,
"lng": 13.392004256315916
},
"time": {
"start": "2024-07-31T05:58:05Z",
"end": "2024-07-31T05:58:35Z"
}
}
],
"location": {
"lat": 52.48446152479127,
"lng": 13.392004256315916
},
"distance": 55333
},
{
"time": {
"arrival": "2024-07-31T06:02:58Z",
"departure": "2024-07-31T06:03:28Z"
},
"load": [
7
],
"activities": [
{
"jobId": "Job_35",
"type": "delivery",
"location": {
"lat": 52.4822032946248,
"lng": 13.391214601891551
},
"time": {
"start": "2024-07-31T06:02:58Z",
"end": "2024-07-31T06:03:28Z"
}
}
],
"location": {
"lat": 52.4822032946248,
"lng": 13.391214601891551
},
"distance": 56961
},
{
"time": {
"arrival": "2024-07-31T06:10:48Z",
"departure": "2024-07-31T06:11:18Z"
},
"load": [
6
],
"activities": [
{
"jobId": "Job_28",
"type": "delivery",
"location": {
"lat": 52.4745,
"lng": 13.42
},
"time": {
"start": "2024-07-31T06:10:48Z",
"end": "2024-07-31T06:11:18Z"
}
}
],
"location": {
"lat": 52.4745,
"lng": 13.42
},
"distance": 60168
},
{
"time": {
"arrival": "2024-07-31T06:20:45Z",
"departure": "2024-07-31T06:21:15Z"
},
"load": [
5
],
"activities": [
{
"jobId": "Job_21",
"type": "delivery",
"location": {
"lat": 52.49949154428338,
"lng": 13.40857671284082
},
"time": {
"start": "2024-07-31T06:20:45Z",
"end": "2024-07-31T06:21:15Z"
}
}
],
"location": {
"lat": 52.49949154428338,
"lng": 13.40857671284082
},
"distance": 64566
},
{
"time": {
"arrival": "2024-07-31T06:28:46Z",
"departure": "2024-07-31T06:29:16Z"
},
"load": [
4
],
"activities": [
{
"jobId": "Job_41",
"type": "delivery",
"location": {
"lat": 52.51508491755749,
"lng": 13.38
},
"time": {
"start": "2024-07-31T06:28:46Z",
"end": "2024-07-31T06:29:16Z"
}
}
],
"location": {
"lat": 52.51508491755749,
"lng": 13.38
},
"distance": 68051
},
{
"time": {
"arrival": "2024-07-31T06:35:12Z",
"departure": "2024-07-31T06:35:42Z"
},
"load": [
3
],
"activities": [
{
"jobId": "Job_24",
"type": "delivery",
"location": {
"lat": 52.5293,
"lng": 13.38507204916371
},
"time": {
"start": "2024-07-31T06:35:12Z",
"end": "2024-07-31T06:35:42Z"
}
}
],
"location": {
"lat": 52.5293,
"lng": 13.38507204916371
},
"distance": 70278
},
{
"time": {
"arrival": "2024-07-31T06:39:11Z",
"departure": "2024-07-31T06:39:41Z"
},
"load": [
2
],
"activities": [
{
"jobId": "Job_8",
"type": "delivery",
"location": {
"lat": 52.53213114000045,
"lng": 13.373517153879767
},
"time": {
"start": "2024-07-31T06:39:11Z",
"end": "2024-07-31T06:39:41Z"
}
}
],
"location": {
"lat": 52.53213114000045,
"lng": 13.373517153879767
},
"distance": 71472
},
{
"time": {
"arrival": "2024-07-31T06:50:47Z",
"departure": "2024-07-31T06:51:17Z"
},
"load": [
1
],
"activities": [
{
"jobId": "Job_46",
"type": "delivery",
"location": {
"lat": 52.55606147412602,
"lng": 13.41517487839967
},
"time": {
"start": "2024-07-31T06:50:47Z",
"end": "2024-07-31T06:51:17Z"
}
}
],
"location": {
"lat": 52.55606147412602,
"lng": 13.41517487839967
},
"distance": 76725
},
{
"time": {
"arrival": "2024-07-31T07:07:25Z",
"departure": "2024-07-31T07:07:55Z"
},
"load": [
0
],
"activities": [
{
"jobId": "Job_47",
"type": "delivery",
"location": {
"lat": 52.591995183321515,
"lng": 13.36000789424169
},
"time": {
"start": "2024-07-31T07:07:25Z",
"end": "2024-07-31T07:07:55Z"
}
}
],
"location": {
"lat": 52.591995183321515,
"lng": 13.36000789424169
},
"distance": 85000
},
{
"time": {
"arrival": "2024-07-31T07:16:06Z",
"departure": "2024-07-31T07:16:06Z"
},
"load": [
0
],
"activities": [
{
"jobId": "arrival",
"type": "arrival",
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"time": {
"start": "2024-07-31T07:16:06Z",
"end": "2024-07-31T07:16:06Z"
}
}
],
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"distance": 88604
}
],
"statistic": {
"cost": 1131.36,
"distance": 88604,
"duration": 11766,
"times": {
"driving": 11016,
"serving": 750,
"waiting": 0,
"stopping": 0,
"break": 0
}
},
"shiftIndex": 0
},
{
"vehicleId": "vehicle_1_2",
"typeId": "vehicle_1",
"stops": [
{
"time": {
"arrival": "2024-07-31T04:00:00Z",
"departure": "2024-07-31T04:00:00Z"
},
"load": [
24
],
"activities": [
{
"jobId": "departure",
"type": "departure",
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"time": {
"start": "2024-07-31T04:00:00Z",
"end": "2024-07-31T04:00:00Z"
}
}
],
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"distance": 0
},
{
"time": {
"arrival": "2024-07-31T04:13:07Z",
"departure": "2024-07-31T04:13:37Z"
},
"load": [
23
],
"activities": [
{
"jobId": "Job_29",
"type": "delivery",
"location": {
"lat": 52.58884270031872,
"lng": 13.352068415230912
},
"time": {
"start": "2024-07-31T04:13:07Z",
"end": "2024-07-31T04:13:37Z"
}
}
],
"location": {
"lat": 52.58884270031872,
"lng": 13.352068415230912
},
"distance": 5493
},
{
"time": {
"arrival": "2024-07-31T04:31:05Z",
"departure": "2024-07-31T04:31:35Z"
},
"load": [
22
],
"activities": [
{
"jobId": "Job_10",
"type": "delivery",
"location": {
"lat": 52.5313,
"lng": 13.35356
},
"time": {
"start": "2024-07-31T04:31:05Z",
"end": "2024-07-31T04:31:35Z"
}
}
],
"location": {
"lat": 52.5313,
"lng": 13.35356
},
"distance": 13798
},
{
"time": {
"arrival": "2024-07-31T04:48:18Z",
"departure": "2024-07-31T04:48:48Z"
},
"load": [
21
],
"activities": [
{
"jobId": "Job_11",
"type": "delivery",
"location": {
"lat": 52.457844833248835,
"lng": 13.322525701671736
},
"time": {
"start": "2024-07-31T04:48:18Z",
"end": "2024-07-31T04:48:48Z"
}
}
],
"location": {
"lat": 52.457844833248835,
"lng": 13.322525701671736
},
"distance": 24686
},
{
"time": {
"arrival": "2024-07-31T04:51:45Z",
"departure": "2024-07-31T04:52:15Z"
},
"load": [
20
],
"activities": [
{
"jobId": "Job_6",
"type": "delivery",
"location": {
"lat": 52.45810373923444,
"lng": 13.3318089424755
},
"time": {
"start": "2024-07-31T04:51:45Z",
"end": "2024-07-31T04:52:15Z"
}
}
],
"location": {
"lat": 52.45810373923444,
"lng": 13.3318089424755
},
"distance": 25874
},
{
"time": {
"arrival": "2024-07-31T04:57:58Z",
"departure": "2024-07-31T04:58:28Z"
},
"load": [
19
],
"activities": [
{
"jobId": "Job_7",
"type": "delivery",
"location": {
"lat": 52.439442845393685,
"lng": 13.336118100685782
},
"time": {
"start": "2024-07-31T04:57:58Z",
"end": "2024-07-31T04:58:28Z"
}
}
],
"location": {
"lat": 52.439442845393685,
"lng": 13.336118100685782
},
"distance": 28655
},
{
"time": {
"arrival": "2024-07-31T05:06:13Z",
"departure": "2024-07-31T05:06:43Z"
},
"load": [
18
],
"activities": [
{
"jobId": "Job_12",
"type": "delivery",
"location": {
"lat": 52.4329271708958,
"lng": 13.376558539227483
},
"time": {
"start": "2024-07-31T05:06:13Z",
"end": "2024-07-31T05:06:43Z"
}
}
],
"location": {
"lat": 52.4329271708958,
"lng": 13.376558539227483
},
"distance": 32940
},
{
"time": {
"arrival": "2024-07-31T05:14:54Z",
"departure": "2024-07-31T05:15:24Z"
},
"load": [
17
],
"activities": [
{
"jobId": "Job_43",
"type": "delivery",
"location": {
"lat": 52.4594508034092,
"lng": 13.396015195980404
},
"time": {
"start": "2024-07-31T05:14:54Z",
"end": "2024-07-31T05:15:24Z"
}
}
],
"location": {
"lat": 52.4594508034092,
"lng": 13.396015195980404
},
"distance": 37063
},
{
"time": {
"arrival": "2024-07-31T05:17:28Z",
"departure": "2024-07-31T05:17:58Z"
},
"load": [
16
],
"activities": [
{
"jobId": "Job_4",
"type": "delivery",
"location": {
"lat": 52.456,
"lng": 13.403260583257188
},
"time": {
"start": "2024-07-31T05:17:28Z",
"end": "2024-07-31T05:17:58Z"
}
}
],
"location": {
"lat": 52.456,
"lng": 13.403260583257188
},
"distance": 37965
},
{
"time": {
"arrival": "2024-07-31T05:24:52Z",
"departure": "2024-07-31T05:25:22Z"
},
"load": [
15
],
"activities": [
{
"jobId": "Job_15",
"type": "delivery",
"location": {
"lat": 52.44459785400424,
"lng": 13.42729037972278
},
"time": {
"start": "2024-07-31T05:24:52Z",
"end": "2024-07-31T05:25:22Z"
}
}
],
"location": {
"lat": 52.44459785400424,
"lng": 13.42729037972278
},
"distance": 41865
},
{
"time": {
"arrival": "2024-07-31T05:33:20Z",
"departure": "2024-07-31T05:33:50Z"
},
"load": [
14
],
"activities": [
{
"jobId": "Job_23",
"type": "delivery",
"location": {
"lat": 52.4312,
"lng": 13.45023
},
"time": {
"start": "2024-07-31T05:33:20Z",
"end": "2024-07-31T05:33:50Z"
}
}
],
"location": {
"lat": 52.4312,
"lng": 13.45023
},
"distance": 46176
},
{
"time": {
"arrival": "2024-07-31T05:46:24Z",
"departure": "2024-07-31T05:46:54Z"
},
"load": [
13
],
"activities": [
{
"jobId": "Job_37",
"type": "delivery",
"location": {
"lat": 52.47651505101506,
"lng": 13.459944175857151
},
"time": {
"start": "2024-07-31T05:46:24Z",
"end": "2024-07-31T05:46:54Z"
}
}
],
"location": {
"lat": 52.47651505101506,
"lng": 13.459944175857151
},
"distance": 54456
},
{
"time": {
"arrival": "2024-07-31T05:53:00Z",
"departure": "2024-07-31T05:53:30Z"
},
"load": [
12
],
"activities": [
{
"jobId": "Job_9",
"type": "delivery",
"location": {
"lat": 52.4823,
"lng": 13.4703
},
"time": {
"start": "2024-07-31T05:53:00Z",
"end": "2024-07-31T05:53:30Z"
}
}
],
"location": {
"lat": 52.4823,
"lng": 13.4703
},
"distance": 57168
},
{
"time": {
"arrival": "2024-07-31T06:03:43Z",
"departure": "2024-07-31T06:04:13Z"
},
"load": [
11
],
"activities": [
{
"jobId": "Job_13",
"type": "delivery",
"location": {
"lat": 52.48128598928299,
"lng": 13.4944
},
"time": {
"start": "2024-07-31T06:03:43Z",
"end": "2024-07-31T06:04:13Z"
}
}
],
"location": {
"lat": 52.48128598928299,
"lng": 13.4944
},
"distance": 59295
},
{
"time": {
"arrival": "2024-07-31T06:18:48Z",
"departure": "2024-07-31T06:19:18Z"
},
"load": [
10
],
"activities": [
{
"jobId": "Job_22",
"type": "delivery",
"location": {
"lat": 52.465255531970406,
"lng": 13.511537556934355
},
"time": {
"start": "2024-07-31T06:18:48Z",
"end": "2024-07-31T06:19:18Z"
}
}
],
"location": {
"lat": 52.465255531970406,
"lng": 13.511537556934355
},
"distance": 63948
},
{
"time": {
"arrival": "2024-07-31T06:26:07Z",
"departure": "2024-07-31T06:26:37Z"
},
"load": [
9
],
"activities": [
{
"jobId": "Job_31",
"type": "delivery",
"location": {
"lat": 52.4779,
"lng": 13.5012
},
"time": {
"start": "2024-07-31T06:26:07Z",
"end": "2024-07-31T06:26:37Z"
}
}
],
"location": {
"lat": 52.4779,
"lng": 13.5012
},
"distance": 66449
},
{
"time": {
"arrival": "2024-07-31T06:31:30Z",
"departure": "2024-07-31T06:32:00Z"
},
"load": [
8
],
"activities": [
{
"jobId": "Job_17",
"type": "delivery",
"location": {
"lat": 52.48903177127663,
"lng": 13.495944342993262
},
"time": {
"start": "2024-07-31T06:31:30Z",
"end": "2024-07-31T06:32:00Z"
}
}
],
"location": {
"lat": 52.48903177127663,
"lng": 13.495944342993262
},
"distance": 67814
},
{
"time": {
"arrival": "2024-07-31T06:45:55Z",
"departure": "2024-07-31T06:46:25Z"
},
"load": [
7
],
"activities": [
{
"jobId": "Job_44",
"type": "delivery",
"location": {
"lat": 52.54433793446157,
"lng": 13.49579242116612
},
"time": {
"start": "2024-07-31T06:45:55Z",
"end": "2024-07-31T06:46:25Z"
}
}
],
"location": {
"lat": 52.54433793446157,
"lng": 13.49579242116612
},
"distance": 75952
},
{
"time": {
"arrival": "2024-07-31T06:50:36Z",
"departure": "2024-07-31T06:51:06Z"
},
"load": [
6
],
"activities": [
{
"jobId": "Job_33",
"type": "delivery",
"location": {
"lat": 52.55437436208552,
"lng": 13.503142187091647
},
"time": {
"start": "2024-07-31T06:50:36Z",
"end": "2024-07-31T06:51:06Z"
}
}
],
"location": {
"lat": 52.55437436208552,
"lng": 13.503142187091647
},
"distance": 77960
},
{
"time": {
"arrival": "2024-07-31T06:57:38Z",
"departure": "2024-07-31T06:58:08Z"
},
"load": [
5
],
"activities": [
{
"jobId": "Job_48",
"type": "delivery",
"location": {
"lat": 52.56223251898173,
"lng": 13.471999398223556
},
"time": {
"start": "2024-07-31T06:57:38Z",
"end": "2024-07-31T06:58:08Z"
}
}
],
"location": {
"lat": 52.56223251898173,
"lng": 13.471999398223556
},
"distance": 81957
},
{
"time": {
"arrival": "2024-07-31T07:06:00Z",
"departure": "2024-07-31T07:06:30Z"
},
"load": [
4
],
"activities": [
{
"jobId": "Job_32",
"type": "delivery",
"location": {
"lat": 52.60066027234286,
"lng": 13.502741838681835
},
"time": {
"start": "2024-07-31T07:06:00Z",
"end": "2024-07-31T07:06:30Z"
}
}
],
"location": {
"lat": 52.60066027234286,
"lng": 13.502741838681835
},
"distance": 87622
},
{
"time": {
"arrival": "2024-07-31T07:19:25Z",
"departure": "2024-07-31T07:19:55Z"
},
"load": [
3
],
"activities": [
{
"jobId": "Job_42",
"type": "delivery",
"location": {
"lat": 52.63313572894435,
"lng": 13.506488581249922
},
"time": {
"start": "2024-07-31T07:19:25Z",
"end": "2024-07-31T07:19:55Z"
}
}
],
"location": {
"lat": 52.63313572894435,
"lng": 13.506488581249922
},
"distance": 96453
},
{
"time": {
"arrival": "2024-07-31T07:24:05Z",
"departure": "2024-07-31T07:24:35Z"
},
"load": [
2
],
"activities": [
{
"jobId": "Job_25",
"type": "delivery",
"location": {
"lat": 52.6378,
"lng": 13.48675
},
"time": {
"start": "2024-07-31T07:24:05Z",
"end": "2024-07-31T07:24:35Z"
}
}
],
"location": {
"lat": 52.6378,
"lng": 13.48675
},
"distance": 98012
},
{
"time": {
"arrival": "2024-07-31T07:33:32Z",
"departure": "2024-07-31T07:34:02Z"
},
"load": [
1
],
"activities": [
{
"jobId": "Job_36",
"type": "delivery",
"location": {
"lat": 52.60842932011795,
"lng": 13.46922174529483
},
"time": {
"start": "2024-07-31T07:33:32Z",
"end": "2024-07-31T07:34:02Z"
}
}
],
"location": {
"lat": 52.60842932011795,
"lng": 13.46922174529483
},
"distance": 103248
},
{
"time": {
"arrival": "2024-07-31T07:39:20Z",
"departure": "2024-07-31T07:39:50Z"
},
"load": [
0
],
"activities": [
{
"jobId": "Job_49",
"type": "delivery",
"location": {
"lat": 52.595251760429065,
"lng": 13.456764166098564
},
"time": {
"start": "2024-07-31T07:39:20Z",
"end": "2024-07-31T07:39:50Z"
}
}
],
"location": {
"lat": 52.595251760429065,
"lng": 13.456764166098564
},
"distance": 106092
},
{
"time": {
"arrival": "2024-07-31T07:55:00Z",
"departure": "2024-07-31T07:55:00Z"
},
"load": [
0
],
"activities": [
{
"jobId": "arrival",
"type": "arrival",
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"time": {
"start": "2024-07-31T07:55:00Z",
"end": "2024-07-31T07:55:00Z"
}
}
],
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"distance": 115172
}
],
"statistic": {
"cost": 1443.72,
"distance": 115172,
"duration": 14100,
"times": {
"driving": 13380,
"serving": 720,
"waiting": 0,
"stopping": 0,
"break": 0
}
},
"shiftIndex": 0
}
]
}シナリオ2:tieBreakを使用した階層的な目標
このシナリオでは、tieBreakの目標を使用し、コストと旅程の重複間のインテリジェントなトレードオフを作る高度なアプローチを示しています。複数のソリューションが5%以内のコスト差で存在する場合、アルゴリズムは旅程の重複パフォーマンスがより優れたものを選択します。
このシナリオは、前のシナリオとまったく同じ問題設定を使用していますが、以下の点が異なります。
"advancedObjectives": [
[
{
"type": "minimizeUnassigned"
}
],
[
{
"type": "tieBreak",
"objectives": [
{
"objective": {
"type": "minimizeCost"
},
"tieThreshold": 0.04
},
{
"objective": {
"type": "minimizeTourOverlap"
},
"improvementThreshold": 0.05
}
]
}
]
]この構成での主な違いは、tieBreakの目標の構造です。
- 主たる目標:
tieThresholdが0.04(4%) のminimizeCost - 副次的な目標:
improvementThresholdが0.05(5%) のminimizeTourOverlap
この変更により、アルゴリズムはまずコストを最小化するソリューションを見つけます。次に、複数のソリューションのコストが最良値の4%以内であれば、改善が5%以上であるという条件を満たす限り、旅程の重複パフォーマンスが最も優れたものが選択されます。
ソリューション
次の図は、tieBreakの目標を用いた問題のソリューションを可視化したものです。
タイブレークを用いたアプローチでは、コスト効率と運用上の利点のバランスが取れたソリューションが生成されます。
- コストへの影響:強化されたソリューションでは総コストがわずかに高くなる可能性がありますが、それでも4%のしきい値内に収まっています。具体的には、
tieBreakの目標を含むソリューションのコストは2629であり、よりコスト効率の高い代替案の2575と比べて、増加率はわずか**2.01%**で、許容されるコストの同点しきい値内に十分収まっています。 - 旅程の重複の改善:このソリューションでは車両の旅程間の重複が発生しておらず、明確な担当エリアの分離が実現され、より効率的な運用につながる可能性があります。次の図は、2つのソリューションにおける旅程の重複の比較を示しています。

- 運用上のメリット:旅程の重複の削減により、ドライバーの混乱が軽減され、カスタマーサービスの競合リスクが低下し、運行管理全体の連携が向上します。
以下のセクションでは、ソリューションの完全なJSONを示します。
Click to expand/collapse the sample JSON
{
"statistic": {
"cost": 2629.0299999999997,
"distance": 207879,
"duration": 26512,
"times": {
"driving": 25042,
"serving": 1470,
"waiting": 0,
"stopping": 0,
"break": 0
}
},
"tours": [
{
"vehicleId": "vehicle_1_1",
"typeId": "vehicle_1",
"stops": [
{
"time": {
"arrival": "2024-07-31T04:00:00Z",
"departure": "2024-07-31T04:00:00Z"
},
"load": [
24
],
"activities": [
{
"jobId": "departure",
"type": "departure",
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"time": {
"start": "2024-07-31T04:00:00Z",
"end": "2024-07-31T04:00:00Z"
}
}
],
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"distance": 0
},
{
"time": {
"arrival": "2024-07-31T04:18:41Z",
"departure": "2024-07-31T04:19:11Z"
},
"load": [
23
],
"activities": [
{
"jobId": "Job_46",
"type": "delivery",
"location": {
"lat": 52.55606147412602,
"lng": 13.41517487839967
},
"time": {
"start": "2024-07-31T04:18:41Z",
"end": "2024-07-31T04:19:11Z"
}
}
],
"location": {
"lat": 52.55606147412602,
"lng": 13.41517487839967
},
"distance": 10885
},
{
"time": {
"arrival": "2024-07-31T04:34:09Z",
"departure": "2024-07-31T04:34:39Z"
},
"load": [
22
],
"activities": [
{
"jobId": "Job_21",
"type": "delivery",
"location": {
"lat": 52.49949154428338,
"lng": 13.40857671284082
},
"time": {
"start": "2024-07-31T04:34:09Z",
"end": "2024-07-31T04:34:39Z"
}
}
],
"location": {
"lat": 52.49949154428338,
"lng": 13.40857671284082
},
"distance": 18440
},
{
"time": {
"arrival": "2024-07-31T04:41:33Z",
"departure": "2024-07-31T04:42:03Z"
},
"load": [
21
],
"activities": [
{
"jobId": "Job_34",
"type": "delivery",
"location": {
"lat": 52.48446152479127,
"lng": 13.392004256315916
},
"time": {
"start": "2024-07-31T04:41:33Z",
"end": "2024-07-31T04:42:03Z"
}
}
],
"location": {
"lat": 52.48446152479127,
"lng": 13.392004256315916
},
"distance": 21185
},
{
"time": {
"arrival": "2024-07-31T04:46:26Z",
"departure": "2024-07-31T04:46:56Z"
},
"load": [
20
],
"activities": [
{
"jobId": "Job_35",
"type": "delivery",
"location": {
"lat": 52.4822032946248,
"lng": 13.391214601891551
},
"time": {
"start": "2024-07-31T04:46:26Z",
"end": "2024-07-31T04:46:56Z"
}
}
],
"location": {
"lat": 52.4822032946248,
"lng": 13.391214601891551
},
"distance": 22813
},
{
"time": {
"arrival": "2024-07-31T04:54:18Z",
"departure": "2024-07-31T04:54:48Z"
},
"load": [
19
],
"activities": [
{
"jobId": "Job_28",
"type": "delivery",
"location": {
"lat": 52.4745,
"lng": 13.42
},
"time": {
"start": "2024-07-31T04:54:18Z",
"end": "2024-07-31T04:54:48Z"
}
}
],
"location": {
"lat": 52.4745,
"lng": 13.42
},
"distance": 26020
},
{
"time": {
"arrival": "2024-07-31T05:03:33Z",
"departure": "2024-07-31T05:04:03Z"
},
"load": [
18
],
"activities": [
{
"jobId": "Job_4",
"type": "delivery",
"location": {
"lat": 52.456,
"lng": 13.403260583257188
},
"time": {
"start": "2024-07-31T05:03:33Z",
"end": "2024-07-31T05:04:03Z"
}
}
],
"location": {
"lat": 52.456,
"lng": 13.403260583257188
},
"distance": 30182
},
{
"time": {
"arrival": "2024-07-31T05:06:11Z",
"departure": "2024-07-31T05:06:41Z"
},
"load": [
17
],
"activities": [
{
"jobId": "Job_43",
"type": "delivery",
"location": {
"lat": 52.4594508034092,
"lng": 13.396015195980404
},
"time": {
"start": "2024-07-31T05:06:11Z",
"end": "2024-07-31T05:06:41Z"
}
}
],
"location": {
"lat": 52.4594508034092,
"lng": 13.396015195980404
},
"distance": 31084
},
{
"time": {
"arrival": "2024-07-31T05:14:13Z",
"departure": "2024-07-31T05:14:43Z"
},
"load": [
16
],
"activities": [
{
"jobId": "Job_12",
"type": "delivery",
"location": {
"lat": 52.4329271708958,
"lng": 13.376558539227483
},
"time": {
"start": "2024-07-31T05:14:13Z",
"end": "2024-07-31T05:14:43Z"
}
}
],
"location": {
"lat": 52.4329271708958,
"lng": 13.376558539227483
},
"distance": 35146
},
{
"time": {
"arrival": "2024-07-31T05:23:47Z",
"departure": "2024-07-31T05:24:17Z"
},
"load": [
15
],
"activities": [
{
"jobId": "Job_15",
"type": "delivery",
"location": {
"lat": 52.44459785400424,
"lng": 13.42729037972278
},
"time": {
"start": "2024-07-31T05:23:47Z",
"end": "2024-07-31T05:24:17Z"
}
}
],
"location": {
"lat": 52.44459785400424,
"lng": 13.42729037972278
},
"distance": 40167
},
{
"time": {
"arrival": "2024-07-31T05:32:15Z",
"departure": "2024-07-31T05:32:45Z"
},
"load": [
14
],
"activities": [
{
"jobId": "Job_23",
"type": "delivery",
"location": {
"lat": 52.4312,
"lng": 13.45023
},
"time": {
"start": "2024-07-31T05:32:15Z",
"end": "2024-07-31T05:32:45Z"
}
}
],
"location": {
"lat": 52.4312,
"lng": 13.45023
},
"distance": 44478
},
{
"time": {
"arrival": "2024-07-31T05:45:19Z",
"departure": "2024-07-31T05:45:49Z"
},
"load": [
13
],
"activities": [
{
"jobId": "Job_37",
"type": "delivery",
"location": {
"lat": 52.47651505101506,
"lng": 13.459944175857151
},
"time": {
"start": "2024-07-31T05:45:19Z",
"end": "2024-07-31T05:45:49Z"
}
}
],
"location": {
"lat": 52.47651505101506,
"lng": 13.459944175857151
},
"distance": 52758
},
{
"time": {
"arrival": "2024-07-31T05:51:55Z",
"departure": "2024-07-31T05:52:25Z"
},
"load": [
12
],
"activities": [
{
"jobId": "Job_9",
"type": "delivery",
"location": {
"lat": 52.4823,
"lng": 13.4703
},
"time": {
"start": "2024-07-31T05:51:55Z",
"end": "2024-07-31T05:52:25Z"
}
}
],
"location": {
"lat": 52.4823,
"lng": 13.4703
},
"distance": 55470
},
{
"time": {
"arrival": "2024-07-31T06:02:38Z",
"departure": "2024-07-31T06:03:08Z"
},
"load": [
11
],
"activities": [
{
"jobId": "Job_13",
"type": "delivery",
"location": {
"lat": 52.48128598928299,
"lng": 13.4944
},
"time": {
"start": "2024-07-31T06:02:38Z",
"end": "2024-07-31T06:03:08Z"
}
}
],
"location": {
"lat": 52.48128598928299,
"lng": 13.4944
},
"distance": 57597
},
{
"time": {
"arrival": "2024-07-31T06:17:43Z",
"departure": "2024-07-31T06:18:13Z"
},
"load": [
10
],
"activities": [
{
"jobId": "Job_22",
"type": "delivery",
"location": {
"lat": 52.465255531970406,
"lng": 13.511537556934355
},
"time": {
"start": "2024-07-31T06:17:43Z",
"end": "2024-07-31T06:18:13Z"
}
}
],
"location": {
"lat": 52.465255531970406,
"lng": 13.511537556934355
},
"distance": 62250
},
{
"time": {
"arrival": "2024-07-31T06:25:02Z",
"departure": "2024-07-31T06:25:32Z"
},
"load": [
9
],
"activities": [
{
"jobId": "Job_31",
"type": "delivery",
"location": {
"lat": 52.4779,
"lng": 13.5012
},
"time": {
"start": "2024-07-31T06:25:02Z",
"end": "2024-07-31T06:25:32Z"
}
}
],
"location": {
"lat": 52.4779,
"lng": 13.5012
},
"distance": 64751
},
{
"time": {
"arrival": "2024-07-31T06:30:25Z",
"departure": "2024-07-31T06:30:55Z"
},
"load": [
8
],
"activities": [
{
"jobId": "Job_17",
"type": "delivery",
"location": {
"lat": 52.48903177127663,
"lng": 13.495944342993262
},
"time": {
"start": "2024-07-31T06:30:25Z",
"end": "2024-07-31T06:30:55Z"
}
}
],
"location": {
"lat": 52.48903177127663,
"lng": 13.495944342993262
},
"distance": 66116
},
{
"time": {
"arrival": "2024-07-31T06:44:49Z",
"departure": "2024-07-31T06:45:19Z"
},
"load": [
7
],
"activities": [
{
"jobId": "Job_44",
"type": "delivery",
"location": {
"lat": 52.54433793446157,
"lng": 13.49579242116612
},
"time": {
"start": "2024-07-31T06:44:49Z",
"end": "2024-07-31T06:45:19Z"
}
}
],
"location": {
"lat": 52.54433793446157,
"lng": 13.49579242116612
},
"distance": 74254
},
{
"time": {
"arrival": "2024-07-31T06:49:30Z",
"departure": "2024-07-31T06:50:00Z"
},
"load": [
6
],
"activities": [
{
"jobId": "Job_33",
"type": "delivery",
"location": {
"lat": 52.55437436208552,
"lng": 13.503142187091647
},
"time": {
"start": "2024-07-31T06:49:30Z",
"end": "2024-07-31T06:50:00Z"
}
}
],
"location": {
"lat": 52.55437436208552,
"lng": 13.503142187091647
},
"distance": 76262
},
{
"time": {
"arrival": "2024-07-31T06:56:32Z",
"departure": "2024-07-31T06:57:02Z"
},
"load": [
5
],
"activities": [
{
"jobId": "Job_48",
"type": "delivery",
"location": {
"lat": 52.56223251898173,
"lng": 13.471999398223556
},
"time": {
"start": "2024-07-31T06:56:32Z",
"end": "2024-07-31T06:57:02Z"
}
}
],
"location": {
"lat": 52.56223251898173,
"lng": 13.471999398223556
},
"distance": 80259
},
{
"time": {
"arrival": "2024-07-31T07:04:54Z",
"departure": "2024-07-31T07:05:24Z"
},
"load": [
4
],
"activities": [
{
"jobId": "Job_32",
"type": "delivery",
"location": {
"lat": 52.60066027234286,
"lng": 13.502741838681835
},
"time": {
"start": "2024-07-31T07:04:54Z",
"end": "2024-07-31T07:05:24Z"
}
}
],
"location": {
"lat": 52.60066027234286,
"lng": 13.502741838681835
},
"distance": 85924
},
{
"time": {
"arrival": "2024-07-31T07:18:17Z",
"departure": "2024-07-31T07:18:47Z"
},
"load": [
3
],
"activities": [
{
"jobId": "Job_42",
"type": "delivery",
"location": {
"lat": 52.63313572894435,
"lng": 13.506488581249922
},
"time": {
"start": "2024-07-31T07:18:17Z",
"end": "2024-07-31T07:18:47Z"
}
}
],
"location": {
"lat": 52.63313572894435,
"lng": 13.506488581249922
},
"distance": 94755
},
{
"time": {
"arrival": "2024-07-31T07:22:57Z",
"departure": "2024-07-31T07:23:27Z"
},
"load": [
2
],
"activities": [
{
"jobId": "Job_25",
"type": "delivery",
"location": {
"lat": 52.6378,
"lng": 13.48675
},
"time": {
"start": "2024-07-31T07:22:57Z",
"end": "2024-07-31T07:23:27Z"
}
}
],
"location": {
"lat": 52.6378,
"lng": 13.48675
},
"distance": 96314
},
{
"time": {
"arrival": "2024-07-31T07:32:25Z",
"departure": "2024-07-31T07:32:55Z"
},
"load": [
1
],
"activities": [
{
"jobId": "Job_36",
"type": "delivery",
"location": {
"lat": 52.60842932011795,
"lng": 13.46922174529483
},
"time": {
"start": "2024-07-31T07:32:25Z",
"end": "2024-07-31T07:32:55Z"
}
}
],
"location": {
"lat": 52.60842932011795,
"lng": 13.46922174529483
},
"distance": 101552
},
{
"time": {
"arrival": "2024-07-31T07:38:13Z",
"departure": "2024-07-31T07:38:43Z"
},
"load": [
0
],
"activities": [
{
"jobId": "Job_49",
"type": "delivery",
"location": {
"lat": 52.595251760429065,
"lng": 13.456764166098564
},
"time": {
"start": "2024-07-31T07:38:13Z",
"end": "2024-07-31T07:38:43Z"
}
}
],
"location": {
"lat": 52.595251760429065,
"lng": 13.456764166098564
},
"distance": 104396
},
{
"time": {
"arrival": "2024-07-31T07:53:54Z",
"departure": "2024-07-31T07:53:54Z"
},
"load": [
0
],
"activities": [
{
"jobId": "arrival",
"type": "arrival",
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"time": {
"start": "2024-07-31T07:53:54Z",
"end": "2024-07-31T07:53:54Z"
}
}
],
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"distance": 113476
}
],
"statistic": {
"cost": 1425.44,
"distance": 113476,
"duration": 14034,
"times": {
"driving": 13314,
"serving": 720,
"waiting": 0,
"stopping": 0,
"break": 0
}
},
"shiftIndex": 0
},
{
"vehicleId": "vehicle_1_2",
"typeId": "vehicle_1",
"stops": [
{
"time": {
"arrival": "2024-07-31T04:00:00Z",
"departure": "2024-07-31T04:00:00Z"
},
"load": [
25
],
"activities": [
{
"jobId": "departure",
"type": "departure",
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"time": {
"start": "2024-07-31T04:00:00Z",
"end": "2024-07-31T04:00:00Z"
}
}
],
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"distance": 0
},
{
"time": {
"arrival": "2024-07-31T04:08:02Z",
"departure": "2024-07-31T04:08:32Z"
},
"load": [
24
],
"activities": [
{
"jobId": "Job_2",
"type": "delivery",
"location": {
"lat": 52.62738533184079,
"lng": 13.3789
},
"time": {
"start": "2024-07-31T04:08:02Z",
"end": "2024-07-31T04:08:32Z"
}
}
],
"location": {
"lat": 52.62738533184079,
"lng": 13.3789
},
"distance": 3848
},
{
"time": {
"arrival": "2024-07-31T04:16:12Z",
"departure": "2024-07-31T04:16:42Z"
},
"load": [
23
],
"activities": [
{
"jobId": "Job_18",
"type": "delivery",
"location": {
"lat": 52.62863,
"lng": 13.3621182
},
"time": {
"start": "2024-07-31T04:16:12Z",
"end": "2024-07-31T04:16:42Z"
}
}
],
"location": {
"lat": 52.62863,
"lng": 13.3621182
},
"distance": 6630
},
{
"time": {
"arrival": "2024-07-31T04:19:36Z",
"departure": "2024-07-31T04:20:06Z"
},
"load": [
22
],
"activities": [
{
"jobId": "Job_5",
"type": "delivery",
"location": {
"lat": 52.63256,
"lng": 13.37322
},
"time": {
"start": "2024-07-31T04:19:36Z",
"end": "2024-07-31T04:20:06Z"
}
}
],
"location": {
"lat": 52.63256,
"lng": 13.37322
},
"distance": 7682
},
{
"time": {
"arrival": "2024-07-31T04:29:15Z",
"departure": "2024-07-31T04:29:45Z"
},
"load": [
21
],
"activities": [
{
"jobId": "Job_40",
"type": "delivery",
"location": {
"lat": 52.6543,
"lng": 13.39278
},
"time": {
"start": "2024-07-31T04:29:15Z",
"end": "2024-07-31T04:29:45Z"
}
}
],
"location": {
"lat": 52.6543,
"lng": 13.39278
},
"distance": 12685
},
{
"time": {
"arrival": "2024-07-31T04:34:46Z",
"departure": "2024-07-31T04:35:16Z"
},
"load": [
20
],
"activities": [
{
"jobId": "Job_19",
"type": "delivery",
"location": {
"lat": 52.65831976801964,
"lng": 13.359646771531477
},
"time": {
"start": "2024-07-31T04:34:46Z",
"end": "2024-07-31T04:35:16Z"
}
}
],
"location": {
"lat": 52.65831976801964,
"lng": 13.359646771531477
},
"distance": 15405
},
{
"time": {
"arrival": "2024-07-31T04:41:54Z",
"departure": "2024-07-31T04:42:24Z"
},
"load": [
19
],
"activities": [
{
"jobId": "Job_1",
"type": "delivery",
"location": {
"lat": 52.63329,
"lng": 13.3138
},
"time": {
"start": "2024-07-31T04:41:54Z",
"end": "2024-07-31T04:42:24Z"
}
}
],
"location": {
"lat": 52.63329,
"lng": 13.3138
},
"distance": 20277
},
{
"time": {
"arrival": "2024-07-31T04:48:34Z",
"departure": "2024-07-31T04:49:04Z"
},
"load": [
18
],
"activities": [
{
"jobId": "Job_20",
"type": "delivery",
"location": {
"lat": 52.61955,
"lng": 13.29845
},
"time": {
"start": "2024-07-31T04:48:34Z",
"end": "2024-07-31T04:49:04Z"
}
}
],
"location": {
"lat": 52.61955,
"lng": 13.29845
},
"distance": 23538
},
{
"time": {
"arrival": "2024-07-31T04:57:24Z",
"departure": "2024-07-31T04:57:54Z"
},
"load": [
17
],
"activities": [
{
"jobId": "Job_39",
"type": "delivery",
"location": {
"lat": 52.6029,
"lng": 13.3113
},
"time": {
"start": "2024-07-31T04:57:24Z",
"end": "2024-07-31T04:57:54Z"
}
}
],
"location": {
"lat": 52.6029,
"lng": 13.3113
},
"distance": 27911
},
{
"time": {
"arrival": "2024-07-31T05:03:21Z",
"departure": "2024-07-31T05:03:51Z"
},
"load": [
16
],
"activities": [
{
"jobId": "Job_30",
"type": "delivery",
"location": {
"lat": 52.60079217247425,
"lng": 13.339813254226156
},
"time": {
"start": "2024-07-31T05:03:21Z",
"end": "2024-07-31T05:03:51Z"
}
}
],
"location": {
"lat": 52.60079217247425,
"lng": 13.339813254226156
},
"distance": 30697
},
{
"time": {
"arrival": "2024-07-31T05:10:44Z",
"departure": "2024-07-31T05:11:14Z"
},
"load": [
15
],
"activities": [
{
"jobId": "Job_14",
"type": "delivery",
"location": {
"lat": 52.58038089373736,
"lng": 13.30447922221816
},
"time": {
"start": "2024-07-31T05:10:44Z",
"end": "2024-07-31T05:11:14Z"
}
}
],
"location": {
"lat": 52.58038089373736,
"lng": 13.30447922221816
},
"distance": 34566
},
{
"time": {
"arrival": "2024-07-31T05:23:40Z",
"departure": "2024-07-31T05:24:10Z"
},
"load": [
14
],
"activities": [
{
"jobId": "Job_26",
"type": "delivery",
"location": {
"lat": 52.53754,
"lng": 13.34152
},
"time": {
"start": "2024-07-31T05:23:40Z",
"end": "2024-07-31T05:24:10Z"
}
}
],
"location": {
"lat": 52.53754,
"lng": 13.34152
},
"distance": 42184
},
{
"time": {
"arrival": "2024-07-31T05:28:24Z",
"departure": "2024-07-31T05:28:54Z"
},
"load": [
13
],
"activities": [
{
"jobId": "Job_10",
"type": "delivery",
"location": {
"lat": 52.5313,
"lng": 13.35356
},
"time": {
"start": "2024-07-31T05:28:24Z",
"end": "2024-07-31T05:28:54Z"
}
}
],
"location": {
"lat": 52.5313,
"lng": 13.35356
},
"distance": 44009
},
{
"time": {
"arrival": "2024-07-31T05:36:06Z",
"departure": "2024-07-31T05:36:36Z"
},
"load": [
12
],
"activities": [
{
"jobId": "Job_3",
"type": "delivery",
"location": {
"lat": 52.51635175288175,
"lng": 13.343661020679573
},
"time": {
"start": "2024-07-31T05:36:06Z",
"end": "2024-07-31T05:36:36Z"
}
}
],
"location": {
"lat": 52.51635175288175,
"lng": 13.343661020679573
},
"distance": 47041
},
{
"time": {
"arrival": "2024-07-31T05:41:45Z",
"departure": "2024-07-31T05:42:15Z"
},
"load": [
11
],
"activities": [
{
"jobId": "Job_16",
"type": "delivery",
"location": {
"lat": 52.5102,
"lng": 13.3444
},
"time": {
"start": "2024-07-31T05:41:45Z",
"end": "2024-07-31T05:42:15Z"
}
}
],
"location": {
"lat": 52.5102,
"lng": 13.3444
},
"distance": 49332
},
{
"time": {
"arrival": "2024-07-31T05:46:22Z",
"departure": "2024-07-31T05:46:52Z"
},
"load": [
10
],
"activities": [
{
"jobId": "Job_38",
"type": "delivery",
"location": {
"lat": 52.50488105730338,
"lng": 13.355333507786808
},
"time": {
"start": "2024-07-31T05:46:22Z",
"end": "2024-07-31T05:46:52Z"
}
}
],
"location": {
"lat": 52.50488105730338,
"lng": 13.355333507786808
},
"distance": 50772
},
{
"time": {
"arrival": "2024-07-31T06:02:39Z",
"departure": "2024-07-31T06:03:09Z"
},
"load": [
9
],
"activities": [
{
"jobId": "Job_7",
"type": "delivery",
"location": {
"lat": 52.439442845393685,
"lng": 13.336118100685782
},
"time": {
"start": "2024-07-31T06:02:39Z",
"end": "2024-07-31T06:03:09Z"
}
}
],
"location": {
"lat": 52.439442845393685,
"lng": 13.336118100685782
},
"distance": 59371
},
{
"time": {
"arrival": "2024-07-31T06:09:21Z",
"departure": "2024-07-31T06:09:51Z"
},
"load": [
8
],
"activities": [
{
"jobId": "Job_11",
"type": "delivery",
"location": {
"lat": 52.457844833248835,
"lng": 13.322525701671736
},
"time": {
"start": "2024-07-31T06:09:21Z",
"end": "2024-07-31T06:09:51Z"
}
}
],
"location": {
"lat": 52.457844833248835,
"lng": 13.322525701671736
},
"distance": 62131
},
{
"time": {
"arrival": "2024-07-31T06:12:48Z",
"departure": "2024-07-31T06:13:18Z"
},
"load": [
7
],
"activities": [
{
"jobId": "Job_6",
"type": "delivery",
"location": {
"lat": 52.45810373923444,
"lng": 13.3318089424755
},
"time": {
"start": "2024-07-31T06:12:48Z",
"end": "2024-07-31T06:13:18Z"
}
}
],
"location": {
"lat": 52.45810373923444,
"lng": 13.3318089424755
},
"distance": 63319
},
{
"time": {
"arrival": "2024-07-31T06:22:06Z",
"departure": "2024-07-31T06:22:36Z"
},
"load": [
6
],
"activities": [
{
"jobId": "Job_27",
"type": "delivery",
"location": {
"lat": 52.48811100200862,
"lng": 13.376
},
"time": {
"start": "2024-07-31T06:22:06Z",
"end": "2024-07-31T06:22:36Z"
}
}
],
"location": {
"lat": 52.48811100200862,
"lng": 13.376
},
"distance": 69146
},
{
"time": {
"arrival": "2024-07-31T06:26:37Z",
"departure": "2024-07-31T06:27:07Z"
},
"load": [
5
],
"activities": [
{
"jobId": "Job_45",
"type": "delivery",
"location": {
"lat": 52.486517527979494,
"lng": 13.382057792236846
},
"time": {
"start": "2024-07-31T06:26:37Z",
"end": "2024-07-31T06:27:07Z"
}
}
],
"location": {
"lat": 52.486517527979494,
"lng": 13.382057792236846
},
"distance": 70358
},
{
"time": {
"arrival": "2024-07-31T06:37:43Z",
"departure": "2024-07-31T06:38:13Z"
},
"load": [
4
],
"activities": [
{
"jobId": "Job_41",
"type": "delivery",
"location": {
"lat": 52.51508491755749,
"lng": 13.38
},
"time": {
"start": "2024-07-31T06:37:43Z",
"end": "2024-07-31T06:38:13Z"
}
}
],
"location": {
"lat": 52.51508491755749,
"lng": 13.38
},
"distance": 74664
},
{
"time": {
"arrival": "2024-07-31T06:44:09Z",
"departure": "2024-07-31T06:44:39Z"
},
"load": [
3
],
"activities": [
{
"jobId": "Job_24",
"type": "delivery",
"location": {
"lat": 52.5293,
"lng": 13.38507204916371
},
"time": {
"start": "2024-07-31T06:44:09Z",
"end": "2024-07-31T06:44:39Z"
}
}
],
"location": {
"lat": 52.5293,
"lng": 13.38507204916371
},
"distance": 76891
},
{
"time": {
"arrival": "2024-07-31T06:48:08Z",
"departure": "2024-07-31T06:48:38Z"
},
"load": [
2
],
"activities": [
{
"jobId": "Job_8",
"type": "delivery",
"location": {
"lat": 52.53213114000045,
"lng": 13.373517153879767
},
"time": {
"start": "2024-07-31T06:48:08Z",
"end": "2024-07-31T06:48:38Z"
}
}
],
"location": {
"lat": 52.53213114000045,
"lng": 13.373517153879767
},
"distance": 78085
},
{
"time": {
"arrival": "2024-07-31T07:06:36Z",
"departure": "2024-07-31T07:07:06Z"
},
"load": [
1
],
"activities": [
{
"jobId": "Job_29",
"type": "delivery",
"location": {
"lat": 52.58884270031872,
"lng": 13.352068415230912
},
"time": {
"start": "2024-07-31T07:06:36Z",
"end": "2024-07-31T07:07:06Z"
}
}
],
"location": {
"lat": 52.58884270031872,
"lng": 13.352068415230912
},
"distance": 86144
},
{
"time": {
"arrival": "2024-07-31T07:19:17Z",
"departure": "2024-07-31T07:19:47Z"
},
"load": [
0
],
"activities": [
{
"jobId": "Job_47",
"type": "delivery",
"location": {
"lat": 52.591995183321515,
"lng": 13.36000789424169
},
"time": {
"start": "2024-07-31T07:19:17Z",
"end": "2024-07-31T07:19:47Z"
}
}
],
"location": {
"lat": 52.591995183321515,
"lng": 13.36000789424169
},
"distance": 90799
},
{
"time": {
"arrival": "2024-07-31T07:27:58Z",
"departure": "2024-07-31T07:27:58Z"
},
"load": [
0
],
"activities": [
{
"jobId": "arrival",
"type": "arrival",
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"time": {
"start": "2024-07-31T07:27:58Z",
"end": "2024-07-31T07:27:58Z"
}
}
],
"location": {
"lat": 52.61213641890272,
"lng": 13.368000177132911
},
"distance": 94403
}
],
"statistic": {
"cost": 1203.59,
"distance": 94403,
"duration": 12478,
"times": {
"driving": 11728,
"serving": 750,
"waiting": 0,
"stopping": 0,
"break": 0
}
},
"shiftIndex": 0
}
]
}結論
このチュートリアルでは、tieBreakの目標を使用することによって、主たる最適化の目標と副次的な運用要件の両方を考慮したインテリジェントなトレードオフが可能となり、実運用により適したソリューションが得られることを示しました。
次のステップ
詳細については、以下を参照してください。
26 日前の更新