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

タイブレークの目標を使用して同等のソリューションを解決する

複数のソリューションが類似したコストやパフォーマンスのメトリックを持つ場合、追加の基準に基づいて最適なソリューションを選択する方法が必要になります。tieBreakの目標は、許容可能なしきい値範囲を持つ主たる目標を定義し、その範囲内に収まるソリューション間の優劣を判別するために副次的な目標を使用できるようにすることで、この問題を解決します。

この階層的アプローチにより、主たる最適化目標を満たすだけでなく、複数の同等に妥当な選択肢が存在する場合に、他の重要な運用面の側面も改善するソリューションを見つけるのに役立ちます。具体的には、この機能は、旅程の重複の削減やルートのコンパクト化といった他の運用上のメリットと引き換えに、小さなコスト増加が許容されるシナリオにおいて有用です。

ビジネスシナリオの例:コスト最適化と運用効率のバランス

大都市の人口が密集した商業地区で運営されている配送サービスを考えてみましょう。このサービスは、通常1回の旅程で最大50件の注文を処理する2人のドライバーを雇用しています。

利益率を維持するために、このサービスは旅程のコストの最小化に重点を置いています。しかし問題は、ルートの組み合わせのコスト差がごくわずか (2~3ドル程度) であるにもかかわらず、運用効率には大きな差がある点です。このことは、コスト最適な旅程が重複してしまい、複数の車両が同じ地域をカバーすることにより、最適とは言えないルート、ドライバーの不満、配送ミスのリスクの増大につながる可能性があります。

tieBreakの目標を使用すると、最適化アルゴリズムは、運用効率の改善と引き換えにわずかなコスト増加を受け入れながら、コスト効率の高い旅程を提供します。ここでの運用効率の改善とは、よりコンパクトな旅程を意味します。

以下のセクションでは、このシナリオを取り上げ、HERE Tour Planning APIの問題設定において、tieBreakの目標をどのように設定するかを説明します。このセクションでは、tieBreakの目標を含まない基本的なシナリオと、この目標を含むシナリオを比較し、わずかながら許容範囲内のコスト増加によって、旅程の重複を減らす方法を示します。

tieBreakパラメーターを理解する

サンプルシナリオを見ていく前に、tieBreakの目標をどのように設定し、それを問題JSONにどのように適用するかを理解する必要があります。

📘

これは開発中のテスト段階の機能です。この機能を有効にするには、問題仕様でadvancedObjectivesexperimentalFeatures配列に追加します。詳細については、「テスト段階の機能」を参照してください。

以下のスニペットは、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%以内であれば、それらは「同点」と見なされます。
  • :コストが100103のソリューションは、差が3%であるため (4%のしきい値未満)、同等と見なされます。

副次的なタイブレークの目標:minimizeTourOverlap

  • improvementThreshold: 0.05minimizeCostの目標によってタイブレークするには、該当するソリューションのいずれかについて、旅程の重複の削減が少なくとも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"
      }
    ]
  ]
}

ソリューション

次の図は最適化アルゴリズムが最適と判断した、前述の問題のソリューションを視覚化したものです。

tieBreakの目標なしで計画された旅程計画ソリューション (旅程の重複あり)

ソリューションの概要が示すとおり、すべての車両が、未割り当てのジョブなしで旅程を完了し、コスト効率良く実行されています。このソリューションは主たる目標を達成していますが、旅程の重複の最小化という点においては、最適なトレードオフを必ずしも示しているとは限りません。具体的には、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の目標の構造です。

  • 主たる目標tieThreshold0.04 (4%) のminimizeCost
  • 副次的な目標improvementThreshold0.05 (5%) のminimizeTourOverlap

この変更により、アルゴリズムはまずコストを最小化するソリューションを見つけます。次に、複数のソリューションのコストが最良値の4%以内であれば、改善が5%以上であるという条件を満たす限り、旅程の重複パフォーマンスが最も優れたものが選択されます。

ソリューション

次の図は、tieBreakの目標を用いた問題のソリューションを可視化したものです。

tieBreakの目標を使用し、旅程の重複が削減された旅程計画ソリューション

タイブレークを用いたアプローチでは、コスト効率と運用上の利点のバランスが取れたソリューションが生成されます。

  • コストへの影響:強化されたソリューションでは総コストがわずかに高くなる可能性がありますが、それでも4%のしきい値内に収まっています。具体的には、tieBreakの目標を含むソリューションのコストは2629であり、よりコスト効率の高い代替案の2575と比べて、増加率はわずか**2.01%**で、許容されるコストの同点しきい値内に十分収まっています。
  • 旅程の重複の改善:このソリューションでは車両の旅程間の重複が発生しておらず、明確な担当エリアの分離が実現され、より効率的な運用につながる可能性があります。次の図は、2つのソリューションにおける旅程の重複の比較を示しています。 2つのソリューションの比較。tieBreakを使用したソリューションで旅程の重複が削減されている
  • 運用上のメリット:旅程の重複の削減により、ドライバーの混乱が軽減され、カスタマーサービスの競合リスクが低下し、運行管理全体の連携が向上します。

以下のセクションでは、ソリューションの完全な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の目標を使用することによって、主たる最適化の目標と副次的な運用要件の両方を考慮したインテリジェントなトレードオフが可能となり、実運用により適したソリューションが得られることを示しました。

次のステップ

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