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

旅程の重複を最小限に抑えて運転しやすいルートを作成する

同じエリアを重複しないよう、最適化アルゴリズムが異なる車両にルートを割り当てるようにしてください。これは特に、ツアーの重複によって非効率なルートや運用コストの増加を招く都市部や地域配送のシナリオにおいて重要です。

objectives配列の一部として問題JSONにminimizeTourOverlap高度な目標を含めることで、ツアーの重複を減らすことができます。この配列は、ツアー最適化プロセスを制御する目標の優先順位を定義します。

📘

  • advancedObjectivesはテスト段階の機能です。テスト段階の機能を車両ルーティング問題に組み込む方法の詳細については、「テスト段階の機能の詳細」または本チュートリアルで取り上げたサンプルのユースケースをご覧ください。
  • この目標を使用すると、最適化アルゴリズムがツアーをより明確に分離しようとするため、コスト、距離、所要時間といったツアーパラメーターに影響を与える可能性があります。
  • advancedObjectives配列内の目標の順序は重要です。配列内でのminimizeTourOverlap目標の順位が高いほど、最適化アルゴリズムはそれをより優先します。詳細については、「特定の最適化目標に合わせて目的関数を使用する」を参照してください。

シナリオ:地域配送サービス

このシナリオでは、10件の注文の容量を持つスクーターを4台、地域配送サービスが運用しています。その運行管理に関するルーティング問題には、サービスエリア内に密集した40件のジョブが含まれています。以下の例をご覧ください。

狭い範囲に分布した40件の配送作業を含むサンプル問題

以下のセクションでは、minimizeTourOverlap目標の有無によって1つの車両ルーティング問題に対するソリューションを比較し、その目標が結果として得られるツアーに与える影響を示します。

ユースケース1:minimizeTourOverlap目的なし

このケースでは、車両ルーティング問題に特定の最適化目標は含まれておらず、そのため最適化アルゴリズムは最適な解を決定する際にデフォルトの目標のみを適用します。

このユースケースは、デフォルトの目標を使用したソリューションと、ツアーの重複を抑えることを目的としたソリューションの動作を比較するための基準となります。

次のセクションには、問題のJSON全体が含まれています。

Click to expand/collapse the sample JSON
{
  "fleet": {
    "types": [
      {
        "id": "vehicle_1",
        "profile": "vehicle",
        "costs": {
          "fixed": 20,
          "distance": 0.5,
          "time": 0.002
        },
        "shifts": [
          {
            "start": {
              "time": "2023-12-06T09:00:00+02:00",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              }
            },
            "end": {
              "time": "2023-12-06T19:00:00+02:00",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              }
            }
          }
        ],
        "capacity": [
          10
        ],
        "amount": 4
      }
    ],
    "profiles": [
      {
        "type": "scooter",
        "name": "vehicle"
      }
    ]
  },
  "plan": {
    "jobs": [
      {
        "id": "Job_0",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.198437,
                    "lng": 21.020396
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_1",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.196852,
                    "lng": 21.01393
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_2",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.210221,
                    "lng": 21.008033
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_3",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.211604,
                    "lng": 21.018408
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_4",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.196201,
                    "lng": 21.003641
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_5",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.201661,
                    "lng": 21.0019
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_6",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.208418,
                    "lng": 20.99924
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_7",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.208443,
                    "lng": 21.0039
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_8",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.2099,
                    "lng": 21.01501
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_9",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.208032,
                    "lng": 21.019491
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_10",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.207339,
                    "lng": 21.013889
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_11",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.206026,
                    "lng": 21.011517
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_12",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.207388,
                    "lng": 21.01074
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_13",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.206785,
                    "lng": 21.007355
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_14",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.205227,
                    "lng": 21.008841
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_15",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.20263,
                    "lng": 21.009905
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_16",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.202166,
                    "lng": 21.008065
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_17",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.199205,
                    "lng": 21.009271
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_18",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.199146,
                    "lng": 21.005134
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_19",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.19785,
                    "lng": 21.004998
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_20",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.204318,
                    "lng": 21.001053
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_21",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.205608,
                    "lng": 20.999893
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_22",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.204826,
                    "lng": 21.003042
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_23",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.206454,
                    "lng": 21.004241
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_24",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.197989,
                    "lng": 21.015325
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_25",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.197208,
                    "lng": 21.018194
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_26",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.200472,
                    "lng": 21.014328
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_27",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.201151,
                    "lng": 21.022592
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_28",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.198854,
                    "lng": 21.012977
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_29",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.199743,
                    "lng": 21.01647
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_30",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.198428,
                    "lng": 21.017885
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_31",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.202742,
                    "lng": 21.016829
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_32",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.20075,
                    "lng": 21.020079
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_33",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.205546,
                    "lng": 21.021793
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_34",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.20459,
                    "lng": 21.014063
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_35",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.203915,
                    "lng": 21.022401
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_36",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.19966,
                    "lng": 21.023483
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_37",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.198207,
                    "lng": 21.022368
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_38",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.206908,
                    "lng": 21.017486
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_39",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.208587,
                    "lng": 21.01048
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      }
    ]
  }
}

ソリューション

次の図はソリューションの内訳を示したものです。最適化アルゴリズムは、提供されたパラメーターを考慮して、問題に効率的に対処しました。

ツアーの重複を示すサンプルソリューション

しかし、内訳が示すように、すべてのツアーが互いに重複しており、まとまりに欠けています。ツアー間の重複は、効率の低下や遅延、さらにはナビゲーションの複雑化を引き起こす可能性があります。特に、人口密集地で小型車両を使って配達する場合には注意が必要です。

次のセクションには完全なソリューションJSONが含まれています。

Click to expand/collapse the sample JSON
{
  "statistic": {
    "cost": 16898.844,
    "distance": 33607,
    "duration": 7672,
    "times": {
      "driving": 5272,
      "serving": 2400,
      "waiting": 0,
      "stopping": 0,
      "break": 0
    }
  },
  "tours": [
    {
      "vehicleId": "vehicle_1_3",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2023-12-06T07:00:00Z",
            "departure": "2023-12-06T07:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:00:00Z",
                "end": "2023-12-06T07:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2023-12-06T07:03:35Z",
            "departure": "2023-12-06T07:04:35Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_3",
              "type": "delivery",
              "location": {
                "lat": 52.211604,
                "lng": 21.018408
              },
              "time": {
                "start": "2023-12-06T07:03:35Z",
                "end": "2023-12-06T07:04:35Z"
              }
            }
          ],
          "location": {
            "lat": 52.211604,
            "lng": 21.018408
          },
          "distance": 1680
        },
        {
          "time": {
            "arrival": "2023-12-06T07:06:01Z",
            "departure": "2023-12-06T07:07:01Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_9",
              "type": "delivery",
              "location": {
                "lat": 52.208032,
                "lng": 21.019491
              },
              "time": {
                "start": "2023-12-06T07:06:01Z",
                "end": "2023-12-06T07:07:01Z"
              }
            }
          ],
          "location": {
            "lat": 52.208032,
            "lng": 21.019491
          },
          "distance": 2367
        },
        {
          "time": {
            "arrival": "2023-12-06T07:08:08Z",
            "departure": "2023-12-06T07:09:08Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_38",
              "type": "delivery",
              "location": {
                "lat": 52.206908,
                "lng": 21.017486
              },
              "time": {
                "start": "2023-12-06T07:08:08Z",
                "end": "2023-12-06T07:09:08Z"
              }
            }
          ],
          "location": {
            "lat": 52.206908,
            "lng": 21.017486
          },
          "distance": 2663
        },
        {
          "time": {
            "arrival": "2023-12-06T07:12:00Z",
            "departure": "2023-12-06T07:13:00Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_35",
              "type": "delivery",
              "location": {
                "lat": 52.203915,
                "lng": 21.022401
              },
              "time": {
                "start": "2023-12-06T07:12:00Z",
                "end": "2023-12-06T07:13:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.203915,
            "lng": 21.022401
          },
          "distance": 3513
        },
        {
          "time": {
            "arrival": "2023-12-06T07:13:52Z",
            "departure": "2023-12-06T07:14:52Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_27",
              "type": "delivery",
              "location": {
                "lat": 52.201151,
                "lng": 21.022592
              },
              "time": {
                "start": "2023-12-06T07:13:52Z",
                "end": "2023-12-06T07:14:52Z"
              }
            }
          ],
          "location": {
            "lat": 52.201151,
            "lng": 21.022592
          },
          "distance": 3951
        },
        {
          "time": {
            "arrival": "2023-12-06T07:15:20Z",
            "departure": "2023-12-06T07:16:20Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_32",
              "type": "delivery",
              "location": {
                "lat": 52.20075,
                "lng": 21.020079
              },
              "time": {
                "start": "2023-12-06T07:15:20Z",
                "end": "2023-12-06T07:16:20Z"
              }
            }
          ],
          "location": {
            "lat": 52.20075,
            "lng": 21.020079
          },
          "distance": 4128
        },
        {
          "time": {
            "arrival": "2023-12-06T07:17:41Z",
            "departure": "2023-12-06T07:18:41Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_26",
              "type": "delivery",
              "location": {
                "lat": 52.200472,
                "lng": 21.014328
              },
              "time": {
                "start": "2023-12-06T07:17:41Z",
                "end": "2023-12-06T07:18:41Z"
              }
            }
          ],
          "location": {
            "lat": 52.200472,
            "lng": 21.014328
          },
          "distance": 4598
        },
        {
          "time": {
            "arrival": "2023-12-06T07:20:30Z",
            "departure": "2023-12-06T07:21:30Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_31",
              "type": "delivery",
              "location": {
                "lat": 52.202742,
                "lng": 21.016829
              },
              "time": {
                "start": "2023-12-06T07:20:30Z",
                "end": "2023-12-06T07:21:30Z"
              }
            }
          ],
          "location": {
            "lat": 52.202742,
            "lng": 21.016829
          },
          "distance": 5157
        },
        {
          "time": {
            "arrival": "2023-12-06T07:22:29Z",
            "departure": "2023-12-06T07:23:29Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_34",
              "type": "delivery",
              "location": {
                "lat": 52.20459,
                "lng": 21.014063
              },
              "time": {
                "start": "2023-12-06T07:22:29Z",
                "end": "2023-12-06T07:23:29Z"
              }
            }
          ],
          "location": {
            "lat": 52.20459,
            "lng": 21.014063
          },
          "distance": 5510
        },
        {
          "time": {
            "arrival": "2023-12-06T07:24:50Z",
            "departure": "2023-12-06T07:25:50Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_11",
              "type": "delivery",
              "location": {
                "lat": 52.206026,
                "lng": 21.011517
              },
              "time": {
                "start": "2023-12-06T07:24:50Z",
                "end": "2023-12-06T07:25:50Z"
              }
            }
          ],
          "location": {
            "lat": 52.206026,
            "lng": 21.011517
          },
          "distance": 5877
        },
        {
          "time": {
            "arrival": "2023-12-06T07:29:03Z",
            "departure": "2023-12-06T07:29:03Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:29:03Z",
                "end": "2023-12-06T07:29:03Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 7394
        }
      ],
      "statistic": {
        "cost": 3720.486,
        "distance": 7394,
        "duration": 1743,
        "times": {
          "driving": 1143,
          "serving": 600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    },
    {
      "vehicleId": "vehicle_1_4",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2023-12-06T07:00:00Z",
            "departure": "2023-12-06T07:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:00:00Z",
                "end": "2023-12-06T07:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2023-12-06T07:02:37Z",
            "departure": "2023-12-06T07:03:37Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_7",
              "type": "delivery",
              "location": {
                "lat": 52.208443,
                "lng": 21.0039
              },
              "time": {
                "start": "2023-12-06T07:02:37Z",
                "end": "2023-12-06T07:03:37Z"
              }
            }
          ],
          "location": {
            "lat": 52.208443,
            "lng": 21.0039
          },
          "distance": 1086
        },
        {
          "time": {
            "arrival": "2023-12-06T07:04:47Z",
            "departure": "2023-12-06T07:05:47Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_6",
              "type": "delivery",
              "location": {
                "lat": 52.208418,
                "lng": 20.99924
              },
              "time": {
                "start": "2023-12-06T07:04:47Z",
                "end": "2023-12-06T07:05:47Z"
              }
            }
          ],
          "location": {
            "lat": 52.208418,
            "lng": 20.99924
          },
          "distance": 1463
        },
        {
          "time": {
            "arrival": "2023-12-06T07:07:15Z",
            "departure": "2023-12-06T07:08:15Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_23",
              "type": "delivery",
              "location": {
                "lat": 52.206454,
                "lng": 21.004241
              },
              "time": {
                "start": "2023-12-06T07:07:15Z",
                "end": "2023-12-06T07:08:15Z"
              }
            }
          ],
          "location": {
            "lat": 52.206454,
            "lng": 21.004241
          },
          "distance": 2013
        },
        {
          "time": {
            "arrival": "2023-12-06T07:11:04Z",
            "departure": "2023-12-06T07:12:04Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_15",
              "type": "delivery",
              "location": {
                "lat": 52.20263,
                "lng": 21.009905
              },
              "time": {
                "start": "2023-12-06T07:11:04Z",
                "end": "2023-12-06T07:12:04Z"
              }
            }
          ],
          "location": {
            "lat": 52.20263,
            "lng": 21.009905
          },
          "distance": 2974
        },
        {
          "time": {
            "arrival": "2023-12-06T07:14:47Z",
            "departure": "2023-12-06T07:15:47Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_4",
              "type": "delivery",
              "location": {
                "lat": 52.196201,
                "lng": 21.003641
              },
              "time": {
                "start": "2023-12-06T07:14:47Z",
                "end": "2023-12-06T07:15:47Z"
              }
            }
          ],
          "location": {
            "lat": 52.196201,
            "lng": 21.003641
          },
          "distance": 4167
        },
        {
          "time": {
            "arrival": "2023-12-06T07:20:15Z",
            "departure": "2023-12-06T07:21:15Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_0",
              "type": "delivery",
              "location": {
                "lat": 52.198437,
                "lng": 21.020396
              },
              "time": {
                "start": "2023-12-06T07:20:15Z",
                "end": "2023-12-06T07:21:15Z"
              }
            }
          ],
          "location": {
            "lat": 52.198437,
            "lng": 21.020396
          },
          "distance": 5915
        },
        {
          "time": {
            "arrival": "2023-12-06T07:22:41Z",
            "departure": "2023-12-06T07:23:41Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_30",
              "type": "delivery",
              "location": {
                "lat": 52.198428,
                "lng": 21.017885
              },
              "time": {
                "start": "2023-12-06T07:22:41Z",
                "end": "2023-12-06T07:23:41Z"
              }
            }
          ],
          "location": {
            "lat": 52.198428,
            "lng": 21.017885
          },
          "distance": 6231
        },
        {
          "time": {
            "arrival": "2023-12-06T07:24:50Z",
            "departure": "2023-12-06T07:25:50Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_24",
              "type": "delivery",
              "location": {
                "lat": 52.197989,
                "lng": 21.015325
              },
              "time": {
                "start": "2023-12-06T07:24:50Z",
                "end": "2023-12-06T07:25:50Z"
              }
            }
          ],
          "location": {
            "lat": 52.197989,
            "lng": 21.015325
          },
          "distance": 6533
        },
        {
          "time": {
            "arrival": "2023-12-06T07:26:37Z",
            "departure": "2023-12-06T07:27:37Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_28",
              "type": "delivery",
              "location": {
                "lat": 52.198854,
                "lng": 21.012977
              },
              "time": {
                "start": "2023-12-06T07:26:37Z",
                "end": "2023-12-06T07:27:37Z"
              }
            }
          ],
          "location": {
            "lat": 52.198854,
            "lng": 21.012977
          },
          "distance": 6772
        },
        {
          "time": {
            "arrival": "2023-12-06T07:30:24Z",
            "departure": "2023-12-06T07:31:24Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_2",
              "type": "delivery",
              "location": {
                "lat": 52.210221,
                "lng": 21.008033
              },
              "time": {
                "start": "2023-12-06T07:30:24Z",
                "end": "2023-12-06T07:31:24Z"
              }
            }
          ],
          "location": {
            "lat": 52.210221,
            "lng": 21.008033
          },
          "distance": 8141
        },
        {
          "time": {
            "arrival": "2023-12-06T07:34:03Z",
            "departure": "2023-12-06T07:34:03Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:34:03Z",
                "end": "2023-12-06T07:34:03Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 9082
        }
      ],
      "statistic": {
        "cost": 4565.086,
        "distance": 9082,
        "duration": 2043,
        "times": {
          "driving": 1443,
          "serving": 600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    },
    {
      "vehicleId": "vehicle_1_1",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2023-12-06T07:00:00Z",
            "departure": "2023-12-06T07:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:00:00Z",
                "end": "2023-12-06T07:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2023-12-06T07:02:42Z",
            "departure": "2023-12-06T07:03:42Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_12",
              "type": "delivery",
              "location": {
                "lat": 52.207388,
                "lng": 21.01074
              },
              "time": {
                "start": "2023-12-06T07:02:42Z",
                "end": "2023-12-06T07:03:42Z"
              }
            }
          ],
          "location": {
            "lat": 52.207388,
            "lng": 21.01074
          },
          "distance": 1165
        },
        {
          "time": {
            "arrival": "2023-12-06T07:03:50Z",
            "departure": "2023-12-06T07:04:50Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_39",
              "type": "delivery",
              "location": {
                "lat": 52.208587,
                "lng": 21.01048
              },
              "time": {
                "start": "2023-12-06T07:03:50Z",
                "end": "2023-12-06T07:04:50Z"
              }
            }
          ],
          "location": {
            "lat": 52.208587,
            "lng": 21.01048
          },
          "distance": 1230
        },
        {
          "time": {
            "arrival": "2023-12-06T07:06:25Z",
            "departure": "2023-12-06T07:07:25Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_10",
              "type": "delivery",
              "location": {
                "lat": 52.207339,
                "lng": 21.013889
              },
              "time": {
                "start": "2023-12-06T07:06:25Z",
                "end": "2023-12-06T07:07:25Z"
              }
            }
          ],
          "location": {
            "lat": 52.207339,
            "lng": 21.013889
          },
          "distance": 1688
        },
        {
          "time": {
            "arrival": "2023-12-06T07:09:38Z",
            "departure": "2023-12-06T07:10:38Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_29",
              "type": "delivery",
              "location": {
                "lat": 52.199743,
                "lng": 21.01647
              },
              "time": {
                "start": "2023-12-06T07:09:38Z",
                "end": "2023-12-06T07:10:38Z"
              }
            }
          ],
          "location": {
            "lat": 52.199743,
            "lng": 21.01647
          },
          "distance": 2670
        },
        {
          "time": {
            "arrival": "2023-12-06T07:12:24Z",
            "departure": "2023-12-06T07:13:24Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_1",
              "type": "delivery",
              "location": {
                "lat": 52.196852,
                "lng": 21.01393
              },
              "time": {
                "start": "2023-12-06T07:12:24Z",
                "end": "2023-12-06T07:13:24Z"
              }
            }
          ],
          "location": {
            "lat": 52.196852,
            "lng": 21.01393
          },
          "distance": 3402
        },
        {
          "time": {
            "arrival": "2023-12-06T07:14:10Z",
            "departure": "2023-12-06T07:15:10Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_25",
              "type": "delivery",
              "location": {
                "lat": 52.197208,
                "lng": 21.018194
              },
              "time": {
                "start": "2023-12-06T07:14:10Z",
                "end": "2023-12-06T07:15:10Z"
              }
            }
          ],
          "location": {
            "lat": 52.197208,
            "lng": 21.018194
          },
          "distance": 3693
        },
        {
          "time": {
            "arrival": "2023-12-06T07:16:11Z",
            "departure": "2023-12-06T07:17:11Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_37",
              "type": "delivery",
              "location": {
                "lat": 52.198207,
                "lng": 21.022368
              },
              "time": {
                "start": "2023-12-06T07:16:11Z",
                "end": "2023-12-06T07:17:11Z"
              }
            }
          ],
          "location": {
            "lat": 52.198207,
            "lng": 21.022368
          },
          "distance": 3997
        },
        {
          "time": {
            "arrival": "2023-12-06T07:19:20Z",
            "departure": "2023-12-06T07:20:20Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_36",
              "type": "delivery",
              "location": {
                "lat": 52.19966,
                "lng": 21.023483
              },
              "time": {
                "start": "2023-12-06T07:19:20Z",
                "end": "2023-12-06T07:20:20Z"
              }
            }
          ],
          "location": {
            "lat": 52.19966,
            "lng": 21.023483
          },
          "distance": 4626
        },
        {
          "time": {
            "arrival": "2023-12-06T07:22:22Z",
            "departure": "2023-12-06T07:23:22Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_33",
              "type": "delivery",
              "location": {
                "lat": 52.205546,
                "lng": 21.021793
              },
              "time": {
                "start": "2023-12-06T07:22:22Z",
                "end": "2023-12-06T07:23:22Z"
              }
            }
          ],
          "location": {
            "lat": 52.205546,
            "lng": 21.021793
          },
          "distance": 5469
        },
        {
          "time": {
            "arrival": "2023-12-06T07:25:49Z",
            "departure": "2023-12-06T07:26:49Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_8",
              "type": "delivery",
              "location": {
                "lat": 52.2099,
                "lng": 21.01501
              },
              "time": {
                "start": "2023-12-06T07:25:49Z",
                "end": "2023-12-06T07:26:49Z"
              }
            }
          ],
          "location": {
            "lat": 52.2099,
            "lng": 21.01501
          },
          "distance": 6393
        },
        {
          "time": {
            "arrival": "2023-12-06T07:30:34Z",
            "departure": "2023-12-06T07:30:34Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:30:34Z",
                "end": "2023-12-06T07:30:34Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 7796
        }
      ],
      "statistic": {
        "cost": 3921.668,
        "distance": 7796,
        "duration": 1834,
        "times": {
          "driving": 1234,
          "serving": 600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    },
    {
      "vehicleId": "vehicle_1_2",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2023-12-06T07:00:00Z",
            "departure": "2023-12-06T07:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:00:00Z",
                "end": "2023-12-06T07:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2023-12-06T07:02:36Z",
            "departure": "2023-12-06T07:03:36Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_14",
              "type": "delivery",
              "location": {
                "lat": 52.205227,
                "lng": 21.008841
              },
              "time": {
                "start": "2023-12-06T07:02:36Z",
                "end": "2023-12-06T07:03:36Z"
              }
            }
          ],
          "location": {
            "lat": 52.205227,
            "lng": 21.008841
          },
          "distance": 1297
        },
        {
          "time": {
            "arrival": "2023-12-06T07:05:15Z",
            "departure": "2023-12-06T07:06:15Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_13",
              "type": "delivery",
              "location": {
                "lat": 52.206785,
                "lng": 21.007355
              },
              "time": {
                "start": "2023-12-06T07:05:15Z",
                "end": "2023-12-06T07:06:15Z"
              }
            }
          ],
          "location": {
            "lat": 52.206785,
            "lng": 21.007355
          },
          "distance": 1884
        },
        {
          "time": {
            "arrival": "2023-12-06T07:08:55Z",
            "departure": "2023-12-06T07:09:55Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_20",
              "type": "delivery",
              "location": {
                "lat": 52.204318,
                "lng": 21.001053
              },
              "time": {
                "start": "2023-12-06T07:08:55Z",
                "end": "2023-12-06T07:09:55Z"
              }
            }
          ],
          "location": {
            "lat": 52.204318,
            "lng": 21.001053
          },
          "distance": 2835
        },
        {
          "time": {
            "arrival": "2023-12-06T07:10:43Z",
            "departure": "2023-12-06T07:11:43Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_21",
              "type": "delivery",
              "location": {
                "lat": 52.205608,
                "lng": 20.999893
              },
              "time": {
                "start": "2023-12-06T07:10:43Z",
                "end": "2023-12-06T07:11:43Z"
              }
            }
          ],
          "location": {
            "lat": 52.205608,
            "lng": 20.999893
          },
          "distance": 3046
        },
        {
          "time": {
            "arrival": "2023-12-06T07:12:45Z",
            "departure": "2023-12-06T07:13:45Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_22",
              "type": "delivery",
              "location": {
                "lat": 52.204826,
                "lng": 21.003042
              },
              "time": {
                "start": "2023-12-06T07:12:45Z",
                "end": "2023-12-06T07:13:45Z"
              }
            }
          ],
          "location": {
            "lat": 52.204826,
            "lng": 21.003042
          },
          "distance": 3479
        },
        {
          "time": {
            "arrival": "2023-12-06T07:16:05Z",
            "departure": "2023-12-06T07:17:05Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_5",
              "type": "delivery",
              "location": {
                "lat": 52.201661,
                "lng": 21.0019
              },
              "time": {
                "start": "2023-12-06T07:16:05Z",
                "end": "2023-12-06T07:17:05Z"
              }
            }
          ],
          "location": {
            "lat": 52.201661,
            "lng": 21.0019
          },
          "distance": 4271
        },
        {
          "time": {
            "arrival": "2023-12-06T07:19:47Z",
            "departure": "2023-12-06T07:20:47Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_19",
              "type": "delivery",
              "location": {
                "lat": 52.19785,
                "lng": 21.004998
              },
              "time": {
                "start": "2023-12-06T07:19:47Z",
                "end": "2023-12-06T07:20:47Z"
              }
            }
          ],
          "location": {
            "lat": 52.19785,
            "lng": 21.004998
          },
          "distance": 5559
        },
        {
          "time": {
            "arrival": "2023-12-06T07:22:51Z",
            "departure": "2023-12-06T07:23:51Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_18",
              "type": "delivery",
              "location": {
                "lat": 52.199146,
                "lng": 21.005134
              },
              "time": {
                "start": "2023-12-06T07:22:51Z",
                "end": "2023-12-06T07:23:51Z"
              }
            }
          ],
          "location": {
            "lat": 52.199146,
            "lng": 21.005134
          },
          "distance": 6091
        },
        {
          "time": {
            "arrival": "2023-12-06T07:25:11Z",
            "departure": "2023-12-06T07:26:11Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_17",
              "type": "delivery",
              "location": {
                "lat": 52.199205,
                "lng": 21.009271
              },
              "time": {
                "start": "2023-12-06T07:25:11Z",
                "end": "2023-12-06T07:26:11Z"
              }
            }
          ],
          "location": {
            "lat": 52.199205,
            "lng": 21.009271
          },
          "distance": 6534
        },
        {
          "time": {
            "arrival": "2023-12-06T07:29:10Z",
            "departure": "2023-12-06T07:30:10Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_16",
              "type": "delivery",
              "location": {
                "lat": 52.202166,
                "lng": 21.008065
              },
              "time": {
                "start": "2023-12-06T07:29:10Z",
                "end": "2023-12-06T07:30:10Z"
              }
            }
          ],
          "location": {
            "lat": 52.202166,
            "lng": 21.008065
          },
          "distance": 7521
        },
        {
          "time": {
            "arrival": "2023-12-06T07:34:12Z",
            "departure": "2023-12-06T07:34:12Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:34:12Z",
                "end": "2023-12-06T07:34:12Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 9335
        }
      ],
      "statistic": {
        "cost": 4691.604,
        "distance": 9335,
        "duration": 2052,
        "times": {
          "driving": 1452,
          "serving": 600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    }
  ]
}

ユースケース2:minimizeTourOverlap目的あり

すべてのツアーが重複せず、地理的に明確かつコンパクトなエリアをカバーするようなソリューションを優先するには、車両ルーティング問題を次のように修正します。

  • 以下のスニペットに示すように、experimentalFeatures配列の一部としてadvancedObjectives機能を追加します。

    "configuration": {
        "experimentalFeatures": [
          "advancedObjectives"
        ]
      }
  • たとえば、minimizeTourOverlap目標を含むadvancedObjectives配列を追加します。

    "advancedObjectives": [
        [
          {
            "type": "minimizeUnassigned"
          }
        ],
        [
          {
            "type": "minimizeTours"
          }
        ],
        [
          {
            "type": "minimizeTourOverlap"
          }
        ],
        [
          {
            "type": "minimizeCost"
          }
        ]
      ]
📘

前の例に示したように、目標とその階層について次の点に留意してください。

  • minimizeTourOverlap目標をminimizeUnassigned目標およびminimizeTours目標の下位に配置することで、未割り当てジョブの最小化と最適な車両数の使用という主要な目標が最優先として維持されます。この手法は、予測可能で効率的なツアー計画の維持に役立ちます。
  • minimizeTourOverlap目標をminimizeCost目標の下位に配置しても、ツアーの重複を減らす効果はほとんどない可能性があります。この例では、重複の削減の優先度より上位に維持しつつ、効率的で明確なルートを維持するために、minimizeTourOverlapが意図的にminimizeCostよりも上位に配置されています。

詳細については、完全な問題のJSONを参照してください。

Click to expand/collapse the sample JSON
{
  "fleet": {
    "types": [
      {
        "id": "vehicle_1",
        "profile": "vehicle",
        "costs": {
          "fixed": 20,
          "distance": 0.5,
          "time": 0.002
        },
        "shifts": [
          {
            "start": {
              "time": "2023-12-06T09:00:00+02:00",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              }
            },
            "end": {
              "time": "2023-12-06T19:00:00+02:00",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              }
            }
          }
        ],
        "capacity": [
          10
        ],
        "amount": 4
      }
    ],
    "profiles": [
      {
        "type": "scooter",
        "name": "vehicle"
      }
    ]
  },
  "plan": {
    "jobs": [
      {
        "id": "Job_0",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.198437,
                    "lng": 21.020396
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_1",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.196852,
                    "lng": 21.01393
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_2",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.210221,
                    "lng": 21.008033
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_3",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.211604,
                    "lng": 21.018408
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_4",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.196201,
                    "lng": 21.003641
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_5",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.201661,
                    "lng": 21.0019
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_6",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.208418,
                    "lng": 20.99924
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_7",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.208443,
                    "lng": 21.0039
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_8",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.2099,
                    "lng": 21.01501
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_9",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.208032,
                    "lng": 21.019491
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_10",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.207339,
                    "lng": 21.013889
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_11",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.206026,
                    "lng": 21.011517
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_12",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.207388,
                    "lng": 21.01074
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_13",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.206785,
                    "lng": 21.007355
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_14",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.205227,
                    "lng": 21.008841
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_15",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.20263,
                    "lng": 21.009905
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_16",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.202166,
                    "lng": 21.008065
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_17",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.199205,
                    "lng": 21.009271
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_18",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.199146,
                    "lng": 21.005134
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_19",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.19785,
                    "lng": 21.004998
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_20",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.204318,
                    "lng": 21.001053
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_21",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.205608,
                    "lng": 20.999893
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_22",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.204826,
                    "lng": 21.003042
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_23",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.206454,
                    "lng": 21.004241
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_24",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.197989,
                    "lng": 21.015325
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_25",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.197208,
                    "lng": 21.018194
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_26",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.200472,
                    "lng": 21.014328
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_27",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.201151,
                    "lng": 21.022592
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_28",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.198854,
                    "lng": 21.012977
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_29",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.199743,
                    "lng": 21.01647
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_30",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.198428,
                    "lng": 21.017885
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_31",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.202742,
                    "lng": 21.016829
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_32",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.20075,
                    "lng": 21.020079
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_33",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.205546,
                    "lng": 21.021793
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_34",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.20459,
                    "lng": 21.014063
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_35",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.203915,
                    "lng": 21.022401
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_36",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.19966,
                    "lng": 21.023483
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_37",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.198207,
                    "lng": 21.022368
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_38",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.206908,
                    "lng": 21.017486
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_39",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.208587,
                    "lng": 21.01048
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      }
    ]
  },
  "configuration": {
    "experimentalFeatures": [
      "advancedObjectives"
    ]
  },
  "advancedObjectives": [
    [
      {
        "type": "minimizeUnassigned"
      }
    ],
    [
      {
        "type": "minimizeTours"
      }
    ],
    [
      {
        "type": "minimizeTourOverlap"
      }
    ],
    [
      {
        "type": "minimizeCost"
      }
    ]
  ]
}

ソリューション

問題のパラメーターにツアーの重複を最小化する目標が含まれていたため、最適化アルゴリズムはそれを反映し、以下の図のように、より明確に分離されたコンパクトなツアーを生成しました。

ツアーの重複がないサンプルソリューション

この新しいツアープランにより、スクーター車両はよりコンパクトで管理しやすいエリアを担当できるようになり、交通渋滞やルートの混乱による遅延の可能性を低減できたと考えられます。

次のセクションには完全なソリューションJSONが含まれています。

Click to expand/collapse the sample JSON
{
  "statistic": {
    "cost": 17541.021999999997,
    "distance": 34891,
    "duration": 7761,
    "times": {
      "driving": 5361,
      "serving": 2400,
      "waiting": 0,
      "stopping": 0,
      "break": 0
    }
  },
  "tours": [
    {
      "vehicleId": "vehicle_1_2",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2023-12-06T07:00:00Z",
            "departure": "2023-12-06T07:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:00:00Z",
                "end": "2023-12-06T07:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2023-12-06T07:02:37Z",
            "departure": "2023-12-06T07:03:37Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_7",
              "type": "delivery",
              "location": {
                "lat": 52.208443,
                "lng": 21.0039
              },
              "time": {
                "start": "2023-12-06T07:02:37Z",
                "end": "2023-12-06T07:03:37Z"
              }
            }
          ],
          "location": {
            "lat": 52.208443,
            "lng": 21.0039
          },
          "distance": 1086
        },
        {
          "time": {
            "arrival": "2023-12-06T07:04:47Z",
            "departure": "2023-12-06T07:05:47Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_6",
              "type": "delivery",
              "location": {
                "lat": 52.208418,
                "lng": 20.99924
              },
              "time": {
                "start": "2023-12-06T07:04:47Z",
                "end": "2023-12-06T07:05:47Z"
              }
            }
          ],
          "location": {
            "lat": 52.208418,
            "lng": 20.99924
          },
          "distance": 1463
        },
        {
          "time": {
            "arrival": "2023-12-06T07:07:21Z",
            "departure": "2023-12-06T07:08:21Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_22",
              "type": "delivery",
              "location": {
                "lat": 52.204826,
                "lng": 21.003042
              },
              "time": {
                "start": "2023-12-06T07:07:21Z",
                "end": "2023-12-06T07:08:21Z"
              }
            }
          ],
          "location": {
            "lat": 52.204826,
            "lng": 21.003042
          },
          "distance": 2006
        },
        {
          "time": {
            "arrival": "2023-12-06T07:09:55Z",
            "departure": "2023-12-06T07:10:55Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_20",
              "type": "delivery",
              "location": {
                "lat": 52.204318,
                "lng": 21.001053
              },
              "time": {
                "start": "2023-12-06T07:09:55Z",
                "end": "2023-12-06T07:10:55Z"
              }
            }
          ],
          "location": {
            "lat": 52.204318,
            "lng": 21.001053
          },
          "distance": 2491
        },
        {
          "time": {
            "arrival": "2023-12-06T07:11:43Z",
            "departure": "2023-12-06T07:12:43Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_21",
              "type": "delivery",
              "location": {
                "lat": 52.205608,
                "lng": 20.999893
              },
              "time": {
                "start": "2023-12-06T07:11:43Z",
                "end": "2023-12-06T07:12:43Z"
              }
            }
          ],
          "location": {
            "lat": 52.205608,
            "lng": 20.999893
          },
          "distance": 2702
        },
        {
          "time": {
            "arrival": "2023-12-06T07:13:39Z",
            "departure": "2023-12-06T07:14:39Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_23",
              "type": "delivery",
              "location": {
                "lat": 52.206454,
                "lng": 21.004241
              },
              "time": {
                "start": "2023-12-06T07:13:39Z",
                "end": "2023-12-06T07:14:39Z"
              }
            }
          ],
          "location": {
            "lat": 52.206454,
            "lng": 21.004241
          },
          "distance": 3142
        },
        {
          "time": {
            "arrival": "2023-12-06T07:16:43Z",
            "departure": "2023-12-06T07:17:43Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_5",
              "type": "delivery",
              "location": {
                "lat": 52.201661,
                "lng": 21.0019
              },
              "time": {
                "start": "2023-12-06T07:16:43Z",
                "end": "2023-12-06T07:17:43Z"
              }
            }
          ],
          "location": {
            "lat": 52.201661,
            "lng": 21.0019
          },
          "distance": 3906
        },
        {
          "time": {
            "arrival": "2023-12-06T07:18:59Z",
            "departure": "2023-12-06T07:19:59Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_16",
              "type": "delivery",
              "location": {
                "lat": 52.202166,
                "lng": 21.008065
              },
              "time": {
                "start": "2023-12-06T07:18:59Z",
                "end": "2023-12-06T07:19:59Z"
              }
            }
          ],
          "location": {
            "lat": 52.202166,
            "lng": 21.008065
          },
          "distance": 4589
        },
        {
          "time": {
            "arrival": "2023-12-06T07:23:45Z",
            "departure": "2023-12-06T07:24:45Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_14",
              "type": "delivery",
              "location": {
                "lat": 52.205227,
                "lng": 21.008841
              },
              "time": {
                "start": "2023-12-06T07:23:45Z",
                "end": "2023-12-06T07:24:45Z"
              }
            }
          ],
          "location": {
            "lat": 52.205227,
            "lng": 21.008841
          },
          "distance": 5778
        },
        {
          "time": {
            "arrival": "2023-12-06T07:26:24Z",
            "departure": "2023-12-06T07:27:24Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_13",
              "type": "delivery",
              "location": {
                "lat": 52.206785,
                "lng": 21.007355
              },
              "time": {
                "start": "2023-12-06T07:26:24Z",
                "end": "2023-12-06T07:27:24Z"
              }
            }
          ],
          "location": {
            "lat": 52.206785,
            "lng": 21.007355
          },
          "distance": 6365
        },
        {
          "time": {
            "arrival": "2023-12-06T07:32:04Z",
            "departure": "2023-12-06T07:32:04Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:32:04Z",
                "end": "2023-12-06T07:32:04Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 8166
        }
      ],
      "statistic": {
        "cost": 4106.848,
        "distance": 8166,
        "duration": 1924,
        "times": {
          "driving": 1324,
          "serving": 600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    },
    {
      "vehicleId": "vehicle_1_3",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2023-12-06T07:00:00Z",
            "departure": "2023-12-06T07:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:00:00Z",
                "end": "2023-12-06T07:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2023-12-06T07:05:33Z",
            "departure": "2023-12-06T07:06:33Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_0",
              "type": "delivery",
              "location": {
                "lat": 52.198437,
                "lng": 21.020396
              },
              "time": {
                "start": "2023-12-06T07:05:33Z",
                "end": "2023-12-06T07:06:33Z"
              }
            }
          ],
          "location": {
            "lat": 52.198437,
            "lng": 21.020396
          },
          "distance": 2642
        },
        {
          "time": {
            "arrival": "2023-12-06T07:07:59Z",
            "departure": "2023-12-06T07:08:59Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_30",
              "type": "delivery",
              "location": {
                "lat": 52.198428,
                "lng": 21.017885
              },
              "time": {
                "start": "2023-12-06T07:07:59Z",
                "end": "2023-12-06T07:08:59Z"
              }
            }
          ],
          "location": {
            "lat": 52.198428,
            "lng": 21.017885
          },
          "distance": 2958
        },
        {
          "time": {
            "arrival": "2023-12-06T07:09:50Z",
            "departure": "2023-12-06T07:10:50Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_25",
              "type": "delivery",
              "location": {
                "lat": 52.197208,
                "lng": 21.018194
              },
              "time": {
                "start": "2023-12-06T07:09:50Z",
                "end": "2023-12-06T07:10:50Z"
              }
            }
          ],
          "location": {
            "lat": 52.197208,
            "lng": 21.018194
          },
          "distance": 3267
        },
        {
          "time": {
            "arrival": "2023-12-06T07:11:51Z",
            "departure": "2023-12-06T07:12:51Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_37",
              "type": "delivery",
              "location": {
                "lat": 52.198207,
                "lng": 21.022368
              },
              "time": {
                "start": "2023-12-06T07:11:51Z",
                "end": "2023-12-06T07:12:51Z"
              }
            }
          ],
          "location": {
            "lat": 52.198207,
            "lng": 21.022368
          },
          "distance": 3571
        },
        {
          "time": {
            "arrival": "2023-12-06T07:15:00Z",
            "departure": "2023-12-06T07:16:00Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_36",
              "type": "delivery",
              "location": {
                "lat": 52.19966,
                "lng": 21.023483
              },
              "time": {
                "start": "2023-12-06T07:15:00Z",
                "end": "2023-12-06T07:16:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.19966,
            "lng": 21.023483
          },
          "distance": 4200
        },
        {
          "time": {
            "arrival": "2023-12-06T07:18:02Z",
            "departure": "2023-12-06T07:19:02Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_33",
              "type": "delivery",
              "location": {
                "lat": 52.205546,
                "lng": 21.021793
              },
              "time": {
                "start": "2023-12-06T07:18:02Z",
                "end": "2023-12-06T07:19:02Z"
              }
            }
          ],
          "location": {
            "lat": 52.205546,
            "lng": 21.021793
          },
          "distance": 5043
        },
        {
          "time": {
            "arrival": "2023-12-06T07:20:52Z",
            "departure": "2023-12-06T07:21:52Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_35",
              "type": "delivery",
              "location": {
                "lat": 52.203915,
                "lng": 21.022401
              },
              "time": {
                "start": "2023-12-06T07:20:52Z",
                "end": "2023-12-06T07:21:52Z"
              }
            }
          ],
          "location": {
            "lat": 52.203915,
            "lng": 21.022401
          },
          "distance": 5610
        },
        {
          "time": {
            "arrival": "2023-12-06T07:22:44Z",
            "departure": "2023-12-06T07:23:44Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_27",
              "type": "delivery",
              "location": {
                "lat": 52.201151,
                "lng": 21.022592
              },
              "time": {
                "start": "2023-12-06T07:22:44Z",
                "end": "2023-12-06T07:23:44Z"
              }
            }
          ],
          "location": {
            "lat": 52.201151,
            "lng": 21.022592
          },
          "distance": 6048
        },
        {
          "time": {
            "arrival": "2023-12-06T07:24:12Z",
            "departure": "2023-12-06T07:25:12Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_32",
              "type": "delivery",
              "location": {
                "lat": 52.20075,
                "lng": 21.020079
              },
              "time": {
                "start": "2023-12-06T07:24:12Z",
                "end": "2023-12-06T07:25:12Z"
              }
            }
          ],
          "location": {
            "lat": 52.20075,
            "lng": 21.020079
          },
          "distance": 6225
        },
        {
          "time": {
            "arrival": "2023-12-06T07:26:21Z",
            "departure": "2023-12-06T07:27:21Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_31",
              "type": "delivery",
              "location": {
                "lat": 52.202742,
                "lng": 21.016829
              },
              "time": {
                "start": "2023-12-06T07:26:21Z",
                "end": "2023-12-06T07:27:21Z"
              }
            }
          ],
          "location": {
            "lat": 52.202742,
            "lng": 21.016829
          },
          "distance": 6632
        },
        {
          "time": {
            "arrival": "2023-12-06T07:31:35Z",
            "departure": "2023-12-06T07:31:35Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:31:35Z",
                "end": "2023-12-06T07:31:35Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 8718
        }
      ],
      "statistic": {
        "cost": 4382.79,
        "distance": 8718,
        "duration": 1895,
        "times": {
          "driving": 1295,
          "serving": 600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    },
    {
      "vehicleId": "vehicle_1_4",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2023-12-06T07:00:00Z",
            "departure": "2023-12-06T07:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:00:00Z",
                "end": "2023-12-06T07:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2023-12-06T07:02:42Z",
            "departure": "2023-12-06T07:03:42Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_12",
              "type": "delivery",
              "location": {
                "lat": 52.207388,
                "lng": 21.01074
              },
              "time": {
                "start": "2023-12-06T07:02:42Z",
                "end": "2023-12-06T07:03:42Z"
              }
            }
          ],
          "location": {
            "lat": 52.207388,
            "lng": 21.01074
          },
          "distance": 1165
        },
        {
          "time": {
            "arrival": "2023-12-06T07:03:50Z",
            "departure": "2023-12-06T07:04:50Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_39",
              "type": "delivery",
              "location": {
                "lat": 52.208587,
                "lng": 21.01048
              },
              "time": {
                "start": "2023-12-06T07:03:50Z",
                "end": "2023-12-06T07:04:50Z"
              }
            }
          ],
          "location": {
            "lat": 52.208587,
            "lng": 21.01048
          },
          "distance": 1230
        },
        {
          "time": {
            "arrival": "2023-12-06T07:06:25Z",
            "departure": "2023-12-06T07:07:25Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_10",
              "type": "delivery",
              "location": {
                "lat": 52.207339,
                "lng": 21.013889
              },
              "time": {
                "start": "2023-12-06T07:06:25Z",
                "end": "2023-12-06T07:07:25Z"
              }
            }
          ],
          "location": {
            "lat": 52.207339,
            "lng": 21.013889
          },
          "distance": 1688
        },
        {
          "time": {
            "arrival": "2023-12-06T07:08:32Z",
            "departure": "2023-12-06T07:09:32Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_34",
              "type": "delivery",
              "location": {
                "lat": 52.20459,
                "lng": 21.014063
              },
              "time": {
                "start": "2023-12-06T07:08:32Z",
                "end": "2023-12-06T07:09:32Z"
              }
            }
          ],
          "location": {
            "lat": 52.20459,
            "lng": 21.014063
          },
          "distance": 2061
        },
        {
          "time": {
            "arrival": "2023-12-06T07:12:12Z",
            "departure": "2023-12-06T07:13:12Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_8",
              "type": "delivery",
              "location": {
                "lat": 52.2099,
                "lng": 21.01501
              },
              "time": {
                "start": "2023-12-06T07:12:12Z",
                "end": "2023-12-06T07:13:12Z"
              }
            }
          ],
          "location": {
            "lat": 52.2099,
            "lng": 21.01501
          },
          "distance": 2962
        },
        {
          "time": {
            "arrival": "2023-12-06T07:15:20Z",
            "departure": "2023-12-06T07:16:20Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_3",
              "type": "delivery",
              "location": {
                "lat": 52.211604,
                "lng": 21.018408
              },
              "time": {
                "start": "2023-12-06T07:15:20Z",
                "end": "2023-12-06T07:16:20Z"
              }
            }
          ],
          "location": {
            "lat": 52.211604,
            "lng": 21.018408
          },
          "distance": 3710
        },
        {
          "time": {
            "arrival": "2023-12-06T07:17:46Z",
            "departure": "2023-12-06T07:18:46Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_9",
              "type": "delivery",
              "location": {
                "lat": 52.208032,
                "lng": 21.019491
              },
              "time": {
                "start": "2023-12-06T07:17:46Z",
                "end": "2023-12-06T07:18:46Z"
              }
            }
          ],
          "location": {
            "lat": 52.208032,
            "lng": 21.019491
          },
          "distance": 4397
        },
        {
          "time": {
            "arrival": "2023-12-06T07:19:53Z",
            "departure": "2023-12-06T07:20:53Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_38",
              "type": "delivery",
              "location": {
                "lat": 52.206908,
                "lng": 21.017486
              },
              "time": {
                "start": "2023-12-06T07:19:53Z",
                "end": "2023-12-06T07:20:53Z"
              }
            }
          ],
          "location": {
            "lat": 52.206908,
            "lng": 21.017486
          },
          "distance": 4693
        },
        {
          "time": {
            "arrival": "2023-12-06T07:22:32Z",
            "departure": "2023-12-06T07:23:32Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_11",
              "type": "delivery",
              "location": {
                "lat": 52.206026,
                "lng": 21.011517
              },
              "time": {
                "start": "2023-12-06T07:22:32Z",
                "end": "2023-12-06T07:23:32Z"
              }
            }
          ],
          "location": {
            "lat": 52.206026,
            "lng": 21.011517
          },
          "distance": 5262
        },
        {
          "time": {
            "arrival": "2023-12-06T07:25:43Z",
            "departure": "2023-12-06T07:26:43Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_2",
              "type": "delivery",
              "location": {
                "lat": 52.210221,
                "lng": 21.008033
              },
              "time": {
                "start": "2023-12-06T07:25:43Z",
                "end": "2023-12-06T07:26:43Z"
              }
            }
          ],
          "location": {
            "lat": 52.210221,
            "lng": 21.008033
          },
          "distance": 6064
        },
        {
          "time": {
            "arrival": "2023-12-06T07:29:22Z",
            "departure": "2023-12-06T07:29:22Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:29:22Z",
                "end": "2023-12-06T07:29:22Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 7005
        }
      ],
      "statistic": {
        "cost": 3526.024,
        "distance": 7005,
        "duration": 1762,
        "times": {
          "driving": 1162,
          "serving": 600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    },
    {
      "vehicleId": "vehicle_1_1",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2023-12-06T07:00:00Z",
            "departure": "2023-12-06T07:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:00:00Z",
                "end": "2023-12-06T07:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2023-12-06T07:02:55Z",
            "departure": "2023-12-06T07:03:55Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_15",
              "type": "delivery",
              "location": {
                "lat": 52.20263,
                "lng": 21.009905
              },
              "time": {
                "start": "2023-12-06T07:02:55Z",
                "end": "2023-12-06T07:03:55Z"
              }
            }
          ],
          "location": {
            "lat": 52.20263,
            "lng": 21.009905
          },
          "distance": 1561
        },
        {
          "time": {
            "arrival": "2023-12-06T07:06:38Z",
            "departure": "2023-12-06T07:07:38Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_4",
              "type": "delivery",
              "location": {
                "lat": 52.196201,
                "lng": 21.003641
              },
              "time": {
                "start": "2023-12-06T07:06:38Z",
                "end": "2023-12-06T07:07:38Z"
              }
            }
          ],
          "location": {
            "lat": 52.196201,
            "lng": 21.003641
          },
          "distance": 2754
        },
        {
          "time": {
            "arrival": "2023-12-06T07:11:52Z",
            "departure": "2023-12-06T07:12:52Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_19",
              "type": "delivery",
              "location": {
                "lat": 52.19785,
                "lng": 21.004998
              },
              "time": {
                "start": "2023-12-06T07:11:52Z",
                "end": "2023-12-06T07:12:52Z"
              }
            }
          ],
          "location": {
            "lat": 52.19785,
            "lng": 21.004998
          },
          "distance": 4843
        },
        {
          "time": {
            "arrival": "2023-12-06T07:14:56Z",
            "departure": "2023-12-06T07:15:56Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_18",
              "type": "delivery",
              "location": {
                "lat": 52.199146,
                "lng": 21.005134
              },
              "time": {
                "start": "2023-12-06T07:14:56Z",
                "end": "2023-12-06T07:15:56Z"
              }
            }
          ],
          "location": {
            "lat": 52.199146,
            "lng": 21.005134
          },
          "distance": 5375
        },
        {
          "time": {
            "arrival": "2023-12-06T07:17:16Z",
            "departure": "2023-12-06T07:18:16Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_17",
              "type": "delivery",
              "location": {
                "lat": 52.199205,
                "lng": 21.009271
              },
              "time": {
                "start": "2023-12-06T07:17:16Z",
                "end": "2023-12-06T07:18:16Z"
              }
            }
          ],
          "location": {
            "lat": 52.199205,
            "lng": 21.009271
          },
          "distance": 5818
        },
        {
          "time": {
            "arrival": "2023-12-06T07:21:31Z",
            "departure": "2023-12-06T07:22:31Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_1",
              "type": "delivery",
              "location": {
                "lat": 52.196852,
                "lng": 21.01393
              },
              "time": {
                "start": "2023-12-06T07:21:31Z",
                "end": "2023-12-06T07:22:31Z"
              }
            }
          ],
          "location": {
            "lat": 52.196852,
            "lng": 21.01393
          },
          "distance": 7165
        },
        {
          "time": {
            "arrival": "2023-12-06T07:24:13Z",
            "departure": "2023-12-06T07:25:13Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_24",
              "type": "delivery",
              "location": {
                "lat": 52.197989,
                "lng": 21.015325
              },
              "time": {
                "start": "2023-12-06T07:24:13Z",
                "end": "2023-12-06T07:25:13Z"
              }
            }
          ],
          "location": {
            "lat": 52.197989,
            "lng": 21.015325
          },
          "distance": 7619
        },
        {
          "time": {
            "arrival": "2023-12-06T07:26:00Z",
            "departure": "2023-12-06T07:27:00Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_28",
              "type": "delivery",
              "location": {
                "lat": 52.198854,
                "lng": 21.012977
              },
              "time": {
                "start": "2023-12-06T07:26:00Z",
                "end": "2023-12-06T07:27:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.198854,
            "lng": 21.012977
          },
          "distance": 7858
        },
        {
          "time": {
            "arrival": "2023-12-06T07:27:50Z",
            "departure": "2023-12-06T07:28:50Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_29",
              "type": "delivery",
              "location": {
                "lat": 52.199743,
                "lng": 21.01647
              },
              "time": {
                "start": "2023-12-06T07:27:50Z",
                "end": "2023-12-06T07:28:50Z"
              }
            }
          ],
          "location": {
            "lat": 52.199743,
            "lng": 21.01647
          },
          "distance": 8170
        },
        {
          "time": {
            "arrival": "2023-12-06T07:30:10Z",
            "departure": "2023-12-06T07:31:10Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_26",
              "type": "delivery",
              "location": {
                "lat": 52.200472,
                "lng": 21.014328
              },
              "time": {
                "start": "2023-12-06T07:30:10Z",
                "end": "2023-12-06T07:31:10Z"
              }
            }
          ],
          "location": {
            "lat": 52.200472,
            "lng": 21.014328
          },
          "distance": 8554
        },
        {
          "time": {
            "arrival": "2023-12-06T07:36:20Z",
            "departure": "2023-12-06T07:36:20Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.213985,
                "lng": 21.004046
              },
              "time": {
                "start": "2023-12-06T07:36:20Z",
                "end": "2023-12-06T07:36:20Z"
              }
            }
          ],
          "location": {
            "lat": 52.213985,
            "lng": 21.004046
          },
          "distance": 11002
        }
      ],
      "statistic": {
        "cost": 5525.36,
        "distance": 11002,
        "duration": 2180,
        "times": {
          "driving": 1580,
          "serving": 600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    }
  ]
}

次のステップ

  • HERE Tour Planning APIで問題を作成する方法の詳細については、「問題」を参照してください。
  • HERE Tour Planning APIのメソッド、エンドポイント、パラメーターの詳細については、「APIリファレンス」を参照してください。