ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS Desktop

完全なプロ仕様の GIS

ArcGIS Enterprise

エンタープライズ GIS

ArcGIS Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ArcMap

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • エクステンション

配車ルート (VRP) 解析レイヤーの作成 (Make Vehicle Routing Problem Layer)

  • 概要
  • 使用法
  • 構文
  • コードのサンプル
  • 環境
  • ライセンス情報

概要

配車ルート (VRP) ネットワーク解析レイヤーを作成し、解析プロパティを設定します。配車ルート解析レイヤーは、複数の車両による配送を最適化するときに役立ちます。

メモ:

[配車ルート (VRP) 解析レイヤーの作成 (Make Vehicle Routing Problem Layer)] ツールと [配車ルート (VRP) の解析 (Solve Vehicle Routing Problem)] ツールは類似していますが、それぞれ異なる目的で設計されています。ジオプロセシング サービスをセットアップする場合、[配車ルート (VRP) の解析 (Solve Vehicle Routing Problem)] ツールを使用すると、セットアップ プロセスが簡単になります。それ以外の場合は、[配車ルート (VRP) 解析レイヤーの作成 (Make Vehicle Routing Problem Layer)] ツールを使用します。

[配車ルート (VRP) の解析 (Solve Vehicle Routing Problem)] を使用して配車ルート (VRP) ジオプロセシング サービスを作成する場合、1 つのツールをセットアップしてサービスとして公開するだけで済みます。これに対して、[配車ルート (VRP) 解析レイヤーの作成 (Make Vehicle Routing Problem Layer)] を使用してサービスを作成するには、モデルを作成し、それをさまざまな他のツールに正しく接続して公開する必要があります。検討すべきもう 1 つのオプションは、ArcGIS Online の配車ルート (VRP) サービスです。このサービスは、ArcMap 内のジオプロセシング ツールのように動作し、他のアプリケーションからアクセスでき、世界の大部分の高品質な道路データを含んでいます。

使用法

  • このツールで解析レイヤーを作成した後は、[ロケーションの追加 (Add Locations)] ツールを使用して解析レイヤーにネットワーク解析オブジェクトを追加し、[解析の実行 (Solve)] ツールを使用して解析を実行し、[レイヤー ファイルの保存 (Save To Layer File)] ツールを使用して結果をディスクに保存することができます。

  • このツールをジオプロセシング モデルに使用するときは、モデルをツールとして動作させる場合、出力ネットワーク解析レイヤーにモデル パラメーターを作成する必要があります。そうしないと、出力レイヤーはマップのコンテンツに追加されません。

構文

arcpy.na.MakeVehicleRoutingProblemLayer(in_network_dataset, out_network_analysis_layer, time_impedance, {distance_impedance}, {time_units}, {distance_units}, {default_date}, {capacity_count}, {time_window_factor}, {excess_transit_factor}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {hierarchy_settings}, {output_path_shape})
パラメーター説明データ タイプ
in_network_dataset

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

Network Dataset Layer
out_network_analysis_layer

作成する配車ルート ネットワーク解析レイヤーの名前。

String
time_impedance

ネットワークのエレメントに沿って通過時間を定義するのに使用する時間コスト属性。配車ルート解析は時間を最小限に短縮するため、時間コスト属性が必要です。

String
distance_impedance
(オプション)

ネットワークのエレメントに沿って長さを定義するのに使用する距離コスト属性。距離コスト属性はオプションです。

String
time_units
(オプション)

解析レイヤーのサブレイヤーおよびテーブル (ネットワーク解析のクラス) の時間的なフィールドで使用される時間の単位。時間コスト属性の単位と同じである必要はありません。

  • Seconds
  • Minutes
  • Hours
  • Days
String
distance_units
(オプション)

解析レイヤーのサブレイヤーおよびテーブル (ネットワーク解析のクラス) の距離的なフィールドで使用される距離の単位。オプションである距離コスト属性の単位と同じである必要はありません。

  • Miles
  • Kilometers
  • Feet
  • Yards
  • Meters
  • Inches
  • Centimeters
  • Millimeters
  • Decimeters
  • NauticalMiles
String
default_date
(オプション)

時間フィールド値として日付が指定されない場合の日付。訪問先オブジェクトに対する時間フィールド (TimeWindowStart1 など) が時刻のみを示す値である場合、日付はデフォルトの日付となります。たとえば、訪問先の [TimeWindowStart1] 値が午前 9:00 でデフォルトの日付が 2013 年 3 月 6 日の場合、このフィールドの時刻値全体は 2013 年 3 月 6 日、午前 9:00 になります。時間フィールド値として特定の日付がすでに指定されている場合、デフォルトの日付は無効になります。

デフォルトの日付では、次の日付を使用して曜日を指定することもできます。

  • 今日 - 1899/12/30
  • 日 - 1899/12/31
  • 月 - 1900/1/1
  • 火 - 1900/1/2
  • 水 - 1900/1/3
  • 木 - 1900/1/4
  • 金 - 1900/1/5
  • 土 - 1900/1/6
たとえば、時間フィールド値に対する暗黙の日付を火曜日に指定するには、パラメーター値を「1900/1/2」に指定します。

ネットワーク データセットに交通量データが含まれている場合、ここで指定する日付によって解析の結果が変わる可能性があります。たとえば、ルートが交通量の少ない日曜日の午前 8:00 に開始される場合と、混雑時の月曜日の午前 8:00 に開始される場合では、月曜日のルートの方が時間がかかります。また、最適なパスは交通状況によって異なります。

Date
capacity_count
(オプション)

積載容量の制約を示すディメンション数であり、車両の関連する制限を説明するのに必要です。訪問先への配達の場合、各車両が一度に輸送できる重量および体積は物理的および法律的な規制に基づいて制限されます。この場合、訪問先の重量および体積を追跡すれば、この 2 つの積載制限を使用することで、車両への過積載を防ぐことができます。このシナリオでの積載制限の総数は 2 (重量と体積) です。問題に応じて、積載制限のさまざまなタイプまたは量を追跡することが必要な場合もあります。積載制限フィールド ([訪問先] クラスでは [DeliveryQuantities] と [PickupQuantities]、[ルート] クラスでは [Capacities]) には、積載制限を表す数値がスペース区切りの文字列として入力されます。このフィールドで保持できる値の個数は、[積載制限の総数] に指定された値の個数に対応します。同じ配車ルート解析レイヤーでは、すべての積載制限フィールド値で各積載制限ディメンションの表示順序は同じになります。積載制限自体は名前を持ちません。したがって、積載制限ディメンションの順番を誤って入れ替えてしまうのを避けるために、すべての積載制限フィールドについては、スペース区切りの積載制限リストを常に同じ順序で入力する必要があります。

Long
time_window_factor
(オプション)

このパラメーターを使用すると、違反を招くことなく、タイム ウィンドウ違反の重要度を評価することができます。タイム ウィンドウ違反は、タイム ウィンドウが閉じてから訪問先、拠点、または休憩にルートが到着した場合に発生します。この超過時間は、タイム ウィンドウの終了からルートの到着時間までの時間です。

VRP ソリューションは、選択された [タイム ウィンドウ違反の重要度] パラメーターの値に従って変化します。以下に各値の意味と、各値を設定した場合に VRP ソリューションがどのように変化するかを説明します。

  • High —全体の移動時間の増大を無視して、タイム ウィンドウ違反を最小にするソリューションを検索します。全体のソリューション コストを最小にするよりも訪問先に時間どおりに到着することが重要である場合は、この設定を選択します。訪問先で顧客と打ち合わせをする予定があり、遅刻して先方に迷惑をかけたくないという場合に使用します (別のオプションとして、超過がまったく許されないハード タイム ウィンドウを使用することもできます)。配車ルートの他の制約が指定されている場合、タイム ウィンドウの期間内に立ち寄ることができない訪問先が出てくると考えられます。この場合は、[高] 設定でも違反が発生することがあります。
  • Medium —これがデフォルトです。タイム ウィンドウの条件を満たすことと、全体のソリューション コストを削減することのバランスを取ります。
  • Low —タイム ウィンドウを無視して、全体の移動時間を最小にするソリューションを検索します。タイム ウィンドウの条件を満たすことが全体のソリューション コストを削減することより重要でない場合は、この設定を選択します。未処理のサービス依頼が増えている場合は、この設定を使用すると便利です。保有車両の到着が遅れて顧客に迷惑をかけることになっても、1 日にサービスを提供する訪問先の数を増やして手持ちの注文をさばくために、この設定を選択することができます。
String
excess_transit_factor
(オプション)

このパラメーターを使用すると、超過移動時間の短縮の重要度を評価することができます。超過移動時間とは、訪問先ペア間を直接移動するのに必要な時間に対する超過時間です。この超過時間は、訪問先ペアへの立ち寄りの途中で、休憩を取ったり他の訪問先や拠点に移動することで発生します。

VRP ソリューションは、選択された [超過移動時間の重要度] の値に従って変化します。以下に各値の意味と、各値を設定した場合に VRP ソリューションがどのように変化するかを説明します。

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

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

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

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

String
restriction_attribute_name
[restriction_attribute_name,...]
(オプション)

解析中に適用される規制属性のリスト。

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

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

Boolean
hierarchy_settings
(オプション)

レガシー:

10 より前のバージョンでは、このパラメーターによって、解析のためにネットワーク データセット構築時のデフォルトの階層範囲から階層範囲の変更を行うことを許可していました。バージョン 10 では、このパラメーターはサポートされていないため、空の文字列を指定する必要があります。解析のために階層範囲を変更したい場合、ネットワーク データセットのデフォルトの階層範囲を更新します。

Network Analyst Hierarchy Settings
output_path_shape
(オプション)
  • TRUE_LINES_WITH_MEASURES —出力ルートはネットワーク ソースの正確な形状を保持します。リニア リファレンスのためのルートのメジャー値が出力に含まれます。メジャー値は、最初のストップから増加し、指定された位置に到着するまでの累積インピーダンスを記録します。
  • TRUE_LINES_WITHOUT_MEASURES —出力ルートはネットワーク ソースの正確な形状を保持します。
  • STRAIGHT_LINES —出力ルート形状はルート順序ごとに訪問先と拠点への立ち寄りを結ぶ直線になります。
  • NO_LINES —出力ルートに形状は生成されません。ルート案内を生成することもできません。
String

派生した出力

名前説明データ タイプ
output_layer

新しく作成されたネットワーク解析レイヤー。

Network Analyst レイヤー

コードのサンプル

MakeVehicleRoutingProblemLayer (配車ルート解析レイヤーの作成) の例 1 (Python ウィンドウ)

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeVehicleRoutingProblemLayer("Transportation/Streets_ND",
                                        "DeliveryRoutes","Minutes")
MakeVehicleRoutingProblemLayer (配車ルート解析レイヤーの作成) の例 2 (Python ウィンドウ)

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeVehicleRoutingProblemLayer("Transportation/Streets_ND",
                                        "FridayRoutes","Minutes","Meters",
                                        "Minutes","Miles", "1/2/1900", "1",
                                        "High","Medium","ALLOW_DEAD_ENDS_ONLY",
                                        ["Oneway"],"USE_HIERARCHY","",
                                        "TRUE_LINES_WITHOUT_MEASURES")
MakeVehicleRoutingProblemLayer (配車ルート解析レイヤーの作成) の例 3 (ワークフロー)

次のスタンドアロン Python スクリプトは、MakeVehicleRoutingProblemLayer (配車ルート解析レイヤーの作成) ツールを使用して複数の車両で訪問先にサービスを提供する方法を示しています。

# Name: MakeVehicleRoutingProblemLayer_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

try:
    #Check out the Network Analyst extension license
    arcpy.CheckOutExtension("Network")

    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    outNALayer = "StoreDeliveryRoute"
    impedanceAttribute = "TravelTime"
    distanceAttribute = "Meters"
    timeUnits = "Minutes"
    distanceUnits = "Miles"
    inOrders = "Analysis/Stores"
    inDepots = "Analysis/DistributionCenter"
    inRoutes = "RoutesTable"
    orderFieldMappings = "Name Name #; ServiceTime ServiceTime #; " + \
                       "TimeWindowStart1 TimeStart1 #; " + \
                       "TimeWindowEnd1 TimeEnd1 #; MaxViolationTime1 # 0; " + \
                       "DeliveryQuantities Demand #"
    depotFieldMappings = "Name Name #; TimeWindowStart1 # 8 AM; " + \
                       "TimeWindowEnd1 # 5 PM"
    outLayerFile = "C:/data/output" + "/" + outNALayer + ".lyr"
    
    #Create a new Vehicle routing problem (VRP) layer. Since the time-based 
    #attributes such as ServiceTime on orders and CostPerUnitTime on routes is 
    #recorded in minutes, we use minutes for time_units parameter. As we are 
    #using cost per unit distance in routes, we have to specify a 
    #distance attribute. The values for CostPerUnitDistance are in miles, so we 
    #specify miles for distance units parameter.
    arcpy.MakeVehicleRoutingProblemLayer_na(inNetworkDataset,outNALayer,
                                            impedanceAttribute,distanceAttribute,
                                            timeUnits, distanceUnits, "", 1, 
                                            UTurn_policy="NO_UTURNS", 
                                            output_path_shape="STRAIGHT_LINES")
    
    #Load the store locations as orders. Using field mappings we map the Name, 
    #ServiceTime, TimeWindowStart1, TimeWindowEnd1 and DeliveryQuantities 
    #properties for Orders from the fields of store features and assign a value
    #of 0 to MaxViolationTime1 property
    arcpy.AddLocations_na(outNALayer, "Orders", inOrders, orderFieldMappings,"")
    
    #Load the depots from the distribution center features. Using field mappings
    #we map the Name properties for Depots from the fields of distribution 
    #center features and assign a value of 8 AM for TimeWindowStart1 and a value
    #of 5PM for TimeWindowEnd2 properties
    arcpy.AddLocations_na(outNALayer, "Depots", inDepots, depotFieldMappings,"")
    
    #Load the routes from a table containing information about routes
    #In this case, since the fields on the table and property names for Routes
    #are same, we will just use the default field mappings
    arcpy.AddLocations_na(outNALayer, "Routes", inRoutes, "", "")
    
    #Solve the VRP layer
    arcpy.Solve_na(outNALayer)
    
    #Save the solved VRP layer as a layer file on disk with relative paths
    arcpy.SaveToLayerFile_management(outNALayer,outLayerFile,"RELATIVE")
    
    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 occured on line %i" % tb.tb_lineno
    print str(e)

環境

  • 現在のワークスペース

ライセンス情報

  • Basic: はい
  • Standard: はい
  • Advanced: はい

関連トピック

  • 配車ルート解析
  • 階層を使用したネットワーク解析について
  • タイム ウィンドウ
  • 解析ツールセットの概要
  • ネットワーク解析レイヤーとは
  • 配車ルート (VRP) の解析 (Solve Vehicle Routing Problem)

ArcGIS Desktop

  • ホーム
  • ドキュメント
  • サポート

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • Esri ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
ご意見・ご感想をお寄せください。
Copyright © 2021 Esri. | プライバシー | リーガル