概要
配車ルート (VRP) を解析して、各車両の最適ルートを検索します。
保有車両を管理する担当者は、配車ルートを決定しなければならないことがよくあります。このような決定には、顧客グループを保有車両に最適に割り当てる方法、車両の立ち寄りの順序およびスケジュールを設定する方法が含まれます。このような配車ルート (VRP) の解析を実行する目的は、各ルートの運用および投資コスト全体を最小限に維持しながらタイム ウィンドウを遵守することで、高レベルな顧客サービスを提供することにあります。制約として、使用可能なリソースを使用し、運転者の交代制勤務、走行速度、および顧客の約束事項によって課される時間制限の範囲内にルートを完了する必要があります。
このサービスを使用すると、これらの複雑な車両管理タスクに対するソリューションを決定できます。
中央の倉庫から食品雑貨店に商品を配達する例を考えてみましょう。倉庫では全部で 3 台のトラックを使用できます。倉庫は、特定の時間帯 (午前 8 時から午後 5 時) でのみ運用されます。- その時間内に、すべてのトラックは倉庫に戻る必要があります。各トラックの積載制限は 15,000 ポンドであり、搬送できる商品の量には制限があります。各食品雑貨店からは、配達を必要とする商品の需要が特定量 (ポンド単位) あります。また、各食品雑貨店は、配達の時間を制限する時間帯を設定しています。さらに、運転者の労働時間は、1 日あたり 8 時間に制限されています。運転者には昼休みが必要で、運転および食品雑貨店へのサービス提供に費やした時間に対して賃金が支払われます。目標は、配達を行うにあたりすべてのサービス要件を満たし運転者が特定のルートで費やす合計時間を最小にすることができるように、運転者 (ルート) ごとに配送プランを決定することにあります。次の図は、上記の配車ルート解析を実行して得られる 3 つのルートを示しています。
図
使用法
-
[配車ルート (VRP) の解析 (Solve Vehicle Routing Problem)] ツールは、多数の訪問先で配達、集荷、またはサービス呼び出しに対応する必要がある各車両のルートを生成します。このツールは非同期モードで動作し、実行に時間のかかる大規模な解析に適しています。
オンライン ツールボックスに収容されているツールは、ArcGIS Online でホストしているデータと機能を使って解析する ArcGIS Online ジオプロセシング サービスです。
-
2,000 件の訪問先と 100 のルートを追加できます。また、1 つのルートに最大 200 件の訪問先を割り当てることができます。
最大で 250 のポイント バリアを追加できます。ライン バリアまたはポリゴン バリアは必要なだけ追加できますが、ライン バリアが交差する道路フィーチャは 500 以下にする必要があり、ポリゴン バリアが交差するフィーチャは 2,000 以下にする必要があります。
-
[use_hierarchy_in_analysis] パラメーターがオン (True) であるかどうかにかかわらず、訪問先間、拠点間、または訪問先と拠点間の直線距離が 50 マイル (80.46 キロメートル) を超えている場合は、常に階層が使用されます。
-
travel_mode が [徒歩] に設定されている場合や [カスタム] に設定されていて [徒歩] 規制が使用されている場合は、訪問先間または拠点間の直線距離が 27 マイル (43.45 キロメートル) を超えてはなりません。
入力したポイントと通行可能な最も近い道路の距離が 12.42 マイル (20 キロメートル) を超える場合、そのポイントは解析から除外されます。
このサービスを使用すると、クレジットが消費されます。詳細については、「サービス クレジットの概要」をご参照ください。
構文
SolveVehicleRoutingProblem(orders, depots, routes, breaks, time_units, distance_units, {analysis_region}, {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}, {use_hierarchy_in_analysis}, restrictions, {attribute_parameter_values}, {populate_route_lines}, {route_line_simplification_tolerance}, {populate_directions}, {directions_language}, {directions_style_name}, {travel_mode}, {impedance}, {time_zone_usage_for_time_fields}, {save_output_layer}, {overrides}, {save_route_data}, {time_impedance}, {distance_impedance}, {populate_stop_shapes}, {output_format})
パラメーター | 説明 | データ タイプ |
orders | VRP 解析のルートで訪問先となる場所を 1 つ以上指定します。1 つの訪問先は、配達 (家具の配達など)、引き取り (空港のシャトル バスによる乗客の送迎など)、または何らかのサービスや調査 (伐採作業や建物調査など) を表すことができます。 訪問先を指定する場合は、次の属性を使用して、各訪問先のプロパティ (訪問先の名前やサービス時間など) を設定できます。 ObjectID システムで管理される ID フィールド。 Name 訪問先の名前。名前は一意でなければなりません。名前を NULL のままにした場合、名前は解析時に自動的に生成されます。 Description 訪問先に関する説明的な情報。訪問先に関するあらゆるテキスト情報を保持することができ、一意でなくてもかまいません。Name フィールドに顧客 ID 番号を格納し、Description フィールドに顧客の実際の名前または住所を格納すると便利なことがあります。 ServiceTime このプロパティは、ルートがネットワーク ロケーションを訪れたときの滞在時間を指定します。つまり、ネットワーク ロケーションのインピーダンス値を格納します。0 または NULL 値は、ネットワーク ロケーションでサービス時間が必要ないことを表します。 このフィールド値の単位は、[time_units] パラメーターで指定します。 TimeWindowStart1 ネットワーク ロケーションの第 1 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、開始時刻は設定されません。 タイム ウィンドウは、訪問先への車両の到着が許される時間帯を示すだけです。サービス時間が完了しなければならない時間帯を示すものではありません。サービス時間を考慮に入れ、タイム ウィンドウが終了する前に出発するには、ServiceTime フィールドから TimeWindowEnd1 を引き算します。 タイム ウィンドウ フィールド (TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2、TimeWindowEnd2) は、日付フィールドに時刻のみの値または日時の値を含めることができますが、エポックからのミリ秒を表す整数は使用できません。タイム ウィンドウ フィールドのタイム ゾーンは、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 分遅れて到着することが許されます。 このフィールドの値の単位は、[Time Field Units] パラメーターで指定します。 解析によってタイム ウィンドウ違反を追跡し、重み付けすることが可能です。したがって、次のいずれかを行うように VRP 解析機能に指示することができます。
[タイム ウィンドウ違反の重要度] パラメーターに重要度を割り当てることで、これらのオプションの中から実質的に 1 つを選択できます。ただし、いずれの場合も、MaxViolationTime1 の値セットを超えるとエラーが返されます。 MaxViolationTime2 訪問先の第 2 のタイム ウィンドウの最大許容超過時間。このフィールドは、MaxViolationTime1 フィールドと同様です。 InboundArriveTime 訪問先に配達されるアイテムが開始拠点で準備される時間を定義します。 このインバウンド到着時間がルートの最新の開始時間値より前の場合のみ、訪問先をルートに割り当てることができます。このため、アイテムを積み込む準備ができるまで、拠点を出発することはできません。 このフィールドは、インバウンド到着後の積み替えに関わるシナリオのモデリングに役立ちます。たとえば、訪問先のジョブで、現在拠点にない特別なマテリアルが必要であるとします。このマテリアルは、別のロケーションから発送され、午前 11 時に拠点に到着する予定です。マテリアルの到着前に出発するルートが訪問先に割り当てられないようにするために、訪問先のインバウンド到着時間を午前 11 時に設定します。特別なマテリアルが午前 11 時に到着し、車両に積み込まれ、車両が拠点から出発して割り当てられた訪問先に移動します。 備考:
OutboundDepartTime 訪問先で積み込むアイテムが終了拠点に到着しなくてはならない時間を定義します。 指定したアウトバウンド出発時間より前にルートが訪問先に移動でき、終了拠点に到着できる場合のみ、訪問先をルートに割り当てることができます。 このフィールドは、アウトバウンド出発時刻の積み替えに関わるシナリオのモデリングに役立ちます。たとえば、発送会社が配達トラックを使って訪問先からパッケージを積み込み、拠点に運び、それを最終目的地へのルートの途中で、別の施設に送るとします。毎日、午後 3 時に、セミトレーラーが拠点に立ち寄り、優先度の高いパッケージを積み込み、それを中央処理ステーションに直接輸送します。発送会社は、優先度の高いパッケージの輸送が次の日の午後 3 時まで遅れないように、配達トラックで訪問先から優先度の高いパッケージを積み込み、それを締め切りの午後 3 時より前に拠点に輸送しようと努めます。このために、アウトバウンド出発時間を午後 3 時に設定します。 備考:
DeliveryQuantities 配達される荷物のサイズ。重量、体積、数量など、任意の計測単位で容量を指定できます。重量と体積など、複数の計測方法でサイズを指定することもできます。 単位を指定しないで配達数量を入力します。たとえば、ある訪問先に 300 ポンドの物品を配達する必要がある場合は、「300」と入力します。値がポンド単位であることを覚えておく必要があります。 複数の計測方法を記録する場合、数値をスペースで区切ります。たとえば、配達について重量と体積を記録する場合、重量が 2,000 ポンド、体積が 100 立法フィートであれば、「2000 100」と入力します。この場合も、単位がポンドと立方フィートであることを覚えておく必要があります。また、入力した値と対応する単位の順序も覚えておく必要があります。 ルートの Capacities と訪問先の DeliveryQuantities および PickupQuantities が同じ方法で指定されていることを確認します。つまり、値は同じ単位を使用する必要があります。複数のディメンションを使用する場合、ディメンションはすべてのパラメーターに対して同じ順序でリストする必要があります。たとえば、DeliveryQuantities に、重量 (ポンド) と体積 (立方フィート) を順に指定した場合は、ルートの容量と訪問先の引き取り数量も同じ方法で (ポンド単位の重量、立方フィート単位の体積の順に) 指定する必要があります。単位が混在したり順序が異なったりすると正しい結果が得られません。この場合、警告メッセージは表示されません。 空の文字列または NULL 値は、すべての計測方法でサイズがゼロであることと同じです。積載制限 (または計測方法でのサイズ) の総数に対して文字列内の値の数が不足している場合、残りの値はゼロと見なされます。配送数量を負の値とすることはできません。 PickupQuantities 引き取る荷物のサイズ。重量、体積、数量など、任意の計測単位で容量を指定できます。重量と体積など、複数の計測方法でサイズを指定することもできます。ただし、負の値は指定できません。このフィールドは、[訪問先] の DeliveryQuantities フィールドと同様です。 交換訪問の場合、訪問先は配送数量と引き取り数量の両方を持つことができます。 Revenue 訪問先が解析に含まれる場合に生成される収入。このフィールドは NULL 値 (収入がゼロであることを示す) を含むことができますが、負の値を含むことはできません。 収入は、目的関数の値を最適化する際に算入されますが、ソリューションの運用コストには組み込まれません。つまり、ルートの TotalCost フィールドの出力に収入が取り込まれることはありません。ただし、収入によって、訪問先へのサービス提供の重要度が相対的に重み付けされます。 収入は、目的関数の値を最適化する際に算入されますが、ソリューションの運用コストには組み込まれません。つまり、ルート クラスの TotalCost フィールドの出力に収入が取り込まれることはありません。ただし、収入によって、訪問先へのサービス提供の重要度が相対的に重み付けされます。 SpecialtyNames スペース区切りの文字列であり、訪問先が必要とする特別指定の名前が含まれます。NULL 値は、訪問先が特別指定を必要としていないことを示しています。 訪問先クラスおよびルート クラスに表示されるどの特別指定の綴りも、配車ルート (VRP) 解析でそれらを一緒にリンクできるようにするために、正確に一致している必要があります。 特別指定の説明とその機能を示す例として、芝の手入れと庭木の剪定を行う造園会社を考えます。この会社の一部の訪問先では、背の高い木を剪定するために高所作業車が必要です。これらの訪問先の [SpecialtyNames] フィールドに「BucketTruck」と入力して、特別指定があることを示します。他の訪問先の [SpecialtyNames] は NULL のままにします。同様に、油圧ブームを装備したトラックで移動するルートの [SpecialtyNames] フィールドにも「BucketTruck」と入力します。他のルートのフィールドは NULL のままにします。VRP 解析を実行すると、特別指定のない訪問先は任意のルートに割り当てられますが、高所作業車が必要な訪問先は、特別指定が設定されたルートにだけ割り当てられます。 AssignmentRule 訪問先をルートに割り当てるためのルールを指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
このフィールドは、NULL 値を含むことができません。 CurbApproach 車両が訪問先に到着する方向および訪問先から出発する方向を指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
CurbApproach 属性は、米国の右側通行の標準と英国の左側通行の標準の両方に対応するように設計されています。まず、訪問先が車両の左側にある場合を考えます。これは、車両が移動するのが道路の左側であるか右側であるかに関係なく、常に左側にあります。右側通行か左側通行かに応じて異なるのは、訪問先に 2 つの方向のどちらから到着するか、つまり、車両の右側と左側のどちらで到着するかということです。たとえば、訪問先に到着するときに、車両と訪問先の間に交通レーンがない方がいい場合は、米国では 1 (車両の右側) を選択し、英国では 2 (車両の左側) を選択します。 RouteName 訪問先が割り当てられるルートの名前。 このフィールドを使用し、訪問先を特定のルートにあらかじめ割り当てておきます。このフィールドは NULL 値を含むことができます。NULL 値の場合、訪問先はどのルートにもあらかじめ割り当てられず、解析機能が訪問先にとって最良のルート割り当てを決定します。このフィールドを NULL に設定した場合は、Sequence フィールドも NULL に設定する必要があります。 解析の後、訪問先のルートが解析されると、RouteName フィールドには訪問先が割り当てられるルートの名前が入ります。 Sequence このフィールドは、訪問先に割り当てられたルートでの訪問先の順序を示します。 このフィールドを使用して、ルート上での訪問先の相対的な順序を指定します。このフィールドは NULL 値を含むことができます。NULL 値は、訪問先をルート上のどこにでも配置できることを示します。NULL 値にする場合は、RouteName の値も NULL 値でなければなりません。 順序を示す入力値は、正の値であり、各ルートに対して一意です (リニューアル拠点立ち寄り状況、訪問先、および休憩の間で共有される)。ただし、1 から開始する必要も連続している必要もありません。 解析の後、[Sequence] フィールドには、割り当てられたルート上での訪問先の順序の値が入ります。ルートに対して出力される順序の値は、拠点立ち寄り状況、訪問先、および休憩の間で共有され、1 (開始拠点) から始まり、連続的な値となります。ルートは常に拠点から始まるので、ルート解析対象の訪問先に対して出力される最小限の順序の値は 2 となります。 Bearing ポイントが移動している方向。単位は度で、北を基準に時計回りに測定されます。このフィールドは BearingTol フィールドと組み合わせて使用されます。 通常、方位データは、GPS 受信機を備えたモバイル デバイスから自動的に送信されます。歩行者や車両などの移動している入力場所を読み込んでいる場合は、方位データを含めてみてください。 このフィールドを使用すると、たとえば、車両が交差点や高架の近くにいる場合に、ロケーションが間違ったエッジに追加されるのを避けることができます。方位は、ツールがポイントを道路のどちら側に配置するかを決定する際にも役立ちます。 BearingTol 方位許容値は、Bearing フィールドを使用して移動ポイントをエッジに配置するときに、許容される方位の範囲を作成します。Bearing フィールドの値が、エッジの方位許容値から生成される許容範囲内にある場合は、ポイントをその場所にネットワーク ロケーションとして配置できます。許容範囲から外れている場合は、次に近いエッジの最も近いポイントが評価されます。 単位は度で、デフォルト値は 30 です。値は 0 より大きく 180 未満でなければなりません。値が 30 の場合、Network Analyst がネットワーク ロケーションをエッジに追加しようとすると、方位値の許容範囲がエッジの両側 (左と右) に 15 度ずつ、どちらもエッジのデジタイズされた方向に生成されます。 NavLatency このフィールドは、Bearing と BearingTol の値が存在する場合にのみ、解析処理で使用されます。ただし、Bearing と BearingTol の値が存在する場合でも、NavLatency 値の入力は任意です。NavLatency は、移動中の車両からサーバーに GPS 情報が送信されてから、車両のナビゲーション デバイスが処理されたルートを受信するまでの予想経過時間を示します。 NavLatency の時間単位は、解析オブジェクトの timeUnits プロパティで指定された単位と同じです。 | Feature Set |
depots | 配車ルートの拠点を 1 つ以上指定します。拠点とは、車両が就業日の初めに出発し、就業日の終わりに戻ってくる場所です。車両は、ルートが開始される拠点で荷積み (配達の場合) または荷降ろし (引き取りの場合) を行います。拠点は、場合によっては、リニューアル ロケーションとしての役割を果たすこともできます。これにより、車両は荷を降ろしたり再度積み込んだりして、配達と引き取りを引き続き行うことができます。拠点には、絶対的なタイム ウィンドウで指定される開始時刻と終了時刻があります。車両はこのタイム ウィンドウ外の時間に拠点に到着することは許されません。 拠点を指定する場合は、次の属性を使用して、各拠点のプロパティ (拠点の名前やサービス時間など) を設定できます。 ObjectID システムで管理される ID フィールド。 Name 拠点の名前。ルートの StartDepotName フィールドと EndDepotName フィールドは、ここで指定した名前を参照します。ルート リニューアルを使用する場合は、このレコード セットもこれを参照します。 拠点の名前は大文字と小文字を区別しませんが、空白以外の一意の値にする必要があります。 Description 拠点の場所に関する説明的な情報。あらゆるテキスト情報を保持することができ、一意でなくてもかまいません。 たとえば、拠点が存在する領域や、拠点の住所および電話番号をメモしておきたい場合、このような情報は Name フィールドではなく、このフィールドに入力できます。 TimeWindowStart1 ネットワーク ロケーションの第 1 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、開始時刻は設定されません。 タイム ウィンドウ フィールド (TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2、TimeWindowEnd2) は、日付フィールドに時刻のみの値または日時の値を含めることができますが、エポックからのミリ秒を表す整数は使用できません。タイム ウィンドウ フィールドのタイム ゾーンは、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 のタイム ウィンドウの開始時間は設定されますが、終了時間は設定されません。これは有効な設定です。 CurbApproach
CurbApproach 属性は、米国の右側通行の標準と英国の左側通行の標準の両方に対応するように設計されています。まず、拠点が車両の左側にあるとします。これは、車両が移動するのが道路の左側であるか右側であるかに関係なく、常に左側にあります。右側通行か左側通行かに応じて異なるのは、2 つの方向のうちどちらから拠点に到着するかです。つまり、結局のところ車両の右側または左側になります。たとえば、拠点に到着するときに、車両と拠点の間に交通レーンがない方がいい場合は、米国では 1 (車両の右側) を選択し、英国では 2 (車両の左側) を選択します。 Bearing ポイントが移動している方向。単位は度で、北を基準に時計回りに測定されます。このフィールドは BearingTol フィールドと組み合わせて使用されます。 通常、方位データは、GPS 受信機を備えたモバイル デバイスから自動的に送信されます。歩行者や車両などの移動している入力場所を読み込んでいる場合は、方位データを含めてみてください。 このフィールドを使用すると、たとえば、車両が交差点や高架の近くにいる場合に、ロケーションが間違ったエッジに追加されるのを避けることができます。方位は、ツールがポイントを道路のどちら側に配置するかを決定する際にも役立ちます。 BearingTol 方位許容値は、Bearing フィールドを使用して移動ポイントをエッジに配置するときに、許容される方位の範囲を作成します。Bearing フィールドの値が、エッジの方位許容値から生成される許容範囲内にある場合は、ポイントをその場所にネットワーク ロケーションとして配置できます。許容範囲から外れている場合は、次に近いエッジの最も近いポイントが評価されます。 単位は度で、デフォルト値は 30 です。値は 0 より大きく 180 未満でなければなりません。値が 30 の場合、Network Analyst がネットワーク ロケーションをエッジに追加しようとすると、方位値の許容範囲がエッジの両側 (左と右) に 15 度ずつ、どちらもエッジのデジタイズされた方向に生成されます。 NavLatency このフィールドは、Bearing と BearingTol の値が存在する場合にのみ、解析処理で使用されます。ただし、Bearing と BearingTol の値が存在する場合でも、NavLatency 値の入力は任意です。NavLatency は、移動中の車両からサーバーに GPS 情報が送信されてから、車両のナビゲーション デバイスが処理されたルートを受信するまでの予想経過時間を示します。 NavLatency の時間単位は、解析オブジェクトの timeUnits プロパティで指定された単位と同じです。 | Feature Set |
routes | 車両や運転手の特性を指定する 1 つ以上のルートを指定します。ルートには、開始拠点と終了拠点のサービス時間、固定または可変の開始時間、時間ベースの運用コスト、距離ベースの運用コスト、複数の容量、運転手の就業日に関するさまざまな制約などを含めることができます。 ルートには次の属性を指定できます。 Name ルートの名前。名前は一意でなければなりません。 フィールドが NULL 値の場合は、解析時に一意の名前が生成されます。このため、ほとんどの場合、値の入力は必須ではありません。ただし、ルートに事前に割り当てられている休憩、ルート リニューアル、ルート ゾーン、または訪問先が解析に含まれる場合、名前の入力は必須です。これは、このような場合にルート名が外部キーとして使用されるためです。ルート名の大文字と小文字は区別されません。 StartDepotName ルートの開始拠点の名前。このフィールドは、拠点の Name フィールドに対する外部キーです。 StartDepotName の値が NULL の場合、ルートは指定されている最初の訪問先から始まります。開始拠点を省略するのは、車両の出発点が不明か、解析に関係ない場合に有効です。ただし、StartDepotName が NULL の場合は、EndDepotName を NULL にすることはできません。 訪問先/拠点が複数のタイム ゾーンにある場合、仮想の開始拠点は使用できません。 ルートが配達を行っていて、StartDepotName が NULL の場合、荷物はルートの開始前に仮想拠点で車両に積み込まれるものと想定されます。リニューアル拠点を持たないルートの場合、その配達訪問先 ([訪問先] の DeliveryQuantities がゼロ以外の値) の荷物は、開始拠点または仮想拠点で積み込まれます。リニューアル拠点を持つルートの場合、最初のリニューアル拠点の手前にある配達訪問先の荷物のみが開始拠点または仮想拠点で積み込まれます。 EndDepotName ルートの終了拠点の名前。このフィールドは、拠点の Name フィールドに対する外部キーです。 StartDepotServiceTime 開始拠点でのサービス時間。このフィールドを使用して、車両に荷物を積み込むのに要する時間をモデリングします。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。 このフィールドの値の単位は、[Time Field Units] パラメーターで指定します。 開始拠点と終了拠点でのサービス時間は固定値で (StartDepotServiceTime および EndDepotServiceTime フィールドの値で指定)、ルートの実際の積み込み時間は考慮されません。たとえば、開始拠点で車両への積み込みにかかる時間は、訪問先のサイズによって異なります。拠点のサービス時間に満載の積荷または平均的な積荷に応じた値を割り当てるか、独自に見積もりを行います。 EndDepotServiceTime 終了拠点でのサービス時間。このフィールドを使用して、車両から荷物を降ろすのに要する時間をモデリングします。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。 このフィールドの値の単位は、[Time Field Units] パラメーターで指定します。 開始拠点と終了拠点でのサービス時間は固定値で (StartDepotServiceTime および EndDepotServiceTime フィールドの値で指定)、ルートの実際の積み込み時間は考慮されません。たとえば、開始拠点で車両への積み込みにかかる時間は、訪問先のサイズによって異なります。拠点のサービス時間に満載の積荷または平均的な積荷に応じた値を割り当てるか、独自に見積もりを行います。 EarliestStartTime ルートにおいて許容される最も早い開始時刻。解析では、このフィールドを開始拠点のタイム ウィンドウと組み合わせて使用し、ルートの実現可能な開始時刻を決定します。 このフィールドは NULL 値を含むことができません。時刻のみを示す値のデフォルト値は午前 8 時となります。デフォルト値は、解析に対して設定されたデフォルトの日付の午前 8 時と見なされます。 解析が複数のタイム ゾーンにまたがる場合、EarliestStartTime フィールドのタイム ゾーンは開始拠点のタイム ゾーンと同じになります。 LatestStartTime ルートにおいて許容される最も遅い開始時刻。 このフィールドは NULL 値を含むことができません。時刻のみを示す値のデフォルト値は午前 10 時となります。デフォルト値は、解析に対して設定されたデフォルトの日付の午前 10 時と見なされます。 解析が複数のタイム ゾーンにまたがる場合、LatestStartTime フィールドのタイム ゾーンは開始拠点のタイム ゾーンと同じになります。 ArriveDepartDelay このフィールドには、車両を通常の移動速度まで加速し、停止するまで減速し、ネットワークに出入りする (たとえば、駐車場に出入りする) のに必要な移動時間が格納されます。ArriveDepartDelay 値を含めることにより、VRP 解析で、物理的に一致する訪問先にサービスを提供するために多くのルートを送り出すことがなくなります。 このプロパティのコストは、一致しない訪問先、拠点、およびルート リニューアルへの訪問の間に発生します。たとえば、ルートが拠点から出発し、最初の訪問先を訪問したときに、到着と出発の遅延の合計が移動時間に追加されます。最初の訪問先から 2 番目の訪問先まで移動するときにも同じことが起こります。2 番目と 3 番目の訪問先が一致している場合、車両は移動する必要がないため、この間については ArriveDepartDelay 値は追加されません。ルートがルート リニューアルに移動する場合、この値が再び移動時間に追加されます。 休憩の場合、車両は減速して停止し、後で加速する必要がありますが、VRP 解析では ArriveDepartDelay 値を加算できません。これは、ルートが訪問先を離れ、休憩のために停止し、さらに次の訪問先に向かった場合に、到着と出発の遅延は 2 度ではなく、1 度しか追加されないことを意味します。 たとえば、1 つの高層ビル内に 5 つの一致する訪問先があり、それらが 3 つの異なるルートでサービスを提供されているとします。この場合は、到着と出発の遅延が 3 回発生します。つまり、3 人の運転手がそれぞれ駐車場所を見つけ、同じ建物に入ることが必要になります。しかし、これらの訪問先に 1 つのルートでサービスを提供できれば、駐車して建物に入る運転手は 1 人だけになり、到着と出発の遅延の発生も 1 回だけになります。VRP 解析ではコストの最小化が図られるため、到着と出発の遅延を抑えるために、単一ルートのオプションが特定されます (特別指定、タイム ウィンドウ、積載制限などの制約によって、複数のルートが必要になる場合があります)。 このフィールド値の単位は、[time_units] パラメーターで指定します。 Capacities 車両の最大容量。重量、体積、数量など、任意の計測単位で容量を指定できます。重量と体積など、複数の計測方法でサイズを指定することもできます。 単位を指定しないで容量を入力します。たとえば、車両の最大積載量が 40,000 ポンドである場合は、「40000」と入力します。値がポンド単位であることを覚えておく必要があります。 複数の計測方法を記録する場合、数値をスペースで区切ります。たとえば、配達について重量と体積を記録する場合、重量が 2,000 ポンド、体積が 100 立法フィートであれば、「2000 100」と入力します。この場合も、単位がポンドと立方フィートであることを覚えておく必要があります。また、入力した値と対応する単位の順序も覚えておく必要があります。 単位と単位の順序を覚えておくことは、次の 2 つの理由から重要です。1 つ目は、後で情報を再解釈できるようにするため、2 つ目は、訪問先の DeliveryQuantities フィールドと PickupQuantities フィールドの値を正しく入力できるようにするためです。ルートが過積載にならないようにするために、配車ルート (VRP) 解析では、Capacities、DeliveryQuantities、および PickupQuantities が同時に参照されるということに注意する必要があります。単位をフィールドに入力することはできず、VRP ツールは単位変換を実行できません。値が正しく解釈されるようにするために、同じ単位および同じ単位の順序を使用して 3 つのフィールドに値を入力する必要があります。3 つのフィールドのいずれかの単位または順序が異なると、正しい結果が得られません。この場合、警告メッセージは表示されません。事前に標準の単位と単位の順序を設定しておくこと、また、これら 3 つのフィールドの値を入力する度に単位と単位の順序を参照することをお勧めします。 空の文字列または NULL 値は、すべての数量がゼロであることを示します。積載制限を負の値とすることはできません。 訪問先の DeliveryQuantities フィールドまたは PickupQuantities フィールドに対して Capacities フィールド内の値の数が不足している場合、残りの値はゼロと見なされます。 VRP 解析では、簡単なブール テストを実行するだけで、積載制限を超過したかを確認できます。ルートの積載制限値が運送する合計数量以上である場合、車両に積荷が収まると見なされます。ただし、積荷および車両の実際の形状によっては、この判断は正しくない可能性があります。たとえば、VRP 解析では、1,000 立方フィートの球体を、幅が 8 フィートで容積が 1,000 立方フィートのトラックに収容することができます。しかし、実際には、球体の直径は 12.6 フィートであり、8 フィート幅のトラックに球体を収容することはできません。 FixedCost ルートがソリューションで使用される (つまり、訪問先がソリューションに割り当てられている) 場合に限り適用される金銭上の固定コスト。このフィールドは NULL 値を含むことができます。NULL 値は固定コストがゼロであることを示します。このコストは、ルートの合計運用コストの一部です。 CostPerUnitTime 合計ルート所要時間 (移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待機時間も含む) に対して作業の単位時間ごとに適用される金銭上のコスト。このフィールドは NULL 値を含むことができず、デフォルト値は 1.0 となります。 このフィールド値の単位は、[time_units] パラメーターで指定します。 CostPerUnitDistance ルート長 (合計移動距離) に対して (移動距離の単位ごとに) 適用される金銭上のコスト。このフィールドは NULL 値を含むことができます。NULL 値はコストがゼロであることを示します。 このフィールド値の単位は、[distance_units] パラメーターで指定します。 OvertimeStartTime 規定労働時間の長さで、この時間を超過すると規定外労働時間の計算が開始されます。このフィールドは NULL 値を含むことができます。NULL 値は規定外労働時間が適用されないことを示します。 このフィールド値の単位は、[time_units] パラメーターで指定します。 たとえば、合計ルート所要時間が 8 時間を上回るときに、運転手に規定外労働賃金を支払う必要がある場合は、OvertimeStartTime に「480」 (8 時間× 60 分) を指定し、時間単位を [分] に設定します。 CostPerUnitOvertime 規定外労働時間の単位時間ごとに適用される金銭上のコスト。このフィールドは NULL 値を含むことができます。NULL 値は CostPerUnitOvertime の値が CostPerUnitTime の値と同じであることを示します。 MaxOrderCount ルートに組み込むことができる訪問先の最大数。このフィールドは NULL 値を含むことができません。デフォルト値は 30 となります。 MaxTotalTime ルートの最大許容所要時間。ルートの所要時間には、移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待ち時間も含まれます。このフィールドは NULL 値を含むことができます。NULL 値はルートの所要時間に制約がないことを示します。 このフィールド値の単位は、[time_units] パラメーターで指定します。 MaxTotalTravelTime ルートの最大許容移動時間。移動時間に含まれるのはネットワークの走行に費やされた時間だけで、サービス時間または待ち時間は含まれません。 このフィールドは NULL 値を含むことができます。NULL 値は最大許容移動時間に制約がないことを示します。このフィールドは [MaxTotalTime] フィールドより小さくする必要があります。 このフィールド値の単位は、[time_units] パラメーターで指定します。 MaxTotalDistance ルートへの最大許容移動距離。 このフィールド値の単位は、[distance_units] パラメーターで指定します。 このフィールドは NULL 値を含むことができます。NULL 値は最大許容移動距離に制約がないことを示します。 SpecialtyNames スペース区切りの文字列であり、訪問先が必要とする特別指定の名前が含まれます。NULL 値は、訪問先が特別指定を必要としていないことを示しています。 訪問先クラスおよびルート クラスに表示されるどの特別指定の綴りも、配車ルート (VRP) 解析でそれらを一緒にリンクできるようにするために、正確に一致している必要があります。 特別指定の説明とその機能を示す例として、芝の手入れと庭木の剪定を行う造園会社を考えます。この会社の一部の訪問先では、背の高い木を剪定するために高所作業車が必要です。これらの訪問先の [SpecialtyNames] フィールドに「BucketTruck」と入力して、特別指定があることを示します。他の訪問先の [SpecialtyNames] は NULL のままにします。同様に、油圧ブームを装備したトラックで移動するルートの [SpecialtyNames] フィールドにも「BucketTruck」と入力します。他のルートのフィールドは NULL のままにします。VRP 解析を実行すると、特別指定のない訪問先は任意のルートに割り当てられますが、高所作業車が必要な訪問先は、特別指定が設定されたルートにだけ割り当てられます。 AssignmentRule 訪問先をルートに割り当てるためのルールを指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。 このフィールドは、NULL 値を含むことができません。
| Record Set |
breaks | 特定の配車ルート解析のルートについての休憩時間や休憩を指定します。休憩は、厳密に 1 つのルートに関連付けられ、訪問先にサービスを提供した後、訪問先へのルート途中、または訪問先にサービスを提供する前に取ることができます。休憩には開始時間と継続時間があり、休憩中の賃金が運転手に支払われる場合もあれば、そうでない場合もあります。休憩の開始の設定には、タイム ウィンドウ、最大移動時間、または最大労働時間という 3 つのオプションがあります。 時間が UTC でない限り、訪問先または拠点が複数のタイム ゾーンにある場合、タイムウィンドウの休憩は使用できません。 休憩を指定する場合は、次の属性を使用して、各休憩のプロパティ (休憩の名前やサービス時間など) を設定できます。 ObjectID システムで管理される ID フィールド。 RouteName 休憩を追加するルートの名前 休憩は 1 つのルートだけに割り当てられますが、多くの休憩を同じルートに割り当てることができます。 このフィールドは、ルートの Name フィールドに対する外部キーであり、NULL 値を持つことができません。 Precedence 優先順位値は、特定のルートの休憩を順序付けします。優先順位値が 1 の休憩は、2 の休憩よりも前に取られ、以降の休憩も優先順位値の順番に取られます。 タイム ウィンドウか、最大移動時間か、最大労働時間かにかかわりなく、すべての休暇が優先順位値を持たなければなりません。 ServiceTime 休憩時間の長さ。このフィールドは、NULL 値を含むことができません。デフォルト値は 60 です。 このフィールド値の単位は、[time_units] パラメーターで指定します。 TimeWindowStart 休憩のタイム ウィンドウの開始時間。開始時間と終了時間の両方を指定する必要があります。 このフィールドが値を持つ場合、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 休憩のタイム ウィンドウの終了時間。開始時間と終了時間の両方を指定する必要があります。 このフィールドが値を持つ場合、MaxTravelTimeBetweenBreaks と MaxCumulWorkTime は NULL でなければなりません。また、解析の他のすべての休憩についても、MaxTravelTimeBetweenBreaks と MaxCumulWorkTime の値は NULL でなければなりません。 MaxViolationTime このフィールドでは、タイム ウィンドウによる休憩について最大許容超過時間を指定します。到着時刻がこの時間の範囲を超えている場合、タイム ウィンドウが超過されたと見なされます。 値がゼロの場合、タイム ウィンドウのどのような超過も許されません。つまり、タイム ウィンドウは条件が厳しい (ハード) ということです。ゼロ以外の値は最大遅延時間の指定を意味します。たとえば、タイム ウィンドウの終了時刻から最大で 30 分遅れて休憩を開始することができますが、この遅延時間には、[タイム ウィンドウ違反の重要度] パラメーターに従ってペナルティが適用されます。 このプロパティには NULL を指定できます。TimeWindowStart と TimeWindowEnd 値が NULL 値の場合、許容超過時間は無制限です。MaxTravelTimeBetweenBreaks または MaxCumulWorkTime に値が設定されている場合、MaxViolationTime は Null でなければなりません。 このフィールド値の単位は、[time_units] パラメーターで指定します。 MaxTravelTimeBetweenBreaks 休憩を取る前に累積できる移動時間の最大値。移動時間は前の休憩の終了時か、休憩がまだ取られていないときはルートの開始時から累積されます。 これがルートの最後の休憩なら、MaxTravelTimeBetweenBreaks は最後の休憩から終了拠点までに累積可能な最大移動時間を示すことにもなります。 このフィールドの目的は、休憩が必要になるまでに運転できる時間を制限することです。たとえば、解析の時間単位が分に設定され、MaxTravelTimeBetweenBreaks の値が 120 の場合、運転手は 2 時間運転した後に休憩を取ります。さらに 2 時間運転した後に 2 回目の休憩を割り当てるには、2 回目の休憩の MaxTravelTimeBetweenBreaks プロパティを 120 にします。 このフィールドに値を設定した場合、解析を成功させるには、TimeWindowStart、TimeWindowEnd、MaxViolationTime、および MaxCumulWorkTime が Null でなければなりません。 このフィールド値の単位は、[time_units] パラメーターで指定します。 MaxCumulWorkTime 休憩を取る前に累積できる作業時間の最大値。作業時間は常にルートの開始時から累積されます。 作業時間は、移動時間と、訪問先、拠点、休憩でのサービス時間の合計です。ただし、これには待ち時間は含まれません。待ち時間とは、ルート (または運転手) が訪問先または拠点でタイム ウィンドウの開始まで待機した時間のことです。 このフィールドは、休憩が必要になるまでに作業できる時間を制限します。たとえば、解析の時間単位が分に設定され、MaxCumulWorkTime の値が 120、ServiceTime の値が 15 になっている場合、運転手は 2 時間作業した後に 15 分間の休憩を取ります。 引き続き最後の例で、さらに 3 時間作業した後に 2 回目の休憩が必要とします。この休憩を指定するには、2 回目の休憩の MaxCumulWorkTime 値に 315 (5 時間と 15 分) を入力します。この数には、前の休憩の MaxCumulWorkTime と ServiceTime の値に加えて、2 回目の休憩が許可される前の 3 時間の追加作業時間が含まれます。最大作業時間の休憩を誤って取ることを避けるために、ルートの開始から作業時間を累積していること、および作業時間にはそれまでに訪問した拠点、訪問先、休憩でのサービス時間が含まれることを再確認してください。 このフィールドに値を設定した場合、解析を成功させるには、TimeWindowStart、TimeWindowEnd、MaxViolationTime、および MaxTravelTimeBetweenBreaks が Null でなければなりません。 このフィールド値の単位は、[time_units] パラメーターで指定します。 IsPaid 休憩に賃金を支払うかをブール値で指定します。このフィールド値に 1 を指定すると、休憩で費やされた時間はルートのコスト計算および規定外労働時間の判定で考慮されます。そうでない場合は、値 0 を指定します。デフォルト値は 1 です。 Sequence ルートでの休憩の順序を示します。このフィールドは NULL 値を含むことができます。これにより、解析が休憩の順序を割り当てることができるようになります。順序の値は正の値で、かつ各ルートに対して一意として指定します (リニューアル拠点立ち寄り状況、訪問先、および休憩の間で共有される)。ただし、1 から開始する必要も連続している必要もありません。 | Record Set |
time_units | 解析における、すべての時間ベースのフィールド値についての時間単位。配車ルート (VRP) 解析における多くのフィーチャとレコードには、時間値を格納するためのフィールド (訪問先の ServiceTime やルートの CostPerUnitTime など) があります。必要なデータ入力を最小限にするために、それらのフィールド値には単位が含まれていません。ただし、すべての距離ベースのフィールド値は同じ単位で入力する必要があります。このパラメーターは、それらの値の単位を指定するために使用されます。 なお、時間ベースの出力フィールドには、このパラメーターで指定した単位と同じ単位が使用されます。 | String |
distance_units | 解析における、すべての距離ベースのフィールド値についての距離単位。配車ルート (VRP) 解析における多くのフィーチャとレコードには、距離値を格納するためのフィールド (ルートの MaxTotalDistance や CostPerUnitDistance など) があります。必要なデータ入力を最小限にするために、それらのフィールド値には単位が含まれていません。ただし、すべての距離ベースのフィールド値は同じ単位で入力する必要があります。このパラメーターは、それらの値の単位を指定するために使用されます。 なお、距離ベースの出力フィールドには、このパラメーターで指定した単位と同じ単位が使用されます。 | String |
analysis_region (オプション) | 解析を実行する地域。このパラメーターに値を指定しない場合、入力ポイントの位置に基づいて地域名が自動的に計算されます。地域の名前は、地域名の自動検出が入力に対して正確ではない場合にのみ設定する必要があります。 地域を指定するには、次のいずれかの値を使用します。
レガシー:次の地域名は現在はサポートされておらず、今後のリリースで削除される予定です。廃止された地域名のいずれかを指定すると、サポートされている地域名がツールによって自動的に割り当てられます。
| String |
default_date (オプション) | 日付を含まずに時刻を指定された時間フィールドの値に使用される、デフォルトの日付。これらの時間フィールドは、[orders] や [breaks] パラメーターの [ServiceTime] 属性など、さまざまな入力パラメーターで使用されます。 | Date |
uturn_policy (オプション) | 到達圏を生成する際に、ジャンクションでの U ターンを規制するか、許可するかを指定します。パラメーターの値を理解するために、ここでは次のような用語を使用します。ジャンクションは道路セグメントが終了するポイントを表し、一般的には 1 つ以上の別のセグメントに接続されます。疑似ジャンクションは 2 つの道路が相互に接続されるポイントです。交差点は 3 つ以上の道路が接続する場所を表し、行き止まりは道路セグメントが他の道路に接続せずに終了している場所を表します。
このパラメーターに指定した値は、[移動モード] を [カスタム] (デフォルト値) に設定しなければ無視されます。 | String |
time_window_factor (オプション) | タイム ウィンドウの重要度を指定します。
| String |
spatially_cluster_routes (オプション) | ルートが空間的にクラスター化されるかどうかを指定します。
| Boolean |
route_zones (オプション) | 指定されたルートの担当区域を描画します。ルート ゾーンはポリゴン フィーチャです。ルートゾーンを使用して、特定の領域内にある訪問先または領域の近くにある訪問先にのみサービスを提供するようにルートを制限します。どのようなときにルート ゾーンが役に立つかを以下の例で示します。
ルート ゾーンを指定する場合は、次の属性を使用して、各ルート ゾーンのプロパティ (ルート ゾーンに関連するルートなど) を設定する必要があります。 ObjectID システムで管理される ID フィールド。 RouteName このゾーンが適用されるルートの名前。ルート ゾーンは、関連付けられたルートを最大で 1 つ持っています。このフィールドは、NULL 値を含むことができません。ルートの Name フィールドに対する外部キーとなります。 IsHardZone ハード ルート ゾーンかソフト ルート ゾーンかをブール値で示します。[True] 値はルート ゾーンがハード ルート ゾーンであることを示します。つまり、ルート ゾーン ポリゴンの外にある訪問先をルートに割り当てることはできません。デフォルト値は 1 (True) です。[False] 値 (0) を指定した場合、ルート ゾーン ポリゴンの外にある訪問先をルートに割り当てることはできますが、訪問先へのサービス提供のコストはルート ゾーンからのユークリッド距離に基づく関数によって重み付けされます。基本的に、ソフト ゾーンから訪問先までの直線距離が長くなるに従い、訪問先をルートに割り当てる機会が低くなることを意味しています。 | Feature Set |
route_renewals (オプション) | 配達するか引き取る積荷の、再積み込みまたは荷降ろしを行うためにルートが訪問できる、中間拠点を指定します。特に、ルート リニューアルは、ルートを拠点にリンクします。このリレーションシップは、関連付けられた拠点でルートがリニューアル (途上での再積み込みまたは荷降ろし) できることを示します。 ルート リニューアルを使用してモデリング可能なシナリオとして、「開始拠点で配達する荷物を車両に満載し、訪問先に供給し、拠点に戻って配達用の荷物を再び積み込み、訪問先への供給を継続する」というものがあります。たとえば、プロパンガスの配達の場合は、車両はタンクがほとんどまたは完全に空になるまで複数回配達を行い、燃料補給ポイントに立ち寄り、さらに配達を継続することができます。 考慮するべきルールとオプションをいくつか示します。
ルート リニューアルを指定する際は、次の属性を使用してそれぞれのプロパティ (ルート リニューアルを行える拠点の名前など) を設定する必要があります。 ObjectID システムで管理される ID フィールド。 DepotName このリニューアルが行われる拠点の名前。このフィールドは、NULL 値を含むことができません。拠点の Name フィールドに対する外部キーとなります。 RouteName このリニューアルが適用されるルートの名前。このフィールドは、NULL 値を含むことができません。ルートの Name フィールドに対する外部キーとなります。 ServiceTime リニューアルのサービス時間。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。 このフィールド値の単位は、[time_units] パラメーターで指定します。 リニューアル拠点で車両に荷積みするのにかかる時間は、車両のサイズと、車両にどれくらい荷物が積まれているかに左右される場合があります。ただし、ルート リニューアルのサービス時間は固定値であり、実際の積荷を考慮に入れません。したがって、リニューアル サービス時間には、満載の積荷の場合のサービス時間、平均的な積荷の場合の時間、または別の時間評価による値を指定してください。 | Record Set |
order_pairs (オプション) | 同じルートで引き取りと配達のサービスを提供できるように、引き取りと配達の訪問先をペアにします。訪問先のペアを指定すると、解析は訪問先の片方だけをルートに割り当てられなくなります。訪問先の両方を同じルートに割り当てるか、どちらも割り当てないようにします。 訪問先に対する引き取りと配達をペアにすることが必要な場合があります。たとえば、宅配会社が、ルートで訪問先から優先度の高い荷物を引き取り、拠点や選別ステーションに戻ることなくそれを別の訪問先に配達し、さらに配達時間を最小化する必要がある場合などです。これらの関連する訪問先を、訪問先のペアを使用して適切に順序付けし、同じルートに割り当てることができます。荷物を車両に載せておける時間の制限を割り当てることもできます。たとえば荷物が、病院から試験所まで 2 時間以内に輸送する必要のある血液サンプルの場合です。 場合によっては 2 つの訪問先ペアを必要とすることがあります。たとえば、高齢者を自宅から、かかりつけの病院まで連れて行き、その後、家につれて戻りたい場合があるとします。自宅から病院までの乗車は、1 つの訪問先ペアであり、病院への到着時刻が要求されます。一方、病院から自宅に帰る乗車はもう 1 つの訪問先ペアであり、病院に迎えに行く時刻が要求されます。 訪問先ペアを指定する際は、次の属性を使用して各ペアのプロパティ (2 つの訪問先の名前など) を設定する必要があります。 ObjectID システムで管理される ID フィールド。 FirstOrderName ペアの第 1 の訪問先の名前。このフィールドは、訪問先の Name フィールドに対する外部キーです。 SecondOrderName ペアの第 2 の訪問先の名前。このフィールドは、訪問先の Name フィールドに対する外部キーです。 ペアの第 1 の訪問先は引き取り訪問先でなければなりません。つまり、その DeliveryQuantities フィールドは Null となります。ペアの第 2 の訪問先は配達訪問先でなければなりません。つまり、その PickupQuantities フィールドは Null となります。第 1 の訪問先で引き取られる数量は、第 2 の訪問先に配達される数量と対応する必要があります。特殊な場合として、積荷制限が使用されていないシナリオについては、両方の訪問先の数量がゼロになることがあります。 訪問先の数量は拠点で荷積みまたは荷降ろしされません。 MaxTransitTime ペアの最大移動時間です。移動時間とは、第 1 の訪問先の出発時刻から第 2 の訪問先の到着時刻までの時間の長さです。この制約により、2 つの訪問先の間で車両に積まれている時間 (乗車時間) が制限されます。人または生鮮食料品を車両で輸送する場合、その乗車時間は、荷物または非生鮮食料品を車両で輸送する場合より短くなるのが普通です。このフィールドは NULL 値を含むことができます。NULL 値は乗車時間に制約がないことを示します。 このフィールドの値の単位は、解析オブジェクトの timeUnits プロパティで指定します。 解析では、超過移動時間 (訪問先ペア間の直接移動時間に基づく) を追跡し、重み付けすることができます。このため、次の 3 つの手法のいずれかを使用するように VRP 解析機能に指示することができます。
[excess_transit_factor] パラメーターに重要度を割り当てることにより、これら 3 つの手法のいずれかを選択します。重要度にかかわりなく、[MaxTransitTime] 値が超過すると必ずエラーが返されます。 | Record Set |
excess_transit_factor (オプション) | 訪問先ペアの超過移動時間を減らすことの重要度を指定します。超過移動時間とは、訪問先ペア間を直接移動するのに必要な時間に対する超過時間です。超過時間は、運転手が休憩したり、中間の訪問先や拠点に移動したりすることで発生する場合があります。
| String |
point_barriers (オプション) | 一時的な規制として機能する 1 つ以上のポイント、または対象の道路を通行するために必要とされる追加の時間や距離を表す 1 つ以上のポイントを指定する場合に、このパラメーターを使用します。たとえば、ポイント バリアを使用して、道路沿いの倒木や、踏切で生じる遅延時間を表すことができます。 このツールでは、バリアとして追加できるポイントの数は 250 に制限されています。 ポイント バリアを指定する場合は、次の属性を使用して、各ポイント バリアのプロパティ (ポイント バリアの名前やバリアの種類など) を設定できます。 Name バリアの名前。 BarrierType ポイント バリアの通過を完全に禁止するか、通過時に時間または距離を追加するかを指定します。この属性の値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
Additional_Time バリアを通過するときに追加される移動時間。このフィールドは、解析の移動モードが時間ベースのインピーダンス属性を使用する場合にのみ、追加コスト バリアにのみ適用されます。 このフィールドには 0 以上の値を指定する必要があります。単位は [計測単位] パラメーターで指定した単位と同じです。 Additional_Distance バリアを通過するときに追加される距離。このフィールドは、解析の移動モードが距離ベースのインピーダンス属性を使用する場合にのみ、追加コスト バリアにのみ適用されます。 このフィールドには 0 以上の値を指定する必要があります。単位は [計測単位] パラメーターで指定した単位と同じです。 Additional_Cost バリアを通過するときに追加されるコスト。このフィールドは、解析の移動モードが時間ベースでも距離ベースでもないインピーダンス属性を使用する場合にのみ、追加コスト バリアにのみ適用されます。 FullEdge 解析時に、通行不可ポイント バリアをエッジ要素に適用する方法を指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
CurbApproach バリアによって影響を受ける移動方向を指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
ジャンクションは特定のポイントなので、右側/左側がありません。したがって、ジャンクション上にバリアを配置した場合は、アプローチ制限にかかわらずすべての車両に影響を与えます。 CurbApproach 属性は、米国の右側通行の標準と英国の左側通行の標準の両方に対応するように設計されています。まず、施設が車両の左側にあるとします。これは、車両が移動するのが道路の左側であるか右側であるかに関係なく、常に左側にあります。右側通行か左側通行かに応じて異なるのは、2 つの方向のうちどちらから施設に到着するかです。つまり、結局のところ車両の右側または左側になります。たとえば、施設に到着するときに、車両と施設の間に交通レーンがない方がいい場合は、米国では 1 (車両の右側) を選択し、英国では 2 (車両の左側) を選択します。 Bearing ポイントが移動している方向。単位は度で、北を基準に時計回りに測定されます。このフィールドは BearingTol フィールドと組み合わせて使用されます。 通常、方位データは、GPS 受信機を備えたモバイル デバイスから自動的に送信されます。歩行者や車両などの移動している入力場所を読み込んでいる場合は、方位データを含めてみてください。 このフィールドを使用すると、たとえば、車両が交差点や高架の近くにいる場合に、ロケーションが間違ったエッジに追加されるのを避けることができます。方位は、ツールがポイントを道路のどちら側に配置するかを決定する際にも役立ちます。 BearingTol 方位許容値は、Bearing フィールドを使用して移動ポイントをエッジに配置するときに、許容される方位の範囲を作成します。Bearing フィールドの値が、エッジの方位許容値から生成される許容範囲内にある場合は、ポイントをその場所にネットワーク ロケーションとして配置できます。許容範囲から外れている場合は、次に近いエッジの最も近いポイントが評価されます。 単位は度で、デフォルト値は 30 です。値は 0 より大きく 180 未満でなければなりません。値が 30 の場合、Network Analyst がネットワーク ロケーションをエッジに追加しようとすると、方位値の許容範囲がエッジの両側 (左と右) に 15 度ずつ、どちらもエッジのデジタイズされた方向に生成されます。 NavLatency このフィールドは、Bearing と BearingTol の値が存在する場合にのみ、解析処理で使用されます。ただし、Bearing と BearingTol の値が存在する場合でも、NavLatency 値の入力は任意です。NavLatency は、移動中の車両からサーバーに GPS 情報が送信されてから、車両のナビゲーション デバイスが処理されたルートを受信するまでの予想経過時間を示します。 NavLatency の時間単位は、解析オブジェクトの timeUnits プロパティで指定された単位と同じです。 | Feature Set |
line_barriers (オプション) | 道路と交差しているラインの場所を移動できないようにする 1 つ以上のラインを指定する場合に、このパラメーターを使用します。たとえば、複数の道路区間にわたって通行禁止となるパレードやデモを表すときに通過不可ライン バリアを使用します。また、ライン バリアを使用すれば、道路網の特定の区間を迂回して利用できる経路をすばやく見つけることができます。 このツールでは、[ライン バリア] パラメーターを使用して規制できる道路の数に制限があります。ライン バリアとして指定できるラインの数に制限はありませんが、すべてのラインと交差する道路の総数が 500 を超えることはできません。 ライン バリアを指定する場合は、次の属性を使用するごとに、名前プロパティおよびバリア タイプ プロパティを設定できます。 Name バリアの名前。 | Feature Set |
polygon_barriers (オプション) | 通過を完全に禁止するポリゴン、またはそのポリゴンと交差する道路を移動するときに時間または距離が係数に基づいて乗算されるポリゴンを指定する場合に、このパラメーターを使用します。 このサービスでは、[ポリゴン バリア] パラメーターを使用して規制できる道路の数に制限があります。ポリゴン バリアとして指定できるポリゴンの数に制限はありませんが、すべてのポリゴンと交差する道路の総数が 2,000 を超えることはできません。 ポリゴン バリアを指定する場合は、次の属性を使用して、各ポリゴン バリアのプロパティ (ポリゴン バリアの名前やバリアの種類など) を設定できます。 Name バリアの名前。 BarrierType バリアの通過を完全に禁止するか、バリアを通過する際のコスト (時間または距離など) を係数に基づいて計算するかを指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
ScaledTimeFactor これは、バリアが交差している道路の移動時間に乗算する係数です。このフィールドには 0 より大きい値を指定する必要があります。 このフィールドは、解析の移動モードが時間ベースのインピーダンス属性を使用する場合にのみ、コスト係数指定バリアにのみ適用されます。 ScaledDistanceFactor これは、バリアが交差している道路の距離に乗算する係数です。このフィールドには 0 より大きい値を指定する必要があります。 このフィールドは、解析の移動モードが距離ベースのインピーダンス属性を使用する場合にのみ、コスト係数指定バリアにのみ適用されます。 ScaledCostFactor これは、バリアと交差する道路のコストに乗算する係数です。このフィールドには 0 より大きい値を指定する必要があります。 このフィールドは、解析の移動モードが時間ベースでも距離ベースでもないインピーダンス属性を使用する場合にのみ、コスト係数指定バリアにのみ適用されます。 | Feature Set |
use_hierarchy_in_analysis (オプション) | 最適なルートを検索する際に、階層を使用するかどうかを指定します。
このパラメーターがオフ (False) である場合でも、訪問先間、拠点間、または訪問先と拠点間の直線距離が 50 マイルを超えている場合は、自動的に階層を使用する設定に戻ります。 このパラメーターは、[移動モード] を [カスタム] (デフォルト値) に設定しなければ無視されます。 | Boolean |
restrictions | 最適なルートを検索する際に使用される規制。 規制は、運転上の優先事項や要件を表します。ほとんどの場合は、規制により道路は通行禁止になります。たとえば、[Avoid Toll Roads] の規制を使用すると、ルートに有料道路が含まれるのは、インシデントまたは施設を訪問するために有料道路の使用が必要な場合のみになります。[Height Restriction] は、車両の高さより低い車高規制の場所を迂回できるようにします。車両に腐食性物質を積載している場合は、[Any Hazmat Prohibited] の規制を使用して、腐食性物質の運搬が法律で禁止されている道路の通行を回避します。 メモ:このパラメーターに指定した値は、[移動モード] を [カスタム] に設定しなければ無視されます。 メモ:一部の規制では、用途に関する追加の値を指定する必要があります。この値は、規制の名前、および規制に対応させることを意図している特定のパラメーターに関連付ける必要があります。[属性パラメーター値] パラメーターの [AttributeName] 列に規制の名前が表示されている場合、その規制を識別できます。通行可能な道路を検索するときに、規制が正しく使用されるように、規制に対応する [属性パラメーター値] パラメーター内で [ParameterValue] フィールドを指定する必要があります。 メモ:一部の規制は、特定の国でのみサポートされます。それらの規制の利用可否は、次のリスト内で地域ごとに記述されています。領域内で規制の利用可否が制限されている場合、ネットワーク解析範囲の国リストのセクションにあるテーブルを確認して、規制が特定の国で利用できるかどうかを決定できます。国の [ロジスティック属性] 列に [Yes] という値が指定されている場合、その国では、その地域内で選択可能な規制を利用できます。解析を行う範囲の国で利用できない規制の名前を指定した場合、無効な規制はサービスによって無視されます。また、[規制の使用] 属性パラメーターの値が 0 ~ 1 の範囲内にある規制も、サービスによって無視されます ([属性パラメーター値] パラメーターを参照)。[規制の使用] パラメーターの値が 0 より大きいすべての規制は禁止されます。 ツールは、次の規制をサポートしています。
レガシー:[Driving a Delivery Vehicle (配送車両の通行)] 規制属性は、使用できなくなりました。この規制は無効なので、サービスはこれを無視します。同様の結果を得るには、[Driving a Truck (トラックの通行)] 規制属性を [Avoid Truck Restricted Roads (トラック規制道路を使用しない)] 規制属性とともに使用します。 | String |
attribute_parameter_values (オプション) | 規制が、制限された道路上の移動を禁止するか、回避するか、優先するかのいずれかを指定する場合など、属性または規制に必要な追加の値を指定する場合に、このパラメーターを使用します。規制が道路を回避または優先するためのものである場合は、このパラメーターを使用して道路が回避または優先される度合いも指定できます。たとえば、有料道路を決して使用しないこと、できるだけ避けること、または優先することを選択できます。 メモ:このパラメーターに指定した値は、[移動モード] を [カスタム] に設定しなければ無視されます。 フィーチャクラスから [属性パラメーター値] パラメーターを指定する場合は、フィーチャクラスのフィールド名が、次のフィールドと一致する必要があります。
[属性パラメーター値] パラメーターは、[規制] パラメーターに依存します。ParameterValue フィールドは、規制の名前が [規制] パラメーターの値として指定されている場合に限り適用できます。 [属性パラメーター値] では、AttributeName で指定した各規制の ParameterName フィールドに [規制の使用] という値があります。この値は、規制に関連付けられた道路での移動を禁止、回避、または優先するかどうか、および道路を回避または優先する場合のレベルを指定します。[ParameterName] フィールドの [規制の使用] の値には、次のいずれかの文字列、またはそれぞれの括弧に示した数値を割り当てることができます。
規制が車両の高さなどの車両の特性に依存している場合はほとんど、[Restriction Usage] にデフォルト値の PROHIBITED を使用できます。ただし、[規制の使用] の値がルートの優先度に依存している場合もあります。たとえば、[Avoid Toll Roads] の規制では、[規制の使用] 属性のデフォルト値は [AVOID_MEDIUM] になります。つまり、この規制を使用すると、可能な場合は有料道路を回避するルートが検索されます。また、[AVOID_MEDIUM] は、最適なルートを検索する際に有料道路を回避することの重要度も表しています (中程度の優先度)。[AVOID_LOW] を選択すると、有料道路を回避する重要度が下がります。AVOID_HIGH を選択すると重要度が上がり、有料道路を回避するためにより長い距離のルートも生成可能になります。[PROHIBITED] を選択すると有料道路の通行は完全に禁止され、ルートでは有料道路のいずれの部分も通行できなくなります。一部のユーザーは、有料道路を回避または禁止して、料金所での支払いを回避することが目的であることに注意してください。一方、料金所で支払うことよりも交通渋滞を避けることのほうに価値があるため、有料道路で運転することを優先するユーザーもいます。後者の場合は、[規制の使用] として [PREFER_LOW]、[PREFER_MEDIUM]、または [PREFER_HIGH] を選択できます。優先度が高いほど、規制に関連付けられている道路を通行するために遠回りするようになります。 | Record Set |
populate_route_lines (オプション) | 出力ルート ラインを生成するかどうかを指定します。
[ルート形状] パラメーターが [正確な形状] に設定されている場合は、[ルートの単純化許容値] パラメーターの適切な値を使用して、ルートの形状の一般化をさらに制御できます。 [ルート形状] パラメーターで選択した値にかかわらず、最適なルートは常に道路に沿った移動が最小になるように決定され、直線距離が使用されることはありません。つまり、ルート形状が異なるだけで、ルート検索時に対象となる道路は同じであることを意味します。 | Boolean |
route_line_simplification_tolerance (オプション) | ルートおよびルート案内の出力ラインのジオメトリの単純化に使用される量。 このパラメーターに指定した値は、[移動モード] を [カスタム] (デフォルト値) に設定しなければ無視されます。 [populate_route_lines] パラメーターがオフ (False) に設定されている場合、このパラメーターは無視されます。 単純化によって、ルートの基本的な形状を定義する重要ポイント (交差点でのターンなど) は維持され、その他のポイントは削除されます。ここで指定する単純化の距離は、単純化されたラインの元のラインからの逸脱として認められる、最大許容オフセットです。ラインの単純化では、ルート ジオメトリを構成する頂点の数が削減されます。これにより、ツールの実行時間が短縮されます。 | Linear Unit |
populate_directions (オプション) | 各ルートに対してルート案内を生成するかどうかを指定します。
| Boolean |
directions_language (オプション) | 移動方向を生成する際に使用する言語。 このパラメーターは、[ルート案内の設定] パラメーターがオンである (Python では True) 場合にのみ使用されます。 パラメーター値は、次の 2 文字または 5 文字の言語コードのいずれかを使用して指定できます。
このツールは、まず、言語ローカライズを含め、指定された言語の完全一致を検索します。完全一致が見つからなかった場合は、言語ファミリーの一致を試みます。それでも一致が見つからない場合、ルート案内にはデフォルト言語である英語が使用されます。たとえば、ルート案内の言語が [es-MX] (メキシコ スペイン語) として指定されている場合、ツールは [es-MX] ではなく [es] 言語コードをサポートしているため、ルート案内をスペイン語で返します。 注意:言語がポルトガル語 (ブラジル) (pt-BR) とポルトガル語 (ポルトガル) (pt-PT) などのローカライズをサポートしている場合は、言語ファミリーとローカライズを指定します。言語ファミリーのみを指定した場合、ツールは言語ファミリーの一致を試みず、ルート案内にはデフォルト言語である英語が使用されます。たとえば、ルート案内の言語が [pt] として指定されている場合、ツールはルート案内を英語で返します。これは、ルート案内を [pt-BR] で返すべきか [pt-PT] で返すべきか判断できないからです。 | String |
directions_style_name (オプション) | ルート案内の書式スタイルの名前を指定します。このパラメーターは、[ルート案内の設定] パラメーターがオンである (Python では True) 場合にのみ使用されます。
| String |
travel_mode (オプション) | 解析でモデル化する交通モード。移動モードは ArcGIS Online で管理されます。組織の管理者は、移動モードを構成することで、組織のワークフローを反映することができます。 組織がサポートする移動モードの名前を指定する必要があります。 サポートされている移動モード名のリストを取得するには、ツールへのアクセスに使用したのと同じ GIS サーバー接続で、[ユーティリティ] ツールボックスから [移動モードの取得 (Get Travel Modes)] ツールを実行します。[移動モードの取得 (Get Travel Modes)] ツールは、アプリケーションに [サポートされている移動モード] テーブルを追加します。[サポートされている移動モード] テーブルの [Travel Mode Name] フィールドの任意の値を、入力として指定できます。Travel Mode Settings フィールドの値を入力として指定することもできます。これにより、ツールが移動モード名に基づいて設定を検索する必要がなくなるため、ツールの実行が高速化されます。 デフォルト値 [カスタム] を使用すると、カスタム移動モード パラメーター ([ジャンクションでの U ターン]、[階層の使用]、[規制]、[属性パラメーター値]、および [インピーダンス]) を使用して、独自の移動モードを構成できます。カスタム移動モード パラメーターのデフォルト値は、自動車による移動をモデル化します。歩くのが速い歩行者や、指定された高さ、重量、および特定危険物を積載したトラックなどをモデル化する場合に、[カスタム] を選択して、上記のカスタム移動モード パラメーターを設定することもできます。必要な解析結果を取得するために、異なる設定を試すことができます。解析設定を決定したら、組織の管理者と連携して、その設定を新規または既存の移動モードの一部として保存します。これにより、組織のすべてのユーザーが同じ設定で解析を実行できます。 注意:[カスタム] を選択すると、カスタム移動モード パラメーターに設定した値が解析に組み込まれます。組織で定義されている別の移動モードを指定すると、カスタム移動モード パラメーターで設定した値は無視されます。ツールはカスタムの設定ではなく、指定した移動モードの値を適用します。 | String |
impedance (オプション) | インピーダンスを設定します。インピーダンスは、道路セグメントや交通ネットワークのその他の部分を移動する労力やコストを表す値です。 移動時間もインピーダンスです。自動車は、空いている道路を 1 マイル移動するのに 1 分かかります。移動時間は、移動モードによって異なります。歩行者は、同じマイル数を歩くのに 20 分以上かかる可能性があります。そのため、モデル化している移動モードに対して適切なインピーダンスを選択することが重要です。 注意:このパラメーターに指定した値は、[移動モード] を [カスタム] (デフォルト値) に設定しなければ無視されます。 次のインピーダンス値から選択します。
レガシー:[到達圏]、[トラック輸送時間]、[歩行時間] インピーダンス値のサポートは終了するので、今後のリリースからは削除されます。これらのいずれかの値を使用する場合、ツールでは [時間インピーダンス] パラメーターの値を使用します。 | String |
time_zone_usage_for_time_fields (オプション) | このツールでサポートされている入力日時フィールドのタイム ゾーンを指定します。このパラメーターには、次のフィールドのタイム ゾーンを指定します。訪問先の TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2、TimeWindowEnd2、InboundArriveTime、および OutboundDepartTime。拠点の TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2、および TimeWindowEnd2。ルートの EarliestStartTime および LatestStartTime。休憩の TimeWindowStart および TimeWindowEnd。
UTC 形式での日時の値の指定は、訪問先や拠点があるタイム ゾーンが不明な場合や、訪問先と拠点が複数のタイムゾーンに分散しているときに、すべての日時の値を同時に開始する必要がある場合に役立ちます。[UTC] オプションは、ネットワーク データセットでタイム ゾーン属性が定義されている場合のみ適用されます。定義されていない場合、すべての日時の値は常に GEO_LOCAL と見なされます。 | string |
save_output_layer (オプション) | 解析設定をネットワーク解析レイヤー ファイルとして保存するかどうかを指定します。このファイルは、ArcMap などの ArcGIS Desktop アプリケーションで開いた場合でも、直接操作することはできません。これは、ツールから返される結果の品質を診断するために、Esri テクニカル サポートに送信されることを想定しています。
| Boolean |
overrides (オプション) | ネットワーク解析問題の解決法を見つける場合に、解析の動作に影響を与えることができる追加設定。 JSON (JavaScript Object Notation) で、このパラメーターの値を指定する必要があります。たとえば、有効な値は {"overrideSetting1" : "value1", "overrideSetting2" : "value2"} という形式です。オーバーライド設定名は、必ず二重引用符で囲みます。値には、数値、ブール型、または文字列を使用できます。 このパラメーターのデフォルト値は、値なしであり、解析の設定を上書きしません。 オーバーライドは、設定を適用する前後で得られた結果を慎重に分析した後にのみ使用する必要のある高度な設定です。解析ごとにサポートされているオーバーライド設定の一覧およびそれらの許容される値については、Esri テクニカル サポートにお問い合わせください。 | String |
save_route_data (オプション) | ルート レイヤーを ArcGIS Online または Portal for ArcGIS で共有するのに使用できる形式で、解析の入力と出力を保持するファイル ジオデータベースを含む *.zip ファイルを出力に含めるかどうかを指定します。
| Boolean |
time_impedance (オプション) | 時間ベースのインピーダンス。インピーダンスは、道路セグメントや交通ネットワークのその他の部分の移動時間を表す値です。 メモ:[インピーダンス] パラメーターを使用して指定された移動モードのインピーダンスが時間ベースである場合、[時間インピーダンス] パラメーターと [インピーダンス] パラメーターの値が同じである必要があります。同一でなければ、サービスはエラーを返します。 | String |
distance_impedance (オプション) | メモ:[インピーダンス] パラメーターを使用して指定された移動モードのインピーダンスが距離ベースである場合、[距離インピーダンス] パラメーターと [インピーダンス] パラメーターの値が同じである必要があります。同一でなければ、サービスはエラーを返します。距離ベースのインピーダンス。インピーダンスは、道路セグメントや交通ネットワークのその他の部分の移動距離を表す値です。 | String |
populate_stop_shapes (オプション) | ツールが、出力割り当てストップと未割り当てストップの形状を作成するかどうかを指定します。
| Boolean |
output_format (オプション) | 出力フィーチャを作成する形式を指定します。
[JSON ファイル] や [GeoJSON ファイル] など、ファイルベースの出力形式が指定されている場合は、ディスプレイに出力は追加されません。これは、ArcMap や ArcGIS Pro のようなアプリケーションは結果ファイルのコンテンツを描画できないからです。代わりに、結果ファイルはコンピューター上の一時ディレクトリにダウンロードされます。ArcGIS Pro でダウンロードされたファイルの場所を調べるには、プロジェクトのジオプロセシング履歴で、ツールの実行に対応するエントリの [出力結果ファイル] パラメーターの値を表示します。ArcMap でファイルの場所を調べるには、[ジオプロセシング結果] ウィンドウで、ツールの実行に対応するエントリの [出力結果ファイル] パラメーターから、ショートカット メニューの [ロケーションのコピー] オプションにアクセスします。 | String |
派生した出力
名前 | 説明 | データ タイプ |
solve_succeeded | 配車ルートの解析が成功したかどうかを特定します。 | ブール型 |
out_unassigned_stops | どのルートも立ち寄ることのできない訪問先へのアクセスを提供します。訪問先に立ち寄れない理由を確認し、必要な変更を行って問題を修正することもできます。 | フィーチャ セット |
out_stops | 拠点、訪問先、および休憩地点で止まるストップについての情報を提供します。この情報には、それらのストップに立ち寄るルート、到着時間と出発時間、およびストップの順序が含まれます。 | フィーチャ セット |
out_routes | 運転手、車両、および配車ルートでの車両のルート パス解析へのアクセスを提供します。 | フィーチャ セット |
out_directions | 各結果ルートのターンごとのルート案内へのアクセスを提供します。 | フィーチャ セット |
out_network_analysis_layer | ツールのパラメーターでプロパティが構成されているネットワーク解析レイヤー。これは、マップ内でさらに詳細な解析やデバッグに使用できます。 | ファイル |
out_route_data | 特定のルートに関するすべての情報を含む *.zip ファイル。 | ファイル |
out_result_file | 解析結果を含んでいる *.zip ファイル。出力ごとに 1 つ以上のファイルが含まれます。個々のファイルの形式は [出力形式] パラメーターで指定されます。 | ファイル |
コードのサンプル
次の Python スクリプトは、 Solve Vehicle Routing Problem ツールをスクリプトで使用する方法を示しています。
"""This example shows how to obtain the schema for the inputs, populate the inputs,
excute the tool and save the results.
"""
import sys
import time
import arcpy
# Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"
vrp_service = "https://logistics.arcgis.com/arcgis/services;World/VehicleRoutingProblem;{0};{1}".format(username, password)
# Add the geoprocessing service as a toolbox.
# Check https://pro.arcgis.com/en/pro-app/2.6/arcpy/functions/importtoolbox.htm for
# other ways in which you can specify credentials to connect to a geoprocessing service.
arcpy.ImportToolbox(vrp_service)
vrp_tool_name = "SolveVehicleRoutingProblem_VehicleRoutingProblem"
# Set the variables to store results from the tool. Overwrite the results if they already exist.
arcpy.env.overwriteOutput = True
output_routes = "C:/data/Results.gdb/Routes"
assigned_orders = "C:/data/Results.gdb/AssignedOrders"
unassigned_orders = "C:/data/Results.gdb/UnassignedOrders"
# Get the schema for input orders, depots and routes
input_orders = arcpy.GetParameterValue(vrp_tool_name, 0)
input_depots = arcpy.GetParameterValue(vrp_tool_name, 1)
input_routes = arcpy.GetParameterValue(vrp_tool_name, 2)
# Create two orders as input. The coordinate values are in WGS84 spatial reference.
# AssignmentRule for orders is 3 which specifies that the tool should assign a new
# sequence and route for every order.
orders = [(-122.51, 37.7724), (-122.4889, 37.7538)]
sr = arcpy.SpatialReference(4326)
with arcpy.da.InsertCursor(input_orders, ("SHAPE@", "Name", "AssignmentRule")) as cursor:
for i, order in enumerate(orders):
order_shape = arcpy.PointGeometry(arcpy.Point(order[0], order[1]), sr)
row = (order_shape, "O{}".format(i + 1), 3)
cursor.insertRow(row)
# Create one depot as input. The coordinate values are in WGS84 spatial reference
depots = [(-122.3943, 37.7967)]
with arcpy.da.InsertCursor(input_depots, ("SHAPE@", "Name")) as cursor:
for i, depot in enumerate(depots):
depot_shape = arcpy.PointGeometry(arcpy.Point(depot[0], depot[1]), sr)
row = (depot_shape, "D{}".format(i + 1))
cursor.insertRow(row)
# Create one route as input. Ensure that the StartDepotName and EndDepotName fields on
# routes has same value as the Name field on input depots. AssignmentRule for routes
# is 1 which specifies that the tool must include the route.
# CostPerUnitTime and MaxOrderCount are fields that cannot have null values if the route
# is to be considered as a valid route.
with arcpy.da.InsertCursor(input_routes, ("Name", "StartDepotName",
"EndDepotName", "AssignmentRule",
"CostPerUnitTime", "MaxOrderCount")) as cursor:
row = ("R1", "D1", "D1", 1, 1, 10)
cursor.insertRow(row)
# Call the tool
result = arcpy.SolveVehicleRoutingProblem_VehicleRoutingProblem(input_orders, input_depots, input_routes)
arcpy.AddMessage("Running the analysis with result ID: {}".format(result.resultID))
# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
time.sleep(1)
# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
arcpy.AddError("An error occured when running the tool")
arcpy.AddError(result.getMessages(2))
sys.exit(2)
elif result_severity == 1:
arcpy.AddWarning("Warnings were returned when running the tool")
arcpy.AddWarning(result.getMessages(1))
# Save the output routes and orders to a local geodatabase
result.getOutput(0).save(unassigned_orders)
result.getOutput(1).save(assigned_orders)
result.getOutput(2).save(output_routes)
次に、幅広の荷物を積んだトラックのカスタム移動モードを使用して、配車ルートの解析を行う方法を例示します。
"""This example shows how to perform a vehicle routing problem analysis using a custom travel mode that
models trucks carrying wide load."""
import sys
import time
import json
import arcpy
# Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"
vrp_service = "https://logistics.arcgis.com/arcgis/services;World/VehicleRoutingProblem;{0};{1}".format(username, password)
# Add the geoprocessing service as a toolbox.
arcpy.ImportToolbox(vrp_service)
vrp_tool_name = "SolveVehicleRoutingProblem_VehicleRoutingProblem"
# Set the variables to store results from the tool. Overwrite the results if they already exist.
arcpy.env.overwriteOutput = True
output_routes = "C:/data/Results.gdb/Routes"
assigned_orders = "C:/data/Results.gdb/AssignedOrders"
unassigned_orders = "C:/data/Results.gdb/UnassignedOrders"
# Get the schema for input orders, depots and routes
input_orders = arcpy.GetParameterValue(vrp_tool_name, 0)
input_depots = arcpy.GetParameterValue(vrp_tool_name, 1)
input_routes = arcpy.GetParameterValue(vrp_tool_name, 2)
# Create two orders as input. The coordinate values are in WGS84 spatial reference.
# AssignmentRule for orders is 3 which specifies that the tool should assign a new
# sequence and route for every order.
orders = [(-122.51, 37.7724), (-122.4889, 37.7538)]
sr = arcpy.SpatialReference(4326)
with arcpy.da.InsertCursor(input_orders, ("SHAPE@", "Name", "AssignmentRule")) as cursor:
for i, order in enumerate(orders):
order_shape = arcpy.PointGeometry(arcpy.Point(order[0], order[1]), sr)
row = (order_shape, "O{}".format(i + 1), 3)
cursor.insertRow(row)
# Create one depot as input. The coordinate values are in WGS84 spatial reference
depots = [(-122.3943, 37.7967)]
with arcpy.da.InsertCursor(input_depots, ("SHAPE@", "Name")) as cursor:
for i, depot in enumerate(depots):
depot_shape = arcpy.PointGeometry(arcpy.Point(depot[0], depot[1]), sr)
row = (depot_shape, "D{}".format(i + 1))
cursor.insertRow(row)
# Create one route as input. Ensure that the StartDepotName and EndDepotName fields on routes has same
# value as the Name field on input depots. AssignmentRule for routes is 1 which specifies that the tool
# must include the route. CostPerUnitTime and MaxOrderCount are fields that cannot have null values if
# the route is to be considered as a valid route.
with arcpy.da.InsertCursor(input_routes, ("Name", "StartDepotName",
"EndDepotName", "AssignmentRule",
"CostPerUnitTime", "MaxOrderCount")) as cursor:
row = ("R1", "D1", "D1", 1, 1, 10)
cursor.insertRow(row)
# Change Vehicle Width attribute parameter value to 4.5 (about 15 feet) for the Trucking Time travel mode
# used for the analysis
portal_url = "https://www.arcgis.com"
arcpy.SignInToPortal(portal_url, username, password)
travel_mode_list = arcpy.na.GetTravelModes(portal_url)
tt = travel_mode_list["Trucking Time"]
tt_json = str(tt)
tt_dict = json.loads(tt_json)
tt_dict["restrictionAttributeNames"].append("Width Restriction")
for attr_param in tt_dict["attributeParameterValues"]:
if attr_param['attributeName'] == 'Width Restriction' and attr_param['parameterName'] == 'Vehicle Width (meters)':
attr_param['value'] = 4.5
travel_mode = json.dumps(tt_dict)
# Call the tool
result = arcpy.SolveVehicleRoutingProblem_VehicleRoutingProblem(input_orders, input_depots,
input_routes, travel_mode=travel_mode)
arcpy.AddMessage("Running the analysis with result ID: {}".format(result.resultID))
# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
time.sleep(1)
# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
arcpy.AddError("An error occured when running the tool")
arcpy.AddError(result.getMessages(2))
sys.exit(2)
elif result_severity == 1:
arcpy.AddWarning("Warnings were returned when running the tool")
arcpy.AddWarning(result.getMessages(1))
# Save the output routes and orders to a local geodatabase
result.getOutput(0).save(unassigned_orders)
result.getOutput(1).save(assigned_orders)
result.getOutput(2).save(output_routes)