Skip To Content

配車ルート (VRP) の解析 (Solve Vehicle Routing Problem) (Network Analyst)

概要

配車ルート (VRP) 解析のネットワーク解析レイヤーを作成し、解析プロパティを設定し、解析を実行する、配車ルート (VRP) Web サービスのセットアップに最適なツールです。配車ルート解析レイヤーは、複数車両について最適なルートを検索します。

配車ルート (VRP) の解析 (Solve Vehicle Routing Problem) における出力の詳細

使用法

  • このツール ダイアログ ボックスの各種オプション パラメーターは、管理しやすいように次の 6 つのカテゴリに分類されています。

    • 高度な解析
    • バリア
    • カスタム移動モード
    • ネットワーク ロケーション
    • 出力
    • サービスのケーパビリティ

構文

SolveVehicleRoutingProblem(orders, depots, routes, breaks, time_units, distance_units, network_dataset, output_workspace_location, output_unassigned_stops_name, output_stops_name, output_routes_name, output_directions_name, {default_date}, {uturn_policy}, {time_window_factor}, {spatially_cluster_routes}, {route_zones}, {route_renewals}, {order_pairs}, {excess_transit_factor}, {point_barriers}, {line_barriers}, {polygon_barriers}, {time_attribute}, {distance_attribute}, {use_hierarchy_in_analysis}, {restrictions}, {attribute_parameter_values}, {maximum_snap_tolerance}, {exclude_restricted_portions_of_the_network}, {feature_locator_where_clause}, {populate_route_lines}, {route_line_simplification_tolerance}, {populate_directions}, {directions_language}, {directions_style_name}, {save_output_layer}, {service_capabilities}, {ignore_invalid_order_locations}, {travel_mode}, {ignore_network_location_fields}, {time_zone_usage_for_time_fields}, {overrides}, {save_route_data})
パラメーター説明データ タイプ
orders

配車ルート (VRP) 解析のルートが訪れる訪問先。1 つの訪問先は、配達 (家具の配達など)、引き取り (空港のシャトル バスによる乗客の送迎など)、または何らかのサービスや調査 (伐採作業や建物調査など) を表すことができます。

訪問先フィーチャ セットには、属性テーブルが関連付けられています。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

Shape:

ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。

Name:

訪問先の名前。名前は一意でなければなりません。名前を NULL のままにした場合、名前は解析時に自動的に生成されます。

ServiceTime:

このプロパティは、ルートがネットワーク ロケーションを訪れたときの滞在時間を指定します。つまり、ネットワーク ロケーションのインピーダンス値を格納します。0 または NULL 値は、ネットワーク ロケーションでサービス時間が必要ないことを表します。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

TimeWindowStart1:

ネットワーク ロケーションの第 1 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、開始時刻は設定されません。

メモ:
  • タイム ウィンドウは、訪問先への車両の到着が許される時間帯を示すだけです。サービス時間が完了しなければならない時間帯を示すものではありません。サービス時間を考慮に入れ、タイム ウィンドウが終了する前に出発するには、ServiceTime フィールド値から TimeWindowEnd1 フィールド値を引き算します。

  • タイム ウィンドウ フィールドは、日付フィールドに時刻のみの値または日時の値を含めることができますが、エポックからのミリ秒を表す整数は使用できません。タイム ウィンドウ フィールドのタイム ゾーンは、time_zone_usage_for_time_fields パラメーターを使用して指定されます。TimeWindowStart1 などのタイム フィールドの値に時刻だけ (たとえば、午前 8:00) を指定した場合、日付は解析レイヤーの [デフォルトの日付] プロパティで指定された日付と見なされます。日時の値 (たとえば、7/11/2010 8:00 a.m.) を使用すると、複数日にわたるタイム ウィンドウを設定することができます。

  • タイム ウィンドウ フィールドに日付と時刻が示されている場合は、デフォルトの日付が無視されます。この場合にエラーが発生しないようにするには、拠点、ルート、訪問先、および休憩のタイム ウィンドウをすべて書式設定して日付と時刻を示します。

  • 交通量データを使用する場合、ネットワーク ロケーションの時刻フィールドは常に、ネットワーク ロケーションが配置されるエッジと同じタイム ゾーンを参照します。

TimeWindowEnd1:

ネットワーク ロケーションの第 1 のタイム ウィンドウの終了時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、終了時刻は設定されません。

TimeWindowStart2:

ネットワーク ロケーションの第 2 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、第 2 のタイム ウィンドウは設定されません。

[TimeWindowStart1] および [TimeWindowEnd1] フィールドで第 1 のタイム ウィンドウを NULL に指定した場合は、第 2 のタイム ウィンドウも NULL にする必要があります。

両方のタイム ウィンドウに NULL 以外の値を指定する場合、これらのタイム ウィンドウを重なるように指定することはできません。また、第 2 のタイム ウィンドウは第 1 のタイム ウィンドウよりも後になるように設定する必要があります。

TimeWindowEnd2:

ネットワーク ロケーションの第 2 のタイム ウィンドウの終了時刻。このフィールドは、NULL 値を含むことができます。

[TimeWindowStart2] と [TimeWindowEnd2] の両方が NULL の場合、第 2 のタイム ウィンドウは設定されません。

[TimeWindowStart2] が NULL 以外で [TimeWindowEnd2] が NULL の場合、第 2 のタイム ウィンドウの開始時間は設定されますが、終了時間は設定されません。これは有効な設定です。

MaxViolationTime1:

到着時刻がタイム ウィンドウの終了よりも後になった場合は、タイム ウィンドウが超過されたと見なされます。このフィールドでは、訪問先の第 1 のタイム ウィンドウについて最大許容超過時間を指定します。このフィールドは値としてゼロを含むことはできますが、負の値を含むことはできません。値がゼロの場合、訪問先の第 1 のタイム ウィンドウにおいてタイム ウィンドウ違反は許されません。つまり、第 1 のタイム ウィンドウは条件が厳しいということです。一方、NULL 値の場合、許容超過時間は無制限です。ゼロ以外の値は、最大遅延時間を指定します。たとえば、第 1 のタイム ウィンドウの終了時刻から最大で 30 分遅れて到着することが許されます。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

解析によってタイム ウィンドウ違反を追跡し、重み付けすることが可能です。このため、次の 3 つの手法のいずれかを使用するように VRP 解析機能に指示することができます。

  • 保有車両の移動コストの増大を無視して、全体の超過時間を最小にする。
  • 全体の超過時間と移動コストのバランスをとるソリューションを検索する。
  • 全体の超過時間を無視して、保有車両の移動コストを最小にする。

[タイム ウィンドウ違反の重要度] パラメーター (Python では time_window_factor) に重要度を割り当てることで、この 3 つの手法の中から実質的に 1 つを選択できます。いずれの場合も、MaxViolationTime1 に設定された値を超えるとエラーが返されます。

MaxViolationTime2:

訪問先の第 2 のタイム ウィンドウの最大許容超過時間。このフィールドは、[MaxViolationTime1] フィールドと同様です。

InboundArriveTime:

訪問先に配達されるアイテムが開始拠点で準備される時間を定義します。

このインバウンド到着時間がルートの最新の開始時間値より前の場合のみ、訪問先をルートに割り当てることができます。このため、アイテムを積み込む準備ができるまで、拠点を出発することはできません。

このフィールドは、インバウンド到着後の積み替えに関わるシナリオのモデリングに役立ちます。たとえば、訪問先のジョブで、現在拠点にない特別なマテリアルが必要であるとします。このマテリアルは、別のロケーションから発送され、午前 11 時に拠点に到着する予定です。マテリアルの到着前に出発するルートが訪問先に割り当てられないようにするために、訪問先のインバウンド到着時間を午前 11 時に設定します。特別なマテリアルが午前 11 時に到着し、車両に積み込まれ、車両が拠点から出発して割り当てられた訪問先に移動します。

メモ:

  • サービス時間を含むルートの開始時間は、インバウンド到着時間の後に設定する必要があります。訪問先のインバウンド到着時間の前にルートが開始する場合、訪問先をそのルートに割り当てることはできません。ルートの開始拠点のサービス時間がインバウンド到着時間の後まで続く場合でも、その割り当ては無効になります。

  • この時間フィールドは、時刻のみを示す値を含むことも、日時を示す値を含むこともできます。時刻のみを示す値 (たとえば、11:00 AM) が設定されている場合、日付は解析レイヤーの [デフォルトの日付] プロパティで指定した日付と見なされます。ただし、拠点、ルート、訪問先、または休憩の時間フィールドに日時が含まれている場合、デフォルトの日付は無視されます。その場合、それらすべてのフィールドを日時 (たとえば、7/11/2015 11:00 AM) で指定します。

  • VRP 解析では、DeliveryQuantities の値に関係なく、InboundArriveTime を優先します。

  • アウトバウンド出発時間も指定されている場合、その時間値はインバウンド到着時間より後である必要があります。

  • VRP 解析は、1 年を超える問題を解決することを考慮していません。このため、すべてのサービス時間とタイム ウィンドウを 1 年未満にする必要があります。

OutboundDepartTime:

訪問先で積み込むアイテムが終了拠点に到着しなくてはならない時間を定義します。

指定したアウトバウンド出発時間より前にルートが訪問先に移動でき、終了拠点に到着できる場合のみ、訪問先をルートに割り当てることができます。

このフィールドは、アウトバウンド出発時刻の積み替えに関わるシナリオのモデリングに役立ちます。たとえば、発送会社が配達トラックを使って訪問先からパッケージを積み込み、拠点に運び、それを最終目的地へのルートの途中で、別の施設に送るとします。毎日、午後 3 時に、セミトレーラーが拠点に立ち寄り、優先度の高いパッケージを積み込み、それを中央処理ステーションに直接輸送します。発送会社は、優先度の高いパッケージの輸送が次の日の午後 3 時まで遅れないように、配達トラックで訪問先から優先度の高いパッケージを積み込み、それを締め切りの午後 3 時より前に拠点に輸送しようと努めます。このために、アウトバウンド出発時間を午後 3 時に設定します。

メモ:
  • サービス時間を含むルートの終了時間は、アウトバウンド出発時間より前である必要があります。ルートが拠点に到着しても、訪問先のアウトバウンド出発時間の前に、終了拠点のサービス時間が完了していない場合、訪問先をそのルートに割り当てることはできません。

  • この時間フィールドは、時刻のみを示す値を含むことも、日時を示す値を含むこともできます。時刻のみを示す値 (たとえば、11:00 AM) が設定されている場合、日付は解析レイヤーの [デフォルトの日付] プロパティで指定した日付と見なされます。ただし、拠点、ルート、訪問先、または休憩の時間フィールドに日時が含まれている場合、デフォルトの日付は無視されます。その場合、それらすべてのフィールドを日時 (たとえば、7/11/2015 11:00 AM) で指定します。

  • VRP 解析では、PickupQuantities の値に関係なく、OutboundDepartTime を優先します。

  • インバウンド到着時間も指定されている場合、その時間値はアウトバウンド出発時間より前である必要があります。

DeliveryQuantities:

配達される荷物のサイズ。重量、体積、数量など、任意の計測方法でサイズを指定できます。重量と体積など、複数の計測方法でサイズを指定することもできます。

単位を指定しないで配達数量を入力します。たとえば、300 ポンドの物を訪問先に配達する必要がある場合、300 と入力します。値がポンド単位であることを覚えておく必要があります。

複数の計測方法を記録する場合、数値をスペースで区切ります。たとえば、2,000 ポンドの重量と 100 立方フィートの体積がある配達物の重量と体積を記録する場合は、「2000 100」と入力します。この場合も、単位がポンドと立方フィートであることを覚えておく必要があります。また、入力した値と対応する単位の順序も覚えておく必要があります。

ルートの [Capacities] と訪問先の [DeliveryQuantities] および [PickupQuantities] は、同じ方法で指定する必要があります。つまり、値は同じ単位で指定する必要があり、複数の計測方法を使用する場合は、すべてのパラメーターで計測方法が同じ順序になるように指定する必要があります。そのため、[DeliveryQuantities] に、重量 (ポンド) と体積 (立方フィート) を順に指定した場合は、ルートの容量と訪問先の引き取り数量も同じ方法で (ポンド単位の重量、立方フィート単位の体積の順に) 指定する必要があります。単位が混在したり順序が異なったりすると正しい結果が得られません。この場合、警告メッセージは表示されません。

空の文字列または NULL 値は、すべての計測方法でサイズがゼロであることと同じです。積載制限 (または計測方法でのサイズ) の総数に対して文字列内の値の数が不足している場合、残りの値はゼロと見なされます。配送数量を負の値とすることはできません。

PickupQuantities:

引き取る荷物のサイズ。重量、体積、数量など、任意の計測方法でサイズを指定できます。重量と体積など、複数の計測方法でサイズを指定することもできます。ただし、負の値は指定できません。このフィールドは、[Orders] の [DeliveryQuantities] フィールドと同様です。

メモ:
交換訪問の場合、訪問先は配送数量と引き取り数量の両方を持つことができます。

Revenue:

訪問先が解析に含まれる場合に生成される収入。このフィールドは NULL 値 (収入がゼロであることを示す) を含むことができますが、負の値を含むことはできません。

収入は、目的関数の値を最適化する際に算入されますが、ソリューションの運用コストには組み込まれません。つまり、ルート クラスの [TotalCost] フィールドの出力に収入が取り込まれることはありません。ただし、収入によって、訪問先へのサービス提供の重要度が相対的に重み付けされます。

SpecialtyNames:

スペース区切りの文字列であり、訪問先が必要とする特別指定の名前が含まれます。NULL 値は、訪問先が特別指定を必要としていないことを示しています。

訪問先クラスおよびルート クラスに表示されるどの特別指定の綴りも、配車ルート (VRP) 解析でそれらを一緒にリンクできるようにするために、正確に一致している必要があります。

特別指定の説明とその機能を示す例として、芝の手入れと庭木の剪定を行う造園会社を考えます。この会社の一部の訪問先では、背の高い木を剪定するために高所作業車が必要です。これらの訪問先の [SpecialtyNames] フィールドに「BucketTruck」と入力して、特別指定があることを示します。他の訪問先の [SpecialtyNames] は NULL のままにします。同様に、油圧ブームを装備したトラックで移動するルートの [SpecialtyNames] フィールドにも「BucketTruck」と入力します。他のルートのフィールドは NULL のままにします。VRP 解析を実行すると、特別指定のない訪問先は任意のルートに割り当てられますが、高所作業車が必要な訪問先は、特別指定が設定されたルートにだけ割り当てられます。

AssignmentRule:

訪問先をルートに割り当てるためのルールを指定します。このフィールドは、以下に示す値のドメインによって制約されます (それぞれのコード値は括弧内に示されています)。

  • 含まない(0) - 後続の解析の動作から訪問先を除外します。
  • ルートと関連する順序を保持(1) - 解析の動作において、解析機能は訪問先を、あらかじめ割り当てられたルートにあらかじめ割り当てられた相対的な順序で常に割り当てる必要があります。この割り当てルールが守られなかった場合は、訪問先違反が発生します。

    この設定では、相対的な順序は保持されますが、絶対的な順序は保持されません。例として、A と B の 2 つの訪問先を考えます。これらの訪問先の順序の値は、それぞれ 2 と 3 です。各訪問先の [AssignmentRule] フィールドの値を [ルートと関連する順序を保持] に設定した場合、他の訪問先、休憩地点、および拠点立ち寄りを A と B の前、間、または後に配置することができるため、解析後に A と B の実際の順序の値が変化する場合があります。ただし、B を A の前にすることはできません。

  • ルートを保持(2) - 解析の動作において、解析機能はあらかじめ割り当てられたルートに訪問先を常に割り当てる必要があります。順序を保持できてもできなくても、有効な順序を設定する必要があります。訪問先を指定のルートに割り当てできない場合は、訪問先違反が発生します。
  • オーバーライド (3) - 解析の動作において、解析機能は、訪問先に対するルートおよび順序の事前割り当て (存在する場合) を無視します。これは、目的関数の全体の値を最小化するために、ルートと順序を訪問先に割り当てます。これがデフォルトです。
  • 最初にアンカー (4) - 解析の動作において、解析機能は、訪問先に対するルートおよび順序の事前割り当て (存在する場合) を無視します。これは、目的関数の全体の値を最小化するために、ルートを訪問先に割り当て、ルートの最初の訪問先にします。
  • 最後にアンカー (5) - 解析の動作において、解析機能は、訪問先に対するルートおよび順序の事前割り当て (存在する場合) を無視します。これは、目的関数の全体の値を最小化するために、ルートを訪問先に割り当て、ルートの最後の訪問先にします。

このフィールドは、NULL 値を含むことができません。

CurbApproach:

[CurbApproach] プロパティは、車両がネットワーク ロケーションに到着する方向およびネットワーク ロケーションから出発する方向を指定します。このプロパティには 4 つの値を設定できます (それぞれのコード値は括弧内に示されています)。

  • [車両の両側](0) - ネットワーク ロケーションにおいて、車両はどちらの方向でも到着および出発できます。U ターンは許可されます。車両がストップで U ターンできる場合、または車道や駐車場で方向転換できる場合は、この設定を選択します。
  • [車両の右側](1) - 車両がネットワーク ロケーションに到着するとき、およびネットワーク ロケーションから出発するときに、アプローチを車両の右側に制限します。U ターンは許可されません。
  • [車両の左側](2) - 車両がネットワーク ロケーションに到着するとき、およびネットワーク ロケーションから出発するときに、アプローチを車両の左側に制限します。U ターンは許可されません。
  • [U ターンなし](3) - 車両がネットワーク ロケーションに到着するときはどちらの側でも到着できますが、方向転換せずに出発する必要があります。

RouteName:

訪問先が割り当てられるルートの名前。

このフィールドを入力フィールドとして使用し、訪問先を特定のルートにあらかじめ割り当てておきます。このフィールドは NULL 値を含むことができます。NULL 値の場合、訪問先はどのルートにもあらかじめ割り当てられず、解析機能が訪問先にとって最良のルート割り当てを決定します。このフィールドを NULL に設定した場合は、[Sequence] フィールドも NULL に設定する必要があります。

解析の後、訪問先のルートが解析されると、[RouteName] フィールドには訪問先が割り当てられるルートの名前が入ります。

Sequence:

このフィールドは、訪問先に割り当てられたルートでの訪問先の順序を示します。

入力フィールドとしてこのフィールドを使用して、ルート上での訪問先の相対的な順序を指定します。このフィールドは NULL 値を含むことができます。NULL 値は、訪問先をルート上のどこにでも配置できることを示します。NULL 値にする場合は、[RouteName] の値も NULL 値でなければなりません。

順序を示す入力値は、負でない値であり、各ルートに対して一意です (拠点立ち寄り状況、訪問先、および休憩の間で共有される)。ただし、0 から開始する必要も連続している必要もありません。

解析の後、[Sequence] フィールドには、割り当てられたルート上での訪問先の順序の値が入ります。ルートに対して出力される順序の値は、拠点立ち寄り状況、訪問先、および休憩の間で共有され、1 (開始拠点) から始まり、連続的な値となります。ルートは常に拠点から始まるので、ルート解析対象の訪問先に対して出力される最小限の順序の値は 2 となります。

Feature Set
depots

拠点とは、車両が就業時間において最初に出発し、最後に戻ってくる場所です。車両は、ルートが開始される拠点で荷積み (配達の場合) または荷降ろし (引き取りの場合) を行います。拠点は、場合によっては、リニューアル ロケーションとしての役割を果たすこともできます。これにより、車両は荷を降ろしたり再度積み込んだりして、配達と引き取りを引き続き行うことができます。拠点には、絶対的なタイム ウィンドウで指定される開始時刻と終了時刻があります。車両はこのタイム ウィンドウ外の時間に拠点に到着することは許されません。

拠点フィーチャ セットには、属性テーブルが関連付けられています。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

Shape:

ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。

Name:

拠点の名前。ルート レコード セットの StartDepotName フィールドと EndDepotName フィールドは、ここで指定した名前を参照します。ルート リニューアル レコード セットを使用する場合は、このレコード セットもこれを参照します。

拠点の名前は大文字と小文字を区別しません。また、空白以外の一意の値にする必要があります。

TimeWindowStart1:

ネットワーク ロケーションの第 1 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、開始時刻は設定されません。

メモ:
  • タイム ウィンドウ フィールドは、時刻のみを示す値を含むことも、日時を示す値を含むこともできます。タイム ウィンドウ フィールドが時刻のみを示す値 (たとえば、午前 8:00) である場合、日付は、解析レイヤーの [デフォルトの日付] パラメーターで指定された日付と見なされます。日時の値 (たとえば、7/11/2010 8:00 a.m.) を使用すると、複数日にわたるタイム ウィンドウを設定することができます。

  • タイム ウィンドウ フィールドに日付と時刻が示されている場合は、デフォルトの日付が無視されます。この場合にエラーが発生しないようにするには、拠点、ルート、訪問先、および休憩のタイム ウィンドウをすべて書式設定して日付と時刻を示します。

  • 交通量データを使用する場合、ネットワーク ロケーションの時刻フィールドは常に、ネットワーク ロケーションが配置されるエッジと同じタイム ゾーンを参照します。

TimeWindowEnd1:

ネットワーク ロケーションの第 1 のタイム ウィンドウの終了時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、終了時刻は設定されません。

TimeWindowStart2:

ネットワーク ロケーションの第 2 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、第 2 のタイム ウィンドウは設定されません。

[TimeWindowStart1] および [TimeWindowEnd1] フィールドで第 1 のタイム ウィンドウを NULL に指定した場合は、第 2 のタイム ウィンドウも NULL にする必要があります。

両方のタイム ウィンドウに NULL 以外の値を指定する場合、これらのタイム ウィンドウを重なるように指定することはできません。また、第 2 のタイム ウィンドウは第 1 のタイム ウィンドウよりも後になるように設定する必要があります。

TimeWindowEnd2:

ネットワーク ロケーションの第 2 のタイム ウィンドウの終了時刻。このフィールドは、NULL 値を含むことができます。

[TimeWindowStart2] と [TimeWindowEnd2] の両方が NULL の場合、第 2 のタイム ウィンドウは設定されません。

[TimeWindowStart2] が NULL 以外で [TimeWindowEnd2] が NULL の場合、第 2 のタイム ウィンドウの開始時間は設定されますが、終了時間は設定されません。これは有効な設定です。

CurbApproach:

[CurbApproach] プロパティは、車両がネットワーク ロケーションに到着する方向およびネットワーク ロケーションから出発する方向を指定します。このプロパティには 4 つの値を設定できます (それぞれのコード値は括弧内に示されています)。

  • [車両の両側](0) - ネットワーク ロケーションにおいて、車両はどちらの方向でも到着および出発できます。U ターンは許可されます。車両がストップで U ターンできる場合、または車道や駐車場で方向転換できる場合は、この設定を選択します。
  • [車両の右側](1) - 車両がネットワーク ロケーションに到着するとき、およびネットワーク ロケーションから出発するときに、アプローチを車両の右側に制限します。U ターンは許可されません。
  • [車両の左側](2) - 車両がネットワーク ロケーションに到着するとき、およびネットワーク ロケーションから出発するときに、アプローチを車両の左側に制限します。U ターンは許可されません。
  • [U ターンなし](3) - 車両がネットワーク ロケーションに到着するときはどちらの側でも到着できますが、方向転換せずに出発する必要があります。

Bearing:

ポイントが移動している方向。単位は度で、北を基準に時計回りに測定されます。このフィールドは [BearingTol] フィールドと組み合わせて使用されます。

通常、方位データは、GPS 受信機を備えたモバイル デバイスから自動的に送信されます。歩行者や車両などの移動している訪問先を読み込んでいる場合は、方位データを含めてみてください。

このフィールドを使用すると、たとえば、車両が交差点や高架の近くにいる場合に、ロケーションが間違ったエッジに追加されるのを避けることができます。方位は、Network Analyst がポイントを道路のどちら側に配置するかを決定する際にも役立ちます。

詳細については、Bearing と BearingTol をご参照ください。

BearingTol:

方位許容値は、[Bearing] フィールドを使用して移動ポイントをエッジに配置するときに、許容される方位の範囲を作成します。[Bearing] フィールドの値が、エッジの方位許容値から生成される許容範囲内にある場合は、ポイントをその場所にネットワーク ロケーションとして配置できます。許容範囲から外れている場合は、次に近いエッジの最も近いポイントが評価されます。

単位は度で、デフォルト値は 30 です。値は、0 よりも大きく、180 よりも小さい必要があります。

値が 30 の場合、Network Analyst がネットワーク ロケーションをエッジに追加しようとすると、方位値の許容範囲がエッジの両側 (左と右) に 15 度ずつ、どちらもエッジのデジタイズされた方向に生成されます。

詳細については、Bearing と BearingTol をご参照ください。

NavLatency:

このフィールドは、BearingBearingTol の値が存在する場合にのみ、解析処理で使用されます。ただし、BearingBearingTol の値が存在する場合でも、NavLatency 値の入力は任意です。NavLatency は、移動中の車両からサーバーに GPS 情報が送信されてから、車両のナビゲーション デバイスが処理されたルートを受信するまでの予想経過時間を示します。NavLatency の時間単位は、[時間属性] パラメーターで指定されたコスト属性の単位と同じです。

Feature Set
routes

指定された配車ルート解析で使用可能なルート。ルートは、車両と運転手の特性を示し、解析後には、拠点と訪問先の間の経路も表します。

ルートには、開始拠点と終了拠点のサービス時間、固定または可変の開始時間、時間ベースの運用コスト、距離ベースの運用コスト、複数の容量、運転手の就業日に関するさまざまな制約などを含めることができます。

ルート レコード セットには、複数の属性があります。属性テーブルの各フィールドとその説明を以下に示します。

Name:

ルートの名前。名前は一意でなければなりません。

フィールドが NULL 値の場合は、解析時に Network Analyst によって一意の名前が生成されます。したがって、ほとんどの場合、この値の入力は任意です。ただし、ルートに事前に割り当てられている休憩、ルート リニューアル、ルート ゾーン、または訪問先が解析に含まれる場合、名前の入力は必須です。これは、このような場合にルート名が外部キーとして使用されるためです。なお、ルート名の大文字と小文字は区別されません。

StartDepotName:

ルートの開始拠点の名前。このフィールドは、DepotsName フィールドに対する外部キーです。

[StartDepotName] の値が NULL の場合、ルートは指定されている最初の訪問先から始まります。開始拠点を省略するのは、車両の出発点が不明か、解析に関係ない場合に有効です。ただし、[StartDepotName] が NULL の場合は、[EndDepotName] を NULL にすることはできません。

訪問先/拠点が複数のタイム ゾーンにある場合、仮想の開始拠点は使用できません。

ルートが配達を行っていて、[StartDepotName] が NULL の場合、荷物はルートの開始前に仮想拠点で車両に積み込まれるものと想定されます。リニューアル拠点を持たないルートの場合、その配達訪問先 ([Orders] クラスの [DeliveryQuantities] がゼロ以外の値) の荷物は、開始拠点または仮想拠点で積み込まれます。リニューアル拠点を持つルートの場合、最初のリニューアル拠点の手前にある配達訪問先の荷物のみが開始拠点または仮想拠点で積み込まれます。

EndDepotName:

ルートの終了拠点の名前。このフィールドは、[拠点] パラメーターの Name フィールドに対する外部キーです。

StartDepotServiceTime:

開始拠点でのサービス時間。このフィールドを使用して、車両に荷物を積み込むのに要する時間をモデリングします。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

メモ:

開始拠点と終了拠点でのサービス時間は固定値で ([StartDepotServiceTime] および [EndDepotServiceTime] フィールドの値で指定)、ルートの実際の積み込み時間は考慮されません。たとえば、開始拠点で車両への積み込みにかかる時間は、訪問先のサイズによって異なります。したがって、拠点のサービス時間に満載の積荷または平均的な積荷に応じた値を指定するか、独自に見積もりを行います。

EndDepotServiceTime:

終了拠点でのサービス時間。このフィールドを使用して、車両から荷物を降ろすのに要する時間をモデリングします。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

メモ:

開始拠点と終了拠点でのサービス時間は固定値で ([StartDepotServiceTime] および [EndDepotServiceTime] フィールドの値で指定)、ルートの実際の積み込み時間は考慮されません。たとえば、開始拠点で車両への積み込みにかかる時間は、訪問先のサイズによって異なります。したがって、拠点のサービス時間に満載の積荷または平均的な積荷に応じた値を指定するか、独自に見積もりを行います。

EarliestStartTime:

ルートにおいて許容される最も早い開始時刻。解析では、このフィールドを開始拠点のタイム ウィンドウと組み合わせて使用し、ルートの実現可能な開始時刻を決定します。

このフィールドは NULL 値にできません。デフォルト値は午前 8:00 で、時刻のみを示す値です。このデフォルト値は、[デフォルトの日付] パラメーター (Python では default_date) で指定された日の午前 8:00 と解釈されます。

タイム ウィンドウ フィールドに日付と時刻が示されている場合は、デフォルトの日付が無視されます。この場合にエラーが発生しないようにするには、拠点、ルート、訪問先、および休憩のタイム ウィンドウをすべて書式設定して日付と時刻を示します。

複数のタイム ゾーンにまたがる交通量データを持つネットワーク データセットを使用する場合、[EarliestStartTime] のタイムゾーンは開始拠点が配置されているエッジまたはジャンクションのタイム ゾーンと同じになります。

LatestStartTime:

ルートにおいて許容される最も遅い開始時刻。このフィールドは NULL 値にすることができません。デフォルト値は午前 10:00 で、時刻のみを示す値になります。このデフォルト値は解析レイヤーの [デフォルトの日付] プロパティで指定された日付の午前 10:00 と解釈されます。

複数のタイム ゾーンにまたがる交通量データを持つネットワーク データセットを使用する場合、[LatestStartTime] のタイムゾーンは開始拠点が配置されているエッジまたはジャンクションのタイム ゾーンと同じになります。

ArriveDepartDelay

このフィールドには、車両を通常の移動速度まで加速し、停止するまで減速し、ネットワークに出入りする (たとえば、駐車場に出入りする) のに必要な移動時間が格納されます。[ArriveDepartDelay] 値を含めることにより、VRP 解析で、物理的に一致する訪問先にサービスを提供するために多くのルートを送り出すことがなくなります。

このプロパティのコストは、一致しない訪問先、拠点、およびルート リニューアルへの訪問の間に発生します。たとえば、ルートが拠点から出発し、最初の訪問先を訪問したときに、到着と出発の遅延の合計が移動時間に追加されます。最初の訪問先から 2 番目の訪問先まで移動するときにも同じことが起こります。2 番目と 3 番目の訪問先が一致している場合、車両は移動する必要がないため、この間については [ArriveDepartDelay] 値は追加されません。ルートがルート リニューアルに移動する場合、この値が再び移動時間に追加されます。

休憩の場合、車両は減速して停止し、後で加速する必要がありますが、VRP 解析では [ArriveDepartDelay] 値を加算できません。これは、ルートが訪問先を離れ、休憩のために停止し、さらに次の訪問先に向かった場合に、到着と出発の遅延は 2 度ではなく、1 度しか追加されないことを意味します。

たとえば、1 つの高層ビル内に 5 つの一致する訪問先があり、それらが 3 つの異なるルートでサービスを提供されているとします。この場合は、到着と出発の遅延が 3 回発生します。つまり、3 人の運転手がそれぞれ駐車場所を見つけ、同じ建物に入ることが必要になります。しかし、これらの訪問先に 1 つのルートだけでサービスを提供できれば、駐車して建物に入る運転手は 1 人だけになり、到着と出発の遅延の発生も 1 回だけになります。VRP 解析ではコストの最小化が図られるため、到着と出発の遅延を抑えるために、単一ルートのオプションが選択されます (特別指定、タイム ウィンドウ、積載制限などの制約によって、複数のルートが必要になる場合があります)。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

Capacities:

車両の最大容量。重量、体積、数量など、任意の計測単位で容量を指定できます。重量と体積など、複数の計測方法でサイズを指定することもできます。

単位を指定しないで容量を入力します。たとえば、車両の最大積載量が 40,000 ポンドの場合は、「40000」と入力します。後で参照するために、値がポンド単位であることを覚えておく必要があります。

複数の計測方法を記録する場合、数値をスペースで区切ります。たとえば、重量と体積を記録しており、車両が最大 40,000 ポンドの重量と最大 2,000 立方フィートの体積を運べる場合、Capacities には「40000 2000」と入力します。この場合も、単位を覚えておく必要があります。また、入力した値と対応する単位の順序も覚えておく必要があります。この場合は、ポンド、立方フィートの順です。

単位と単位の順序を覚えておくことは、次の 2 つの理由から重要です。1 つ目は、後で情報を再解釈できるようにするため、2 つ目は、[訪問先]DeliveryQuantities フィールドと PickupQuantities フィールドの値を正しく入力できるようにするためです。2 つ目の点についてさらに説明すると、ルートが過積載にならないようにするために、配車ルート (VRP) 解析では、CapacitiesDeliveryQuantities、および PickupQuantities が同時に参照されるということに注意する必要があります。フィールドに単位を入力できないようになっているため、Network Analyst が単位を変換することはできません。このため、値を正しく解釈できるようにするには、ユーザーがこれらの 3 つのフィールドに値を同じ単位を使って同じ順序で入力する必要があります。3 つのフィールドのいずれかの単位または順序が異なると、正しい結果が得られません。この場合、警告メッセージは表示されません。事前に標準の単位と単位の順序を設定しておくこと、また、これら 3 つのフィールドの値を入力するたびに単位と単位の順序を参照することをお勧めします。

空の文字列または NULL 値は、すべての数量がゼロであることを示します。積載制限を負の値とすることはできません。

訪問先の Capacities フィールドまたは DeliveryQuantities フィールドに対して PickupQuantities 文字列内の値の数が不足している場合、残りの値はゼロと見なされます。

注意:

VRP 解析では、簡単なブール テストを実行するだけで、積載制限を超過したかを確認できます。ルートの積載制限値が運送する合計数量以上である場合、車両に積荷が収まると見なされます。ただし、積荷および車両の実際の形状によっては、この判断は正しくない可能性があります。たとえば、VRP 解析では、1,000 立方フィートの球体を、幅が 8 フィートで容積が 1,000 立方フィートのトラックに収容することができます。しかし、実際には、球体の直径は 12.6 フィートであり、8 フィート幅のトラックに球体を収容することはできません。

FixedCost:

ルートがソリューションで使用される (つまり、訪問先がソリューションに割り当てられている) 場合に限り適用される金銭上の固定コスト。このフィールドは NULL 値を含むことができます。NULL 値は固定コストがゼロであることを示します。このコストは、ルートの合計運用コストの一部です。

CostPerUnitTime:

合計ルート所要時間 (移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待機時間も含む) に対して作業の単位時間ごとに適用される金銭上のコスト。このフィールドは NULL 値を含むことができず、デフォルト値は 1.0 となります。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

CostPerUnitDistance:

ルート長 (合計移動距離) に対して (移動距離の単位ごとに) 適用される金銭上のコスト。このフィールドは NULL 値を含むことができます。NULL 値はコストがゼロであることを示します。

このフィールドの値の単位は、[距離フィールドの単位] パラメーター (Python の場合は distance_units) で指定します。

OvertimeStartTime:

規定労働時間の長さで、この時間を超過すると規定外労働時間の計算が開始されます。このフィールドは NULL 値を含むことができます。NULL 値は規定外労働時間が適用されないことを示します。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

たとえば、合計ルート所要時間が 8 時間を上回るときに、運転手に規定外労働賃金を支払う場合は、OvertimeStartTime に「480」(8 時間× 60 分) を指定し、[時間フィールドの単位] パラメーターを [分] に設定します。

CostPerUnitOvertime:

規定外労働時間の単位時間ごとに適用される金銭上のコスト。このフィールドは NULL 値を含むことができます。NULL 値は [CostPerUnitOvertime] の値が [CostPerUnitTime] の値と同じであることを示します。

MaxOrderCount:

ルートに組み込むことができる訪問先の最大数。このフィールドは NULL 値を含むことができません。デフォルト値は 30 となります。

MaxTotalTime:

ルートの最大許容所要時間。ルートの所要時間には、移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待ち時間も含まれます。このフィールドは NULL 値を含むことができます。NULL 値はルートの所要時間に制約がないことを示します。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

MaxTotalTravelTime:

ルートの最大許容移動時間。移動時間に含まれるのはネットワークの走行に費やされた時間だけで、サービス時間または待ち時間は含まれません。

このフィールドは NULL 値を含むことができます。NULL 値は最大許容移動時間に制約がないことを示します。このフィールドは [MaxTotalTime] フィールドより小さくする必要があります。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

MaxTotalDistance:

ルートへの最大許容移動距離。

このフィールドの値の単位は、[距離フィールドの単位] パラメーター (Python の場合は distance_units) で指定します。

このフィールドは NULL 値を含むことができます。NULL 値は最大許容移動時間に制約がないことを示します。

SpecialtyNames:

スペース区切りの文字列であり、ルートがサポートする特別指定の名前が含められます。NULL 値は、ルートが特別指定をサポートしていないことを示します。

このフィールドは、[訪問先] パラメーターの SpecialtyNames フィールドに対する外部キーです。

特別指定の説明とその機能を示す例として、芝の手入れと庭木の剪定を行う造園会社を考えます。この会社の一部の訪問先では、背の高い木を剪定するために高所作業車が必要です。これらの訪問先の [SpecialtyNames] フィールドに「BucketTruck」と入力して、特別指定があることを示します。他の訪問先の [SpecialtyNames] は NULL のままにします。同様に、油圧ブームを装備したトラックで移動するルートの [SpecialtyNames] フィールドにも「BucketTruck」と入力します。他のルートのフィールドは NULL のままにします。VRP 解析を実行すると、特別指定のない訪問先は任意のルートに割り当てられますが、高所作業車が必要な訪問先は、特別指定が設定されたルートにだけ割り当てられます。

AssignmentRule:

問題の解決時にルートを使用できるかどうかを指定します。このフィールドは、値のドメインによって制約されます。設定可能な値は次のとおりです。

  • 含む - ルートは解析操作に含まれます。これがデフォルトです。
  • 含まない - ルートは解析操作に含まれません。

Record Set
breaks

指定された配車ルート解析でのルートの休憩時間または休憩。休憩は、厳密に 1 つのルートに関連付けられ、訪問先にサービスを提供した後、訪問先へのルート途中、または訪問先にサービスを提供する前に取ることができます。休憩には開始時間と継続時間があり、休憩中の賃金が運転手に支払われる場合もあれば、そうでない場合もあります。休憩の開始の設定には、タイム ウィンドウ、最大移動時間、または最大労働時間を使用する 3 つのオプションがあります。

休憩レコード セットには、属性が関連付けられています。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

RouteName:

休憩が適用されるルートの名前。休憩は 1 つのルートだけに割り当てられますが、多くの休憩を同じルートに割り当てることができます。

このフィールドは、[ルート] クラスの [Name] フィールドに対する外部キーであり、NULL 値を持つことができません。

Precedence:

優先順位値は、特定のルートの休憩を順序付けします。優先順位値が 1 の休憩は、2 の休憩よりも前に取られ、以降の休憩も優先順位値の順番に取られます。

タイム ウィンドウか、最大移動時間か、最大労働時間かにかかわりなく、すべての休暇が優先順位値を持たなければなりません。

ServiceTime

休憩時間の長さ。このフィールドは NULL 値を含むことができません。デフォルト値は 60 となります。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

TimeWindowStart:

休憩のタイム ウィンドウの開始時間。

このフィールドが NULL で、[TimeWindowEnd] が有効な時刻値を持つ場合、休憩は [TimeWindowEnd] 値より前ならいつでも開始できます。

このフィールドが値を持つ場合、[MaxTravelTimeBetweenBreaks] と [MaxCumulWorkTime] は NULL でなければなりません。さらに、解析レイヤーの他のすべての休憩についても、[MaxTravelTimeBetweenBreaks] と [MaxCumulWorkTime] は NULL でなければなりません。

ルートにタイム ウィンドウが重なった複数の休憩があると、解析時にエラーになります。

タイム ウィンドウ フィールドは、日付フィールドに時刻のみの値または日時の値を含めることができますが、エポックからのミリ秒を表す整数は使用できません。タイム ウィンドウ フィールドのタイム ゾーンは、time_zone_usage_for_time_fields パラメーターを使用して指定されます。TimeWindowStart などの時間フィールドが時刻のみを示す値 (たとえば、午後 12:00) である場合、日付は、[デフォルトの日付] パラメーター (Python では default_date) に指定された日付と見なされます。日時を示す値 (たとえば、2012 年 11 月 7 日、午後 12:00) を使用すると、複数日にわたるタイム ウィンドウを指定することができます。これは、午前 0 時前後のどこかで休憩を取る必要がある場合に有用です。

タイム ウィンドウ フィールドに日付と時刻が示されている場合は、デフォルトの日付が無視されます。この場合にエラーが発生しないようにするには、拠点、ルート、訪問先、および休憩のタイム ウィンドウをすべて書式設定して日付と時刻を示します。

TimeWindowEnd:

休憩のタイム ウィンドウの終了時間。

このフィールドが NULL で、[TimeWindowStart] が有効な時刻値を持つ場合、休憩は [TimeWindowStart] 値より後ならいつでも開始できます。

このフィールドが値を持つ場合、[MaxTravelTimeBetweenBreaks] と [MaxCumulWorkTime] は NULL でなければなりません。さらに、解析レイヤーの他のすべての休憩についても、[MaxTravelTimeBetweenBreaks] と [MaxCumulWorkTime] は NULL でなければなりません。

MaxViolationTime:

このフィールドでは、タイム ウィンドウによる休憩について最大許容超過時間を指定します。到着時刻がこの時間の範囲を超えている場合、タイム ウィンドウが超過されたとみなされます。

値がゼロの場合、タイム ウィンドウのどのような超過も許されません。つまり、タイム ウィンドウは条件が厳しい (ハード) ということです。ゼロ以外の値は最大遅延時間を指定します。たとえば、タイム ウィンドウの終了時間から最大で 30 分遅れて休憩を開始することができますが、解析レイヤーの [タイム ウィンドウ違反の重要度] パラメーター (Python では time_window_factor) に従ってこの遅延時間にはペナルティが適用されます。

このプロパティは NULL 値にすることができます。[TimeWindowStart] と [TimeWindowEnd] が NULL 値の場合、最大許容超過時間に制限がないことを示します。[MaxTravelTimeBetweenBreaks] または [MaxCumulWorkTime] に値が設定されている場合、[MaxViolationTime] は Null でなければなりません。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

MaxTravelTimeBetweenBreaks:

休憩を取る前に累積できる移動時間の最大値。移動時間は前の休憩の終了時か、休憩がまだ取られていないときはルートの開始時から累積されます。

これがルートの最後の休憩なら、[MaxTravelTimeBetweenBreaks] は最後の休憩から終了拠点までに累積可能な最大移動時間を示すことにもなります。

このフィールドの目的は、休憩が必要になるまでに運転できる時間を制限することです。たとえば、解析レイヤーの [時間フィールドの単位] パラメーター (Python では time_units) が [分] に設定され、MaxTravelTimeBetweenBreaks の値が 120 の場合、運転手は 2 時間運転した後に休憩を取ります。さらに 2 時間運転した後に 2 回目の休憩を割り当てるには、2 回目の休憩の MaxTravelTimeBetweenBreaks フィールド値を「120」にします。

このフィールドに値を設定した場合、解析を正常に実行するには、[TimeWindowStart]、[TimeWindowEnd]、[MaxViolationTime]、および [MaxCumulWorkTime] が NULL でなければなりません。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

MaxCumulWorkTime:

休憩を取る前に累積できる作業時間の最大値。作業時間は常にルートの開始時から累積されます。

作業時間は、移動時間と、訪問先、拠点、休憩でのサービス時間の合計です。ただし、これには待ち時間は含まれません。待ち時間とは、ルート (または運転手) が訪問先または拠点でタイム ウィンドウの開始まで待機した時間のことです。

このフィールドの目的は、休憩が必要になるまでに作業できる時間を制限することです。たとえば、[時間フィールドの単位] パラメーター (Python では time_units) が [分] に設定され、MaxCumulWorkTime の値が 120、ServiceTime の値が 15 になっている場合、運転手は 2 時間作業した後に 15 分間の休憩を取ります。

引き続き最後の例で、さらに 3 時間作業した後に 2 回目の休憩が必要とします。この休憩を指定するには、2 回目の休憩の [MaxCumulWorkTime] 値に 315 (5 時間と 15 分) を入力します。この数には、前の休憩の [MaxCumulWorkTime] と [ServiceTime] の値に加えて、2 回目の休憩が許可される前の 3 時間の追加作業時間が含まれます。最大作業時間の休憩を誤って取ることを避けるために、ルートの開始から作業時間を累積していること、および作業時間にはそれまでに訪問した拠点、訪問先、休憩でのサービス時間が含まれることを再確認してください。

このフィールドに値を設定した場合、解析を正常に実行するには、[TimeWindowStart]、[TimeWindowEnd]、[MaxViolationTime]、および [MaxTravelTimeBetweenBreaks] が NULL でなければなりません。

このフィールドの値の単位は、[時間フィールドの単位] パラメーター (Python の場合は time_units) で指定します。

IsPaid:

休憩に賃金を支払うかをブール値で指定します。[True] 値を指定すると、休憩で費やされた時間はルートのコスト計算および規定外労働時間の判定で考慮されます。[False] 値を指定すると、休憩で費やされた時間はルートのコスト計算および規定外労働時間の判定で考慮されません。デフォルト値は [True] です。

Sequence:

入力フィールドとして、ルート上での休憩の順序を示します。このフィールドは、NULL 値を含むことができます。順序を示す入力値は、正の値であり、各ルートに対して一意です (リニューアル拠点立ち寄り状況、訪問先、および休憩の間で共有される)。ただし、1 から開始する必要も連続している必要もありません。

解析では、順序フィールドが変更されます。解析実行後、このフィールドにはルート上での休憩の順序の値が含まれます。ルートに対して出力される順序の値は、拠点立ち寄り状況、訪問先、および休憩の間で共有され、1 (開始拠点) から始まり、連続的な値となります。

Record Set
time_units

解析におけるすべての時間ベースのフィールド値の時間単位を指定します。

  • Seconds
  • Minutes
  • Hours
  • Days

配車ルート (VRP) 解析における多くのフィーチャとレコードには、時間値を格納するためのフィールド (訪問先の ServiceTime やルートの CostPerUnitTime など) があります。必要なデータ入力を最小限にするために、それらのフィールド値には単位が含まれていません。ただし、すべての距離ベースのフィールド値は同じ単位で入力する必要があります。このパラメーターは、それらの値の単位を指定するために使用されます。

なお、時間ベースの出力フィールドには、このパラメーターで指定した単位と同じ単位が使用されます。

時間単位はネットワークの [時間属性] パラメーター (Python の time_attribute) の時間単位に一致する必要はありません。

String
distance_units

解析における、すべての距離ベースのフィールド値の距離単位を指定します。

  • Milesマイル
  • Kilometersキロメートル
  • Feetフィート
  • Yardsヤード
  • Metersメートル
  • NauticalMiles海里

配車ルート (VRP) 解析における多くのフィーチャとレコードには、距離値を格納するためのフィールド (ルートの MaxTotalDistanceCostPerUnitDistance など) があります。必要なデータ入力を最小限にするために、それらのフィールド値には単位が含まれていません。ただし、すべての距離ベースのフィールド値は同じ単位で入力する必要があります。このパラメーターは、それらの値の単位を指定するために使用されます。

なお、距離ベースの出力フィールドには、このパラメーターで指定した単位と同じ単位が使用されます。

この距離単位は、ネットワークの [距離属性] (Python の distance attribute) の距離単位と一致する必要はありません。

String
network_dataset

配車ルート解析が実行されるネットワーク データセット。配車ルート (VRP) 解析が時間を最小化するツールであるため、ネットワーク データセットは、時間ベースのコスト属性を保持する必要があります。

Network Dataset Layer
output_workspace_location

出力フィーチャクラスの作成先になるファイル ジオデータベースまたはインメモリ ワークスペース。このワークスペースはすでに存在している必要があります。デフォルトの出力ワークスペースはメモリ内にあります。

Workspace
output_unassigned_stops_name

到達できない拠点または未割り当ての訪問先が含まれる、出力フィーチャクラスの名前。

String
output_stops_name

ルートが訪問するストップが含まれる、フィーチャクラスの名前。このフィーチャクラスには、拠点、訪問先、および休憩のストップが含まれます。

String
output_routes_name

解析のルートが含まれるフィーチャクラスの名前。

String
output_directions_name

ルート案内が含まれるフィーチャクラスの名前。

String
default_date
(オプション)

日付なしで時刻が指定された時間フィールドの値に使用されるデフォルトの日付。

Date
uturn_policy
(オプション)

ジャンクションで使用される U ターン ポリシーを指定します。U ターンを許可するということは、解析においてジャンクションで方向転換し、同じ道路を引き返すことができるということを意味します。 ジャンクションが道路の交差と行き止まりを表すことを前提に、さまざまな車両が、一部のジャンクションでは方向転換でき、他のジャンクションでは方向転換できない、というように設定できます。これは、ジャンクションが交差と行き止まりのどちらを表すかによって変わります。これに対応するには、ジャンクションに接続するエッジの数 (ジャンクションでのノードへの接続数) によって、暗黙的に U ターン ポリシーを指定します。以下では、このパラメーターで選択できる値と、ジャンクションので接続におけるそれぞれの意味について示します。

  • ALLOW_UTURNS任意の数の接続されたエッジを持つジャンクションで U ターンを許可します。これがデフォルトです。
  • NO_UTURNSジャンクションの接続にかかわらず、すべてのジャンクションで U ターンを禁止します。ただし、この設定が選択されている場合でも、ネットワーク ロケーションでは U ターンが許可されます。同様に、個々のネットワーク ロケーションの CurbApproach プロパティで U ターンを禁止するように設定できます。
  • ALLOW_DEAD_ENDS_ONLY1 つの隣接エッジを持つジャンクション (行き止まり) を除くすべてのジャンクションでの U ターンを禁止します。
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY2 つの隣接するエッジが接するジャンクションでの U ターンを禁止します。ただし、交差点 (3 つ以上の隣接エッジを持つジャンクション) および行き止まり (1 つの隣接エッジを持つジャンクション) では U ターンを許可します。ネットワークには、道路セグメントの中間に無関係のジャンクションが存在する場合があります。このオプションは、これらの場所で車両が U ターンすることを防ぎます。

U ターン ポリシーをさらに正確に定義する必要がある場合、グローバル ターン遅延エバリュエーターをネットワーク コスト属性に追加するか、すでに存在する場合はそれを調整することを検討してください。その際、逆ターンの設定には特に注意が必要です。また、ネットワーク ロケーションの CurbApproach プロパティの設定についても検討してください。

このパラメーターの値は、[移動モード](Python では travel_mode) をカスタム以外の値に設定した場合、オーバーライドされます。

String
time_window_factor
(オプション)

タイム ウィンドウの重要度を指定します。これには 3 つのオプションがあり、それらを以下に説明します。

  • Lowストップへの定刻到着よりも、走行時間の最小化により重点を置きます。未処理のサービス依頼が増えている場合は、この設定を使用すると便利です。車両の到着が遅れて顧客に迷惑をかけることになっても、1 日にサービスを提供する訪問先の数を増やして手持ちの注文をさばくために、この設定を選択することができます。
  • Medium走行時間の最小化とタイム ウィンドウ内での到着との間で、重要度のバランスを保ちます。これがデフォルトです。
  • High走行時間を最小化することよりも、ストップに定刻に到着することに、より重点を置きます。時刻が重視される配達を行う組織、またはカスタマー サービスにかかわる組織の場合は、この設定を選択します。
String
spatially_cluster_routes
(オプション)

解析で自動的に動的シード ポイントを作成するかどうかを指定します。

  • CLUSTER すべてのルートに対して動的シード ポイントが自動的に作成され、個々のルートに割り当てられた訪問先が空間的にクラスタリングされます。訪問先をクラスタリングすると、ルートを含む領域がより小さく保たれ、ルート ラインの交点数が減少する傾向がありますが、同時に、移動時間全体が増加する傾向もあります。
  • NO_CLUSTER 動的シード ポイントは作成されません。ルート ゾーンを指定した場合は、このオプションを選択します。
Boolean
route_zones
(オプション)

指定されたルートの担当区域を描画します。ルート ゾーンはポリゴン フィーチャです。ルートゾーンを使用して、特定の領域内にある訪問先または領域の近くにある訪問先にのみサービスを提供するようにルートを制限します。どのようなときにルート ゾーンが役に立つかを以下の例で示します。

  • 従業員または車両の一部が特定の地域で作業を行うために必要な許可証を持っていません。この場合は、要件を満たす地域の訪問先のみを訪れるようにハード ルート ゾーンを作成することができます。
  • ある車両が頻繁に故障するので、対応時間を可能な限り短くするために、その車両の担当訪問先を修理工場の近くにのみ限定したいと考えます。車両を近隣での運用にとどめるために、ソフト ルート ゾーンまたはハード ルート ゾーンを作成できます。

ルート ゾーン フィーチャ セットには、属性テーブルが関連付けられています。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

Shape:

ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。

RouteName:

このゾーンが適用されるルートの名前。ルート ゾーンは、関連付けられたルートを最大で 1 つ持っています。このフィールドは、NULL 値を含むことができません。ルート フィーチャ レイヤーの [Name] フィールドに対する外部キーとなります。

IsHardZone:

ハード ルート ゾーンかソフト ルート ゾーンかをブール値で示します。[True] 値はルート ゾーンがハード ルート ゾーンであることを示します。つまり、ルート ゾーン ポリゴンの外にある訪問先をルートに割り当てることはできません。デフォルト値は [True] (1) です。[False] 値 (0) を指定した場合、ルート ゾーン ポリゴンの外にある訪問先をルートに割り当てることはできますが、訪問先へのサービス提供のコストはルート ゾーンからのユークリッド距離に基づく関数によって重み付けされます。基本的に、ソフト ゾーンから訪問先までの直線距離が長くなるに従い、訪問先をルートに割り当てる機会が低くなることを意味しています。

Feature Set
route_renewals
(オプション)

配達するか引き取る積荷の、再積み込みまたは荷降ろしを行うためにルートが訪問できる、中間拠点を指定します。特に、ルート リニューアルは、ルートを拠点にリンクします。このリレーションシップは、関連付けられた拠点でルートがリニューアル (途上での再積み込みまたは荷降ろし) できることを示します。

ルート リニューアルを使用してモデリング可能なシナリオとして、「開始拠点で配達する荷物を車両に満載し、訪問先に供給し、拠点に戻って配達用の荷物を再び積み込み、訪問先への供給を継続する」というものがあります。たとえば、プロパンガスの配達の場合は、車両はタンクがほとんどまたは完全に空になるまで複数回配達を行い、燃料補給ポイントに立ち寄り、さらに配達を継続することができます。

ルート シード ポイントで作業する場合にも考慮すべき、いくつかのルールとオプションを次に示します。

  • 再積み込み/荷降ろしのポイントである、リニューアル ロケーションは、開始拠点または終了拠点とは異なる可能性があります。
  • 各ルートは、あらかじめ決定されたリニューアル ロケーションを 1 つまたは複数持つことができます。
  • リニューアル ロケーションは、1 つのルートで複数回使用することができます。
  • 1 つのルートにおいて使用できるリニューアル ロケーションがいくつか存在する場合は、一番近い有効なリニューアル ロケーションが解析によって選択されます。

ルート リニューアル レコード セットには、属性が関連付けられています。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

DepotName:

このリニューアルが行われる拠点の名前。このフィールドは、NULL 値を含むことができません。拠点フィーチャ レイヤーの [Name] フィールドに対する外部キーとなります。

RouteName:

このリニューアルが適用されるルートの名前。このフィールドは、NULL 値を含むことができません。ルート フィーチャ レイヤーの [Name] フィールドに対する外部キーとなります。

ServiceTime:

リニューアルのサービス時間。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。

このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。

メモ:

リニューアル拠点で車両に荷積みするのにかかる時間は、車両のサイズと、車両にどれくらい荷物が積まれているかに左右される場合があります。ただし、ルート リニューアルのサービス時間は固定値であり、実際の積荷を考慮に入れません。したがって、リニューアル サービス時間には、満載の積荷の場合のサービス時間、平均的な積荷の場合の時間、または別の時間評価による値を指定してください。

Record Set
order_pairs
(オプション)

同じルートで引き取りと配達のサービスを提供できるように、引き取りと配達の訪問先をペアにします。

訪問先に対する引き取りと配達をペアにすることが必要な場合があります。たとえば、宅配会社が、ルートで訪問先から優先度の高い荷物を引き取り、拠点や選別ステーションに戻ることなくそれを別の訪問先に配達し、さらに配達時間を最小化する必要がある場合などです。これらの関連する訪問先を、訪問先のペアを使用して適切に順序付けし、同じルートに割り当てることができます。さらに、荷物を車両に載せておける時間の制限を割り当てることもできます。たとえば荷物が、病院から試験所まで 2 時間以内に輸送する必要のある血液サンプルの場合です。

訪問先ペア レコード セットには、属性が関連付けられています。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

FirstOrderName:

ペアの第 1 の訪問先の名前。このフィールドは、訪問先フィーチャ レイヤーの [Name] フィールドに対する外部キーです。

SecondOrderName:

ペアの第 2 の訪問先の名前。このフィールドは、訪問先フィーチャ レイヤーの [Name] フィールドに対する外部キーです。

ペアの第 1 の訪問先は引き取り訪問先でなければなりません。つまり、その [DeliveryQuantities] フィールドの値は NULL です。ペアの第 2 の訪問先は配達訪問先でなければなりません。つまり、その [PickupQuantities] フィールドの値は NULL です。第 1 の訪問先で引き取られる数量は、第 2 の訪問先に配達される数量と対応する必要があります。特殊な場合として、積荷制限が使用されていないシナリオについては、両方の訪問先の数量がゼロになることがあります。

メモ:

訪問先の数量は拠点で荷積みまたは荷降ろしされません。

MaxTransitTime:

ペアの最大移動時間です。移動時間とは、第 1 の訪問先の出発時刻から第 2 の訪問先の到着時刻までの時間の長さです。この制約により、2 つの訪問先の間で車両に積まれている時間 (乗車時間) が制限されます。人または生鮮食料品を車両で輸送する場合、その乗車時間は、荷物または非生鮮食料品を車両で輸送する場合より短くなるのが普通です。このフィールドは NULL 値を含むことができます。NULL 値は乗車時間に制約がないことを示します。

このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。

解析では、超過移動時間 (訪問先ペア間の直接移動時間に基づく) を追跡し、重み付けすることができます。このため、次の 3 つの手法のいずれかを使用するように VRP 解析機能に指示することができます。保有車両の移動コストの増大を無視して、全体の超過移動時間を最小にする。全体の超過時間と移動コストのバランスをとるソリューションを検索する。全体の超過移動時間を無視して、保有車両の移動コストを最小にする。解析レイヤーの [超過移動時間の重要度] パラメーター (Python では excess_transit_factor) に重要度を割り当てることで、これら 3 つの手法の中から実質的に 1 つを選択できます。重要度にかかわりなく、[MaxTransitTime] 値が超過すると必ずエラーが返されます。

Record Set
excess_transit_factor
(オプション)

訪問先ペアの超過移動時間を減らすことの重要度を指定します。超過移動時間とは、訪問先ペア間を直接移動するのに必要な時間に対する超過時間です。超過時間は、運転手が休憩したり、中間の訪問先や拠点に移動したりすることで発生する場合があります。

  • Low超過移動時間よりも、全体のソリューション コストを最小化することに、より重点を置きます。この設定は一般に宅配サービスで使用されます。宅配業者は人ではなく荷物を輸送するため、乗車時間を考慮する必要はありません。宅配業者はこの設定を使用することで、訪問先ペアに適切な順序でサービスを提供し、全体のソリューション コストを最小にすることができます。
  • Medium超過移動時間の削減と全体のソリューション コストの削減との間で、重要度のバランスを保ちます。これがデフォルトです。
  • High全体の移動コストよりも、訪問先ペア間で最短の移動時間に、より重点を置きます。訪問先ペア間で人を輸送し、乗車時間を短くしたい場合、この設定を使用すると便利です。これはタクシー サービスの特徴を示します。
String
point_barriers
(オプション)

ポイント バリアを指定します。ポイント バリアは、通行不可と追加コストの 2 種類に分かれています。これらは、一時的にネットワーク上のポイントの通行を規制したり、ポイントにインピーダンスを追加したりします。ポイント バリアはフィーチャ セットで定義されます。ポイント フィーチャに指定した属性値によって、ポイント バリアが通行不可バリアなのか、追加コスト バリアなのかが決まります。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

Shape:

ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。

Name:

バリアの名前。

BarrierType:

バリアの通過を完全に規制するのか、バリアを通過する際のコストを追加するのかを指定します。次の 2 つのオプションがあります。

  • [通過不可] (0) - バリアを通過できません。これがデフォルトです。
  • [追加コスト](2) - バリアを通過するたびに、Additional_Time フィールドと Additional_Distance フィールドで指定した値だけネットワーク コストが加算されます。

Additional_Time:

BarrierType が追加コストに設定された場合、Additional_Time フィールドの値は、バリアを通過する際にルートに追加される時間を示します。

このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。

Additional_Distance:

BarrierType が追加コストに設定された場合、Additional_Distance フィールドの値は、バリアを通過する際にルートに追加されるインピーダンスを示します。

このフィールドの値の単位は、[距離フィールドの単位] パラメーターで指定します。

Feature Set
line_barriers
(オプション)

一時的にラインの横断を規制するライン バリアを指定します。ライン バリアは、フィーチャ セットで定義されます。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

Shape:

ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。

Name:

バリアの名前。

Feature Set
polygon_barriers
(オプション)

ポリゴン バリアを指定します。ポリゴン バリアは、通行不可とコスト係数指定の 2 種類に分かれています。これらは、ポリゴン バリアに含まれるネットワークの一部に対して、一時的に通行を規制したり、インピーダンスを増減したりします。ポリゴン バリアはフィーチャ セットで定義されます。ポリゴン フィーチャに指定した属性値によって、ポリゴン バリアが通行不可バリアなのか、コスト係数指 バリアなのかが決まります。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

Shape:

ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。

Name:

バリアの名前。

BarrierType:

バリアの通過を完全に禁止するか、バリアを通過する際のコストを係数に基づいて計算するかを指定します。次の 2 つのオプションがあります。

  • [通過不可](0) - バリアのどの部分も通過できません。これがデフォルトです。
  • [コスト係数指定](1) - Attr_[Impedance] プロパティの値を乗算して、対象エッジのインピーダンスを増減します。エッジの一部だけがバリアの対象になっている場合は、インピーダンスが比率に応じて乗算されます。

Scaled_Time:

このフィールドに設定した値は、バリアの基本となるエッジの、時間ベースのインピーダンス値に乗算されます。このフィールドは、バリアがコスト係数指定バリアである場合にのみ関連します。

Scaled_Distance:

このフィールドに設定した値は、バリアの基本となるエッジの、距離ベースのインピーダンス値に乗算されます。このフィールドは、バリアがコスト係数指定バリアである場合にのみ関連します。

Feature Set
time_attribute
(オプション)

ネットワーク エレメントの移動時間を求める場合に使用するネットワーク コスト属性。

このパラメーターの値は、[移動モード](Python では travel_mode) をカスタム以外の値に設定した場合、オーバーライドされます。

String
distance_attribute
(オプション)

ネットワーク エレメントの距離を決定するときに使用するネットワーク コスト属性。

このパラメーターの値は、[移動モード](Python では travel_mode) をカスタム以外の値に設定した場合、オーバーライドされます。

String
use_hierarchy_in_analysis
(オプション)
  • USE_HIERARCHY 階層属性を解析に使用します。階層を使用すると、解析は下位ランクのエッジよりも上位ランクのエッジを優先します。階層解析は、より高速で、運転者が遠回りであっても一般道路の代わりに高速道路を利用する状況をシミュレートするのに使用できます。このオプションは入力ネットワーク データセットが階層属性を持つ場合のみ有効です。
  • NO_HIERARCHY階層属性を解析に使用しません。階層を使用しないことで、ネットワーク データセットの正確なルートが検索されます。

解析を実行するネットワーク データセットに使用する階層属性が定義されていない場合、パラメーターは使用されません。この場合、「"#"」をパラメーター値として使用します。

このパラメーターの値は、[移動モード](Python では travel_mode) をカスタム以外の値に設定した場合、オーバーライドされます。

Boolean
restrictions
[restriction,...]
(オプション)

解析時にどのネットワーク規制属性を考慮するかを指定します。

このパラメーターの値は、[移動モード](Python では travel_mode) をカスタム以外の値に設定した場合、オーバーライドされます。

String
attribute_parameter_values
(オプション)

パラメーターを持つネットワーク属性のパラメーター値を指定します。レコード セットには、パラメーターを一意に特定するために一緒に使用される 2 つの列と、パラメーター値を指定する別の列が含まれています。

このパラメーターの値は、[移動モード](Python では travel_mode) をカスタム以外の値に設定した場合、オーバーライドされます。

属性パラメーター値 レコード セットには、属性が関連付けられています。属性テーブルの各フィールドとその説明を以下に示します。

ObjectID:

システムで管理される ID フィールド。

AttributeName:

テーブル行で設定される属性パラメーターを持つネットワーク属性の名前。

ParameterName:

テーブル行で設定される値を持つ属性パラメーターの名前。(オブジェクト タイプ パラメーターは、このツールを使用して更新できません。)

ParameterValue:

属性パラメーターに設定する値。値が指定されない場合、属性パラメーターは NULL に設定されます。

Record Set
maximum_snap_tolerance
(オプション)

最大スナップ許容値とは、Network Analyst がネットワーク上でポイントの配置や再配置を行う場合に検索できる最大距離のことです。検索によって適切なエッジまたはジャンクションを見つけ、そのうちで最も近い場所にポイントをスナップします。最大スナップ許容値内で適切な場所が見つからなかった場合、そのオブジェクトには未配置のマークが付けられます。

Linear Unit
exclude_restricted_portions_of_the_network
(オプション)

ネットワーク ロケーションを配置するかどうかを指定します。

  • EXCLUDEネットワーク ロケーションがネットワークの通過可能な部分にのみ配置されます。これにより、規制またはバリアが原因で到達できないエレメントにネットワーク ロケーションが配置されなくなります。このオプションを使用してネットワーク ロケーションを追加する前に、期待している結果を得るためにすべての規制バリアを入力ネットワーク解析レイヤーにすでに追加していることを確認してください。このオプションはバリア オブジェクトの追加時には適用できません。この場合、「"#"」をパラメーター値として使用します。
  • INCLUDEネットワーク ロケーションがネットワークのすべてのエレメントに配置されます。このオプションで追加されるネットワーク ロケーションは、規制が適用されたエレメント上に位置している場合、解析プロセスにおいて到達不能になる可能性があります。
Boolean
feature_locator_where_clause
[[dataset_name, SQL_Query],...]
(オプション)

ソース フィーチャのサブセットの選択に使用される SQL 式。これは、訪問先および拠点を配置可能なネットワーク エレメントを制限します。たとえば、訪問先や拠点が有料道路に配置されないようにするには、それらのソース フィーチャを除外する SQL 式を記述します。(なお、バリアなどの他のネットワーク解析オブジェクトは、読み込み時にフィーチャ ロケーターの WHERE 句を無視します)。

Value Table
populate_route_lines
(オプション)

ルートの真の形状を示すラインを生成するかどうかを指定します。

  • NO_ROUTE_LINES出力ルートに形状は生成されません。ルート ラインが作成されない場合、ルート案内を生成することはできません。
  • ROUTE_LINES出力ルートはネットワーク ソースの正確な形状を保持します。
Boolean
route_line_simplification_tolerance
(オプション)

ルート ジオメトリの単純化の距離。

単純化によって、ルートの基本的な形状を定義する重要ポイント (交差点でのターンなど) は維持され、その他のポイントは削除されます。ここで指定する単純化の距離は、単純化されたラインの元のラインからの逸脱として認められる、最大許容オフセットです。ラインを単純化すると、頂点の数が減ることにより、描画時間が低減する傾向があります。

このパラメーターの値は、[移動モード](Python では travel_mode) をカスタム以外の値に設定した場合、オーバーライドされます。

Linear Unit
populate_directions
(オプション)

ルート案内を生成するかどうかを指定します。

  • DIRECTIONSルート案内が生成されます。[output_directions_name] パラメーターに指定されたフィーチャクラスに、各ルートに対するターンごとの指示が取り込まれます。ネットワーク データセットは、ルート案内をサポートする必要があります。サポートしない場合、ルート案内を使用して解析するときにエラーが発生します。
  • NO_DIRECTIONSルート案内は生成されません。
Boolean
directions_language
(オプション)

ルート案内が生成される言語。ドロップダウン リストに表示される言語は、コンピューターにインストールされている ArcGIS 言語パックによって決まります。

このツールをサービスの一部として別のサーバー上で公開する予定の場合、ツールが正しく機能するためには、選択する言語に対応する ArcGIS 言語パックがそのサーバー上にインストールされている必要があります。また、言語パックがコンピューター上にインストールされていない場合、その言語はドロップダウン リストに表示されませんが、代わりに言語コードを入力することができます。

String
directions_style_name
(オプション)

ルート案内の書式スタイルを指定します。

  • NA Desktop印刷可能な詳細なルート案内
  • NA Navigation車載ナビゲーション デバイス用に設計された詳細なルート案内
  • NA Campus歩行者ルート用に設計された詳細な歩行ルート案内
String
save_output_layer
(オプション)

出力に、結果のネットワーク解析レイヤーを含めるかどうかを指定します。

  • NO_SAVE_OUTPUT_LAYER出力に、結果のネットワーク解析レイヤーを含めません。
  • SAVE_OUTPUT_LAYER出力に、結果のネットワーク解析レイヤーを含めます。

いずれの場合も、スタンドアロン テーブルとフィーチャクラスが返されます。ただし、サーバー管理者は、ツールのセットアップと結果を Network Analyst 環境の ArcGIS Desktop コントロールでデバッグするために、ネットワーク解析レイヤーの出力を選択することがあります。これによって、デバッグ処理が簡単になります。

ArcGIS Desktop では、ネットワーク解析レイヤーのデフォルトの出力場所が、テンポラリ ジオデータベースと同じレベルのテンポラリ ワークスペースになっています。つまり、テンポラリ ジオデータベースの兄弟として保存されます。出力ネットワーク解析レイヤーは、「.lyr」に英数字の GUID を付け加えた名前の _ags_gpna ファイルとして保存されます。

Boolean
service_capabilities
[[String, {Long}],...]
(オプション)

このツールをジオプロセシング サービスとして実行するときに発生するコンピューターの最大処理量を指定します。以下の 2 つのうちのいずれかの理由の場合、この管理を行ってください。1 つは、許容限度を超えたリソースまたは処理時間を必要とする問題の解析をサーバーに実行させないようにするため、もう 1 つは、異なる配車ルート (VRP) 機能を使用する複数のサービスを作成してビジネス モデルをサポートするためです。たとえば、段階的サービス ビジネス モデルを採用していて、解析あたり 5 つまでのルートをサポートする無料の配車ルート (VRP) サービスと、解析あたり 6 つ以上のルートをサポートする別の有料サービスを提供する場合などです。

ルートの最大数を制限することに加え、解析に追加できる訪問先またはポイント バリアの数も制限できます。問題のサイズを制御する別の方法として、ライン バリアまたはポリゴン バリアが交差できるフィーチャ (通常は道路フィーチャ) の最大数を設定する方法があります。この方法を使用すると、指定した直線距離を超えて訪問先が地理的に離れている場合、階層を使用しないように選択していても、解析で強制的に階層が使用されます。

  • MAXIMUM POINT BARRIERSポイント バリアの最大許容数。この制限を超えると、エラーが返されます。NULL 値は、制限がないことを示します。
  • MAXIMUM FEATURES INTERSECTING LINE BARRIERS解析ですべてのライン バリアが交差できるソース フィーチャの最大数。この制限を超えると、エラーが返されます。NULL 値は、制限がないことを示します。
  • MAXIMUM FEATURES INTERSECTING POLYGON BARRIERS解析ですべてのポリゴン バリアが交差できるソース フィーチャの最大数。この制限を超えると、エラーが返されます。NULL 値は、制限がないことを示します。
  • MAXIMUM ORDERS解析で許容される、訪問先の最大数。この制限を超えると、エラーが返されます。NULL 値は、制限がないことを示します。
  • MAXIMUM ROUTES解析で許容される、ルートの最大数。この制限を超えると、エラーが返されます。NULL 値は、制限がないことを示します。
  • FORCE HIERARCHY BEYOND DISTANCEネットワーク階層を使用して配車ルート解析を実行する前の、訪問先間の最大直線距離。この値の単位は、[距離フィールドの単位] パラメーターで指定された単位と同じです。ネットワークに階層属性がない場合、この制約は無視されます。[解析に階層を使用] をオンにすると、常に階層が使用されます。[解析に階層を使用] パラメーターがオフで、この制約の値が NULL の場合、階層は強制されません。
  • MAXIMUM ORDERS PER ROUTE各ルートに割り当てることのできる訪問先の最大数。この制限を超えると、エラーが返されます。NULL 値は、制限がないことを示します。
Value Table
ignore_invalid_order_locations
(オプション)

配車ルートを解析する際に無効な訪問先を無視するかどうかを指定します。

  • HALT 無効な訪問先が検出されると、解析処理に失敗します。無効な訪問先とは、VRP 解析で解決できない訪問先を意味します。訪問先を解決できない理由はさまざまですが、訪問先が禁止されたネットワーク エレメント上に配置されている、訪問先がネットワーク上のどの場所にも配置されていない、訪問先がネットワーク上の接続されていない部分に配置されているといった場合が主に考えられます。これが、ブール値の偽と同等であるデフォルト値です。
  • SKIP 他のエラーが発生しない限り、解析処理で無効な訪問先は無視され、解析結果が返されます。ルートを生成した後すぐに運転手にルートを分配する必要がある場合は、無効な訪問先を無視し、解析を行った上で、運転手にルートを分配することができます。この後、最後に行った解析から無効な訪問先を解決し、次回の就業日または作業シフトで VRP 解析にこれらの訪問先を加えます。この値は、ブール値の真と同等です。
Boolean
travel_mode
(オプション)

解析する交通モードを選択します。CUSTOM は、常に選択肢に含まれています。その他の移動モード名を表示するには、それらが、Network_Dataset パラメーターで指定したネットワーク データセットに存在している必要があります (arcpy.na.GetTravelModes 関数はネットワーク データセットで構成された移動モード オブジェクトの辞書を提供し、name プロパティは移動モード オブジェクトの名前を返します)。

移動モードは、ネットワーク データセットで定義され、車、トラック、歩行などの移動モードをモデリングする一連のパラメーターをオーバーライドする値を提供します。ここで移動モードを選択することによって、以下のパラメーターの値を指定する必要がなくなります。これらのパラメーターは、ネットワーク データセットで指定した値でオーバーライドされます。

  • uturn_policy
  • time_attribute
  • distance_attribute
  • use_hierarchy_in_analysis
  • restrictions
  • attribute_parameter_values
  • route_line_simplification_tolerance

  • CUSTOM特定の要件に合わせて移動モードを定義します。CUSTOM を選択した場合、上に示された移動モードのパラメーターはオーバーライドされません。これがデフォルトです。
String
ignore_network_location_fields
(オプション)

ネットワーク上で訪問先、拠点、またはバリアを検索する際に、ネットワーク ロケーション フィールドを考慮するかどうかを指定します。

  • IGNOREネットワーク上の入力を検索するときにネットワーク ロケーション フィールドを考慮しません。代わりに、入力は空間検索の実行によって常に検索されます。
  • HONORネットワーク上の入力を検索するときにネットワーク ロケーション フィールドを考慮します。これがデフォルトです。
Boolean
time_zone_usage_for_time_fields
(オプション)

このツールでサポートされている次の入力日時フィールドのタイム ゾーンを指定します。訪問先の TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2InboundArriveTimeOutboundDepartTime。拠点の TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2。ルートの EarliestStartTime および LatestStartTime。休憩の TimeWindowStart および TimeWindowEnd

  • GEO_LOCAL 訪問先または拠点に関連付けられた日時の値は、それらの訪問先と拠点のタイム ゾーンにあります。ルートの場合、日時の値は、ルートの開始拠点があるタイム ゾーンをベースとします。ルートの開始拠点がない場合は、全ルートにわたるすべての訪問先と拠点が 1 つのタイム ゾーンにある必要があります。休憩の場合、日時の値は、ルートのタイム ゾーンをベースとします。たとえば、東部標準時に準拠する地域内に拠点があり、その拠点の最初のタイム ウィンドウ値 (TimeWindowStart1TimeWindowEnd1 で指定) がそれぞれ午前 8 時と午後 5 時である場合、このタイム ウィンドウ値は、東部標準時の午前 8 時と午後 5 時と見なされます。
  • UTC 訪問先または拠点に関連付けられた日時の値は、UTC (協定世界時) 形式であり、それらの訪問先や拠点のタイム ゾーンをベースとしません。たとえば、東部標準時に準拠する地域内に拠点があり、その拠点の最初のタイム ウィンドウ値 (TimeWindowStart1TimeWindowEnd1 で指定) がそれぞれ午前 8 時と午後 5 時である場合、このタイム ウィンドウ値は、東部標準時がサマー タイムに従う前提で、東部標準時の午後 12 時 (正午) と午後 9 時と見なされます。

UTC 形式での日時の値の指定は、訪問先や拠点があるタイム ゾーンが不明な場合や、訪問先と拠点が複数のタイムゾーンに分散しているときに、すべての日時の値を同時に開始する必要がある場合に役立ちます。[UTC] オプションは、ネットワーク データセットでタイム ゾーン属性が定義されている場合のみ適用されます。定義されていない場合、すべての日時の値は常に [ジオ ローカル] (Python では GEO_LOCAL) と見なされます。

String
overrides
(オプション)

ネットワーク解析問題の解決法を見つける場合に、解析の動作に影響を与えることができる追加設定を指定します。

JSON (JavaScript Object Notation) で、このパラメーターの値を指定する必要があります。たとえば、有効な値は {"overrideSetting1" : "value1", "overrideSetting2" : "value2"} という形式です。オーバーライド設定名は、必ず二重引用符で囲みます。値には、数値、ブール型、または文字列を使用できます。

このパラメーターのデフォルト値は、値なしであり、解析の設定を上書きしません。

オーバーライドは、設定を適用する前後で得られた結果を慎重に分析した後にのみ使用する必要のある高度な設定です。解析ごとにサポートされているオーバーライド設定の一覧およびそれらの許容される値については、Esri テクニカル サポートにお問い合わせください。

String
save_route_data
(オプション)

ルート レイヤーを .zip または ArcGIS Online で共有するために使用できる形式で、解析の入力と出力を保持するファイル ジオデータベースを含む *ArcGIS Enterprise ファイルを保存するかどうかを指定します。

ArcGIS Desktop では、出力ファイルのデフォルトの出力場所は、scratch フォルダーになります。テンポラリ フォルダーの場所は、arcpy.env.scratchFolder を使用して判断できます。

  • SAVE_ROUTE_DATA ツールは解析の入力と出力を含むファイル ジオデータベース ワークスペースを含む .zip アーカイブを書き込みます。
  • NO_SAVE_ROUTE_DATAルート データは保存されません。これがデフォルトです。
Boolean

派生した出力

名前説明データ タイプ
solve_succeeded

配車ルート解析が完了したかどうかを示すブール値。

ブール型
out_unassigned_stops

どのルートも立ち寄ることのできない訪問先がリストされたテーブル。

テーブル
out_stops

拠点、訪問先、および休憩地点で止まるストップについての情報を提供するテーブル。

テーブル
out_routes

運転手、車両、および配車ルートの車両のルート パスを表すフィーチャクラス。

フィーチャクラス
out_directions

運転手が割り当てられたルートに追従するのをサポートするターンごとの指示。

フィーチャクラス
out_network_analysis_layer

ツール パラメーターで構成されたプロパティを含み、マップ内の詳細な解析やデバッグに使用できるネットワーク解析レイヤー。

ファイル
out_route_data

特定のルートに関するすべての情報を含む *.zip ファイル。

ファイル

コードのサンプル

SolveVehicleRoutingProblem (配車ルート (VRP) の解析)の例 1 (Python ウィンドウ)

必須パラメーターのみを使用してツールを実行します。

import arcpy
orders = arcpy.FeatureSet()
orders.load("Stores")
depots = arcpy.FeatureSet()
depots.load("DistributionCenter")
routes = arcpy.RecordSet()
routes.load("RoutesTable")
arcpy.na.SolveVehicleRoutingProblem(orders, depots, routes, "","Minutes",
                                    "Miles", "Streets_ND")
SolveVehicleRoutingProblem (配車ルート (VRP) の解析) の例 2 (スタンドアロン スクリプト)

次のスタンドアロン Python スクリプトは、SolveVehicleRoutingProblem ツールを使用して複数車両で一連の訪問先にサービスを提供する方法を示します。

# Name: SolveVehicleRoutingProblem_Workflow.py
# Description: Find the best routes for a fleet of vehicles, which is operated 
#              by a distribution company, to deliver goods from a main 
#              distribution center to a set of grocery stores.
# Requirements: Network Analyst Extension 

#Import system modules
import arcpy
from arcpy import env
import datetime

try:
    #Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    impedanceAttribute = "TravelTime"
    timeUnits = "Minutes"
    distanceUnits = "Miles"
    inOrders = "Analysis/Stores"
    inDepots = "Analysis/DistributionCenter"
    inRoutes = "RoutesTable"
    outGeodatabase = "C:\data\output\VRPOutputs.gdb"
    
    #Create two new feature sets and one record set with same schema as
    #Orders, Deopts and Routes parameter in Solve Vehicle Routing Problem tool.
    #Load the feature from the existing feature classes and table in the feature
    #set. Note that Solve Vehicle Routing Problem tool does not provide a way to
    #map field names between your input feature classes and table and the
    #feature set or record set parameters. To ensure that the attributes are
    #correctly transfered, the input feature classes and table must have same
    #field names as the feature sets and record sets.
    orders = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",0)    
    orders.load(inOrders)
    depots = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",1)    
    depots.load(inDepots)
    routes = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",2)    
    routes.load(inRoutes)
    
    #Call the SolveVRP tool and store the results in the result object
    result = arcpy.na.SolveVehicleRoutingProblem(orders,depots, routes,"",
                                                 timeUnits, distanceUnits,
                                                 inNetworkDataset, outGeodatabase,
                                                 populate_directions="DIRECTIONS")
    
    #print the solve status and output any warning messages from tool execution
    solveSucceeded = result.getOutput(0)
    print("Solve Succeeded: {0}".format(solveSucceeded))
    print("Messages from solver are printed below.")
    print(result.getMessages(1))
    
    print("Script completed successfully")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))

ライセンス情報

  • Basic: 次のものが必要 Network Analyst
  • Standard: 次のものが必要 Network Analyst
  • Advanced: 次のものが必要 Network Analyst

関連トピック