[配車ルート(VRP)の解析(Solve Vehicle Routing Problem)] の出力
[配車ルート(VRP)の解析(Solve Vehicle Routing Problem)] ジオプロセシング ツールは、出力として以下のテーブルおよびフィーチャクラスを出力として生成します。ストップ、未割り当てストップ、ルート、ルート案内出力のテーブルとフィーチャクラスおよびそれらに対応するフィールド属性について、以下で説明します。
ルート フィーチャクラス
ルート ライン フィーチャクラスは、運転手、車両、および配車ルートでの車両のルート パスを表します。この出力フィーチャクラスのデフォルト名は Routes ですが、解析を実行する前に [出力ルート名] パラメータ(Python の場合は output_routes_name)を変更して、別の名前を指定できます。
ArcGIS は、基本となるネットワーク データセットがルート フィーチャクラスに使用するものと同じ座標系を割り当てます。これは、[出力データの座標系] ジオプロセシング環境の値を指定することで、制御できます。
ルート フィーチャクラスの各フィールド名とその説明を以下に示します。
フィールド名 | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
名前 | ルートの名前。 |
シェープ | ルートの形状を示すジオメトリ フィールド。 [ルート ライン形状の生成] パラメータ(Python の場合は populate_route_lines)を使用して、このフィールドに値を取り込むかどうかを選択します。 ルート フィーチャクラスは、[配車ルート(VRP)の解析(Solve Vehicle Routing Problem)] の実行中に常に作成され、データが取り込まれます。ただし、[ルート ライン形状の生成] パラメータ(Python の場合は populate_route_lines)を使用して、ライン フィーチャの [Shape] フィールドの値の生成と保存を実行するかどうかを選択できます。[Shape] フィールドに値を取り込まないようにすると、解析処理が早くなり、サーバとクライアント間で交換されるデータ サイズが減少します。ただし、多くの場合は、マップ上にルートを表示するために、[Shape] フィールドに値を取り込むことが必要となります。 |
ViolatedConstraints | このフィールドは制約違反のサマリを含み、解析の実行後に設定されます。ルートを使用することで制約違反が発生する場合は、以下に示す 1 つまたは複数の違反の組み合わせがフィールドに割り当てられる可能性があります。 詳細: テキスト説明を表すコード値は、以下のリストの括弧内に示しています。これらのコード値は、公比が 2 の等比数列で表されます。これを利用して、さまざまな違反の組み合わせをコード化できます。たとえば、[Capacities が超過しました](2)と [ハード ルート ゾーン](128)の組み合わせは、2 + 128 で 130 となります。
|
OrderCount | ルートに割り当てられる訪問先の数。 |
TotalCost | ルートの合計運用コストです。これは、次のフィールドの合計です。
|
RegularTimeCost | 無給の休憩を除外した規定労働時間のコスト。 |
OvertimeCost | 無給の休憩を除外した規定外労働のコスト。 |
DistanceCost | [TotalDistance] と [CostPerUnitDistance] フィールド値を掛け算して得られる距離のコスト要素。解析前に距離属性が指定されていない場合、このフィールドには 0 の値を設定します。 |
TotalTime | 合計ルート所要時間。これには、移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待ち時間も含まれます。[TotalTime] の値は次のフィールドの合計です。
このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
TotalOrderServiceTime | ルート上のすべての訪問先で費やされる合計サービス時間。 このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
TotalBreakServiceTime | ルート上のすべての休憩で費やされる合計サービス時間。 このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
TotalTravelTime | ルートの合計移動時間。 このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
TotalDistance | ルートの合計移動距離。 このフィールドの値の単位は、[距離フィールドの単位] パラメータ(Python の場合は distance_units)で指定します。 解析前に距離属性が指定されていない場合、このフィールドには 0 の値を設定します。 |
StartTime | ルートの開始時間。ルートは、開始拠点のタイム ウィンドウが始まる前に出発することがあります。この場合、開始拠点では待ち時間が発生します。 複数のタイム ゾーンにまたがる交通量データを使用するとき、この時間値のタイム ゾーンは開始拠点が配置されているネットワーク エレメントから取得されます。 |
EndTime | ルートの終了に到着する時間。ルートは、終了拠点でのサービス完了時に終了します。 複数のタイム ゾーンにまたがる交通量データを使用するとき、この時間値のタイム ゾーンは終了拠点が配置されているネットワーク エレメントから取得されます。 |
TotalWaitTime | ルート上のすべての訪問先、拠点、および休憩での合計待ち時間。 このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
TotalViolationTime | ルート上のすべての訪問先および休憩での合計超過時間。 このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
RenewalCount | リニューアルを持つルートの場合、これは、車両をリニューアル(つまり、車両の荷積みまたは荷降ろし)する目的による拠点でのストップ数に相当します。 |
TotalRenewalServiceTime | リニューアルを持つルートの場合、ルート上のすべてのリニューアル拠点で費やされたサービス時間の合計を示します。 このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
ルート案内フィーチャクラス
ルート案内は、運転手が各自に割り当てられたルートに従うことに役立つ、ターンごとの指示を表すライン フィーチャクラスです。この出力フィーチャクラスのデフォルト名は Directions ですが、解析を実行する前に [出力ルート案内名] パラメータ(Python の場合は output_directions_name)を変更して、別の名前を指定できます。また、[配車ルート(VRP)の解析(Solve Vehicle Routing Problem)] ツールは、常にルート案内フィーチャクラスを作成します。ただし、[ルート案内の生成] パラメータ(Python の場合は populate_directions)を使用して、解析中にフィーチャクラスにフィーチャを取り込むかどうかを選択できます。デフォルトでは、フィーチャは取り込まれません。ルート案内が必要でなければ、解析時間と、サーバからクライアントに転送されるデータ量を、大幅に減らすことができます。
ArcGIS は、基本となるネットワーク データセットがルート案内フィーチャクラスに使用するものと同じ座標系を割り当てます。これは、[出力データの座標系] ジオプロセシング環境の値を指定することで、制御できます。
ルート案内フィーチャクラスの各フィールド名とその説明を以下に示します。
フィールド名 | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
シェープ | ラインの形状を示すジオメトリ フィールド。 |
RouteName | 運転動作が適用されるルートの名前。 |
ArriveTime | 指定された運転動作を開始する時間。ルートが複数日にまたがる場合、日付と時刻が表示されます。 |
Type | このフィールドは、ルート案内のテキストをカスタマイズする上級ユーザ向けです。ほとんどのユーザは、このフィールドを無視し、代わりに [Text] フィールドを参照することで要件を満たすことができます。 [Type] は、2 つの列挙、すなわち esriDirectionsManueverType または esriDirectionsStringType のいずれかの定数を参照します。([Type] 値が参照する列挙について詳しくは、[SubItemType] フィールドの説明をご参照ください。)選択している SDK を検索することにより、列挙名の定数値のリストを参照できます。 |
SubItemType | このフィールドは、ルート案内のテキストをカスタマイズする上級ユーザ向けです。ほとんどのユーザは、このフィールドを無視し、代わりに [Text] フィールドを参照することで要件を満たすことができます。 [SubItemType] は、[Type] と組み合わせて機能し、それによって [Text] フィールドに表示されるルート案内が作成されます。[SubItemType] フィールドは、[Type] フィールドが esriDirectionsManueverType 列挙または esriDirectionsStringType 列挙のどちらの定数値を参照するかを指定します。
|
Text | テキストによるルート案内の説明です。 |
ElapsedTime | 現在のルート案内が開始してから次のルート案内が開始するまで、または最後のルート案内が終了するまでの経過時間。 一部のルート案内には、サービス時間、超過時間などの追加レコードが含まれます。この場合、経過時間はレコードごとに複製されます。経過時間全体を合計する場合は、[Type] 値が 1 のレコードを選択し、それらのレコードを合計します。 このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
DriveDistance | 現在のルート案内が発生した場所から次のルート案内が発生する場所まで、または最後のルート案内が終了する場所までの距離。 次のルート案内が開始する場所と同じ場所で発生するルート案内の場合、値は 0 です。 |
ストップ テーブル
ストップ テーブルは、拠点、訪問先、および休憩地点で止まるストップについての情報を提供します。この情報には、それらのストップに立ち寄るルート、到着時間と出発時間、およびストップの順序が含まれます。
この出力テーブルのデフォルト名は Stops ですが、解析を実行する前に [出力ストップ名] パラメータ(Python の場合は output_stops_name)を変更して、別の名前を指定できます。
ストップ テーブルの各フィールド名とその説明を以下に示します。
フィールド名 | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
名前 | ストップの名前。これは、入力フィーチャ セットおよびレコード セットに含まれる、拠点、訪問先、または休憩地点の名前への外部キーです。入力フィーチャ セットまたはレコード セットは、[StopType] フィールドで指定されます。 |
PickupQuantities | ストップから引き取られる積荷の量または人数。複数の計測方法でストップに配達する場合は、各数量をスペースで区切ります。 このフィールドの単位は、保存されません。各単位は、入力ルートの [Quantities] フィールドおよび入力訪問先の [PickupQuantities] フィールドと [DeliveryQuantities] フィールドに入力した方法に従って解釈する必要があります。(これらのフィールドは、すべて同じ単位および計測方法の数を使用して入力されている必要があります。) |
DeliveryQuantities | ストップに配達される積荷の量または人数。複数の計測方法でストップに配達する場合は、各数量をスペースで区切ります。 このフィールドの単位は、保存されません。各単位は、入力ルートの [Quantities] フィールドおよび入力訪問先の [PickupQuantities] フィールドと [DeliveryQuantities] フィールドに入力した方法に従って解釈する必要があります。(これらのフィールドは、すべて同じ単位および計測方法の数を使用して入力される必要があります。) |
StopType | ストップが、拠点、配達先、休憩地点のいずれを表すかを示します。 このフィールドには、以下のように解釈できるコード値が保存されます。
|
RouteName | ストップに立ち寄るルートの名前。 |
シーケンス | 割り当てられたルートがストップに立ち寄る、相対的な順序。 [RouteName] フィールドと [Sequence] フィールドによって並べ替えて、ルートごとのストップの順序付けられたリストが作成されます。 |
FromPreviousTravelTime | ルートの前のストップから現在のストップまでに経過した移動時間。 このフィールドの値の単位は、[時間フィールドの単位] パラメータ(Python の場合は time_units)で指定します。 |
FromPreviousDistance | 前のストップから現在のストップまでのルート沿いの距離。 このフィールドの値の単位は、[距離フィールドの単位] パラメータ(Python の場合は distance_units)で指定します。 |
ArriveCurbApproach | 車両がストップに到着するときに、アプローチを車両のどちら側にするかを示します。 |
DepartCurbApproach | 車両がストップから出発するときに、アプローチを車両のどちら側にするかを示します。 |
ArriveTime | ルートがストップに到着する時間。 ネットワーク データセットにタイム ゾーンが構成されている場合、時間の値は、ストップが配置されているタイム ゾーンと一致します。構成されていない場合、タイム ゾーンは解析の実行に使用されるコンピュータ上に構成されたタイム ゾーンと一致します。 |
DepartTime | ルートがストップを出発する時間。 ネットワーク データセットにタイム ゾーンが構成されている場合、時間の値は、ストップが配置されているタイム ゾーンと一致します。構成されていない場合、タイム ゾーンは解析の実行に使用されるコンピュータ上に構成されたタイム ゾーンと一致します。 |
ArriveTimeUTC | ルートがストップに到着する時間。この値は、UTC(協定世界時)で指定します。 タイム ゾーンがネットワーク データセット上に構成されていない場合、このフィールドは NULL になります。 |
DepartTimeUTC | ルートがストップを出発する時間。この値は、UTC(協定世界時)で指定します。 タイム ゾーンがネットワーク データセット上に構成されていない場合、このフィールドは NULL になります。 |
WaitTime | ストップでの待ち時間または待ち合わせ時間。たとえば、ルートが訪問先でタイム ウィンドウが開くまで待機する必要がある場合は、待ち時間が発生します。 |
ViolationTime | ストップのタイム ウィンドウの終了からルート車両の到着までの経過時間。 |
ストップの視覚化
明らかにストップ テーブルは、フィーチャクラスではありません。つまり、単純にテーブルをマップに追加して、ストップが発生する場所を表示することはできません。ストップをマップ上に表示するには、代わりに別の手順が必要です。(これの実現方法について、以下で説明します。)ルートのストップをマップ上に表示する必要がある場合、この設計は不必要に難しく見えるかもしれませんが、このツールの目的が配車ルート(VRP)Web サービスの作成であることに、留意してください。つまり、サーバ処理とデータ転送を最小化するように、出力は可能な限り無駄を省くよう設計されています。とはいえ、情報が省かれ過ぎていることはなく、出力は、ストップをポイント フィーチャとして視覚化することに不可欠な情報を提供できます。
たとえば、ストップが発生する訪問先の場所を表示するには、ストップ テーブルを、入力として使用された元の訪問先フィーチャ セットにリンクします。ストップ テーブルの [StopType] フィールドと [Name] フィールド、および訪問先フィーチャ セットの [Name] フィールドを介して、これらのデータセットを選択し、結合できます。ストップが発生する拠点の場所を表示する場合も、同様の方法を使用することができます。
[配車ルート(VRP)の解析(Solve Vehicle Routing Problem)] によって、訪問先フィーチャ セットや拠点フィーチャ セットなどの複数の入力フィーチャ セットが作成されます。ツールが解析を実行する際に、これらのインメモリ フィーチャ セットは ArcMap から削除されます。ただし、それらを再び追加できます。指定するには、次の手順に従ってください。
- [ジオプロセシング] メニューから [結果] ウィンドウを開きます。
- [結果] ウィンドウで、目的のフィーチャ セットを含む処理の結果に移動します。
- 該当する[配車ルート(VRP)の解析(Solve Vehicle Routing Problem)] の結果を展開します。
- [入力] を展開します。
- 表示するフィーチャ セットを右クリックし、[マップへ追加] を選択します。フィーチャ セットが、マップとコンテンツ ウィンドウに表示されます。
- 必要に応じて、[コンテンツ] ウィンドウの [ソース別にリスト] ボタンをクリックし、データが保存されている場所を表示します。
訪問先や拠点とは異なり、休憩地点は入力フィーチャ セットに関連付けられていません。そのため、これらを視覚化するには、別の方法を使用する必要があります。解析でルート案内を生成し、フィーチャを表すラインを選択し、[フィーチャの頂点 → ポイント(Feature Vertices To Points)] ツールを使用してそれらをポイントに変換できます。
未割り当てストップ テーブル
未割り当てストップ テーブルには、どのルートも立ち寄ることのできない訪問先がリストされます。必要な変更を行って問題を修正できるようにするために、ストップが立ち寄れない理由についても記述されます。
この出力テーブルのデフォルト名は Stops ですが、解析を実行する前に [出力未割り当てストップ名] パラメータ(output_unassigned_stops_name)を変更して、別の名前を指定できます。
ストップ テーブルの各フィールド名とその説明を以下に示します。
フィールド名 | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
StopType | ストップが、拠点、配達先、休憩地点のいずれを表すかを示します。このフィールドには、以下のように解釈できるコード値が保存されます。
|
名前 | ストップの名前。 これは、入力フィーチャ セットおよびレコード セットに含まれる、拠点、訪問先、または休憩地点の名前への外部キーです。入力フィーチャ セットまたはレコード セットは、[StopType] フィールドで指定されます。 |
ViolatedConstraints | このフィールドは制約違反のサマリを含み、解析の実行後に設定されます。制約違反が発生する場合は、以下に示す 1 つまたは複数の違反の組み合わせがフィールドに割り当てられる可能性があります。 詳細: テキスト説明を表すコード値は、以下のリストの括弧内に示しています。これらのコード値は、公比が 2 の等比数列で表されます。これを利用して、さまざまな違反の組み合わせをコード化できます。たとえば、[Capacities が超過しました](2)と [ハード ルート ゾーン](128)の組み合わせは、2 + 128 で 130 となります。
|
ステータス | このフィールドは、以下に示す値のドメインによって制約されます(それぞれのコード値は括弧内に示されています)。
|