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

車両によって異なるベース停止時間を使用して配車を改善する

このチュートリアルではベース停止時間機能の使用方法について説明します。

機能の説明

HERE Tour Planningを使用すると、実際の制約を考慮して、一連の場所を訪問する複数の車両のルートを動的に最適化できます。ベースの停車所要時間機能により、ディスパッチャは車両に基づいて停車所要時間を設定し、同じ場所で複数のタスクを管理することで、合計サービス時間をより細かく制御できます。このトピックでは、この機能の詳細に加え、物流のプロがよりきめ細かな制御と最適化を行ううえでこの機能がどのように役立つかについて説明します。

機能の用途

ベースの停車所要時間を使用すると、ディスパッチャは車両ごとに設定されたサービス時間を設定できます。このサービス時間の例としては、車両の駐車、荷物の積み降ろしの準備、施設に入るための手順の完了、各停車地で1回ずつ行う必要がある同様のタスクのための時間が挙げられます。

ベースの停車所要時間を効果的に適用できる主なシナリオは次の2つです。

  • 複数車種のフリートのルート検索

    ベースの停車所要時間は異なる車種の荷降ろしにかかる時間を考慮するために使用できます。フリートがトラックと乗用車のように機能の異なる車両で構成されている場合、停車時間は車両タイプによって異なる場合があります。たとえば、配達や集荷のジョブをトラックで行うと、自動車で行う場合に比べて時間がかかることがあります。ベースの停車所要時間を使用すると、ディスパッチャは車両ごとに異なるstopBaseDuration値を指定でき、少なくとも1つの集荷または配達がある各停車にその値が1回追加されます。

  • 同じ場所での複数のジョブ

    ベースの停車所要時間はどの停車でも変わらない共通の時間を定義するために使用できます。たとえば同じ場所から5つ集荷するなど、1つの停車地で複数のジョブを実行する場合、ディスパッチャはベースの停車所要時間を使用して共通の時間を定義できます。個々のジョブでは、特定の配達または集荷の実行のみを考慮して、より短い時間を指定できます。これにより、各停車地での時間を正確に計算でき、正確な到達予測時刻、リソース割り当てなどのプランが提示されるようになります。

    計算式は次のようになります。

    停車地での所要時間=車両のベースの停車所要時間+その停車地での個々のアクティビティの所要時間の合計

この例ではベースの停車所要時間の使用方法を示します。次の問題では乗用車の運行管理とトラックの運行管理があります。carおよびtruckに設定されているstopBaseDurationパラメーターは車両が1つの停車地で必要とするベース時間です。

  • 自動車は各停車地での駐車、荷物の積載/unloadの準備、施設への入場に20分を要します。
  • 同じタスクの場合、トラックでは各停車地で1時間を要します。

車両ルート検索問題

{
 "fleet": {
    "types": [
      {
        "id": "Car_1",
   		   ...
        "shifts": [
          {
             ...SHIFT START & END TIME, LOCATION
            
            "stopBaseDuration": {
              "type": "oncePerStop",
              "value": 1200
            }
          }
        ],
      }, 
      {
        "id": "Truck",
           ...
        "shifts": [
          {
             ...SHIFT START & END TIME, LOCATION
              
            "stopBaseDuration": {
              "type": "oncePerStop",
              "value": 3600
            }
          }
        ],
      }
         ],
    "profiles": [
      {
        ... CAR AND TRUCK TYPE PROFILES
      }
    ]
  },
  "plan": {
    "jobs": [
      {
        "id": "Job_1",
        "tasks": {
          "pickups": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.44975,
                    "lng": 13.301483
                  },
                  "duration": 300
                }
              ],
              "demand": [1]
            }
          ]
        }
      },
      {
        "id": "Job_2",
        "tasks": {
          "pickups": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.44975,
                    "lng": 13.301483
                  },
                  "duration": 300
                }
              ],
              "demand": [1]
            }
          ]
        }
      }
              .... MORE PICKUP & DEVELIVERIES JOBS   
      }
    ]
  }
}    

ソリューション - APIレスポンス

以下のソリューションでは、1つの停車地に焦点を当てて、1つの停車地でのサービス時間がどのように算出されるかを見てみましょう。停車地での発着時間は9:29と10:54です。つまり、車両は1時間25分停車します。各アクティビティの終了時刻と開始時刻から、各ジョブの実行に必要な時間は上記の問題で定義されたように5分、つまり300秒であることがわかります。

この停車地での合計サービス時間=

  Stop base duration for "Truck" (that is, 3600 sec as defined in the problem) 
+ Job_1 duration (5 min) 
+ Job_5 duration (5 min) 
+ Job_4 duration (5 min) 
+ Job_3 duration (5 min) 
+ Job_2 duration (5 min) 
= 1 hour 25 min.
{
  "statistic": {
       ... OVERALL STATS: COST, DISTANCE, DURATION, TIMES
    }
  },
  "tours": [
    {
      "vehicleId": "Truck_1",
      "typeId": "Truck",
      "stops": [
         ...
        {
          ... LOCATION, LOAD, DISTANCE
          "time": {
            "arrival": "2023-08-05T09:29:00Z",
            "departure": "2023-08-05T10:54:00Z"
          },
          "activities": [
            {
              ... LOCATION, TYPE
              "jobId": "Job_1",
              "time": {
                "start": "2023-08-05T10:29:00Z",
                "end": "2023-08-05T10:34:00Z"
              }
            },
            {
              ... LOCATION, TYPE
              "jobId": "Job_5",             
              "time": {
                "start": "2023-08-05T10:34:00Z",
                "end": "2023-08-05T10:39:00Z"
              }
            },
            {
              ... LOCATION, TYPE
              "jobId": "Job_4",              
              "time": {
                "start": "2023-08-05T10:39:00Z",
                "end": "2023-08-05T10:44:00Z"
              }
            },
            {
              ... LOCATION, TYPE
              "jobId": "Job_3",             
              "time": {
                "start": "2023-08-05T10:44:00Z",
                "end": "2023-08-05T10:49:00Z"
              }
            },
            {
              ... LOCATION, TYPE
              "jobId": "Job_2",             
              "time": {
                "start": "2023-08-05T10:49:00Z",
                "end": "2023-08-05T10:54:00Z"
              }
            }
          ]
        }        
      ],
     ... STATS
    },
   .. MORE TOURS
  ]
}

まとめ

このように、HERE Tour Planningのベースの停車所要時間機能を使用すると、合計サービス時間をより細かく制御できます。多様なフリートを管理している場合でも、1つの停車地で多くのアクティビティを行うケースでも、この機能を使用して、より正確な計画を立てることができます。