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

指定されたスタンドでEV充電を予定することで、運行管理の効率を上げる

電気自動車を含む全車両の旅程計画に電気自動車 (EV) の充電スタンドを組み込む際には、充電スタンドの場所、車両の航続距離、バッテリーの充電に要する時間などの要素を考慮することが不可欠です。

HERE Tour Planning APIのrechargesオプションを使用することで、このデータを車両のルート検索の問題に組み込むことができ、充電機会の不足によって生じるダウンタイムを最小限に抑えた旅程計画を取得できます。また、継続した運行管理を確実に行い、遅延や配達漏れのリスクを軽減するのに役立ちます。

📘

これはアルファ機能 (新規またはテスト段階であり、現在開発中) です。アルファ機能は、テストおよびフィードバックの目的で提供されています。これらは大幅に変更されたり、一般に入手できなくなったりする可能性があります。

詳細については、「テスト段階の機能の詳細」を参照してください。

充電スタンドの定義

rechargesオブジェクトには、次の利用可能なオプションがあります。

  • maxDistance (必須):車両が充電スタンドに立ち寄らなければならなくなるまでに走行できる最大距離を示しており、単位はメートルです。この値は、充電停止のたびにリセットされます。
  • stations (必須):利用可能な充電スタンドを最大20か所まで指定します。各充電スタンドには、次のプロパティが必要です。
    • location (必須):充電スタンドの緯度と経度の座標を指定します。
    • duration (必須):車両がスタンドでバッテリーの充電に要する時間を示します。
  • times (任意):車両が充電を開始するためにスタンドに到着すべき時間枠を指定することができます。
📘

この機能を効果的に使用するには、旅程を開始する前に各車両が完全に充電されている必要があります。また、旅程を続行する前に、各充電スタンドで車両が完全に充電されていることを確認してください。これにより、サービスはmaxDistanceしきい値に再度到着する前に、次の充電を正確にスケジュールすることができます。

以下の例に示すように、EVの全車両を表す車両タイプに割り当てられたshifts配列内にrechargesオブジェクトをネストしてください。

"recharges": {
  "maxDistance": 45000,
  "stations": [
    {
      "location": {
        "lat": 52.4532810373924,
        "lng": 13.332342180894248
      },
      "duration": 1800
    },
    {
      "location": {
        "lat": 52.631342329,
        "lng": 13.31433238
      },
      "duration": 1800
    }
  ]
}

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

最大走行距離の算出における考慮事項

電気自動車が走行可能な最大距離 (maxDistance) の正確な算出は、効率的な旅程の計画、および全車両が容易にアクセスできる充電地点を戦略的に配置するために不可欠です。たとえば、100キロメートルごとに充電が必要な場合は、交通量の増加、道路工事、悪天候などの予期せぬ状況を考慮し、少なくとも10~15%のバッファを追加することを検討してください。この例では、maxDistanceの値を90~85kmに設定することを意味します。このアプローチにより、追加のバッテリー消費を考慮し、十分な航続距離を確保できます。

例:EV充電スタンドを含む旅程を最適化する

このユースケースでは、サンプルの車両のルート検索問題を通じて充電機能について説明します。この問題では、最大走行距離が45,000メートルの電気自動車 (EV) 1台からなる全車両を対象としています。EVの運行をサポートするために、2つの充電スタンドを利用することができます。目的は、以下の地図に示すように広域な都市部に分散した合計10件のジョブにサービスを提供することです。

EV配達車両のジョブ分布例
📘

充電スタンドの位置は地図に表示されていません。

問題

次のセクションには、ユースケースで説明されている完全な問題のJSONファイルが含まれています。

Click to expand/collapse the sample JSON
{ "configuration": {
    "experimentalFeatures": [
      "recharges"
    ]
  },
  "fleet": {
    "types": [
      {
        "profile": "car",
        "amount": 1,
        "capacity": [
          50
        ],
        "costs": {
          "time": 0.002,
          "distance": 0.001,
          "fixed": 10
        },
        "id": "vehicle_1",
        "shifts": [
          {
            "start": {
              "location": {
                "lat": 52.531,
                "lng": 13.38461
              },
              "time": "2024-06-24T08:00:00+02:00"
            },
            "end": {
              "location": {
                "lat": 52.531,
                "lng": 13.38461
              },
              "time": "2024-06-24T20:00:00+02:00"
            },
            "recharges": {
              "maxDistance": 45000,
              "stations": [
                {
                  "location": {
                    "lat": 52.4532810373924,
                    "lng": 13.332342180894247
                  },
                  "duration": 1800
                },
                {
                  "location": {
                    "lat": 52.631342329,
                    "lng": 13.31433238
                  },
                  "duration": 1800
                }
              ]
            }
          }
        ]
      }
    ],
    "profiles": [
      {
        "name": "car",
        "type": "car"
      }
    ]
  },
  "plan": {
    "jobs": [
      {
        "id": "Job_1",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.62738533184079,
                    "lng": 13.3789
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_2",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.4329271708958,
                    "lng": 13.376558539227483
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_3",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.580380893737356,
                    "lng": 13.304479222218161
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_4",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.5102,
                    "lng": 13.3444
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_5",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.65831976801964,
                    "lng": 13.359646771531477
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_6",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.49949154428338,
                    "lng": 13.40857671284082
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_7",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.465255531970406,
                    "lng": 13.511537556934355
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_8",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.4312,
                    "lng": 13.45023
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_9",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.6378,
                    "lng": 13.48675
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_10",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.48811100200862,
                    "lng": 13.376
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      }
    ]
  }
}

ソリューション

以下の地図は、このユースケースの対象である車両ルート検索問題について、サービスが生成したサンプル旅程を視覚化したものです。

EVの航続距離を伸ばすための充電スタンドを含めた旅程

ソリューション統計で示されているように、今回の旅程の総走行距離は108,491メートルであり、指定された車両の最大走行距離 (45,000メートル) を超過しています。

継続的な運行とジョブの確実な完了を保証するために、このサービスはルート沿いに2回の充電停止を予定し、すべての割り当てられたタスクを完了できるように、走行距離がそれぞれ40,693メートルおよび70,846メートルの地点に指定された充電スタンドを設置しています。

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

Click to expand/collapse the sample JSON
{
  "statistic": {
    "cost": 152.849,
    "distance": 108491,
    "duration": 17179,
    "times": {
      "driving": 10579,
      "serving": 6600,
      "waiting": 0,
      "stopping": 0,
      "break": 0
    }
  },
  "tours": [
    {
      "vehicleId": "vehicle_1_1",
      "typeId": "vehicle_1",
      "stops": [
        {
          "time": {
            "arrival": "2024-06-24T06:00:00Z",
            "departure": "2024-06-24T06:00:00Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.531,
                "lng": 13.38461
              },
              "time": {
                "start": "2024-06-24T06:00:00Z",
                "end": "2024-06-24T06:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.531,
            "lng": 13.38461
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2024-06-24T06:22:36Z",
            "departure": "2024-06-24T06:27:36Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_9",
              "type": "delivery",
              "location": {
                "lat": 52.6378,
                "lng": 13.48675
              },
              "time": {
                "start": "2024-06-24T06:22:36Z",
                "end": "2024-06-24T06:27:36Z"
              }
            }
          ],
          "location": {
            "lat": 52.6378,
            "lng": 13.48675
          },
          "distance": 17552
        },
        {
          "time": {
            "arrival": "2024-06-24T06:42:43Z",
            "departure": "2024-06-24T06:47:43Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_5",
              "type": "delivery",
              "location": {
                "lat": 52.65831976801964,
                "lng": 13.359646771531477
              },
              "time": {
                "start": "2024-06-24T06:42:43Z",
                "end": "2024-06-24T06:47:43Z"
              }
            }
          ],
          "location": {
            "lat": 52.65831976801964,
            "lng": 13.359646771531477
          },
          "distance": 28716
        },
        {
          "time": {
            "arrival": "2024-06-24T06:55:46Z",
            "departure": "2024-06-24T07:00:46Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_1",
              "type": "delivery",
              "location": {
                "lat": 52.62738533184079,
                "lng": 13.3789
              },
              "time": {
                "start": "2024-06-24T06:55:46Z",
                "end": "2024-06-24T07:00:46Z"
              }
            }
          ],
          "location": {
            "lat": 52.62738533184079,
            "lng": 13.3789
          },
          "distance": 34688
        },
        {
          "time": {
            "arrival": "2024-06-24T07:11:01Z",
            "departure": "2024-06-24T07:41:01Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "recharge",
              "type": "recharge",
              "location": {
                "lat": 52.631342329,
                "lng": 13.31433238
              },
              "time": {
                "start": "2024-06-24T07:11:01Z",
                "end": "2024-06-24T07:41:01Z"
              }
            }
          ],
          "location": {
            "lat": 52.631342329,
            "lng": 13.31433238
          },
          "distance": 40693
        },
        {
          "time": {
            "arrival": "2024-06-24T07:52:06Z",
            "departure": "2024-06-24T07:57:06Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_3",
              "type": "delivery",
              "location": {
                "lat": 52.58038089373736,
                "lng": 13.30447922221816
              },
              "time": {
                "start": "2024-06-24T07:52:06Z",
                "end": "2024-06-24T07:57:06Z"
              }
            }
          ],
          "location": {
            "lat": 52.58038089373736,
            "lng": 13.30447922221816
          },
          "distance": 47549
        },
        {
          "time": {
            "arrival": "2024-06-24T08:16:06Z",
            "departure": "2024-06-24T08:21:06Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_4",
              "type": "delivery",
              "location": {
                "lat": 52.5102,
                "lng": 13.3444
              },
              "time": {
                "start": "2024-06-24T08:16:06Z",
                "end": "2024-06-24T08:21:06Z"
              }
            }
          ],
          "location": {
            "lat": 52.5102,
            "lng": 13.3444
          },
          "distance": 59861
        },
        {
          "time": {
            "arrival": "2024-06-24T08:30:47Z",
            "departure": "2024-06-24T08:35:47Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_10",
              "type": "delivery",
              "location": {
                "lat": 52.48811100200862,
                "lng": 13.376
              },
              "time": {
                "start": "2024-06-24T08:30:47Z",
                "end": "2024-06-24T08:35:47Z"
              }
            }
          ],
          "location": {
            "lat": 52.48811100200862,
            "lng": 13.376
          },
          "distance": 64281
        },
        {
          "time": {
            "arrival": "2024-06-24T08:46:59Z",
            "departure": "2024-06-24T09:16:59Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "recharge",
              "type": "recharge",
              "location": {
                "lat": 52.4532810373924,
                "lng": 13.332342180894248
              },
              "time": {
                "start": "2024-06-24T08:46:59Z",
                "end": "2024-06-24T09:16:59Z"
              }
            }
          ],
          "location": {
            "lat": 52.4532810373924,
            "lng": 13.332342180894248
          },
          "distance": 70846
        },
        {
          "time": {
            "arrival": "2024-06-24T09:27:02Z",
            "departure": "2024-06-24T09:32:02Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_2",
              "type": "delivery",
              "location": {
                "lat": 52.4329271708958,
                "lng": 13.376558539227483
              },
              "time": {
                "start": "2024-06-24T09:27:02Z",
                "end": "2024-06-24T09:32:02Z"
              }
            }
          ],
          "location": {
            "lat": 52.4329271708958,
            "lng": 13.376558539227483
          },
          "distance": 76125
        },
        {
          "time": {
            "arrival": "2024-06-24T09:45:17Z",
            "departure": "2024-06-24T09:50:17Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_8",
              "type": "delivery",
              "location": {
                "lat": 52.4312,
                "lng": 13.45023
              },
              "time": {
                "start": "2024-06-24T09:45:17Z",
                "end": "2024-06-24T09:50:17Z"
              }
            }
          ],
          "location": {
            "lat": 52.4312,
            "lng": 13.45023
          },
          "distance": 83953
        },
        {
          "time": {
            "arrival": "2024-06-24T10:06:19Z",
            "departure": "2024-06-24T10:11:19Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_7",
              "type": "delivery",
              "location": {
                "lat": 52.465255531970406,
                "lng": 13.511537556934355
              },
              "time": {
                "start": "2024-06-24T10:06:19Z",
                "end": "2024-06-24T10:11:19Z"
              }
            }
          ],
          "location": {
            "lat": 52.465255531970406,
            "lng": 13.511537556934355
          },
          "distance": 92789
        },
        {
          "time": {
            "arrival": "2024-06-24T10:28:58Z",
            "departure": "2024-06-24T10:33:58Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_6",
              "type": "delivery",
              "location": {
                "lat": 52.49949154428338,
                "lng": 13.40857671284082
              },
              "time": {
                "start": "2024-06-24T10:28:58Z",
                "end": "2024-06-24T10:33:58Z"
              }
            }
          ],
          "location": {
            "lat": 52.49949154428338,
            "lng": 13.40857671284082
          },
          "distance": 102878
        },
        {
          "time": {
            "arrival": "2024-06-24T10:46:19Z",
            "departure": "2024-06-24T10:46:19Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.531,
                "lng": 13.38461
              },
              "time": {
                "start": "2024-06-24T10:46:19Z",
                "end": "2024-06-24T10:46:19Z"
              }
            }
          ],
          "location": {
            "lat": 52.531,
            "lng": 13.38461
          },
          "distance": 108491
        }
      ],
      "statistic": {
        "cost": 152.849,
        "distance": 108491,
        "duration": 17179,
        "times": {
          "driving": 10579,
          "serving": 6600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    }
  ]
}

このソリューションには、各充電停止地点に関する包括的なデータが含まれており、以下の例に示されているように、正確な位置情報、到着および出発時刻、そしてその地点の位置が旅程全体のルート内に示されています。

{
  "time": {
    "arrival": "2024-06-24T08:46:59Z",
    "departure": "2024-06-24T09:16:59Z"
  },
  "load": [
    4
  ],
  "activities": [
    {
      "jobId": "recharge",
      "type": "recharge",
      "location": {
        "lat": 52.4532810373924,
        "lng": 13.332342180894248
      },
      "time": {
        "start": "2024-06-24T08:46:59Z",
        "end": "2024-06-24T09:16:59Z"
      }
    }
  ],
  "location": {
    "lat": 52.4532810373924,
    "lng": 13.332342180894248
  },
  "distance": 70846
}

要約すると、充電スタンドを旅程計画に組み込むことで、電気自動車 (EV) 全車両のルート最適化を最大限に高め、適切な航続距離の確保し、全車両の運用の簡素化を実現できます。

次のステップ

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